From aa3674e1f473f9e362e1fc94bc39ecde9caefa79 Mon Sep 17 00:00:00 2001 From: TrueCharts-Bot Date: Thu, 21 Jul 2022 13:17:45 +0000 Subject: [PATCH] Commit new Chart releases for TrueCharts Signed-off-by: TrueCharts-Bot --- dependency/clickhouse/1.0.0/CHANGELOG.md | 91 + .../3.0.39 => clickhouse/1.0.0}/Chart.lock | 2 +- dependency/clickhouse/1.0.0/Chart.yaml | 30 + dependency/clickhouse/1.0.0/README.md | 108 + dependency/clickhouse/1.0.0/app-readme.md | 8 + .../1.0.0}/charts/common-10.4.4.tgz | Bin dependency/clickhouse/1.0.0/ix_values.yaml | 67 + dependency/clickhouse/1.0.0/questions.yaml | 2640 ++++++++++++++ .../1.0.0}/templates/common.yaml | 0 .../3.0.38 => clickhouse/1.0.0}/values.yaml | 0 dependency/clickhouse/item.yaml | 4 + .../collabora-online/12.1.19/CHANGELOG.md | 99 + .../collabora-online/12.1.19/Chart.lock | 6 + .../collabora-online/12.1.19/Chart.yaml | 31 + dependency/collabora-online/12.1.19/README.md | 109 + .../collabora-online/12.1.19/app-readme.md | 8 + .../12.1.19/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes .../collabora-online/12.1.19/ix_values.yaml | 51 + .../collabora-online/12.1.19/questions.yaml | 2313 ++++++++++++ .../12.1.19}/templates/common.yaml | 0 .../12.1.19}/values.yaml | 0 dependency/mariadb/3.0.38/CHANGELOG.md | 99 - dependency/mariadb/3.0.39/CHANGELOG.md | 99 + dependency/mariadb/3.0.39/Chart.lock | 6 + .../mariadb/{3.0.38 => 3.0.39}/Chart.yaml | 4 +- .../mariadb/{3.0.38 => 3.0.39}/README.md | 4 +- .../mariadb/{3.0.38 => 3.0.39}/app-readme.md | 0 .../mariadb/3.0.39/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes .../mariadb/{3.0.38 => 3.0.39}/ix_values.yaml | 2 +- .../mariadb/{3.0.38 => 3.0.39}/questions.yaml | 0 .../mariadb/3.0.39/templates/common.yaml | 1 + .../1.0.42 => mariadb/3.0.39}/values.yaml | 0 dependency/memcached/3.0.39/CHANGELOG.md | 99 - dependency/memcached/3.0.39/ix_values.yaml | 11 - dependency/memcached/3.0.41/CHANGELOG.md | 99 + dependency/memcached/3.0.41/Chart.lock | 6 + .../memcached/{3.0.39 => 3.0.41}/Chart.yaml | 4 +- .../memcached/{3.0.39 => 3.0.41}/README.md | 4 +- .../{3.0.39 => 3.0.41}/app-readme.md | 0 .../memcached/3.0.41/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes dependency/memcached/3.0.41/ix_values.yaml | 11 + .../{3.0.39 => 3.0.41}/questions.yaml | 0 .../{3.0.39 => 3.0.41}/templates/common.yaml | 0 .../8.0.40 => memcached/3.0.41}/values.yaml | 0 dependency/mongodb/1.0.42/CHANGELOG.md | 99 - dependency/mongodb/1.0.43/CHANGELOG.md | 99 + dependency/mongodb/1.0.43/Chart.lock | 6 + .../mongodb/{1.0.42 => 1.0.43}/Chart.yaml | 4 +- .../mongodb/{1.0.42 => 1.0.43}/README.md | 4 +- .../mongodb/{1.0.42 => 1.0.43}/app-readme.md | 0 .../mongodb/1.0.43/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes .../mongodb/{1.0.42 => 1.0.43}/ix_values.yaml | 2 +- .../mongodb/{1.0.42 => 1.0.43}/questions.yaml | 0 .../{1.0.42 => 1.0.43}/templates/common.yaml | 0 .../3.0.31 => mongodb/1.0.43}/values.yaml | 0 dependency/postgresql/8.0.40/Chart.lock | 6 - .../{8.0.40 => 8.0.41}/CHANGELOG.md | 82 +- dependency/postgresql/8.0.41/Chart.lock | 6 + .../postgresql/{8.0.40 => 8.0.41}/Chart.yaml | 4 +- .../postgresql/{8.0.40 => 8.0.41}/README.md | 4 +- .../{8.0.40 => 8.0.41}/app-readme.md | 0 .../8.0.41/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes .../{8.0.40 => 8.0.41}/ix_values.yaml | 2 +- .../{8.0.40 => 8.0.41}/questions.yaml | 0 .../{8.0.40 => 8.0.41}/templates/common.yaml | 0 .../3.0.40 => postgresql/8.0.41}/values.yaml | 0 dependency/promtail/3.0.31/CHANGELOG.md | 99 - dependency/promtail/3.0.31/Chart.lock | 6 - dependency/promtail/3.0.32/CHANGELOG.md | 99 + dependency/promtail/3.0.32/Chart.lock | 6 + .../promtail/{3.0.31 => 3.0.32}/Chart.yaml | 4 +- .../promtail/{3.0.31 => 3.0.32}/README.md | 4 +- .../promtail/{3.0.31 => 3.0.32}/app-readme.md | 0 .../promtail/3.0.32/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes .../{3.0.31 => 3.0.32}/ix_values.yaml | 0 .../{3.0.31 => 3.0.32}/questions.yaml | 0 .../templates/_servicemonitor.tpl | 0 .../{3.0.31 => 3.0.32}/templates/common.yaml | 0 .../0.0.14 => promtail/3.0.32}/values.yaml | 0 dependency/redis/3.0.40/CHANGELOG.md | 99 - dependency/redis/3.0.40/Chart.lock | 6 - dependency/redis/3.0.41/CHANGELOG.md | 99 + dependency/redis/3.0.41/Chart.lock | 6 + .../redis/{3.0.40 => 3.0.41}/Chart.yaml | 4 +- dependency/redis/{3.0.40 => 3.0.41}/README.md | 4 +- .../redis/{3.0.40 => 3.0.41}/app-readme.md | 0 .../redis/3.0.41/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes .../redis/{3.0.40 => 3.0.41}/ix_values.yaml | 2 +- .../redis/{3.0.40 => 3.0.41}/questions.yaml | 0 .../{3.0.40 => 3.0.41}/templates/common.yaml | 0 .../redis/3.0.41}/values.yaml | 0 dependency/solr/0.0.14/Chart.lock | 6 - .../solr/0.0.14/charts/common-10.4.4.tgz | Bin 47288 -> 0 bytes .../solr/{0.0.14 => 0.0.15}/CHANGELOG.md | 76 +- dependency/solr/0.0.15/Chart.lock | 6 + dependency/solr/{0.0.14 => 0.0.15}/Chart.yaml | 4 +- dependency/solr/{0.0.14 => 0.0.15}/README.md | 4 +- .../solr/{0.0.14 => 0.0.15}/app-readme.md | 0 .../solr/0.0.15/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes .../solr/{0.0.14 => 0.0.15}/ix_values.yaml | 0 .../solr/{0.0.14 => 0.0.15}/questions.yaml | 0 .../{0.0.14 => 0.0.15}/templates/common.yaml | 0 .../solr/0.0.15}/values.yaml | 0 .../0.0.21/charts/common-10.4.4.tgz | Bin 47288 -> 0 bytes .../{0.0.21 => 0.0.22}/CHANGELOG.md | 54 +- .../{0.0.21 => 0.0.22}/Chart.lock | 2 +- .../{0.0.21 => 0.0.22}/Chart.yaml | 2 +- .../{0.0.21 => 0.0.22}/README.md | 2 +- .../{0.0.21 => 0.0.22}/app-readme.md | 0 .../0.0.22}/charts/common-10.4.4.tgz | Bin .../charts/postgresql-8.0.30.tgz | Bin .../{0.0.21 => 0.0.22}/ix_values.yaml | 2 +- .../{0.0.21 => 0.0.22}/questions.yaml | 0 .../{0.0.21 => 0.0.22}/templates/common.yaml | 0 .../awesome-ttrss/0.0.22}/values.yaml | 0 incubator/dailynotes/0.0.10/CHANGELOG.md | 42 + incubator/dailynotes/0.0.10/Chart.lock | 6 + incubator/dailynotes/0.0.10/Chart.yaml | 29 + incubator/dailynotes/0.0.10/README.md | 107 + incubator/dailynotes/0.0.10/app-readme.md | 9 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/dailynotes/0.0.10/ix_values.yaml | 25 + incubator/dailynotes/0.0.10/questions.yaml | 2455 +++++++++++++ .../dailynotes/0.0.10/templates/common.yaml | 2 + .../dailynotes/0.0.10}/values.yaml | 0 incubator/dailynotes/item.yaml | 4 + incubator/damselfly/0.0.10/CHANGELOG.md | 42 + incubator/damselfly/0.0.10/Chart.lock | 6 + incubator/damselfly/0.0.10/Chart.yaml | 31 + incubator/damselfly/0.0.10/README.md | 108 + incubator/damselfly/0.0.10/app-readme.md | 8 + .../damselfly/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/damselfly/0.0.10/ix_values.yaml | 30 + incubator/damselfly/0.0.10/questions.yaml | 2795 +++++++++++++++ .../damselfly/0.0.10/templates/common.yaml | 2 + incubator/damselfly/0.0.10/values.yaml | 0 incubator/damselfly/item.yaml | 4 + incubator/dashmachine/0.0.10/CHANGELOG.md | 42 + incubator/dashmachine/0.0.10/Chart.lock | 6 + incubator/dashmachine/0.0.10/Chart.yaml | 32 + incubator/dashmachine/0.0.10/README.md | 108 + incubator/dashmachine/0.0.10/app-readme.md | 8 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/dashmachine/0.0.10/ix_values.yaml | 24 + incubator/dashmachine/0.0.10/questions.yaml | 2441 +++++++++++++ .../dashmachine/0.0.10/templates/common.yaml | 2 + incubator/dashmachine/0.0.10/values.yaml | 0 incubator/dashmachine/item.yaml | 5 + .../dayofdefeatsource/0.0.10/CHANGELOG.md | 42 + incubator/dayofdefeatsource/0.0.10/Chart.lock | 6 + incubator/dayofdefeatsource/0.0.10/Chart.yaml | 29 + incubator/dayofdefeatsource/0.0.10/README.md | 108 + .../dayofdefeatsource/0.0.10/app-readme.md | 9 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes .../dayofdefeatsource/0.0.10/ix_values.yaml | 49 + .../dayofdefeatsource/0.0.10/questions.yaml | 2799 +++++++++++++++ .../0.0.10/templates/common.yaml | 2 + .../dayofdefeatsource/0.0.10/values.yaml | 0 incubator/dayofdefeatsource/item.yaml | 4 + incubator/daysofwar/0.0.10/CHANGELOG.md | 42 + incubator/daysofwar/0.0.10/Chart.lock | 6 + incubator/daysofwar/0.0.10/Chart.yaml | 29 + incubator/daysofwar/0.0.10/README.md | 108 + incubator/daysofwar/0.0.10/app-readme.md | 9 + .../daysofwar/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/daysofwar/0.0.10/ix_values.yaml | 49 + incubator/daysofwar/0.0.10/questions.yaml | 2799 +++++++++++++++ .../daysofwar/0.0.10/templates/common.yaml | 2 + incubator/daysofwar/0.0.10/values.yaml | 0 incubator/daysofwar/item.yaml | 4 + incubator/dayz/0.0.10/CHANGELOG.md | 42 + incubator/dayz/0.0.10/Chart.lock | 6 + incubator/dayz/0.0.10/Chart.yaml | 29 + incubator/dayz/0.0.10/README.md | 108 + incubator/dayz/0.0.10/app-readme.md | 9 + .../dayz/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/dayz/0.0.10/ix_values.yaml | 48 + incubator/dayz/0.0.10/questions.yaml | 2791 +++++++++++++++ incubator/dayz/0.0.10/templates/common.yaml | 2 + incubator/dayz/0.0.10/values.yaml | 0 incubator/dayz/item.yaml | 4 + incubator/ddns-route53/0.0.10/CHANGELOG.md | 42 + incubator/ddns-route53/0.0.10/Chart.lock | 6 + incubator/ddns-route53/0.0.10/Chart.yaml | 28 + incubator/ddns-route53/0.0.10/README.md | 108 + incubator/ddns-route53/0.0.10/app-readme.md | 8 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/ddns-route53/0.0.10/ix_values.yaml | 35 + incubator/ddns-route53/0.0.10/questions.yaml | 1897 ++++++++++ .../ddns-route53/0.0.10/templates/common.yaml | 2 + incubator/ddns-route53/0.0.10/values.yaml | 0 incubator/ddns-route53/item.yaml | 4 + .../debian-apt-mirror/0.0.10/CHANGELOG.md | 42 + incubator/debian-apt-mirror/0.0.10/Chart.lock | 6 + incubator/debian-apt-mirror/0.0.10/Chart.yaml | 35 + incubator/debian-apt-mirror/0.0.10/README.md | 108 + .../debian-apt-mirror/0.0.10/app-readme.md | 9 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes .../debian-apt-mirror/0.0.10/ix_values.yaml | 31 + .../debian-apt-mirror/0.0.10/questions.yaml | 2648 ++++++++++++++ .../0.0.10/templates/common.yaml | 2 + .../debian-apt-mirror/0.0.10/values.yaml | 0 incubator/debian-apt-mirror/item.yaml | 7 + incubator/debian-bullseye/0.0.10/CHANGELOG.md | 42 + incubator/debian-bullseye/0.0.10/Chart.lock | 6 + incubator/debian-bullseye/0.0.10/Chart.yaml | 31 + incubator/debian-bullseye/0.0.10/README.md | 108 + .../debian-bullseye/0.0.10/app-readme.md | 9 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes .../debian-bullseye/0.0.10/ix_values.yaml | 31 + .../debian-bullseye/0.0.10/questions.yaml | 2491 +++++++++++++ .../0.0.10/templates/common.yaml | 2 + incubator/debian-bullseye/0.0.10/values.yaml | 0 incubator/debian-bullseye/item.yaml | 5 + incubator/dispatch/0.0.10/CHANGELOG.md | 42 + incubator/dispatch/0.0.10/Chart.lock | 6 + incubator/dispatch/0.0.10/Chart.yaml | 28 + incubator/dispatch/0.0.10/README.md | 108 + incubator/dispatch/0.0.10/app-readme.md | 8 + .../dispatch/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/dispatch/0.0.10/ix_values.yaml | 32 + incubator/dispatch/0.0.10/questions.yaml | 2572 ++++++++++++++ .../dispatch/0.0.10/templates/common.yaml | 2 + incubator/dispatch/0.0.10/values.yaml | 0 incubator/dispatch/item.yaml | 4 + .../dns-doh-companion/0.0.10/CHANGELOG.md | 42 + incubator/dns-doh-companion/0.0.10/Chart.lock | 6 + incubator/dns-doh-companion/0.0.10/Chart.yaml | 29 + incubator/dns-doh-companion/0.0.10/README.md | 108 + .../dns-doh-companion/0.0.10/app-readme.md | 9 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes .../dns-doh-companion/0.0.10/ix_values.yaml | 29 + .../dns-doh-companion/0.0.10/questions.yaml | 2385 +++++++++++++ .../0.0.10/templates/common.yaml | 2 + .../dns-doh-companion/0.0.10/values.yaml | 0 incubator/dns-doh-companion/item.yaml | 4 + incubator/docker-hub-rss/0.0.10/CHANGELOG.md | 42 + incubator/docker-hub-rss/0.0.10/Chart.lock | 6 + incubator/docker-hub-rss/0.0.10/Chart.yaml | 32 + incubator/docker-hub-rss/0.0.10/README.md | 108 + incubator/docker-hub-rss/0.0.10/app-readme.md | 9 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes .../docker-hub-rss/0.0.10/ix_values.yaml | 25 + .../docker-hub-rss/0.0.10/questions.yaml | 1829 ++++++++++ .../0.0.10/templates/common.yaml | 2 + incubator/docker-hub-rss/0.0.10/values.yaml | 0 incubator/docker-hub-rss/item.yaml | 6 + incubator/dockerregistry/0.0.10/CHANGELOG.md | 42 + incubator/dockerregistry/0.0.10/Chart.lock | 6 + incubator/dockerregistry/0.0.10/Chart.yaml | 38 + incubator/dockerregistry/0.0.10/README.md | 108 + incubator/dockerregistry/0.0.10/app-readme.md | 9 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes .../dockerregistry/0.0.10/ix_values.yaml | 24 + .../dockerregistry/0.0.10/questions.yaml | 2441 +++++++++++++ .../0.0.10/templates/common.yaml | 2 + incubator/dockerregistry/0.0.10/values.yaml | 0 incubator/dockerregistry/item.yaml | 7 + .../dontstarvetogether/0.0.10/CHANGELOG.md | 42 + .../dontstarvetogether/0.0.10/Chart.lock | 6 + .../dontstarvetogether/0.0.10/Chart.yaml | 29 + incubator/dontstarvetogether/0.0.10/README.md | 108 + .../dontstarvetogether/0.0.10/app-readme.md | 9 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes .../dontstarvetogether/0.0.10/ix_values.yaml | 59 + .../dontstarvetogether/0.0.10/questions.yaml | 3101 ++++++++++++++++ .../0.0.10/templates/common.yaml | 2 + .../dontstarvetogether/0.0.10/values.yaml | 0 incubator/dontstarvetogether/item.yaml | 4 + .../dropbox-by-otherguy/0.0.10/CHANGELOG.md | 42 + .../dropbox-by-otherguy/0.0.10/Chart.lock | 6 + .../dropbox-by-otherguy/0.0.10/Chart.yaml | 28 + .../dropbox-by-otherguy/0.0.10/README.md | 108 + .../dropbox-by-otherguy/0.0.10/app-readme.md | 9 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes .../dropbox-by-otherguy/0.0.10/ix_values.yaml | 33 + .../dropbox-by-otherguy/0.0.10/questions.yaml | 2213 ++++++++++++ .../0.0.10/templates/common.yaml | 2 + .../dropbox-by-otherguy/0.0.10/values.yaml | 0 incubator/dropbox-by-otherguy/item.yaml | 4 + incubator/duplicacy/0.0.10/CHANGELOG.md | 42 + incubator/duplicacy/0.0.10/Chart.lock | 6 + incubator/duplicacy/0.0.10/Chart.yaml | 28 + incubator/duplicacy/0.0.10/README.md | 108 + incubator/duplicacy/0.0.10/app-readme.md | 8 + .../duplicacy/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/duplicacy/0.0.10/ix_values.yaml | 31 + incubator/duplicacy/0.0.10/questions.yaml | 2809 +++++++++++++++ .../duplicacy/0.0.10/templates/common.yaml | 2 + incubator/duplicacy/0.0.10/values.yaml | 0 incubator/duplicacy/item.yaml | 4 + incubator/dvblink/0.0.10/CHANGELOG.md | 42 + incubator/dvblink/0.0.10/Chart.lock | 6 + incubator/dvblink/0.0.10/Chart.yaml | 29 + incubator/dvblink/0.0.10/README.md | 108 + incubator/dvblink/0.0.10/app-readme.md | 8 + .../dvblink/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/dvblink/0.0.10/ix_values.yaml | 40 + incubator/dvblink/0.0.10/questions.yaml | 2700 ++++++++++++++ .../dvblink/0.0.10/templates/common.yaml | 2 + incubator/dvblink/0.0.10/values.yaml | 0 incubator/dvblink/item.yaml | 4 + incubator/eco/0.0.10/CHANGELOG.md | 42 + incubator/eco/0.0.10/Chart.lock | 6 + incubator/eco/0.0.10/Chart.yaml | 29 + incubator/eco/0.0.10/README.md | 108 + incubator/eco/0.0.10/app-readme.md | 9 + incubator/eco/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/eco/0.0.10/ix_values.yaml | 42 + incubator/eco/0.0.10/questions.yaml | 2799 +++++++++++++++ incubator/eco/0.0.10/templates/common.yaml | 2 + incubator/eco/0.0.10/values.yaml | 0 incubator/eco/item.yaml | 4 + incubator/ecodms/0.0.10/CHANGELOG.md | 42 + incubator/ecodms/0.0.10/Chart.lock | 6 + incubator/ecodms/0.0.10/Chart.yaml | 32 + incubator/ecodms/0.0.10/README.md | 108 + incubator/ecodms/0.0.10/app-readme.md | 9 + .../ecodms/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/ecodms/0.0.10/ix_values.yaml | 37 + incubator/ecodms/0.0.10/questions.yaml | 2547 +++++++++++++ incubator/ecodms/0.0.10/templates/common.yaml | 2 + incubator/ecodms/0.0.10/values.yaml | 0 incubator/ecodms/item.yaml | 5 + incubator/electrum/0.0.10/CHANGELOG.md | 42 + incubator/electrum/0.0.10/Chart.lock | 6 + incubator/electrum/0.0.10/Chart.yaml | 35 + incubator/electrum/0.0.10/README.md | 108 + incubator/electrum/0.0.10/app-readme.md | 9 + .../electrum/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/electrum/0.0.10/ix_values.yaml | 28 + incubator/electrum/0.0.10/questions.yaml | 2473 +++++++++++++ .../electrum/0.0.10/templates/common.yaml | 2 + incubator/electrum/0.0.10/values.yaml | 0 incubator/electrum/item.yaml | 6 + incubator/emby-sync/0.0.10/CHANGELOG.md | 42 + incubator/emby-sync/0.0.10/Chart.lock | 6 + incubator/emby-sync/0.0.10/Chart.yaml | 28 + incubator/emby-sync/0.0.10/README.md | 108 + incubator/emby-sync/0.0.10/app-readme.md | 8 + .../emby-sync/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/emby-sync/0.0.10/ix_values.yaml | 24 + incubator/emby-sync/0.0.10/questions.yaml | 2280 ++++++++++++ .../emby-sync/0.0.10/templates/common.yaml | 2 + incubator/emby-sync/0.0.10/values.yaml | 0 incubator/emby-sync/item.yaml | 4 + incubator/ethercalc/0.0.10/CHANGELOG.md | 42 + incubator/ethercalc/0.0.10/Chart.lock | 6 + incubator/ethercalc/0.0.10/Chart.yaml | 32 + incubator/ethercalc/0.0.10/README.md | 108 + incubator/ethercalc/0.0.10/app-readme.md | 9 + .../ethercalc/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/ethercalc/0.0.10/ix_values.yaml | 23 + incubator/ethercalc/0.0.10/questions.yaml | 2274 ++++++++++++ .../ethercalc/0.0.10/templates/common.yaml | 2 + incubator/ethercalc/0.0.10/values.yaml | 0 incubator/ethercalc/item.yaml | 6 + incubator/euterpe/0.0.10/CHANGELOG.md | 42 + incubator/euterpe/0.0.10/Chart.lock | 6 + incubator/euterpe/0.0.10/Chart.yaml | 34 + incubator/euterpe/0.0.10/README.md | 108 + incubator/euterpe/0.0.10/app-readme.md | 9 + .../euterpe/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/euterpe/0.0.10/ix_values.yaml | 24 + incubator/euterpe/0.0.10/questions.yaml | 2441 +++++++++++++ .../euterpe/0.0.10/templates/common.yaml | 2 + incubator/euterpe/0.0.10/values.yaml | 0 incubator/euterpe/item.yaml | 7 + incubator/explainshell/0.0.10/CHANGELOG.md | 42 + incubator/explainshell/0.0.10/Chart.lock | 6 + incubator/explainshell/0.0.10/Chart.yaml | 29 + incubator/explainshell/0.0.10/README.md | 108 + incubator/explainshell/0.0.10/app-readme.md | 9 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/explainshell/0.0.10/ix_values.yaml | 25 + incubator/explainshell/0.0.10/questions.yaml | 1829 ++++++++++ .../explainshell/0.0.10/templates/common.yaml | 2 + incubator/explainshell/0.0.10/values.yaml | 0 incubator/explainshell/item.yaml | 4 + incubator/external-ip/0.0.10/CHANGELOG.md | 42 + incubator/external-ip/0.0.10/Chart.lock | 6 + incubator/external-ip/0.0.10/Chart.yaml | 32 + incubator/external-ip/0.0.10/README.md | 108 + incubator/external-ip/0.0.10/app-readme.md | 8 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/external-ip/0.0.10/ix_values.yaml | 32 + incubator/external-ip/0.0.10/questions.yaml | 1879 ++++++++++ .../external-ip/0.0.10/templates/common.yaml | 2 + incubator/external-ip/0.0.10/values.yaml | 0 incubator/external-ip/item.yaml | 5 + incubator/factorio/0.0.10/CHANGELOG.md | 42 + incubator/factorio/0.0.10/Chart.lock | 6 + incubator/factorio/0.0.10/Chart.yaml | 29 + incubator/factorio/0.0.10/README.md | 108 + incubator/factorio/0.0.10/app-readme.md | 9 + .../factorio/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/factorio/0.0.10/ix_values.yaml | 31 + incubator/factorio/0.0.10/questions.yaml | 2441 +++++++++++++ .../factorio/0.0.10/templates/common.yaml | 2 + incubator/factorio/0.0.10/values.yaml | 0 incubator/factorio/item.yaml | 4 + .../factorioservermanager/0.0.10/CHANGELOG.md | 42 + .../factorioservermanager/0.0.10/Chart.lock | 6 + .../factorioservermanager/0.0.10/Chart.yaml | 28 + .../factorioservermanager/0.0.10/README.md | 108 + .../0.0.10/app-readme.md | 9 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes .../0.0.10/ix_values.yaml | 38 + .../0.0.10/questions.yaml | 2924 +++++++++++++++ .../0.0.10/templates/common.yaml | 2 + .../factorioservermanager/0.0.10/values.yaml | 0 incubator/factorioservermanager/item.yaml | 4 + incubator/facturascripts/0.0.10/CHANGELOG.md | 42 + incubator/facturascripts/0.0.10/Chart.lock | 6 + incubator/facturascripts/0.0.10/Chart.yaml | 32 + incubator/facturascripts/0.0.10/README.md | 108 + incubator/facturascripts/0.0.10/app-readme.md | 9 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes .../facturascripts/0.0.10/ix_values.yaml | 24 + .../facturascripts/0.0.10/questions.yaml | 2440 +++++++++++++ .../0.0.10/templates/common.yaml | 2 + incubator/facturascripts/0.0.10/values.yaml | 0 incubator/facturascripts/item.yaml | 5 + incubator/farmos/0.0.10/CHANGELOG.md | 42 + incubator/farmos/0.0.10/Chart.lock | 6 + incubator/farmos/0.0.10/Chart.yaml | 32 + incubator/farmos/0.0.10/README.md | 108 + incubator/farmos/0.0.10/app-readme.md | 8 + .../farmos/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/farmos/0.0.10/ix_values.yaml | 24 + incubator/farmos/0.0.10/questions.yaml | 2441 +++++++++++++ incubator/farmos/0.0.10/templates/common.yaml | 2 + incubator/farmos/0.0.10/values.yaml | 0 incubator/farmos/item.yaml | 5 + incubator/fastcom-mqtt/0.0.10/CHANGELOG.md | 42 + incubator/fastcom-mqtt/0.0.10/Chart.lock | 6 + incubator/fastcom-mqtt/0.0.10/Chart.yaml | 30 + incubator/fastcom-mqtt/0.0.10/README.md | 108 + incubator/fastcom-mqtt/0.0.10/app-readme.md | 9 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/fastcom-mqtt/0.0.10/ix_values.yaml | 29 + incubator/fastcom-mqtt/0.0.10/questions.yaml | 1861 ++++++++++ .../fastcom-mqtt/0.0.10/templates/common.yaml | 2 + incubator/fastcom-mqtt/0.0.10/values.yaml | 0 incubator/fastcom-mqtt/item.yaml | 4 + incubator/fenrus/0.0.10/CHANGELOG.md | 42 + incubator/fenrus/0.0.10/Chart.lock | 6 + incubator/fenrus/0.0.10/Chart.yaml | 28 + incubator/fenrus/0.0.10/README.md | 108 + incubator/fenrus/0.0.10/app-readme.md | 9 + .../fenrus/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/fenrus/0.0.10/ix_values.yaml | 27 + incubator/fenrus/0.0.10/questions.yaml | 2618 ++++++++++++++ incubator/fenrus/0.0.10/templates/common.yaml | 2 + incubator/fenrus/0.0.10/values.yaml | 0 incubator/fenrus/item.yaml | 4 + incubator/ferdi-client/0.0.10/CHANGELOG.md | 42 + incubator/ferdi-client/0.0.10/Chart.lock | 6 + incubator/ferdi-client/0.0.10/Chart.yaml | 34 + incubator/ferdi-client/0.0.10/README.md | 108 + incubator/ferdi-client/0.0.10/app-readme.md | 9 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/ferdi-client/0.0.10/ix_values.yaml | 28 + incubator/ferdi-client/0.0.10/questions.yaml | 2473 +++++++++++++ .../ferdi-client/0.0.10/templates/common.yaml | 2 + incubator/ferdi-client/0.0.10/values.yaml | 0 incubator/ferdi-client/item.yaml | 5 + .../ffmpeg-mkvdts2ac3/0.0.10/CHANGELOG.md | 42 + incubator/ffmpeg-mkvdts2ac3/0.0.10/Chart.lock | 6 + incubator/ffmpeg-mkvdts2ac3/0.0.10/Chart.yaml | 29 + incubator/ffmpeg-mkvdts2ac3/0.0.10/README.md | 107 + .../ffmpeg-mkvdts2ac3/0.0.10/app-readme.md | 8 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes .../ffmpeg-mkvdts2ac3/0.0.10/ix_values.yaml | 41 + .../ffmpeg-mkvdts2ac3/0.0.10/questions.yaml | 2579 ++++++++++++++ .../0.0.10/templates/common.yaml | 2 + .../ffmpeg-mkvdts2ac3/0.0.10/values.yaml | 0 incubator/ffmpeg-mkvdts2ac3/item.yaml | 5 + incubator/fileflows-node/0.0.10/CHANGELOG.md | 42 + incubator/fileflows-node/0.0.10/Chart.lock | 6 + incubator/fileflows-node/0.0.10/Chart.yaml | 29 + incubator/fileflows-node/0.0.10/README.md | 108 + incubator/fileflows-node/0.0.10/app-readme.md | 8 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes .../fileflows-node/0.0.10/ix_values.yaml | 28 + .../fileflows-node/0.0.10/questions.yaml | 1855 ++++++++++ .../0.0.10/templates/common.yaml | 2 + incubator/fileflows-node/0.0.10/values.yaml | 0 incubator/fileflows-node/item.yaml | 4 + incubator/filegator/0.0.10/CHANGELOG.md | 42 + incubator/filegator/0.0.10/Chart.lock | 6 + incubator/filegator/0.0.10/Chart.yaml | 34 + incubator/filegator/0.0.10/README.md | 108 + incubator/filegator/0.0.10/app-readme.md | 9 + .../filegator/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/filegator/0.0.10/ix_values.yaml | 39 + incubator/filegator/0.0.10/questions.yaml | 2925 +++++++++++++++ .../filegator/0.0.10/templates/common.yaml | 2 + incubator/filegator/0.0.10/values.yaml | 0 incubator/filegator/item.yaml | 7 + incubator/fileshelter/0.0.10/CHANGELOG.md | 42 + incubator/fileshelter/0.0.10/Chart.lock | 6 + incubator/fileshelter/0.0.10/Chart.yaml | 34 + incubator/fileshelter/0.0.10/README.md | 108 + incubator/fileshelter/0.0.10/app-readme.md | 9 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/fileshelter/0.0.10/ix_values.yaml | 25 + incubator/fileshelter/0.0.10/questions.yaml | 1829 ++++++++++ .../fileshelter/0.0.10/templates/common.yaml | 2 + incubator/fileshelter/0.0.10/values.yaml | 0 incubator/fileshelter/item.yaml | 7 + incubator/filestash/0.0.10/CHANGELOG.md | 42 + incubator/filestash/0.0.10/Chart.lock | 6 + incubator/filestash/0.0.10/Chart.yaml | 33 + incubator/filestash/0.0.10/README.md | 108 + incubator/filestash/0.0.10/app-readme.md | 8 + .../filestash/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/filestash/0.0.10/ix_values.yaml | 24 + incubator/filestash/0.0.10/questions.yaml | 2441 +++++++++++++ .../filestash/0.0.10/templates/common.yaml | 2 + incubator/filestash/0.0.10/values.yaml | 0 incubator/filestash/item.yaml | 6 + .../firefox-desktop-g3/0.0.10/CHANGELOG.md | 42 + .../firefox-desktop-g3/0.0.10/Chart.lock | 6 + .../firefox-desktop-g3/0.0.10/Chart.yaml | 32 + incubator/firefox-desktop-g3/0.0.10/README.md | 108 + .../firefox-desktop-g3/0.0.10/app-readme.md | 9 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes .../firefox-desktop-g3/0.0.10/ix_values.yaml | 34 + .../firefox-desktop-g3/0.0.10/questions.yaml | 2591 ++++++++++++++ .../0.0.10/templates/common.yaml | 2 + .../firefox-desktop-g3/0.0.10/values.yaml | 0 incubator/firefox-desktop-g3/item.yaml | 6 + incubator/fireshare/0.0.10/CHANGELOG.md | 42 + incubator/fireshare/0.0.10/Chart.lock | 6 + incubator/fireshare/0.0.10/Chart.yaml | 32 + incubator/fireshare/0.0.10/README.md | 108 + incubator/fireshare/0.0.10/app-readme.md | 9 + .../fireshare/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/fireshare/0.0.10/ix_values.yaml | 32 + incubator/fireshare/0.0.10/questions.yaml | 2815 +++++++++++++++ .../fireshare/0.0.10/templates/common.yaml | 2 + incubator/fireshare/0.0.10/values.yaml | 0 incubator/fireshare/item.yaml | 5 + incubator/fistfuloffrags/0.0.10/CHANGELOG.md | 42 + incubator/fistfuloffrags/0.0.10/Chart.lock | 6 + incubator/fistfuloffrags/0.0.10/Chart.yaml | 29 + incubator/fistfuloffrags/0.0.10/README.md | 108 + incubator/fistfuloffrags/0.0.10/app-readme.md | 9 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes .../fistfuloffrags/0.0.10/ix_values.yaml | 49 + .../fistfuloffrags/0.0.10/questions.yaml | 2799 +++++++++++++++ .../0.0.10/templates/common.yaml | 2 + incubator/fistfuloffrags/0.0.10/values.yaml | 0 incubator/fistfuloffrags/item.yaml | 4 + incubator/fivem/0.0.10/CHANGELOG.md | 42 + incubator/fivem/0.0.10/Chart.lock | 6 + incubator/fivem/0.0.10/Chart.yaml | 34 + incubator/fivem/0.0.10/README.md | 108 + incubator/fivem/0.0.10/app-readme.md | 9 + .../fivem/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/fivem/0.0.10/ix_values.yaml | 62 + incubator/fivem/0.0.10/questions.yaml | 3009 ++++++++++++++++ incubator/fivem/0.0.10/templates/common.yaml | 2 + incubator/fivem/0.0.10/values.yaml | 0 incubator/fivem/item.yaml | 4 + incubator/flame/0.0.10/CHANGELOG.md | 42 + incubator/flame/0.0.10/Chart.lock | 6 + incubator/flame/0.0.10/Chart.yaml | 31 + incubator/flame/0.0.10/README.md | 108 + incubator/flame/0.0.10/app-readme.md | 8 + .../flame/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/flame/0.0.10/ix_values.yaml | 25 + incubator/flame/0.0.10/questions.yaml | 2455 +++++++++++++ incubator/flame/0.0.10/templates/common.yaml | 2 + incubator/flame/0.0.10/values.yaml | 0 incubator/flame/item.yaml | 5 + incubator/flashpaper/0.0.10/CHANGELOG.md | 42 + incubator/flashpaper/0.0.10/Chart.lock | 6 + incubator/flashpaper/0.0.10/Chart.yaml | 36 + incubator/flashpaper/0.0.10/README.md | 108 + incubator/flashpaper/0.0.10/app-readme.md | 9 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/flashpaper/0.0.10/ix_values.yaml | 41 + incubator/flashpaper/0.0.10/questions.yaml | 2528 +++++++++++++ .../flashpaper/0.0.10/templates/common.yaml | 2 + incubator/flashpaper/0.0.10/values.yaml | 0 incubator/flashpaper/item.yaml | 8 + incubator/flextv/0.0.10/CHANGELOG.md | 42 + incubator/flextv/0.0.10/Chart.lock | 6 + incubator/flextv/0.0.10/Chart.yaml | 28 + incubator/flextv/0.0.10/README.md | 108 + incubator/flextv/0.0.10/app-readme.md | 8 + .../flextv/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/flextv/0.0.10/ix_values.yaml | 33 + incubator/flextv/0.0.10/questions.yaml | 2583 ++++++++++++++ incubator/flextv/0.0.10/templates/common.yaml | 2 + incubator/flextv/0.0.10/values.yaml | 0 incubator/flextv/item.yaml | 4 + .../fluttercoin-wallet/0.0.10/CHANGELOG.md | 42 + .../fluttercoin-wallet/0.0.10/Chart.lock | 6 + .../fluttercoin-wallet/0.0.10/Chart.yaml | 35 + incubator/fluttercoin-wallet/0.0.10/README.md | 108 + .../fluttercoin-wallet/0.0.10/app-readme.md | 9 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes .../fluttercoin-wallet/0.0.10/ix_values.yaml | 45 + .../fluttercoin-wallet/0.0.10/questions.yaml | 2741 ++++++++++++++ .../0.0.10/templates/common.yaml | 2 + .../fluttercoin-wallet/0.0.10/values.yaml | 0 incubator/fluttercoin-wallet/item.yaml | 7 + incubator/fmd2-wine/0.0.10/CHANGELOG.md | 42 + incubator/fmd2-wine/0.0.10/Chart.lock | 6 + incubator/fmd2-wine/0.0.10/Chart.yaml | 32 + incubator/fmd2-wine/0.0.10/README.md | 108 + incubator/fmd2-wine/0.0.10/app-readme.md | 9 + .../fmd2-wine/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/fmd2-wine/0.0.10/ix_values.yaml | 37 + incubator/fmd2-wine/0.0.10/questions.yaml | 3163 +++++++++++++++++ .../fmd2-wine/0.0.10/templates/common.yaml | 2 + incubator/fmd2-wine/0.0.10/values.yaml | 0 incubator/fmd2-wine/item.yaml | 5 + incubator/fogproject/0.0.10/CHANGELOG.md | 42 + incubator/fogproject/0.0.10/Chart.lock | 6 + incubator/fogproject/0.0.10/Chart.yaml | 30 + incubator/fogproject/0.0.10/README.md | 107 + incubator/fogproject/0.0.10/app-readme.md | 9 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/fogproject/0.0.10/ix_values.yaml | 31 + incubator/fogproject/0.0.10/questions.yaml | 2193 ++++++++++++ .../fogproject/0.0.10/templates/common.yaml | 2 + incubator/fogproject/0.0.10/values.yaml | 0 incubator/fogproject/item.yaml | 5 + incubator/fotosho/0.0.10/CHANGELOG.md | 42 + incubator/fotosho/0.0.10/Chart.lock | 6 + incubator/fotosho/0.0.10/Chart.yaml | 32 + incubator/fotosho/0.0.10/README.md | 108 + incubator/fotosho/0.0.10/app-readme.md | 8 + .../fotosho/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/fotosho/0.0.10/ix_values.yaml | 30 + incubator/fotosho/0.0.10/questions.yaml | 2795 +++++++++++++++ .../fotosho/0.0.10/templates/common.yaml | 2 + incubator/fotosho/0.0.10/values.yaml | 0 incubator/fotosho/item.yaml | 5 + .../freecad-desktop-g3/0.0.10/CHANGELOG.md | 42 + .../freecad-desktop-g3/0.0.10/Chart.lock | 6 + .../freecad-desktop-g3/0.0.10/Chart.yaml | 32 + incubator/freecad-desktop-g3/0.0.10/README.md | 108 + .../freecad-desktop-g3/0.0.10/app-readme.md | 9 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes .../freecad-desktop-g3/0.0.10/ix_values.yaml | 34 + .../freecad-desktop-g3/0.0.10/questions.yaml | 2591 ++++++++++++++ .../0.0.10/templates/common.yaml | 2 + .../freecad-desktop-g3/0.0.10/values.yaml | 0 incubator/freecad-desktop-g3/item.yaml | 6 + incubator/fsm/0.0.10/CHANGELOG.md | 42 + incubator/fsm/0.0.10/Chart.lock | 6 + incubator/fsm/0.0.10/Chart.yaml | 27 + incubator/fsm/0.0.10/README.md | 105 + incubator/fsm/0.0.10/app-readme.md | 8 + incubator/fsm/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/fsm/0.0.10/ix_values.yaml | 25 + incubator/fsm/0.0.10/questions.yaml | 1829 ++++++++++ incubator/fsm/0.0.10/templates/common.yaml | 2 + incubator/fsm/0.0.10/values.yaml | 0 incubator/fsm/item.yaml | 4 + .../funkwhale-all-in-one/0.0.10/CHANGELOG.md | 42 + .../funkwhale-all-in-one/0.0.10/Chart.lock | 6 + .../funkwhale-all-in-one/0.0.10/Chart.yaml | 29 + .../funkwhale-all-in-one/0.0.10/README.md | 108 + .../funkwhale-all-in-one/0.0.10/app-readme.md | 9 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes .../0.0.10/ix_values.yaml | 30 + .../0.0.10/questions.yaml | 2638 ++++++++++++++ .../0.0.10/templates/common.yaml | 2 + .../funkwhale-all-in-one/0.0.10/values.yaml | 0 incubator/funkwhale-all-in-one/item.yaml | 4 + incubator/funkwhale/0.0.10/CHANGELOG.md | 42 + incubator/funkwhale/0.0.10/Chart.lock | 6 + incubator/funkwhale/0.0.10/Chart.yaml | 31 + incubator/funkwhale/0.0.10/README.md | 108 + incubator/funkwhale/0.0.10/app-readme.md | 8 + .../funkwhale/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/funkwhale/0.0.10/ix_values.yaml | 30 + incubator/funkwhale/0.0.10/questions.yaml | 2638 ++++++++++++++ .../funkwhale/0.0.10/templates/common.yaml | 2 + incubator/funkwhale/0.0.10/values.yaml | 0 incubator/funkwhale/item.yaml | 5 + incubator/garrysmod/0.0.10/CHANGELOG.md | 42 + incubator/garrysmod/0.0.10/Chart.lock | 6 + incubator/garrysmod/0.0.10/Chart.yaml | 29 + incubator/garrysmod/0.0.10/README.md | 108 + incubator/garrysmod/0.0.10/app-readme.md | 9 + .../garrysmod/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/garrysmod/0.0.10/ix_values.yaml | 49 + incubator/garrysmod/0.0.10/questions.yaml | 2799 +++++++++++++++ .../garrysmod/0.0.10/templates/common.yaml | 2 + incubator/garrysmod/0.0.10/values.yaml | 0 incubator/garrysmod/item.yaml | 4 + incubator/genea/0.0.10/CHANGELOG.md | 42 + incubator/genea/0.0.10/Chart.lock | 6 + incubator/genea/0.0.10/Chart.yaml | 29 + incubator/genea/0.0.10/README.md | 108 + incubator/genea/0.0.10/app-readme.md | 8 + .../genea/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/genea/0.0.10/ix_values.yaml | 25 + incubator/genea/0.0.10/questions.yaml | 1829 ++++++++++ incubator/genea/0.0.10/templates/common.yaml | 2 + incubator/genea/0.0.10/values.yaml | 0 incubator/genea/item.yaml | 4 + incubator/github-backup/0.0.10/CHANGELOG.md | 42 + incubator/github-backup/0.0.10/Chart.lock | 6 + incubator/github-backup/0.0.10/Chart.yaml | 28 + incubator/github-backup/0.0.10/README.md | 107 + incubator/github-backup/0.0.10/app-readme.md | 8 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/github-backup/0.0.10/ix_values.yaml | 33 + incubator/github-backup/0.0.10/questions.yaml | 2213 ++++++++++++ .../0.0.10/templates/common.yaml | 2 + incubator/github-backup/0.0.10/values.yaml | 0 incubator/github-backup/item.yaml | 4 + incubator/glauth/0.0.10/CHANGELOG.md | 42 + incubator/glauth/0.0.10/Chart.lock | 6 + incubator/glauth/0.0.10/Chart.yaml | 28 + incubator/glauth/0.0.10/README.md | 108 + incubator/glauth/0.0.10/app-readme.md | 8 + .../glauth/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/glauth/0.0.10/ix_values.yaml | 40 + incubator/glauth/0.0.10/questions.yaml | 2703 ++++++++++++++ incubator/glauth/0.0.10/templates/common.yaml | 2 + incubator/glauth/0.0.10/values.yaml | 0 incubator/glauth/item.yaml | 4 + incubator/go-auto-yt/0.0.10/CHANGELOG.md | 42 + incubator/go-auto-yt/0.0.10/Chart.lock | 6 + incubator/go-auto-yt/0.0.10/Chart.yaml | 31 + incubator/go-auto-yt/0.0.10/README.md | 108 + incubator/go-auto-yt/0.0.10/app-readme.md | 9 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/go-auto-yt/0.0.10/ix_values.yaml | 28 + incubator/go-auto-yt/0.0.10/questions.yaml | 2632 ++++++++++++++ .../go-auto-yt/0.0.10/templates/common.yaml | 2 + incubator/go-auto-yt/0.0.10/values.yaml | 0 incubator/go-auto-yt/item.yaml | 5 + incubator/go-playground/0.0.10/CHANGELOG.md | 42 + incubator/go-playground/0.0.10/Chart.lock | 6 + incubator/go-playground/0.0.10/Chart.yaml | 28 + incubator/go-playground/0.0.10/README.md | 108 + incubator/go-playground/0.0.10/app-readme.md | 8 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/go-playground/0.0.10/ix_values.yaml | 23 + incubator/go-playground/0.0.10/questions.yaml | 2272 ++++++++++++ .../0.0.10/templates/common.yaml | 2 + incubator/go-playground/0.0.10/values.yaml | 0 incubator/go-playground/item.yaml | 4 + .../goaccess-npm-logs/0.0.10/CHANGELOG.md | 42 + incubator/goaccess-npm-logs/0.0.10/Chart.lock | 6 + incubator/goaccess-npm-logs/0.0.10/Chart.yaml | 30 + incubator/goaccess-npm-logs/0.0.10/README.md | 108 + .../goaccess-npm-logs/0.0.10/app-readme.md | 9 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes .../goaccess-npm-logs/0.0.10/ix_values.yaml | 31 + .../goaccess-npm-logs/0.0.10/questions.yaml | 2485 +++++++++++++ .../0.0.10/templates/common.yaml | 2 + .../goaccess-npm-logs/0.0.10/values.yaml | 0 incubator/goaccess-npm-logs/item.yaml | 5 + incubator/goaccess/0.0.10/CHANGELOG.md | 34 + incubator/goaccess/0.0.10/Chart.lock | 6 + incubator/goaccess/0.0.10/Chart.yaml | 30 + incubator/goaccess/0.0.10/README.md | 107 + incubator/goaccess/0.0.10/app-readme.md | 8 + .../goaccess/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/goaccess/0.0.10/ix_values.yaml | 24 + incubator/goaccess/0.0.10/questions.yaml | 2440 +++++++++++++ .../goaccess/0.0.10/templates/common.yaml | 2 + incubator/goaccess/0.0.10/values.yaml | 0 incubator/goaccess/item.yaml | 4 + incubator/godaddy-ddns/0.0.10/CHANGELOG.md | 42 + incubator/godaddy-ddns/0.0.10/Chart.lock | 6 + incubator/godaddy-ddns/0.0.10/Chart.yaml | 30 + incubator/godaddy-ddns/0.0.10/README.md | 107 + incubator/godaddy-ddns/0.0.10/app-readme.md | 8 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/godaddy-ddns/0.0.10/ix_values.yaml | 28 + incubator/godaddy-ddns/0.0.10/questions.yaml | 1855 ++++++++++ .../godaddy-ddns/0.0.10/templates/common.yaml | 2 + incubator/godaddy-ddns/0.0.10/values.yaml | 0 incubator/godaddy-ddns/item.yaml | 4 + incubator/gokapi/0.0.10/CHANGELOG.md | 42 + incubator/gokapi/0.0.10/Chart.lock | 6 + incubator/gokapi/0.0.10/Chart.yaml | 34 + incubator/gokapi/0.0.10/README.md | 108 + incubator/gokapi/0.0.10/app-readme.md | 9 + .../gokapi/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/gokapi/0.0.10/ix_values.yaml | 31 + incubator/gokapi/0.0.10/questions.yaml | 2644 ++++++++++++++ incubator/gokapi/0.0.10/templates/common.yaml | 2 + incubator/gokapi/0.0.10/values.yaml | 0 incubator/gokapi/item.yaml | 7 + .../0.0.10/CHANGELOG.md | 42 + .../0.0.10/Chart.lock | 6 + .../0.0.10/Chart.yaml | 31 + .../0.0.10/README.md | 107 + .../0.0.10/app-readme.md | 9 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes .../0.0.10/ix_values.yaml | 34 + .../0.0.10/questions.yaml | 2048 +++++++++++ .../0.0.10/templates/common.yaml | 2 + .../0.0.10/values.yaml | 0 .../google-cloud-storage-backup/item.yaml | 5 + .../googlephotossync/0.0.10/CHANGELOG.md | 42 + incubator/googlephotossync/0.0.10/Chart.lock | 6 + incubator/googlephotossync/0.0.10/Chart.yaml | 30 + incubator/googlephotossync/0.0.10/README.md | 107 + .../googlephotossync/0.0.10/app-readme.md | 9 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes .../googlephotossync/0.0.10/ix_values.yaml | 31 + .../googlephotossync/0.0.10/questions.yaml | 2193 ++++++++++++ .../0.0.10/templates/common.yaml | 2 + incubator/googlephotossync/0.0.10/values.yaml | 0 incubator/googlephotossync/item.yaml | 4 + incubator/gpodder/0.0.10/CHANGELOG.md | 42 + incubator/gpodder/0.0.10/Chart.lock | 6 + incubator/gpodder/0.0.10/Chart.yaml | 31 + incubator/gpodder/0.0.10/README.md | 108 + incubator/gpodder/0.0.10/app-readme.md | 9 + .../gpodder/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/gpodder/0.0.10/ix_values.yaml | 28 + incubator/gpodder/0.0.10/questions.yaml | 2630 ++++++++++++++ .../gpodder/0.0.10/templates/common.yaml | 2 + incubator/gpodder/0.0.10/values.yaml | 0 incubator/gpodder/item.yaml | 5 + .../0.0.10/CHANGELOG.md | 42 + .../grafana-image-renderer/0.0.10/Chart.lock | 6 + .../grafana-image-renderer/0.0.10/Chart.yaml | 29 + .../grafana-image-renderer/0.0.10/README.md | 108 + .../0.0.10/app-readme.md | 9 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes .../0.0.10/ix_values.yaml | 25 + .../0.0.10/questions.yaml | 1829 ++++++++++ .../0.0.10/templates/common.yaml | 2 + .../grafana-image-renderer/0.0.10/values.yaml | 0 incubator/grafana-image-renderer/item.yaml | 4 + .../gridcoinwalletgui/0.0.10/CHANGELOG.md | 42 + incubator/gridcoinwalletgui/0.0.10/Chart.lock | 6 + incubator/gridcoinwalletgui/0.0.10/Chart.yaml | 28 + incubator/gridcoinwalletgui/0.0.10/README.md | 108 + .../gridcoinwalletgui/0.0.10/app-readme.md | 9 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes .../gridcoinwalletgui/0.0.10/ix_values.yaml | 37 + .../gridcoinwalletgui/0.0.10/questions.yaml | 2769 +++++++++++++++ .../0.0.10/templates/common.yaml | 2 + .../gridcoinwalletgui/0.0.10/values.yaml | 0 incubator/gridcoinwalletgui/item.yaml | 4 + incubator/guide2go/0.0.10/CHANGELOG.md | 42 + incubator/guide2go/0.0.10/Chart.lock | 6 + incubator/guide2go/0.0.10/Chart.yaml | 28 + incubator/guide2go/0.0.10/README.md | 108 + incubator/guide2go/0.0.10/app-readme.md | 9 + .../guide2go/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/guide2go/0.0.10/ix_values.yaml | 34 + incubator/guide2go/0.0.10/questions.yaml | 2370 ++++++++++++ .../guide2go/0.0.10/templates/common.yaml | 2 + incubator/guide2go/0.0.10/values.yaml | 0 incubator/guide2go/item.yaml | 4 + incubator/h5ai/0.0.10/CHANGELOG.md | 42 + incubator/h5ai/0.0.10/Chart.lock | 6 + incubator/h5ai/0.0.10/Chart.yaml | 30 + incubator/h5ai/0.0.10/README.md | 108 + incubator/h5ai/0.0.10/app-readme.md | 9 + .../h5ai/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/h5ai/0.0.10/ix_values.yaml | 28 + incubator/h5ai/0.0.10/questions.yaml | 2617 ++++++++++++++ incubator/h5ai/0.0.10/templates/common.yaml | 2 + incubator/h5ai/0.0.10/values.yaml | 0 incubator/h5ai/item.yaml | 5 + .../halflife2deathmatch/0.0.10/CHANGELOG.md | 42 + .../halflife2deathmatch/0.0.10/Chart.lock | 6 + .../halflife2deathmatch/0.0.10/Chart.yaml | 29 + .../halflife2deathmatch/0.0.10/README.md | 108 + .../halflife2deathmatch/0.0.10/app-readme.md | 9 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes .../halflife2deathmatch/0.0.10/ix_values.yaml | 49 + .../halflife2deathmatch/0.0.10/questions.yaml | 2799 +++++++++++++++ .../0.0.10/templates/common.yaml | 2 + .../halflife2deathmatch/0.0.10/values.yaml | 0 incubator/halflife2deathmatch/item.yaml | 4 + .../hassconfigurator/0.0.10/CHANGELOG.md | 42 + incubator/hassconfigurator/0.0.10/Chart.lock | 6 + incubator/hassconfigurator/0.0.10/Chart.yaml | 28 + incubator/hassconfigurator/0.0.10/README.md | 108 + .../hassconfigurator/0.0.10/app-readme.md | 8 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes .../hassconfigurator/0.0.10/ix_values.yaml | 27 + .../hassconfigurator/0.0.10/questions.yaml | 2618 ++++++++++++++ .../0.0.10/templates/common.yaml | 2 + incubator/hassconfigurator/0.0.10/values.yaml | 0 incubator/hassconfigurator/item.yaml | 4 + incubator/hastebin/0.0.10/CHANGELOG.md | 42 + incubator/hastebin/0.0.10/Chart.lock | 6 + incubator/hastebin/0.0.10/Chart.yaml | 35 + incubator/hastebin/0.0.10/README.md | 108 + incubator/hastebin/0.0.10/app-readme.md | 9 + .../hastebin/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/hastebin/0.0.10/ix_values.yaml | 24 + incubator/hastebin/0.0.10/questions.yaml | 2441 +++++++++++++ .../hastebin/0.0.10/templates/common.yaml | 2 + incubator/hastebin/0.0.10/values.yaml | 0 incubator/hastebin/item.yaml | 7 + .../healthchecksdashboard/0.0.10/CHANGELOG.md | 42 + .../healthchecksdashboard/0.0.10/Chart.lock | 6 + .../healthchecksdashboard/0.0.10/Chart.yaml | 33 + .../healthchecksdashboard/0.0.10/README.md | 108 + .../0.0.10/app-readme.md | 9 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes .../0.0.10/ix_values.yaml | 25 + .../0.0.10/questions.yaml | 1829 ++++++++++ .../0.0.10/templates/common.yaml | 2 + .../healthchecksdashboard/0.0.10/values.yaml | 0 incubator/healthchecksdashboard/item.yaml | 6 + incubator/hetzner-ddns/0.0.10/CHANGELOG.md | 42 + incubator/hetzner-ddns/0.0.10/Chart.lock | 6 + incubator/hetzner-ddns/0.0.10/Chart.yaml | 29 + incubator/hetzner-ddns/0.0.10/README.md | 108 + incubator/hetzner-ddns/0.0.10/app-readme.md | 8 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/hetzner-ddns/0.0.10/ix_values.yaml | 28 + incubator/hetzner-ddns/0.0.10/questions.yaml | 1855 ++++++++++ .../hetzner-ddns/0.0.10/templates/common.yaml | 2 + incubator/hetzner-ddns/0.0.10/values.yaml | 0 incubator/hetzner-ddns/item.yaml | 4 + incubator/hexchat/0.0.10/CHANGELOG.md | 42 + incubator/hexchat/0.0.10/Chart.lock | 6 + incubator/hexchat/0.0.10/Chart.yaml | 34 + incubator/hexchat/0.0.10/README.md | 109 + incubator/hexchat/0.0.10/app-readme.md | 8 + .../hexchat/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/hexchat/0.0.10/ix_values.yaml | 27 + incubator/hexchat/0.0.10/questions.yaml | 2463 +++++++++++++ .../hexchat/0.0.10/templates/common.yaml | 2 + incubator/hexchat/0.0.10/values.yaml | 0 incubator/hexchat/item.yaml | 5 + incubator/hexo-blog/0.0.10/CHANGELOG.md | 42 + incubator/hexo-blog/0.0.10/Chart.lock | 6 + incubator/hexo-blog/0.0.10/Chart.yaml | 28 + incubator/hexo-blog/0.0.10/README.md | 108 + incubator/hexo-blog/0.0.10/app-readme.md | 8 + .../hexo-blog/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/hexo-blog/0.0.10/ix_values.yaml | 26 + incubator/hexo-blog/0.0.10/questions.yaml | 1843 ++++++++++ .../hexo-blog/0.0.10/templates/common.yaml | 2 + incubator/hexo-blog/0.0.10/values.yaml | 0 incubator/hexo-blog/item.yaml | 4 + .../homelablabelmaker/0.0.10/CHANGELOG.md | 42 + incubator/homelablabelmaker/0.0.10/Chart.lock | 6 + incubator/homelablabelmaker/0.0.10/Chart.yaml | 31 + incubator/homelablabelmaker/0.0.10/README.md | 108 + .../homelablabelmaker/0.0.10/app-readme.md | 8 + .../0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes .../homelablabelmaker/0.0.10/ix_values.yaml | 25 + .../homelablabelmaker/0.0.10/questions.yaml | 1829 ++++++++++ .../0.0.10/templates/common.yaml | 2 + .../homelablabelmaker/0.0.10/values.yaml | 0 incubator/homelablabelmaker/item.yaml | 5 + incubator/hoobs/0.0.10/CHANGELOG.md | 42 + incubator/hoobs/0.0.10/Chart.lock | 6 + incubator/hoobs/0.0.10/Chart.yaml | 30 + incubator/hoobs/0.0.10/README.md | 107 + incubator/hoobs/0.0.10/app-readme.md | 9 + .../hoobs/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/hoobs/0.0.10/ix_values.yaml | 32 + incubator/hoobs/0.0.10/questions.yaml | 2570 ++++++++++++++ incubator/hoobs/0.0.10/templates/common.yaml | 2 + incubator/hoobs/0.0.10/values.yaml | 0 incubator/hoobs/item.yaml | 5 + incubator/humhub/0.0.10/CHANGELOG.md | 42 + incubator/humhub/0.0.10/Chart.lock | 6 + incubator/humhub/0.0.10/Chart.yaml | 30 + incubator/humhub/0.0.10/README.md | 107 + incubator/humhub/0.0.10/app-readme.md | 8 + .../humhub/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/humhub/0.0.10/ix_values.yaml | 24 + incubator/humhub/0.0.10/questions.yaml | 2441 +++++++++++++ incubator/humhub/0.0.10/templates/common.yaml | 2 + incubator/humhub/0.0.10/values.yaml | 0 incubator/humhub/item.yaml | 4 + incubator/hurtworld/0.0.10/CHANGELOG.md | 42 + incubator/hurtworld/0.0.10/Chart.lock | 6 + incubator/hurtworld/0.0.10/Chart.yaml | 29 + incubator/hurtworld/0.0.10/README.md | 108 + incubator/hurtworld/0.0.10/app-readme.md | 9 + .../hurtworld/0.0.10/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes incubator/hurtworld/0.0.10/ix_values.yaml | 51 + incubator/hurtworld/0.0.10/questions.yaml | 2811 +++++++++++++++ .../hurtworld/0.0.10/templates/common.yaml | 2 + incubator/hurtworld/0.0.10/values.yaml | 0 incubator/hurtworld/item.yaml | 4 + .../wger/0.0.24/charts/common-10.4.4.tgz | Bin 47288 -> 0 bytes .../wger/{0.0.24 => 0.0.25}/CHANGELOG.md | 54 +- incubator/wger/{0.0.24 => 0.0.25}/Chart.lock | 2 +- incubator/wger/{0.0.24 => 0.0.25}/Chart.yaml | 2 +- incubator/wger/{0.0.24 => 0.0.25}/README.md | 2 +- .../wger/{0.0.24 => 0.0.25}/app-readme.md | 0 .../wger/0.0.25}/charts/common-10.4.4.tgz | Bin .../charts/postgresql-8.0.30.tgz | Bin .../charts/redis-3.0.30.tgz | Bin .../wger/{0.0.24 => 0.0.25}/ix_values.yaml | 2 +- .../wger/{0.0.24 => 0.0.25}/questions.yaml | 0 .../{0.0.24 => 0.0.25}/templates/_secrets.tpl | 0 .../{0.0.24 => 0.0.25}/templates/common.yaml | 0 incubator/wger/0.0.25/values.yaml | 0 stable/cloudflared/1.0.0/CHANGELOG.md | 99 + .../cloudflared/1.0.0}/Chart.lock | 2 +- stable/cloudflared/1.0.0/Chart.yaml | 29 + stable/cloudflared/1.0.0/README.md | 107 + stable/cloudflared/1.0.0/app-readme.md | 8 + .../1.0.0}/charts/common-10.4.4.tgz | Bin stable/cloudflared/1.0.0/ci/test-values.yaml | 3 + stable/cloudflared/1.0.0/ix_values.yaml | 32 + stable/cloudflared/1.0.0/questions.yaml | 2239 ++++++++++++ .../cloudflared/1.0.0/templates/common.yaml | 1 + stable/cloudflared/1.0.0/values.yaml | 0 stable/cloudflared/item.yaml | 4 + stable/grafana/4.0.29/Chart.lock | 6 - stable/grafana/4.0.29/README.md | 43 - stable/grafana/4.0.29/app-readme.md | 3 - .../grafana/4.0.29/charts/common-10.4.4.tgz | Bin 47288 -> 0 bytes .../grafana/{4.0.29 => 4.0.31}/CHANGELOG.md | 70 +- .../grafana/4.0.31}/Chart.lock | 2 +- stable/grafana/{4.0.29 => 4.0.31}/Chart.yaml | 2 +- stable/grafana/4.0.31/README.md | 108 + stable/grafana/4.0.31/app-readme.md | 8 + .../grafana/4.0.31}/charts/common-10.4.4.tgz | Bin .../grafana/{4.0.29 => 4.0.31}/ix_values.yaml | 2 +- .../grafana/{4.0.29 => 4.0.31}/questions.yaml | 0 stable/grafana/4.0.31/templates/common.yaml | 1 + .../templates/prometheusrules.yaml | 0 .../templates/servicemonitor.yaml | 0 stable/grafana/4.0.31/values.yaml | 0 .../4.0.39/charts/common-10.4.4.tgz | Bin 47288 -> 0 bytes .../{4.0.39 => 4.0.40}/CHANGELOG.md | 54 +- .../prometheus/{4.0.39 => 4.0.40}/Chart.lock | 2 +- .../prometheus/{4.0.39 => 4.0.40}/Chart.yaml | 2 +- .../prometheus/{4.0.39 => 4.0.40}/README.md | 2 +- .../{4.0.39 => 4.0.40}/app-readme.md | 0 .../4.0.40}/charts/common-10.4.4.tgz | Bin .../charts/kube-state-metrics-3.1.1.tgz | Bin .../charts/node-exporter-3.0.4.tgz | Bin .../crds/crd-alertmanager-config.yaml | 0 .../crds/crd-alertmanager.yaml | 0 .../crds/crd-podmonitor.yaml | 0 .../{4.0.39 => 4.0.40}/crds/crd-probes.yaml | 0 .../crds/crd-prometheus.yaml | 0 .../crds/crd-prometheusrules.yaml | 0 .../crds/crd-servicemonitor.yaml | 0 .../crds/crd-thanosrulers.yaml | 0 .../{4.0.39 => 4.0.40}/ix_values.yaml | 2 +- .../{4.0.39 => 4.0.40}/questions.yaml | 0 .../{4.0.39 => 4.0.40}/templates/_helpers.tpl | 0 .../templates/alertmanager/_alertmanager.tpl | 0 .../templates/alertmanager/secrets.yaml | 0 .../alertmanager/serviceaccount.yaml | 0 .../alertmanager/servicemonitor.yaml | 0 .../{4.0.39 => 4.0.40}/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 .../templates/operator/_args.tpl | 0 .../templates/operator/configmap.yaml | 0 .../templates/operator/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 stable/prometheus/4.0.40/values.yaml | 0 1083 files changed, 223442 insertions(+), 826 deletions(-) create mode 100644 dependency/clickhouse/1.0.0/CHANGELOG.md rename dependency/{memcached/3.0.39 => clickhouse/1.0.0}/Chart.lock (80%) create mode 100644 dependency/clickhouse/1.0.0/Chart.yaml create mode 100644 dependency/clickhouse/1.0.0/README.md create mode 100644 dependency/clickhouse/1.0.0/app-readme.md rename dependency/{mariadb/3.0.38 => clickhouse/1.0.0}/charts/common-10.4.4.tgz (100%) create mode 100644 dependency/clickhouse/1.0.0/ix_values.yaml create mode 100644 dependency/clickhouse/1.0.0/questions.yaml rename dependency/{mariadb/3.0.38 => clickhouse/1.0.0}/templates/common.yaml (100%) rename dependency/{mariadb/3.0.38 => clickhouse/1.0.0}/values.yaml (100%) create mode 100644 dependency/clickhouse/item.yaml create mode 100644 dependency/collabora-online/12.1.19/CHANGELOG.md create mode 100644 dependency/collabora-online/12.1.19/Chart.lock create mode 100644 dependency/collabora-online/12.1.19/Chart.yaml create mode 100644 dependency/collabora-online/12.1.19/README.md create mode 100644 dependency/collabora-online/12.1.19/app-readme.md create mode 100644 dependency/collabora-online/12.1.19/charts/common-10.4.6.tgz create mode 100644 dependency/collabora-online/12.1.19/ix_values.yaml create mode 100644 dependency/collabora-online/12.1.19/questions.yaml rename {stable/grafana/4.0.29 => dependency/collabora-online/12.1.19}/templates/common.yaml (100%) rename dependency/{memcached/3.0.39 => collabora-online/12.1.19}/values.yaml (100%) delete mode 100644 dependency/mariadb/3.0.38/CHANGELOG.md create mode 100644 dependency/mariadb/3.0.39/CHANGELOG.md create mode 100644 dependency/mariadb/3.0.39/Chart.lock rename dependency/mariadb/{3.0.38 => 3.0.39}/Chart.yaml (96%) rename dependency/mariadb/{3.0.38 => 3.0.39}/README.md (96%) rename dependency/mariadb/{3.0.38 => 3.0.39}/app-readme.md (100%) create mode 100644 dependency/mariadb/3.0.39/charts/common-10.4.6.tgz rename dependency/mariadb/{3.0.38 => 3.0.39}/ix_values.yaml (98%) rename dependency/mariadb/{3.0.38 => 3.0.39}/questions.yaml (100%) create mode 100644 dependency/mariadb/3.0.39/templates/common.yaml rename dependency/{mongodb/1.0.42 => mariadb/3.0.39}/values.yaml (100%) delete mode 100644 dependency/memcached/3.0.39/CHANGELOG.md delete mode 100644 dependency/memcached/3.0.39/ix_values.yaml create mode 100644 dependency/memcached/3.0.41/CHANGELOG.md create mode 100644 dependency/memcached/3.0.41/Chart.lock rename dependency/memcached/{3.0.39 => 3.0.41}/Chart.yaml (95%) rename dependency/memcached/{3.0.39 => 3.0.41}/README.md (96%) rename dependency/memcached/{3.0.39 => 3.0.41}/app-readme.md (100%) create mode 100644 dependency/memcached/3.0.41/charts/common-10.4.6.tgz create mode 100644 dependency/memcached/3.0.41/ix_values.yaml rename dependency/memcached/{3.0.39 => 3.0.41}/questions.yaml (100%) rename dependency/memcached/{3.0.39 => 3.0.41}/templates/common.yaml (100%) rename dependency/{postgresql/8.0.40 => memcached/3.0.41}/values.yaml (100%) delete mode 100644 dependency/mongodb/1.0.42/CHANGELOG.md create mode 100644 dependency/mongodb/1.0.43/CHANGELOG.md create mode 100644 dependency/mongodb/1.0.43/Chart.lock rename dependency/mongodb/{1.0.42 => 1.0.43}/Chart.yaml (95%) rename dependency/mongodb/{1.0.42 => 1.0.43}/README.md (96%) rename dependency/mongodb/{1.0.42 => 1.0.43}/app-readme.md (100%) create mode 100644 dependency/mongodb/1.0.43/charts/common-10.4.6.tgz rename dependency/mongodb/{1.0.42 => 1.0.43}/ix_values.yaml (98%) rename dependency/mongodb/{1.0.42 => 1.0.43}/questions.yaml (100%) rename dependency/mongodb/{1.0.42 => 1.0.43}/templates/common.yaml (100%) rename dependency/{promtail/3.0.31 => mongodb/1.0.43}/values.yaml (100%) delete mode 100644 dependency/postgresql/8.0.40/Chart.lock rename dependency/postgresql/{8.0.40 => 8.0.41}/CHANGELOG.md (56%) create mode 100644 dependency/postgresql/8.0.41/Chart.lock rename dependency/postgresql/{8.0.40 => 8.0.41}/Chart.yaml (95%) rename dependency/postgresql/{8.0.40 => 8.0.41}/README.md (96%) rename dependency/postgresql/{8.0.40 => 8.0.41}/app-readme.md (100%) create mode 100644 dependency/postgresql/8.0.41/charts/common-10.4.6.tgz rename dependency/postgresql/{8.0.40 => 8.0.41}/ix_values.yaml (98%) rename dependency/postgresql/{8.0.40 => 8.0.41}/questions.yaml (100%) rename dependency/postgresql/{8.0.40 => 8.0.41}/templates/common.yaml (100%) rename dependency/{redis/3.0.40 => postgresql/8.0.41}/values.yaml (100%) delete mode 100644 dependency/promtail/3.0.31/CHANGELOG.md delete mode 100644 dependency/promtail/3.0.31/Chart.lock create mode 100644 dependency/promtail/3.0.32/CHANGELOG.md create mode 100644 dependency/promtail/3.0.32/Chart.lock rename dependency/promtail/{3.0.31 => 3.0.32}/Chart.yaml (95%) rename dependency/promtail/{3.0.31 => 3.0.32}/README.md (96%) rename dependency/promtail/{3.0.31 => 3.0.32}/app-readme.md (100%) create mode 100644 dependency/promtail/3.0.32/charts/common-10.4.6.tgz rename dependency/promtail/{3.0.31 => 3.0.32}/ix_values.yaml (100%) rename dependency/promtail/{3.0.31 => 3.0.32}/questions.yaml (100%) rename dependency/promtail/{3.0.31 => 3.0.32}/templates/_servicemonitor.tpl (100%) rename dependency/promtail/{3.0.31 => 3.0.32}/templates/common.yaml (100%) rename dependency/{solr/0.0.14 => promtail/3.0.32}/values.yaml (100%) delete mode 100644 dependency/redis/3.0.40/CHANGELOG.md delete mode 100644 dependency/redis/3.0.40/Chart.lock create mode 100644 dependency/redis/3.0.41/CHANGELOG.md create mode 100644 dependency/redis/3.0.41/Chart.lock rename dependency/redis/{3.0.40 => 3.0.41}/Chart.yaml (95%) rename dependency/redis/{3.0.40 => 3.0.41}/README.md (96%) rename dependency/redis/{3.0.40 => 3.0.41}/app-readme.md (100%) create mode 100644 dependency/redis/3.0.41/charts/common-10.4.6.tgz rename dependency/redis/{3.0.40 => 3.0.41}/ix_values.yaml (99%) rename dependency/redis/{3.0.40 => 3.0.41}/questions.yaml (100%) rename dependency/redis/{3.0.40 => 3.0.41}/templates/common.yaml (100%) rename {incubator/awesome-ttrss/0.0.21 => dependency/redis/3.0.41}/values.yaml (100%) delete mode 100644 dependency/solr/0.0.14/Chart.lock delete mode 100644 dependency/solr/0.0.14/charts/common-10.4.4.tgz rename dependency/solr/{0.0.14 => 0.0.15}/CHANGELOG.md (61%) create mode 100644 dependency/solr/0.0.15/Chart.lock rename dependency/solr/{0.0.14 => 0.0.15}/Chart.yaml (95%) rename dependency/solr/{0.0.14 => 0.0.15}/README.md (96%) rename dependency/solr/{0.0.14 => 0.0.15}/app-readme.md (100%) create mode 100644 dependency/solr/0.0.15/charts/common-10.4.6.tgz rename dependency/solr/{0.0.14 => 0.0.15}/ix_values.yaml (100%) rename dependency/solr/{0.0.14 => 0.0.15}/questions.yaml (100%) rename dependency/solr/{0.0.14 => 0.0.15}/templates/common.yaml (100%) rename {incubator/wger/0.0.24 => dependency/solr/0.0.15}/values.yaml (100%) delete mode 100644 incubator/awesome-ttrss/0.0.21/charts/common-10.4.4.tgz rename incubator/awesome-ttrss/{0.0.21 => 0.0.22}/CHANGELOG.md (70%) rename incubator/awesome-ttrss/{0.0.21 => 0.0.22}/Chart.lock (85%) rename incubator/awesome-ttrss/{0.0.21 => 0.0.22}/Chart.yaml (98%) rename incubator/awesome-ttrss/{0.0.21 => 0.0.22}/README.md (98%) rename incubator/awesome-ttrss/{0.0.21 => 0.0.22}/app-readme.md (100%) rename {dependency/memcached/3.0.39 => incubator/awesome-ttrss/0.0.22}/charts/common-10.4.4.tgz (100%) rename incubator/awesome-ttrss/{0.0.21 => 0.0.22}/charts/postgresql-8.0.30.tgz (100%) rename incubator/awesome-ttrss/{0.0.21 => 0.0.22}/ix_values.yaml (92%) rename incubator/awesome-ttrss/{0.0.21 => 0.0.22}/questions.yaml (100%) rename incubator/awesome-ttrss/{0.0.21 => 0.0.22}/templates/common.yaml (100%) rename {stable/grafana/4.0.29 => incubator/awesome-ttrss/0.0.22}/values.yaml (100%) create mode 100644 incubator/dailynotes/0.0.10/CHANGELOG.md create mode 100644 incubator/dailynotes/0.0.10/Chart.lock create mode 100644 incubator/dailynotes/0.0.10/Chart.yaml create mode 100644 incubator/dailynotes/0.0.10/README.md create mode 100644 incubator/dailynotes/0.0.10/app-readme.md create mode 100644 incubator/dailynotes/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/dailynotes/0.0.10/ix_values.yaml create mode 100644 incubator/dailynotes/0.0.10/questions.yaml create mode 100644 incubator/dailynotes/0.0.10/templates/common.yaml rename {stable/prometheus/4.0.39 => incubator/dailynotes/0.0.10}/values.yaml (100%) create mode 100644 incubator/dailynotes/item.yaml create mode 100644 incubator/damselfly/0.0.10/CHANGELOG.md create mode 100644 incubator/damselfly/0.0.10/Chart.lock create mode 100644 incubator/damselfly/0.0.10/Chart.yaml create mode 100644 incubator/damselfly/0.0.10/README.md create mode 100644 incubator/damselfly/0.0.10/app-readme.md create mode 100644 incubator/damselfly/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/damselfly/0.0.10/ix_values.yaml create mode 100644 incubator/damselfly/0.0.10/questions.yaml create mode 100644 incubator/damselfly/0.0.10/templates/common.yaml create mode 100644 incubator/damselfly/0.0.10/values.yaml create mode 100644 incubator/damselfly/item.yaml create mode 100644 incubator/dashmachine/0.0.10/CHANGELOG.md create mode 100644 incubator/dashmachine/0.0.10/Chart.lock create mode 100644 incubator/dashmachine/0.0.10/Chart.yaml create mode 100644 incubator/dashmachine/0.0.10/README.md create mode 100644 incubator/dashmachine/0.0.10/app-readme.md create mode 100644 incubator/dashmachine/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/dashmachine/0.0.10/ix_values.yaml create mode 100644 incubator/dashmachine/0.0.10/questions.yaml create mode 100644 incubator/dashmachine/0.0.10/templates/common.yaml create mode 100644 incubator/dashmachine/0.0.10/values.yaml create mode 100644 incubator/dashmachine/item.yaml create mode 100644 incubator/dayofdefeatsource/0.0.10/CHANGELOG.md create mode 100644 incubator/dayofdefeatsource/0.0.10/Chart.lock create mode 100644 incubator/dayofdefeatsource/0.0.10/Chart.yaml create mode 100644 incubator/dayofdefeatsource/0.0.10/README.md create mode 100644 incubator/dayofdefeatsource/0.0.10/app-readme.md create mode 100644 incubator/dayofdefeatsource/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/dayofdefeatsource/0.0.10/ix_values.yaml create mode 100644 incubator/dayofdefeatsource/0.0.10/questions.yaml create mode 100644 incubator/dayofdefeatsource/0.0.10/templates/common.yaml create mode 100644 incubator/dayofdefeatsource/0.0.10/values.yaml create mode 100644 incubator/dayofdefeatsource/item.yaml create mode 100644 incubator/daysofwar/0.0.10/CHANGELOG.md create mode 100644 incubator/daysofwar/0.0.10/Chart.lock create mode 100644 incubator/daysofwar/0.0.10/Chart.yaml create mode 100644 incubator/daysofwar/0.0.10/README.md create mode 100644 incubator/daysofwar/0.0.10/app-readme.md create mode 100644 incubator/daysofwar/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/daysofwar/0.0.10/ix_values.yaml create mode 100644 incubator/daysofwar/0.0.10/questions.yaml create mode 100644 incubator/daysofwar/0.0.10/templates/common.yaml create mode 100644 incubator/daysofwar/0.0.10/values.yaml create mode 100644 incubator/daysofwar/item.yaml create mode 100644 incubator/dayz/0.0.10/CHANGELOG.md create mode 100644 incubator/dayz/0.0.10/Chart.lock create mode 100644 incubator/dayz/0.0.10/Chart.yaml create mode 100644 incubator/dayz/0.0.10/README.md create mode 100644 incubator/dayz/0.0.10/app-readme.md create mode 100644 incubator/dayz/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/dayz/0.0.10/ix_values.yaml create mode 100644 incubator/dayz/0.0.10/questions.yaml create mode 100644 incubator/dayz/0.0.10/templates/common.yaml create mode 100644 incubator/dayz/0.0.10/values.yaml create mode 100644 incubator/dayz/item.yaml create mode 100644 incubator/ddns-route53/0.0.10/CHANGELOG.md create mode 100644 incubator/ddns-route53/0.0.10/Chart.lock create mode 100644 incubator/ddns-route53/0.0.10/Chart.yaml create mode 100644 incubator/ddns-route53/0.0.10/README.md create mode 100644 incubator/ddns-route53/0.0.10/app-readme.md create mode 100644 incubator/ddns-route53/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/ddns-route53/0.0.10/ix_values.yaml create mode 100644 incubator/ddns-route53/0.0.10/questions.yaml create mode 100644 incubator/ddns-route53/0.0.10/templates/common.yaml create mode 100644 incubator/ddns-route53/0.0.10/values.yaml create mode 100644 incubator/ddns-route53/item.yaml create mode 100644 incubator/debian-apt-mirror/0.0.10/CHANGELOG.md create mode 100644 incubator/debian-apt-mirror/0.0.10/Chart.lock create mode 100644 incubator/debian-apt-mirror/0.0.10/Chart.yaml create mode 100644 incubator/debian-apt-mirror/0.0.10/README.md create mode 100644 incubator/debian-apt-mirror/0.0.10/app-readme.md create mode 100644 incubator/debian-apt-mirror/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/debian-apt-mirror/0.0.10/ix_values.yaml create mode 100644 incubator/debian-apt-mirror/0.0.10/questions.yaml create mode 100644 incubator/debian-apt-mirror/0.0.10/templates/common.yaml create mode 100644 incubator/debian-apt-mirror/0.0.10/values.yaml create mode 100644 incubator/debian-apt-mirror/item.yaml create mode 100644 incubator/debian-bullseye/0.0.10/CHANGELOG.md create mode 100644 incubator/debian-bullseye/0.0.10/Chart.lock create mode 100644 incubator/debian-bullseye/0.0.10/Chart.yaml create mode 100644 incubator/debian-bullseye/0.0.10/README.md create mode 100644 incubator/debian-bullseye/0.0.10/app-readme.md create mode 100644 incubator/debian-bullseye/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/debian-bullseye/0.0.10/ix_values.yaml create mode 100644 incubator/debian-bullseye/0.0.10/questions.yaml create mode 100644 incubator/debian-bullseye/0.0.10/templates/common.yaml create mode 100644 incubator/debian-bullseye/0.0.10/values.yaml create mode 100644 incubator/debian-bullseye/item.yaml create mode 100644 incubator/dispatch/0.0.10/CHANGELOG.md create mode 100644 incubator/dispatch/0.0.10/Chart.lock create mode 100644 incubator/dispatch/0.0.10/Chart.yaml create mode 100644 incubator/dispatch/0.0.10/README.md create mode 100644 incubator/dispatch/0.0.10/app-readme.md create mode 100644 incubator/dispatch/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/dispatch/0.0.10/ix_values.yaml create mode 100644 incubator/dispatch/0.0.10/questions.yaml create mode 100644 incubator/dispatch/0.0.10/templates/common.yaml create mode 100644 incubator/dispatch/0.0.10/values.yaml create mode 100644 incubator/dispatch/item.yaml create mode 100644 incubator/dns-doh-companion/0.0.10/CHANGELOG.md create mode 100644 incubator/dns-doh-companion/0.0.10/Chart.lock create mode 100644 incubator/dns-doh-companion/0.0.10/Chart.yaml create mode 100644 incubator/dns-doh-companion/0.0.10/README.md create mode 100644 incubator/dns-doh-companion/0.0.10/app-readme.md create mode 100644 incubator/dns-doh-companion/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/dns-doh-companion/0.0.10/ix_values.yaml create mode 100644 incubator/dns-doh-companion/0.0.10/questions.yaml create mode 100644 incubator/dns-doh-companion/0.0.10/templates/common.yaml create mode 100644 incubator/dns-doh-companion/0.0.10/values.yaml create mode 100644 incubator/dns-doh-companion/item.yaml create mode 100644 incubator/docker-hub-rss/0.0.10/CHANGELOG.md create mode 100644 incubator/docker-hub-rss/0.0.10/Chart.lock create mode 100644 incubator/docker-hub-rss/0.0.10/Chart.yaml create mode 100644 incubator/docker-hub-rss/0.0.10/README.md create mode 100644 incubator/docker-hub-rss/0.0.10/app-readme.md create mode 100644 incubator/docker-hub-rss/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/docker-hub-rss/0.0.10/ix_values.yaml create mode 100644 incubator/docker-hub-rss/0.0.10/questions.yaml create mode 100644 incubator/docker-hub-rss/0.0.10/templates/common.yaml create mode 100644 incubator/docker-hub-rss/0.0.10/values.yaml create mode 100644 incubator/docker-hub-rss/item.yaml create mode 100644 incubator/dockerregistry/0.0.10/CHANGELOG.md create mode 100644 incubator/dockerregistry/0.0.10/Chart.lock create mode 100644 incubator/dockerregistry/0.0.10/Chart.yaml create mode 100644 incubator/dockerregistry/0.0.10/README.md create mode 100644 incubator/dockerregistry/0.0.10/app-readme.md create mode 100644 incubator/dockerregistry/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/dockerregistry/0.0.10/ix_values.yaml create mode 100644 incubator/dockerregistry/0.0.10/questions.yaml create mode 100644 incubator/dockerregistry/0.0.10/templates/common.yaml create mode 100644 incubator/dockerregistry/0.0.10/values.yaml create mode 100644 incubator/dockerregistry/item.yaml create mode 100644 incubator/dontstarvetogether/0.0.10/CHANGELOG.md create mode 100644 incubator/dontstarvetogether/0.0.10/Chart.lock create mode 100644 incubator/dontstarvetogether/0.0.10/Chart.yaml create mode 100644 incubator/dontstarvetogether/0.0.10/README.md create mode 100644 incubator/dontstarvetogether/0.0.10/app-readme.md create mode 100644 incubator/dontstarvetogether/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/dontstarvetogether/0.0.10/ix_values.yaml create mode 100644 incubator/dontstarvetogether/0.0.10/questions.yaml create mode 100644 incubator/dontstarvetogether/0.0.10/templates/common.yaml create mode 100644 incubator/dontstarvetogether/0.0.10/values.yaml create mode 100644 incubator/dontstarvetogether/item.yaml create mode 100644 incubator/dropbox-by-otherguy/0.0.10/CHANGELOG.md create mode 100644 incubator/dropbox-by-otherguy/0.0.10/Chart.lock create mode 100644 incubator/dropbox-by-otherguy/0.0.10/Chart.yaml create mode 100644 incubator/dropbox-by-otherguy/0.0.10/README.md create mode 100644 incubator/dropbox-by-otherguy/0.0.10/app-readme.md create mode 100644 incubator/dropbox-by-otherguy/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/dropbox-by-otherguy/0.0.10/ix_values.yaml create mode 100644 incubator/dropbox-by-otherguy/0.0.10/questions.yaml create mode 100644 incubator/dropbox-by-otherguy/0.0.10/templates/common.yaml create mode 100644 incubator/dropbox-by-otherguy/0.0.10/values.yaml create mode 100644 incubator/dropbox-by-otherguy/item.yaml create mode 100644 incubator/duplicacy/0.0.10/CHANGELOG.md create mode 100644 incubator/duplicacy/0.0.10/Chart.lock create mode 100644 incubator/duplicacy/0.0.10/Chart.yaml create mode 100644 incubator/duplicacy/0.0.10/README.md create mode 100644 incubator/duplicacy/0.0.10/app-readme.md create mode 100644 incubator/duplicacy/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/duplicacy/0.0.10/ix_values.yaml create mode 100644 incubator/duplicacy/0.0.10/questions.yaml create mode 100644 incubator/duplicacy/0.0.10/templates/common.yaml create mode 100644 incubator/duplicacy/0.0.10/values.yaml create mode 100644 incubator/duplicacy/item.yaml create mode 100644 incubator/dvblink/0.0.10/CHANGELOG.md create mode 100644 incubator/dvblink/0.0.10/Chart.lock create mode 100644 incubator/dvblink/0.0.10/Chart.yaml create mode 100644 incubator/dvblink/0.0.10/README.md create mode 100644 incubator/dvblink/0.0.10/app-readme.md create mode 100644 incubator/dvblink/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/dvblink/0.0.10/ix_values.yaml create mode 100644 incubator/dvblink/0.0.10/questions.yaml create mode 100644 incubator/dvblink/0.0.10/templates/common.yaml create mode 100644 incubator/dvblink/0.0.10/values.yaml create mode 100644 incubator/dvblink/item.yaml create mode 100644 incubator/eco/0.0.10/CHANGELOG.md create mode 100644 incubator/eco/0.0.10/Chart.lock create mode 100644 incubator/eco/0.0.10/Chart.yaml create mode 100644 incubator/eco/0.0.10/README.md create mode 100644 incubator/eco/0.0.10/app-readme.md create mode 100644 incubator/eco/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/eco/0.0.10/ix_values.yaml create mode 100644 incubator/eco/0.0.10/questions.yaml create mode 100644 incubator/eco/0.0.10/templates/common.yaml create mode 100644 incubator/eco/0.0.10/values.yaml create mode 100644 incubator/eco/item.yaml create mode 100644 incubator/ecodms/0.0.10/CHANGELOG.md create mode 100644 incubator/ecodms/0.0.10/Chart.lock create mode 100644 incubator/ecodms/0.0.10/Chart.yaml create mode 100644 incubator/ecodms/0.0.10/README.md create mode 100644 incubator/ecodms/0.0.10/app-readme.md create mode 100644 incubator/ecodms/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/ecodms/0.0.10/ix_values.yaml create mode 100644 incubator/ecodms/0.0.10/questions.yaml create mode 100644 incubator/ecodms/0.0.10/templates/common.yaml create mode 100644 incubator/ecodms/0.0.10/values.yaml create mode 100644 incubator/ecodms/item.yaml create mode 100644 incubator/electrum/0.0.10/CHANGELOG.md create mode 100644 incubator/electrum/0.0.10/Chart.lock create mode 100644 incubator/electrum/0.0.10/Chart.yaml create mode 100644 incubator/electrum/0.0.10/README.md create mode 100644 incubator/electrum/0.0.10/app-readme.md create mode 100644 incubator/electrum/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/electrum/0.0.10/ix_values.yaml create mode 100644 incubator/electrum/0.0.10/questions.yaml create mode 100644 incubator/electrum/0.0.10/templates/common.yaml create mode 100644 incubator/electrum/0.0.10/values.yaml create mode 100644 incubator/electrum/item.yaml create mode 100644 incubator/emby-sync/0.0.10/CHANGELOG.md create mode 100644 incubator/emby-sync/0.0.10/Chart.lock create mode 100644 incubator/emby-sync/0.0.10/Chart.yaml create mode 100644 incubator/emby-sync/0.0.10/README.md create mode 100644 incubator/emby-sync/0.0.10/app-readme.md create mode 100644 incubator/emby-sync/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/emby-sync/0.0.10/ix_values.yaml create mode 100644 incubator/emby-sync/0.0.10/questions.yaml create mode 100644 incubator/emby-sync/0.0.10/templates/common.yaml create mode 100644 incubator/emby-sync/0.0.10/values.yaml create mode 100644 incubator/emby-sync/item.yaml create mode 100644 incubator/ethercalc/0.0.10/CHANGELOG.md create mode 100644 incubator/ethercalc/0.0.10/Chart.lock create mode 100644 incubator/ethercalc/0.0.10/Chart.yaml create mode 100644 incubator/ethercalc/0.0.10/README.md create mode 100644 incubator/ethercalc/0.0.10/app-readme.md create mode 100644 incubator/ethercalc/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/ethercalc/0.0.10/ix_values.yaml create mode 100644 incubator/ethercalc/0.0.10/questions.yaml create mode 100644 incubator/ethercalc/0.0.10/templates/common.yaml create mode 100644 incubator/ethercalc/0.0.10/values.yaml create mode 100644 incubator/ethercalc/item.yaml create mode 100644 incubator/euterpe/0.0.10/CHANGELOG.md create mode 100644 incubator/euterpe/0.0.10/Chart.lock create mode 100644 incubator/euterpe/0.0.10/Chart.yaml create mode 100644 incubator/euterpe/0.0.10/README.md create mode 100644 incubator/euterpe/0.0.10/app-readme.md create mode 100644 incubator/euterpe/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/euterpe/0.0.10/ix_values.yaml create mode 100644 incubator/euterpe/0.0.10/questions.yaml create mode 100644 incubator/euterpe/0.0.10/templates/common.yaml create mode 100644 incubator/euterpe/0.0.10/values.yaml create mode 100644 incubator/euterpe/item.yaml create mode 100644 incubator/explainshell/0.0.10/CHANGELOG.md create mode 100644 incubator/explainshell/0.0.10/Chart.lock create mode 100644 incubator/explainshell/0.0.10/Chart.yaml create mode 100644 incubator/explainshell/0.0.10/README.md create mode 100644 incubator/explainshell/0.0.10/app-readme.md create mode 100644 incubator/explainshell/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/explainshell/0.0.10/ix_values.yaml create mode 100644 incubator/explainshell/0.0.10/questions.yaml create mode 100644 incubator/explainshell/0.0.10/templates/common.yaml create mode 100644 incubator/explainshell/0.0.10/values.yaml create mode 100644 incubator/explainshell/item.yaml create mode 100644 incubator/external-ip/0.0.10/CHANGELOG.md create mode 100644 incubator/external-ip/0.0.10/Chart.lock create mode 100644 incubator/external-ip/0.0.10/Chart.yaml create mode 100644 incubator/external-ip/0.0.10/README.md create mode 100644 incubator/external-ip/0.0.10/app-readme.md create mode 100644 incubator/external-ip/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/external-ip/0.0.10/ix_values.yaml create mode 100644 incubator/external-ip/0.0.10/questions.yaml create mode 100644 incubator/external-ip/0.0.10/templates/common.yaml create mode 100644 incubator/external-ip/0.0.10/values.yaml create mode 100644 incubator/external-ip/item.yaml create mode 100644 incubator/factorio/0.0.10/CHANGELOG.md create mode 100644 incubator/factorio/0.0.10/Chart.lock create mode 100644 incubator/factorio/0.0.10/Chart.yaml create mode 100644 incubator/factorio/0.0.10/README.md create mode 100644 incubator/factorio/0.0.10/app-readme.md create mode 100644 incubator/factorio/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/factorio/0.0.10/ix_values.yaml create mode 100644 incubator/factorio/0.0.10/questions.yaml create mode 100644 incubator/factorio/0.0.10/templates/common.yaml create mode 100644 incubator/factorio/0.0.10/values.yaml create mode 100644 incubator/factorio/item.yaml create mode 100644 incubator/factorioservermanager/0.0.10/CHANGELOG.md create mode 100644 incubator/factorioservermanager/0.0.10/Chart.lock create mode 100644 incubator/factorioservermanager/0.0.10/Chart.yaml create mode 100644 incubator/factorioservermanager/0.0.10/README.md create mode 100644 incubator/factorioservermanager/0.0.10/app-readme.md create mode 100644 incubator/factorioservermanager/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/factorioservermanager/0.0.10/ix_values.yaml create mode 100644 incubator/factorioservermanager/0.0.10/questions.yaml create mode 100644 incubator/factorioservermanager/0.0.10/templates/common.yaml create mode 100644 incubator/factorioservermanager/0.0.10/values.yaml create mode 100644 incubator/factorioservermanager/item.yaml create mode 100644 incubator/facturascripts/0.0.10/CHANGELOG.md create mode 100644 incubator/facturascripts/0.0.10/Chart.lock create mode 100644 incubator/facturascripts/0.0.10/Chart.yaml create mode 100644 incubator/facturascripts/0.0.10/README.md create mode 100644 incubator/facturascripts/0.0.10/app-readme.md create mode 100644 incubator/facturascripts/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/facturascripts/0.0.10/ix_values.yaml create mode 100644 incubator/facturascripts/0.0.10/questions.yaml create mode 100644 incubator/facturascripts/0.0.10/templates/common.yaml create mode 100644 incubator/facturascripts/0.0.10/values.yaml create mode 100644 incubator/facturascripts/item.yaml create mode 100644 incubator/farmos/0.0.10/CHANGELOG.md create mode 100644 incubator/farmos/0.0.10/Chart.lock create mode 100644 incubator/farmos/0.0.10/Chart.yaml create mode 100644 incubator/farmos/0.0.10/README.md create mode 100644 incubator/farmos/0.0.10/app-readme.md create mode 100644 incubator/farmos/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/farmos/0.0.10/ix_values.yaml create mode 100644 incubator/farmos/0.0.10/questions.yaml create mode 100644 incubator/farmos/0.0.10/templates/common.yaml create mode 100644 incubator/farmos/0.0.10/values.yaml create mode 100644 incubator/farmos/item.yaml create mode 100644 incubator/fastcom-mqtt/0.0.10/CHANGELOG.md create mode 100644 incubator/fastcom-mqtt/0.0.10/Chart.lock create mode 100644 incubator/fastcom-mqtt/0.0.10/Chart.yaml create mode 100644 incubator/fastcom-mqtt/0.0.10/README.md create mode 100644 incubator/fastcom-mqtt/0.0.10/app-readme.md create mode 100644 incubator/fastcom-mqtt/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/fastcom-mqtt/0.0.10/ix_values.yaml create mode 100644 incubator/fastcom-mqtt/0.0.10/questions.yaml create mode 100644 incubator/fastcom-mqtt/0.0.10/templates/common.yaml create mode 100644 incubator/fastcom-mqtt/0.0.10/values.yaml create mode 100644 incubator/fastcom-mqtt/item.yaml create mode 100644 incubator/fenrus/0.0.10/CHANGELOG.md create mode 100644 incubator/fenrus/0.0.10/Chart.lock create mode 100644 incubator/fenrus/0.0.10/Chart.yaml create mode 100644 incubator/fenrus/0.0.10/README.md create mode 100644 incubator/fenrus/0.0.10/app-readme.md create mode 100644 incubator/fenrus/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/fenrus/0.0.10/ix_values.yaml create mode 100644 incubator/fenrus/0.0.10/questions.yaml create mode 100644 incubator/fenrus/0.0.10/templates/common.yaml create mode 100644 incubator/fenrus/0.0.10/values.yaml create mode 100644 incubator/fenrus/item.yaml create mode 100644 incubator/ferdi-client/0.0.10/CHANGELOG.md create mode 100644 incubator/ferdi-client/0.0.10/Chart.lock create mode 100644 incubator/ferdi-client/0.0.10/Chart.yaml create mode 100644 incubator/ferdi-client/0.0.10/README.md create mode 100644 incubator/ferdi-client/0.0.10/app-readme.md create mode 100644 incubator/ferdi-client/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/ferdi-client/0.0.10/ix_values.yaml create mode 100644 incubator/ferdi-client/0.0.10/questions.yaml create mode 100644 incubator/ferdi-client/0.0.10/templates/common.yaml create mode 100644 incubator/ferdi-client/0.0.10/values.yaml create mode 100644 incubator/ferdi-client/item.yaml create mode 100644 incubator/ffmpeg-mkvdts2ac3/0.0.10/CHANGELOG.md create mode 100644 incubator/ffmpeg-mkvdts2ac3/0.0.10/Chart.lock create mode 100644 incubator/ffmpeg-mkvdts2ac3/0.0.10/Chart.yaml create mode 100644 incubator/ffmpeg-mkvdts2ac3/0.0.10/README.md create mode 100644 incubator/ffmpeg-mkvdts2ac3/0.0.10/app-readme.md create mode 100644 incubator/ffmpeg-mkvdts2ac3/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/ffmpeg-mkvdts2ac3/0.0.10/ix_values.yaml create mode 100644 incubator/ffmpeg-mkvdts2ac3/0.0.10/questions.yaml create mode 100644 incubator/ffmpeg-mkvdts2ac3/0.0.10/templates/common.yaml create mode 100644 incubator/ffmpeg-mkvdts2ac3/0.0.10/values.yaml create mode 100644 incubator/ffmpeg-mkvdts2ac3/item.yaml create mode 100644 incubator/fileflows-node/0.0.10/CHANGELOG.md create mode 100644 incubator/fileflows-node/0.0.10/Chart.lock create mode 100644 incubator/fileflows-node/0.0.10/Chart.yaml create mode 100644 incubator/fileflows-node/0.0.10/README.md create mode 100644 incubator/fileflows-node/0.0.10/app-readme.md create mode 100644 incubator/fileflows-node/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/fileflows-node/0.0.10/ix_values.yaml create mode 100644 incubator/fileflows-node/0.0.10/questions.yaml create mode 100644 incubator/fileflows-node/0.0.10/templates/common.yaml create mode 100644 incubator/fileflows-node/0.0.10/values.yaml create mode 100644 incubator/fileflows-node/item.yaml create mode 100644 incubator/filegator/0.0.10/CHANGELOG.md create mode 100644 incubator/filegator/0.0.10/Chart.lock create mode 100644 incubator/filegator/0.0.10/Chart.yaml create mode 100644 incubator/filegator/0.0.10/README.md create mode 100644 incubator/filegator/0.0.10/app-readme.md create mode 100644 incubator/filegator/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/filegator/0.0.10/ix_values.yaml create mode 100644 incubator/filegator/0.0.10/questions.yaml create mode 100644 incubator/filegator/0.0.10/templates/common.yaml create mode 100644 incubator/filegator/0.0.10/values.yaml create mode 100644 incubator/filegator/item.yaml create mode 100644 incubator/fileshelter/0.0.10/CHANGELOG.md create mode 100644 incubator/fileshelter/0.0.10/Chart.lock create mode 100644 incubator/fileshelter/0.0.10/Chart.yaml create mode 100644 incubator/fileshelter/0.0.10/README.md create mode 100644 incubator/fileshelter/0.0.10/app-readme.md create mode 100644 incubator/fileshelter/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/fileshelter/0.0.10/ix_values.yaml create mode 100644 incubator/fileshelter/0.0.10/questions.yaml create mode 100644 incubator/fileshelter/0.0.10/templates/common.yaml create mode 100644 incubator/fileshelter/0.0.10/values.yaml create mode 100644 incubator/fileshelter/item.yaml create mode 100644 incubator/filestash/0.0.10/CHANGELOG.md create mode 100644 incubator/filestash/0.0.10/Chart.lock create mode 100644 incubator/filestash/0.0.10/Chart.yaml create mode 100644 incubator/filestash/0.0.10/README.md create mode 100644 incubator/filestash/0.0.10/app-readme.md create mode 100644 incubator/filestash/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/filestash/0.0.10/ix_values.yaml create mode 100644 incubator/filestash/0.0.10/questions.yaml create mode 100644 incubator/filestash/0.0.10/templates/common.yaml create mode 100644 incubator/filestash/0.0.10/values.yaml create mode 100644 incubator/filestash/item.yaml create mode 100644 incubator/firefox-desktop-g3/0.0.10/CHANGELOG.md create mode 100644 incubator/firefox-desktop-g3/0.0.10/Chart.lock create mode 100644 incubator/firefox-desktop-g3/0.0.10/Chart.yaml create mode 100644 incubator/firefox-desktop-g3/0.0.10/README.md create mode 100644 incubator/firefox-desktop-g3/0.0.10/app-readme.md create mode 100644 incubator/firefox-desktop-g3/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/firefox-desktop-g3/0.0.10/ix_values.yaml create mode 100644 incubator/firefox-desktop-g3/0.0.10/questions.yaml create mode 100644 incubator/firefox-desktop-g3/0.0.10/templates/common.yaml create mode 100644 incubator/firefox-desktop-g3/0.0.10/values.yaml create mode 100644 incubator/firefox-desktop-g3/item.yaml create mode 100644 incubator/fireshare/0.0.10/CHANGELOG.md create mode 100644 incubator/fireshare/0.0.10/Chart.lock create mode 100644 incubator/fireshare/0.0.10/Chart.yaml create mode 100644 incubator/fireshare/0.0.10/README.md create mode 100644 incubator/fireshare/0.0.10/app-readme.md create mode 100644 incubator/fireshare/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/fireshare/0.0.10/ix_values.yaml create mode 100644 incubator/fireshare/0.0.10/questions.yaml create mode 100644 incubator/fireshare/0.0.10/templates/common.yaml create mode 100644 incubator/fireshare/0.0.10/values.yaml create mode 100644 incubator/fireshare/item.yaml create mode 100644 incubator/fistfuloffrags/0.0.10/CHANGELOG.md create mode 100644 incubator/fistfuloffrags/0.0.10/Chart.lock create mode 100644 incubator/fistfuloffrags/0.0.10/Chart.yaml create mode 100644 incubator/fistfuloffrags/0.0.10/README.md create mode 100644 incubator/fistfuloffrags/0.0.10/app-readme.md create mode 100644 incubator/fistfuloffrags/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/fistfuloffrags/0.0.10/ix_values.yaml create mode 100644 incubator/fistfuloffrags/0.0.10/questions.yaml create mode 100644 incubator/fistfuloffrags/0.0.10/templates/common.yaml create mode 100644 incubator/fistfuloffrags/0.0.10/values.yaml create mode 100644 incubator/fistfuloffrags/item.yaml create mode 100644 incubator/fivem/0.0.10/CHANGELOG.md create mode 100644 incubator/fivem/0.0.10/Chart.lock create mode 100644 incubator/fivem/0.0.10/Chart.yaml create mode 100644 incubator/fivem/0.0.10/README.md create mode 100644 incubator/fivem/0.0.10/app-readme.md create mode 100644 incubator/fivem/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/fivem/0.0.10/ix_values.yaml create mode 100644 incubator/fivem/0.0.10/questions.yaml create mode 100644 incubator/fivem/0.0.10/templates/common.yaml create mode 100644 incubator/fivem/0.0.10/values.yaml create mode 100644 incubator/fivem/item.yaml create mode 100644 incubator/flame/0.0.10/CHANGELOG.md create mode 100644 incubator/flame/0.0.10/Chart.lock create mode 100644 incubator/flame/0.0.10/Chart.yaml create mode 100644 incubator/flame/0.0.10/README.md create mode 100644 incubator/flame/0.0.10/app-readme.md create mode 100644 incubator/flame/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/flame/0.0.10/ix_values.yaml create mode 100644 incubator/flame/0.0.10/questions.yaml create mode 100644 incubator/flame/0.0.10/templates/common.yaml create mode 100644 incubator/flame/0.0.10/values.yaml create mode 100644 incubator/flame/item.yaml create mode 100644 incubator/flashpaper/0.0.10/CHANGELOG.md create mode 100644 incubator/flashpaper/0.0.10/Chart.lock create mode 100644 incubator/flashpaper/0.0.10/Chart.yaml create mode 100644 incubator/flashpaper/0.0.10/README.md create mode 100644 incubator/flashpaper/0.0.10/app-readme.md create mode 100644 incubator/flashpaper/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/flashpaper/0.0.10/ix_values.yaml create mode 100644 incubator/flashpaper/0.0.10/questions.yaml create mode 100644 incubator/flashpaper/0.0.10/templates/common.yaml create mode 100644 incubator/flashpaper/0.0.10/values.yaml create mode 100644 incubator/flashpaper/item.yaml create mode 100644 incubator/flextv/0.0.10/CHANGELOG.md create mode 100644 incubator/flextv/0.0.10/Chart.lock create mode 100644 incubator/flextv/0.0.10/Chart.yaml create mode 100644 incubator/flextv/0.0.10/README.md create mode 100644 incubator/flextv/0.0.10/app-readme.md create mode 100644 incubator/flextv/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/flextv/0.0.10/ix_values.yaml create mode 100644 incubator/flextv/0.0.10/questions.yaml create mode 100644 incubator/flextv/0.0.10/templates/common.yaml create mode 100644 incubator/flextv/0.0.10/values.yaml create mode 100644 incubator/flextv/item.yaml create mode 100644 incubator/fluttercoin-wallet/0.0.10/CHANGELOG.md create mode 100644 incubator/fluttercoin-wallet/0.0.10/Chart.lock create mode 100644 incubator/fluttercoin-wallet/0.0.10/Chart.yaml create mode 100644 incubator/fluttercoin-wallet/0.0.10/README.md create mode 100644 incubator/fluttercoin-wallet/0.0.10/app-readme.md create mode 100644 incubator/fluttercoin-wallet/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/fluttercoin-wallet/0.0.10/ix_values.yaml create mode 100644 incubator/fluttercoin-wallet/0.0.10/questions.yaml create mode 100644 incubator/fluttercoin-wallet/0.0.10/templates/common.yaml create mode 100644 incubator/fluttercoin-wallet/0.0.10/values.yaml create mode 100644 incubator/fluttercoin-wallet/item.yaml create mode 100644 incubator/fmd2-wine/0.0.10/CHANGELOG.md create mode 100644 incubator/fmd2-wine/0.0.10/Chart.lock create mode 100644 incubator/fmd2-wine/0.0.10/Chart.yaml create mode 100644 incubator/fmd2-wine/0.0.10/README.md create mode 100644 incubator/fmd2-wine/0.0.10/app-readme.md create mode 100644 incubator/fmd2-wine/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/fmd2-wine/0.0.10/ix_values.yaml create mode 100644 incubator/fmd2-wine/0.0.10/questions.yaml create mode 100644 incubator/fmd2-wine/0.0.10/templates/common.yaml create mode 100644 incubator/fmd2-wine/0.0.10/values.yaml create mode 100644 incubator/fmd2-wine/item.yaml create mode 100644 incubator/fogproject/0.0.10/CHANGELOG.md create mode 100644 incubator/fogproject/0.0.10/Chart.lock create mode 100644 incubator/fogproject/0.0.10/Chart.yaml create mode 100644 incubator/fogproject/0.0.10/README.md create mode 100644 incubator/fogproject/0.0.10/app-readme.md create mode 100644 incubator/fogproject/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/fogproject/0.0.10/ix_values.yaml create mode 100644 incubator/fogproject/0.0.10/questions.yaml create mode 100644 incubator/fogproject/0.0.10/templates/common.yaml create mode 100644 incubator/fogproject/0.0.10/values.yaml create mode 100644 incubator/fogproject/item.yaml create mode 100644 incubator/fotosho/0.0.10/CHANGELOG.md create mode 100644 incubator/fotosho/0.0.10/Chart.lock create mode 100644 incubator/fotosho/0.0.10/Chart.yaml create mode 100644 incubator/fotosho/0.0.10/README.md create mode 100644 incubator/fotosho/0.0.10/app-readme.md create mode 100644 incubator/fotosho/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/fotosho/0.0.10/ix_values.yaml create mode 100644 incubator/fotosho/0.0.10/questions.yaml create mode 100644 incubator/fotosho/0.0.10/templates/common.yaml create mode 100644 incubator/fotosho/0.0.10/values.yaml create mode 100644 incubator/fotosho/item.yaml create mode 100644 incubator/freecad-desktop-g3/0.0.10/CHANGELOG.md create mode 100644 incubator/freecad-desktop-g3/0.0.10/Chart.lock create mode 100644 incubator/freecad-desktop-g3/0.0.10/Chart.yaml create mode 100644 incubator/freecad-desktop-g3/0.0.10/README.md create mode 100644 incubator/freecad-desktop-g3/0.0.10/app-readme.md create mode 100644 incubator/freecad-desktop-g3/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/freecad-desktop-g3/0.0.10/ix_values.yaml create mode 100644 incubator/freecad-desktop-g3/0.0.10/questions.yaml create mode 100644 incubator/freecad-desktop-g3/0.0.10/templates/common.yaml create mode 100644 incubator/freecad-desktop-g3/0.0.10/values.yaml create mode 100644 incubator/freecad-desktop-g3/item.yaml create mode 100644 incubator/fsm/0.0.10/CHANGELOG.md create mode 100644 incubator/fsm/0.0.10/Chart.lock create mode 100644 incubator/fsm/0.0.10/Chart.yaml create mode 100644 incubator/fsm/0.0.10/README.md create mode 100644 incubator/fsm/0.0.10/app-readme.md create mode 100644 incubator/fsm/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/fsm/0.0.10/ix_values.yaml create mode 100644 incubator/fsm/0.0.10/questions.yaml create mode 100644 incubator/fsm/0.0.10/templates/common.yaml create mode 100644 incubator/fsm/0.0.10/values.yaml create mode 100644 incubator/fsm/item.yaml create mode 100644 incubator/funkwhale-all-in-one/0.0.10/CHANGELOG.md create mode 100644 incubator/funkwhale-all-in-one/0.0.10/Chart.lock create mode 100644 incubator/funkwhale-all-in-one/0.0.10/Chart.yaml create mode 100644 incubator/funkwhale-all-in-one/0.0.10/README.md create mode 100644 incubator/funkwhale-all-in-one/0.0.10/app-readme.md create mode 100644 incubator/funkwhale-all-in-one/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/funkwhale-all-in-one/0.0.10/ix_values.yaml create mode 100644 incubator/funkwhale-all-in-one/0.0.10/questions.yaml create mode 100644 incubator/funkwhale-all-in-one/0.0.10/templates/common.yaml create mode 100644 incubator/funkwhale-all-in-one/0.0.10/values.yaml create mode 100644 incubator/funkwhale-all-in-one/item.yaml create mode 100644 incubator/funkwhale/0.0.10/CHANGELOG.md create mode 100644 incubator/funkwhale/0.0.10/Chart.lock create mode 100644 incubator/funkwhale/0.0.10/Chart.yaml create mode 100644 incubator/funkwhale/0.0.10/README.md create mode 100644 incubator/funkwhale/0.0.10/app-readme.md create mode 100644 incubator/funkwhale/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/funkwhale/0.0.10/ix_values.yaml create mode 100644 incubator/funkwhale/0.0.10/questions.yaml create mode 100644 incubator/funkwhale/0.0.10/templates/common.yaml create mode 100644 incubator/funkwhale/0.0.10/values.yaml create mode 100644 incubator/funkwhale/item.yaml create mode 100644 incubator/garrysmod/0.0.10/CHANGELOG.md create mode 100644 incubator/garrysmod/0.0.10/Chart.lock create mode 100644 incubator/garrysmod/0.0.10/Chart.yaml create mode 100644 incubator/garrysmod/0.0.10/README.md create mode 100644 incubator/garrysmod/0.0.10/app-readme.md create mode 100644 incubator/garrysmod/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/garrysmod/0.0.10/ix_values.yaml create mode 100644 incubator/garrysmod/0.0.10/questions.yaml create mode 100644 incubator/garrysmod/0.0.10/templates/common.yaml create mode 100644 incubator/garrysmod/0.0.10/values.yaml create mode 100644 incubator/garrysmod/item.yaml create mode 100644 incubator/genea/0.0.10/CHANGELOG.md create mode 100644 incubator/genea/0.0.10/Chart.lock create mode 100644 incubator/genea/0.0.10/Chart.yaml create mode 100644 incubator/genea/0.0.10/README.md create mode 100644 incubator/genea/0.0.10/app-readme.md create mode 100644 incubator/genea/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/genea/0.0.10/ix_values.yaml create mode 100644 incubator/genea/0.0.10/questions.yaml create mode 100644 incubator/genea/0.0.10/templates/common.yaml create mode 100644 incubator/genea/0.0.10/values.yaml create mode 100644 incubator/genea/item.yaml create mode 100644 incubator/github-backup/0.0.10/CHANGELOG.md create mode 100644 incubator/github-backup/0.0.10/Chart.lock create mode 100644 incubator/github-backup/0.0.10/Chart.yaml create mode 100644 incubator/github-backup/0.0.10/README.md create mode 100644 incubator/github-backup/0.0.10/app-readme.md create mode 100644 incubator/github-backup/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/github-backup/0.0.10/ix_values.yaml create mode 100644 incubator/github-backup/0.0.10/questions.yaml create mode 100644 incubator/github-backup/0.0.10/templates/common.yaml create mode 100644 incubator/github-backup/0.0.10/values.yaml create mode 100644 incubator/github-backup/item.yaml create mode 100644 incubator/glauth/0.0.10/CHANGELOG.md create mode 100644 incubator/glauth/0.0.10/Chart.lock create mode 100644 incubator/glauth/0.0.10/Chart.yaml create mode 100644 incubator/glauth/0.0.10/README.md create mode 100644 incubator/glauth/0.0.10/app-readme.md create mode 100644 incubator/glauth/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/glauth/0.0.10/ix_values.yaml create mode 100644 incubator/glauth/0.0.10/questions.yaml create mode 100644 incubator/glauth/0.0.10/templates/common.yaml create mode 100644 incubator/glauth/0.0.10/values.yaml create mode 100644 incubator/glauth/item.yaml create mode 100644 incubator/go-auto-yt/0.0.10/CHANGELOG.md create mode 100644 incubator/go-auto-yt/0.0.10/Chart.lock create mode 100644 incubator/go-auto-yt/0.0.10/Chart.yaml create mode 100644 incubator/go-auto-yt/0.0.10/README.md create mode 100644 incubator/go-auto-yt/0.0.10/app-readme.md create mode 100644 incubator/go-auto-yt/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/go-auto-yt/0.0.10/ix_values.yaml create mode 100644 incubator/go-auto-yt/0.0.10/questions.yaml create mode 100644 incubator/go-auto-yt/0.0.10/templates/common.yaml create mode 100644 incubator/go-auto-yt/0.0.10/values.yaml create mode 100644 incubator/go-auto-yt/item.yaml create mode 100644 incubator/go-playground/0.0.10/CHANGELOG.md create mode 100644 incubator/go-playground/0.0.10/Chart.lock create mode 100644 incubator/go-playground/0.0.10/Chart.yaml create mode 100644 incubator/go-playground/0.0.10/README.md create mode 100644 incubator/go-playground/0.0.10/app-readme.md create mode 100644 incubator/go-playground/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/go-playground/0.0.10/ix_values.yaml create mode 100644 incubator/go-playground/0.0.10/questions.yaml create mode 100644 incubator/go-playground/0.0.10/templates/common.yaml create mode 100644 incubator/go-playground/0.0.10/values.yaml create mode 100644 incubator/go-playground/item.yaml create mode 100644 incubator/goaccess-npm-logs/0.0.10/CHANGELOG.md create mode 100644 incubator/goaccess-npm-logs/0.0.10/Chart.lock create mode 100644 incubator/goaccess-npm-logs/0.0.10/Chart.yaml create mode 100644 incubator/goaccess-npm-logs/0.0.10/README.md create mode 100644 incubator/goaccess-npm-logs/0.0.10/app-readme.md create mode 100644 incubator/goaccess-npm-logs/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/goaccess-npm-logs/0.0.10/ix_values.yaml create mode 100644 incubator/goaccess-npm-logs/0.0.10/questions.yaml create mode 100644 incubator/goaccess-npm-logs/0.0.10/templates/common.yaml create mode 100644 incubator/goaccess-npm-logs/0.0.10/values.yaml create mode 100644 incubator/goaccess-npm-logs/item.yaml create mode 100644 incubator/goaccess/0.0.10/CHANGELOG.md create mode 100644 incubator/goaccess/0.0.10/Chart.lock create mode 100644 incubator/goaccess/0.0.10/Chart.yaml create mode 100644 incubator/goaccess/0.0.10/README.md create mode 100644 incubator/goaccess/0.0.10/app-readme.md create mode 100644 incubator/goaccess/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/goaccess/0.0.10/ix_values.yaml create mode 100644 incubator/goaccess/0.0.10/questions.yaml create mode 100644 incubator/goaccess/0.0.10/templates/common.yaml create mode 100644 incubator/goaccess/0.0.10/values.yaml create mode 100644 incubator/goaccess/item.yaml create mode 100644 incubator/godaddy-ddns/0.0.10/CHANGELOG.md create mode 100644 incubator/godaddy-ddns/0.0.10/Chart.lock create mode 100644 incubator/godaddy-ddns/0.0.10/Chart.yaml create mode 100644 incubator/godaddy-ddns/0.0.10/README.md create mode 100644 incubator/godaddy-ddns/0.0.10/app-readme.md create mode 100644 incubator/godaddy-ddns/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/godaddy-ddns/0.0.10/ix_values.yaml create mode 100644 incubator/godaddy-ddns/0.0.10/questions.yaml create mode 100644 incubator/godaddy-ddns/0.0.10/templates/common.yaml create mode 100644 incubator/godaddy-ddns/0.0.10/values.yaml create mode 100644 incubator/godaddy-ddns/item.yaml create mode 100644 incubator/gokapi/0.0.10/CHANGELOG.md create mode 100644 incubator/gokapi/0.0.10/Chart.lock create mode 100644 incubator/gokapi/0.0.10/Chart.yaml create mode 100644 incubator/gokapi/0.0.10/README.md create mode 100644 incubator/gokapi/0.0.10/app-readme.md create mode 100644 incubator/gokapi/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/gokapi/0.0.10/ix_values.yaml create mode 100644 incubator/gokapi/0.0.10/questions.yaml create mode 100644 incubator/gokapi/0.0.10/templates/common.yaml create mode 100644 incubator/gokapi/0.0.10/values.yaml create mode 100644 incubator/gokapi/item.yaml create mode 100644 incubator/google-cloud-storage-backup/0.0.10/CHANGELOG.md create mode 100644 incubator/google-cloud-storage-backup/0.0.10/Chart.lock create mode 100644 incubator/google-cloud-storage-backup/0.0.10/Chart.yaml create mode 100644 incubator/google-cloud-storage-backup/0.0.10/README.md create mode 100644 incubator/google-cloud-storage-backup/0.0.10/app-readme.md create mode 100644 incubator/google-cloud-storage-backup/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/google-cloud-storage-backup/0.0.10/ix_values.yaml create mode 100644 incubator/google-cloud-storage-backup/0.0.10/questions.yaml create mode 100644 incubator/google-cloud-storage-backup/0.0.10/templates/common.yaml create mode 100644 incubator/google-cloud-storage-backup/0.0.10/values.yaml create mode 100644 incubator/google-cloud-storage-backup/item.yaml create mode 100644 incubator/googlephotossync/0.0.10/CHANGELOG.md create mode 100644 incubator/googlephotossync/0.0.10/Chart.lock create mode 100644 incubator/googlephotossync/0.0.10/Chart.yaml create mode 100644 incubator/googlephotossync/0.0.10/README.md create mode 100644 incubator/googlephotossync/0.0.10/app-readme.md create mode 100644 incubator/googlephotossync/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/googlephotossync/0.0.10/ix_values.yaml create mode 100644 incubator/googlephotossync/0.0.10/questions.yaml create mode 100644 incubator/googlephotossync/0.0.10/templates/common.yaml create mode 100644 incubator/googlephotossync/0.0.10/values.yaml create mode 100644 incubator/googlephotossync/item.yaml create mode 100644 incubator/gpodder/0.0.10/CHANGELOG.md create mode 100644 incubator/gpodder/0.0.10/Chart.lock create mode 100644 incubator/gpodder/0.0.10/Chart.yaml create mode 100644 incubator/gpodder/0.0.10/README.md create mode 100644 incubator/gpodder/0.0.10/app-readme.md create mode 100644 incubator/gpodder/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/gpodder/0.0.10/ix_values.yaml create mode 100644 incubator/gpodder/0.0.10/questions.yaml create mode 100644 incubator/gpodder/0.0.10/templates/common.yaml create mode 100644 incubator/gpodder/0.0.10/values.yaml create mode 100644 incubator/gpodder/item.yaml create mode 100644 incubator/grafana-image-renderer/0.0.10/CHANGELOG.md create mode 100644 incubator/grafana-image-renderer/0.0.10/Chart.lock create mode 100644 incubator/grafana-image-renderer/0.0.10/Chart.yaml create mode 100644 incubator/grafana-image-renderer/0.0.10/README.md create mode 100644 incubator/grafana-image-renderer/0.0.10/app-readme.md create mode 100644 incubator/grafana-image-renderer/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/grafana-image-renderer/0.0.10/ix_values.yaml create mode 100644 incubator/grafana-image-renderer/0.0.10/questions.yaml create mode 100644 incubator/grafana-image-renderer/0.0.10/templates/common.yaml create mode 100644 incubator/grafana-image-renderer/0.0.10/values.yaml create mode 100644 incubator/grafana-image-renderer/item.yaml create mode 100644 incubator/gridcoinwalletgui/0.0.10/CHANGELOG.md create mode 100644 incubator/gridcoinwalletgui/0.0.10/Chart.lock create mode 100644 incubator/gridcoinwalletgui/0.0.10/Chart.yaml create mode 100644 incubator/gridcoinwalletgui/0.0.10/README.md create mode 100644 incubator/gridcoinwalletgui/0.0.10/app-readme.md create mode 100644 incubator/gridcoinwalletgui/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/gridcoinwalletgui/0.0.10/ix_values.yaml create mode 100644 incubator/gridcoinwalletgui/0.0.10/questions.yaml create mode 100644 incubator/gridcoinwalletgui/0.0.10/templates/common.yaml create mode 100644 incubator/gridcoinwalletgui/0.0.10/values.yaml create mode 100644 incubator/gridcoinwalletgui/item.yaml create mode 100644 incubator/guide2go/0.0.10/CHANGELOG.md create mode 100644 incubator/guide2go/0.0.10/Chart.lock create mode 100644 incubator/guide2go/0.0.10/Chart.yaml create mode 100644 incubator/guide2go/0.0.10/README.md create mode 100644 incubator/guide2go/0.0.10/app-readme.md create mode 100644 incubator/guide2go/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/guide2go/0.0.10/ix_values.yaml create mode 100644 incubator/guide2go/0.0.10/questions.yaml create mode 100644 incubator/guide2go/0.0.10/templates/common.yaml create mode 100644 incubator/guide2go/0.0.10/values.yaml create mode 100644 incubator/guide2go/item.yaml create mode 100644 incubator/h5ai/0.0.10/CHANGELOG.md create mode 100644 incubator/h5ai/0.0.10/Chart.lock create mode 100644 incubator/h5ai/0.0.10/Chart.yaml create mode 100644 incubator/h5ai/0.0.10/README.md create mode 100644 incubator/h5ai/0.0.10/app-readme.md create mode 100644 incubator/h5ai/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/h5ai/0.0.10/ix_values.yaml create mode 100644 incubator/h5ai/0.0.10/questions.yaml create mode 100644 incubator/h5ai/0.0.10/templates/common.yaml create mode 100644 incubator/h5ai/0.0.10/values.yaml create mode 100644 incubator/h5ai/item.yaml create mode 100644 incubator/halflife2deathmatch/0.0.10/CHANGELOG.md create mode 100644 incubator/halflife2deathmatch/0.0.10/Chart.lock create mode 100644 incubator/halflife2deathmatch/0.0.10/Chart.yaml create mode 100644 incubator/halflife2deathmatch/0.0.10/README.md create mode 100644 incubator/halflife2deathmatch/0.0.10/app-readme.md create mode 100644 incubator/halflife2deathmatch/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/halflife2deathmatch/0.0.10/ix_values.yaml create mode 100644 incubator/halflife2deathmatch/0.0.10/questions.yaml create mode 100644 incubator/halflife2deathmatch/0.0.10/templates/common.yaml create mode 100644 incubator/halflife2deathmatch/0.0.10/values.yaml create mode 100644 incubator/halflife2deathmatch/item.yaml create mode 100644 incubator/hassconfigurator/0.0.10/CHANGELOG.md create mode 100644 incubator/hassconfigurator/0.0.10/Chart.lock create mode 100644 incubator/hassconfigurator/0.0.10/Chart.yaml create mode 100644 incubator/hassconfigurator/0.0.10/README.md create mode 100644 incubator/hassconfigurator/0.0.10/app-readme.md create mode 100644 incubator/hassconfigurator/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/hassconfigurator/0.0.10/ix_values.yaml create mode 100644 incubator/hassconfigurator/0.0.10/questions.yaml create mode 100644 incubator/hassconfigurator/0.0.10/templates/common.yaml create mode 100644 incubator/hassconfigurator/0.0.10/values.yaml create mode 100644 incubator/hassconfigurator/item.yaml create mode 100644 incubator/hastebin/0.0.10/CHANGELOG.md create mode 100644 incubator/hastebin/0.0.10/Chart.lock create mode 100644 incubator/hastebin/0.0.10/Chart.yaml create mode 100644 incubator/hastebin/0.0.10/README.md create mode 100644 incubator/hastebin/0.0.10/app-readme.md create mode 100644 incubator/hastebin/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/hastebin/0.0.10/ix_values.yaml create mode 100644 incubator/hastebin/0.0.10/questions.yaml create mode 100644 incubator/hastebin/0.0.10/templates/common.yaml create mode 100644 incubator/hastebin/0.0.10/values.yaml create mode 100644 incubator/hastebin/item.yaml create mode 100644 incubator/healthchecksdashboard/0.0.10/CHANGELOG.md create mode 100644 incubator/healthchecksdashboard/0.0.10/Chart.lock create mode 100644 incubator/healthchecksdashboard/0.0.10/Chart.yaml create mode 100644 incubator/healthchecksdashboard/0.0.10/README.md create mode 100644 incubator/healthchecksdashboard/0.0.10/app-readme.md create mode 100644 incubator/healthchecksdashboard/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/healthchecksdashboard/0.0.10/ix_values.yaml create mode 100644 incubator/healthchecksdashboard/0.0.10/questions.yaml create mode 100644 incubator/healthchecksdashboard/0.0.10/templates/common.yaml create mode 100644 incubator/healthchecksdashboard/0.0.10/values.yaml create mode 100644 incubator/healthchecksdashboard/item.yaml create mode 100644 incubator/hetzner-ddns/0.0.10/CHANGELOG.md create mode 100644 incubator/hetzner-ddns/0.0.10/Chart.lock create mode 100644 incubator/hetzner-ddns/0.0.10/Chart.yaml create mode 100644 incubator/hetzner-ddns/0.0.10/README.md create mode 100644 incubator/hetzner-ddns/0.0.10/app-readme.md create mode 100644 incubator/hetzner-ddns/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/hetzner-ddns/0.0.10/ix_values.yaml create mode 100644 incubator/hetzner-ddns/0.0.10/questions.yaml create mode 100644 incubator/hetzner-ddns/0.0.10/templates/common.yaml create mode 100644 incubator/hetzner-ddns/0.0.10/values.yaml create mode 100644 incubator/hetzner-ddns/item.yaml create mode 100644 incubator/hexchat/0.0.10/CHANGELOG.md create mode 100644 incubator/hexchat/0.0.10/Chart.lock create mode 100644 incubator/hexchat/0.0.10/Chart.yaml create mode 100644 incubator/hexchat/0.0.10/README.md create mode 100644 incubator/hexchat/0.0.10/app-readme.md create mode 100644 incubator/hexchat/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/hexchat/0.0.10/ix_values.yaml create mode 100644 incubator/hexchat/0.0.10/questions.yaml create mode 100644 incubator/hexchat/0.0.10/templates/common.yaml create mode 100644 incubator/hexchat/0.0.10/values.yaml create mode 100644 incubator/hexchat/item.yaml create mode 100644 incubator/hexo-blog/0.0.10/CHANGELOG.md create mode 100644 incubator/hexo-blog/0.0.10/Chart.lock create mode 100644 incubator/hexo-blog/0.0.10/Chart.yaml create mode 100644 incubator/hexo-blog/0.0.10/README.md create mode 100644 incubator/hexo-blog/0.0.10/app-readme.md create mode 100644 incubator/hexo-blog/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/hexo-blog/0.0.10/ix_values.yaml create mode 100644 incubator/hexo-blog/0.0.10/questions.yaml create mode 100644 incubator/hexo-blog/0.0.10/templates/common.yaml create mode 100644 incubator/hexo-blog/0.0.10/values.yaml create mode 100644 incubator/hexo-blog/item.yaml create mode 100644 incubator/homelablabelmaker/0.0.10/CHANGELOG.md create mode 100644 incubator/homelablabelmaker/0.0.10/Chart.lock create mode 100644 incubator/homelablabelmaker/0.0.10/Chart.yaml create mode 100644 incubator/homelablabelmaker/0.0.10/README.md create mode 100644 incubator/homelablabelmaker/0.0.10/app-readme.md create mode 100644 incubator/homelablabelmaker/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/homelablabelmaker/0.0.10/ix_values.yaml create mode 100644 incubator/homelablabelmaker/0.0.10/questions.yaml create mode 100644 incubator/homelablabelmaker/0.0.10/templates/common.yaml create mode 100644 incubator/homelablabelmaker/0.0.10/values.yaml create mode 100644 incubator/homelablabelmaker/item.yaml create mode 100644 incubator/hoobs/0.0.10/CHANGELOG.md create mode 100644 incubator/hoobs/0.0.10/Chart.lock create mode 100644 incubator/hoobs/0.0.10/Chart.yaml create mode 100644 incubator/hoobs/0.0.10/README.md create mode 100644 incubator/hoobs/0.0.10/app-readme.md create mode 100644 incubator/hoobs/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/hoobs/0.0.10/ix_values.yaml create mode 100644 incubator/hoobs/0.0.10/questions.yaml create mode 100644 incubator/hoobs/0.0.10/templates/common.yaml create mode 100644 incubator/hoobs/0.0.10/values.yaml create mode 100644 incubator/hoobs/item.yaml create mode 100644 incubator/humhub/0.0.10/CHANGELOG.md create mode 100644 incubator/humhub/0.0.10/Chart.lock create mode 100644 incubator/humhub/0.0.10/Chart.yaml create mode 100644 incubator/humhub/0.0.10/README.md create mode 100644 incubator/humhub/0.0.10/app-readme.md create mode 100644 incubator/humhub/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/humhub/0.0.10/ix_values.yaml create mode 100644 incubator/humhub/0.0.10/questions.yaml create mode 100644 incubator/humhub/0.0.10/templates/common.yaml create mode 100644 incubator/humhub/0.0.10/values.yaml create mode 100644 incubator/humhub/item.yaml create mode 100644 incubator/hurtworld/0.0.10/CHANGELOG.md create mode 100644 incubator/hurtworld/0.0.10/Chart.lock create mode 100644 incubator/hurtworld/0.0.10/Chart.yaml create mode 100644 incubator/hurtworld/0.0.10/README.md create mode 100644 incubator/hurtworld/0.0.10/app-readme.md create mode 100644 incubator/hurtworld/0.0.10/charts/common-10.4.6.tgz create mode 100644 incubator/hurtworld/0.0.10/ix_values.yaml create mode 100644 incubator/hurtworld/0.0.10/questions.yaml create mode 100644 incubator/hurtworld/0.0.10/templates/common.yaml create mode 100644 incubator/hurtworld/0.0.10/values.yaml create mode 100644 incubator/hurtworld/item.yaml delete mode 100644 incubator/wger/0.0.24/charts/common-10.4.4.tgz rename incubator/wger/{0.0.24 => 0.0.25}/CHANGELOG.md (67%) rename incubator/wger/{0.0.24 => 0.0.25}/Chart.lock (88%) rename incubator/wger/{0.0.24 => 0.0.25}/Chart.yaml (98%) rename incubator/wger/{0.0.24 => 0.0.25}/README.md (98%) rename incubator/wger/{0.0.24 => 0.0.25}/app-readme.md (100%) rename {dependency/mongodb/1.0.42 => incubator/wger/0.0.25}/charts/common-10.4.4.tgz (100%) rename incubator/wger/{0.0.24 => 0.0.25}/charts/postgresql-8.0.30.tgz (100%) rename incubator/wger/{0.0.24 => 0.0.25}/charts/redis-3.0.30.tgz (100%) rename incubator/wger/{0.0.24 => 0.0.25}/ix_values.yaml (98%) rename incubator/wger/{0.0.24 => 0.0.25}/questions.yaml (100%) rename incubator/wger/{0.0.24 => 0.0.25}/templates/_secrets.tpl (100%) rename incubator/wger/{0.0.24 => 0.0.25}/templates/common.yaml (100%) create mode 100644 incubator/wger/0.0.25/values.yaml create mode 100644 stable/cloudflared/1.0.0/CHANGELOG.md rename {dependency/mariadb/3.0.38 => stable/cloudflared/1.0.0}/Chart.lock (80%) create mode 100644 stable/cloudflared/1.0.0/Chart.yaml create mode 100644 stable/cloudflared/1.0.0/README.md create mode 100644 stable/cloudflared/1.0.0/app-readme.md rename {dependency/postgresql/8.0.40 => stable/cloudflared/1.0.0}/charts/common-10.4.4.tgz (100%) create mode 100644 stable/cloudflared/1.0.0/ci/test-values.yaml create mode 100644 stable/cloudflared/1.0.0/ix_values.yaml create mode 100644 stable/cloudflared/1.0.0/questions.yaml create mode 100644 stable/cloudflared/1.0.0/templates/common.yaml create mode 100644 stable/cloudflared/1.0.0/values.yaml create mode 100644 stable/cloudflared/item.yaml delete mode 100644 stable/grafana/4.0.29/Chart.lock delete mode 100644 stable/grafana/4.0.29/README.md delete mode 100644 stable/grafana/4.0.29/app-readme.md delete mode 100644 stable/grafana/4.0.29/charts/common-10.4.4.tgz rename stable/grafana/{4.0.29 => 4.0.31}/CHANGELOG.md (61%) rename {dependency/mongodb/1.0.42 => stable/grafana/4.0.31}/Chart.lock (80%) rename stable/grafana/{4.0.29 => 4.0.31}/Chart.yaml (98%) create mode 100644 stable/grafana/4.0.31/README.md create mode 100644 stable/grafana/4.0.31/app-readme.md rename {dependency/promtail/3.0.31 => stable/grafana/4.0.31}/charts/common-10.4.4.tgz (100%) rename stable/grafana/{4.0.29 => 4.0.31}/ix_values.yaml (95%) rename stable/grafana/{4.0.29 => 4.0.31}/questions.yaml (100%) create mode 100644 stable/grafana/4.0.31/templates/common.yaml rename stable/grafana/{4.0.29 => 4.0.31}/templates/prometheusrules.yaml (100%) rename stable/grafana/{4.0.29 => 4.0.31}/templates/servicemonitor.yaml (100%) create mode 100644 stable/grafana/4.0.31/values.yaml delete mode 100644 stable/prometheus/4.0.39/charts/common-10.4.4.tgz rename stable/prometheus/{4.0.39 => 4.0.40}/CHANGELOG.md (71%) rename stable/prometheus/{4.0.39 => 4.0.40}/Chart.lock (89%) rename stable/prometheus/{4.0.39 => 4.0.40}/Chart.yaml (98%) rename stable/prometheus/{4.0.39 => 4.0.40}/README.md (98%) rename stable/prometheus/{4.0.39 => 4.0.40}/app-readme.md (100%) rename {dependency/redis/3.0.40 => stable/prometheus/4.0.40}/charts/common-10.4.4.tgz (100%) rename stable/prometheus/{4.0.39 => 4.0.40}/charts/kube-state-metrics-3.1.1.tgz (100%) rename stable/prometheus/{4.0.39 => 4.0.40}/charts/node-exporter-3.0.4.tgz (100%) rename stable/prometheus/{4.0.39 => 4.0.40}/crds/crd-alertmanager-config.yaml (100%) rename stable/prometheus/{4.0.39 => 4.0.40}/crds/crd-alertmanager.yaml (100%) rename stable/prometheus/{4.0.39 => 4.0.40}/crds/crd-podmonitor.yaml (100%) rename stable/prometheus/{4.0.39 => 4.0.40}/crds/crd-probes.yaml (100%) rename stable/prometheus/{4.0.39 => 4.0.40}/crds/crd-prometheus.yaml (100%) rename stable/prometheus/{4.0.39 => 4.0.40}/crds/crd-prometheusrules.yaml (100%) rename stable/prometheus/{4.0.39 => 4.0.40}/crds/crd-servicemonitor.yaml (100%) rename stable/prometheus/{4.0.39 => 4.0.40}/crds/crd-thanosrulers.yaml (100%) rename stable/prometheus/{4.0.39 => 4.0.40}/ix_values.yaml (99%) rename stable/prometheus/{4.0.39 => 4.0.40}/questions.yaml (100%) rename stable/prometheus/{4.0.39 => 4.0.40}/templates/_helpers.tpl (100%) rename stable/prometheus/{4.0.39 => 4.0.40}/templates/alertmanager/_alertmanager.tpl (100%) rename stable/prometheus/{4.0.39 => 4.0.40}/templates/alertmanager/secrets.yaml (100%) rename stable/prometheus/{4.0.39 => 4.0.40}/templates/alertmanager/serviceaccount.yaml (100%) rename stable/prometheus/{4.0.39 => 4.0.40}/templates/alertmanager/servicemonitor.yaml (100%) rename stable/prometheus/{4.0.39 => 4.0.40}/templates/common.yaml (100%) rename stable/prometheus/{4.0.39 => 4.0.40}/templates/exporters/core-dns/service.yaml (100%) rename stable/prometheus/{4.0.39 => 4.0.40}/templates/exporters/core-dns/servicemonitor.yaml (100%) rename stable/prometheus/{4.0.39 => 4.0.40}/templates/exporters/kube-apiserver/servicemonitor.yaml (100%) rename stable/prometheus/{4.0.39 => 4.0.40}/templates/exporters/kube-controller-manager/endpoints.yaml (100%) rename stable/prometheus/{4.0.39 => 4.0.40}/templates/exporters/kube-controller-manager/service.yaml (100%) rename stable/prometheus/{4.0.39 => 4.0.40}/templates/exporters/kube-controller-manager/servicemonitor.yaml (100%) rename stable/prometheus/{4.0.39 => 4.0.40}/templates/exporters/kube-scheduler/endpoints.yaml (100%) rename stable/prometheus/{4.0.39 => 4.0.40}/templates/exporters/kube-scheduler/service.yaml (100%) rename stable/prometheus/{4.0.39 => 4.0.40}/templates/exporters/kube-scheduler/servicemonitor.yaml (100%) rename stable/prometheus/{4.0.39 => 4.0.40}/templates/exporters/kubelet/servicemonitor.yaml (100%) rename stable/prometheus/{4.0.39 => 4.0.40}/templates/operator/_args.tpl (100%) rename stable/prometheus/{4.0.39 => 4.0.40}/templates/operator/configmap.yaml (100%) rename stable/prometheus/{4.0.39 => 4.0.40}/templates/operator/servicemonitor.yaml (100%) rename stable/prometheus/{4.0.39 => 4.0.40}/templates/prometheus/_additionalPrometheusRules.tpl (100%) rename stable/prometheus/{4.0.39 => 4.0.40}/templates/prometheus/_additionalScrapeJobs.tpl (100%) rename stable/prometheus/{4.0.39 => 4.0.40}/templates/prometheus/_prometheus.tpl (100%) rename stable/prometheus/{4.0.39 => 4.0.40}/templates/prometheus/_servicemonitor.tpl (100%) rename stable/prometheus/{4.0.39 => 4.0.40}/templates/prometheus/clusterrole.yaml (100%) rename stable/prometheus/{4.0.39 => 4.0.40}/templates/prometheus/clusterrolebinding.yaml (100%) rename stable/prometheus/{4.0.39 => 4.0.40}/templates/prometheus/serviceaccount.yaml (100%) create mode 100644 stable/prometheus/4.0.40/values.yaml diff --git a/dependency/clickhouse/1.0.0/CHANGELOG.md b/dependency/clickhouse/1.0.0/CHANGELOG.md new file mode 100644 index 00000000000..f79da72773b --- /dev/null +++ b/dependency/clickhouse/1.0.0/CHANGELOG.md @@ -0,0 +1,91 @@ +# Changelog + + +## [clickhouse-1.0.0](https://github.com/truecharts/apps/compare/clickhouse-0.0.12...clickhouse-1.0.0) (2022-07-21) + +### Chore + +- move clickhouse to dependency train, remove 2 breaking apps and remove some special characters + + + +## [clickhouse-0.0.12](https://github.com/truecharts/apps/compare/clickhouse-0.0.11...clickhouse-0.0.12) (2022-07-19) + +### Chore + +- Update Readme and Description on SCALE + + + +## [clickhouse-0.0.11](https://github.com/truecharts/apps/compare/clickhouse-0.0.10...clickhouse-0.0.11) (2022-07-14) + +### Fix + +- regenerate catalog and update template + + + +## [clickhouse-0.0.10](https://github.com/truecharts/apps/compare/clickhouse-0.0.8...clickhouse-0.0.10) (2022-07-14) + +### Fix + +- bump to ensure .helmignore is present on all Charts + + + +## [clickhouse-0.0.8](https://github.com/truecharts/apps/compare/clickhouse-0.0.6...clickhouse-0.0.8) (2022-07-12) + +### Chore + +- update icons ([#3156](https://github.com/truecharts/apps/issues/3156)) +- bump to cleanup old docs and use correct icon urls + + + +## [clickhouse-0.0.6](https://github.com/truecharts/apps/compare/clickhouse-0.0.5...clickhouse-0.0.6) (2022-07-12) + +### Chore + +- bump to regenerate documentation +- update docker general non-major ([#3150](https://github.com/truecharts/apps/issues/3150)) + + + + +### [clickhouse-0.0.5](https://github.com/truecharts/apps/compare/clickhouse-0.0.4...clickhouse-0.0.5) (2022-07-11) + + + + +### [clickhouse-0.0.4](https://github.com/truecharts/apps/compare/clickhouse-0.0.3...clickhouse-0.0.4) (2022-07-11) + +#### Chore + +* move icons into the apps folder ([#3139](https://github.com/truecharts/apps/issues/3139)) + + + + +### [clickhouse-0.0.3](https://github.com/truecharts/apps/compare/clickhouse-0.0.2...clickhouse-0.0.3) (2022-07-11) + + + + +### [clickhouse-0.0.2](https://github.com/truecharts/apps/compare/clickhouse-0.0.1...clickhouse-0.0.2) (2022-07-11) + +#### Chore + +* Auto-update chart README [skip ci] + +#### Fix + +* Fix ClickHouse upstream repo ([#3134](https://github.com/truecharts/apps/issues/3134)) + + + + +### clickhouse-0.0.1 (2022-07-10) + +#### Feat + +* Add ClickHouse ([#3060](https://github.com/truecharts/apps/issues/3060)) diff --git a/dependency/memcached/3.0.39/Chart.lock b/dependency/clickhouse/1.0.0/Chart.lock similarity index 80% rename from dependency/memcached/3.0.39/Chart.lock rename to dependency/clickhouse/1.0.0/Chart.lock index cb526e653d7..90afecff930 100644 --- a/dependency/memcached/3.0.39/Chart.lock +++ b/dependency/clickhouse/1.0.0/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://library-charts.truecharts.org version: 10.4.4 digest: sha256:e76f58e980866194e06f0e9135c981662f0b1132d3c5848dbf344c48ab657396 -generated: "2022-07-20T08:27:56.253323297Z" +generated: "2022-07-21T13:01:55.399164181Z" diff --git a/dependency/clickhouse/1.0.0/Chart.yaml b/dependency/clickhouse/1.0.0/Chart.yaml new file mode 100644 index 00000000000..20a3f94f646 --- /dev/null +++ b/dependency/clickhouse/1.0.0/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +appVersion: "22.6.3.35" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 10.4.4 +deprecated: false +description: ClickHouse is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP). +home: https://github.com/truecharts/apps/tree/master/charts/incubator/clickhouse +icon: https://truecharts.org/img/chart-icons/clickhouse.png +keywords: + - database + - clickhouse + - sql +kubeVersion: '>=1.16.0-0' +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: clickhouse +sources: + - https://clickhouse.com/ + - https://hub.docker.com/r/yandex/clickhouse-server +type: application +version: 1.0.0 +annotations: + truecharts.org/catagories: | + - database + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/dependency/clickhouse/1.0.0/README.md b/dependency/clickhouse/1.0.0/README.md new file mode 100644 index 00000000000..7a4041a4d5e --- /dev/null +++ b/dependency/clickhouse/1.0.0/README.md @@ -0,0 +1,108 @@ +# clickhouse + +![Version: 1.0.0](https://img.shields.io/badge/Version-1.0.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 22.6.3.35](https://img.shields.io/badge/AppVersion-22.6.3.35-informational?style=flat-square) + +ClickHouse is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP). + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [clickhouse](https://truecharts.org/charts/stable/clickhouse) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.4 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `clickhouse` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install clickhouse TrueCharts/clickhouse +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `clickhouse` deployment + +```console +helm uninstall clickhouse +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install clickhouse \ + --set env.TZ="America/New York" \ + TrueCharts/clickhouse +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install clickhouse TrueCharts/clickhouse -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/dependency/clickhouse/1.0.0/app-readme.md b/dependency/clickhouse/1.0.0/app-readme.md new file mode 100644 index 00000000000..da03f25a83b --- /dev/null +++ b/dependency/clickhouse/1.0.0/app-readme.md @@ -0,0 +1,8 @@ +ClickHouse is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP). + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/dependency/clickhouse + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/dependency/mariadb/3.0.38/charts/common-10.4.4.tgz b/dependency/clickhouse/1.0.0/charts/common-10.4.4.tgz similarity index 100% rename from dependency/mariadb/3.0.38/charts/common-10.4.4.tgz rename to dependency/clickhouse/1.0.0/charts/common-10.4.4.tgz diff --git a/dependency/clickhouse/1.0.0/ix_values.yaml b/dependency/clickhouse/1.0.0/ix_values.yaml new file mode 100644 index 00000000000..fdfcd87194d --- /dev/null +++ b/dependency/clickhouse/1.0.0/ix_values.yaml @@ -0,0 +1,67 @@ +image: + repository: tccr.io/truecharts/clickhouse + pullPolicy: IfNotPresent + tag: v22.6.3.35@sha256:0f7ed60880f2f1710c64a81d629d6de105d72bac98850fba5242aad3b26445e2 + +controller: + type: statefulset + strategy: RollingUpdate + rollingUpdate: + unavailable: 1 + +securityContext: + readOnlyRootFilesystem: false + # Optional capabilities advanced ClickHouse features. See also: + # https://github.com/ClickHouse/ClickHouse/blob/master/docker/server/README.md#linux-capabilities + # https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-clickhouse-in-docker/ + # https://github.com/ClickHouse/ClickHouse/blob/b844c36a9d5e76300a88b4f49e6debccf1ad22e4/programs/install/Install.cpp#L793-L804 + # capabilities: + # add: + # - IPC_LOCK + # - NET_ADMIN + # - SYS_NICE + +service: + main: + ports: + main: + port: 8123 + protocol: HTTP + targetPort: 8123 + +volumeClaimTemplates: + data: + enabled: true + mountPath: /var/lib/clickhouse + +probes: + liveness: + type: HTTP + path: /ping + readiness: + type: HTTP + path: /ping + startup: + type: HTTP + path: /ping + +clickhouseDatabase: "test" +clickhouseUsername: "test" +clickhousePassword: "testpass" +clickhouseDefaultAccessManagement: 0 +existingSecret: "" + +secret: + credentials: + enabled: true + data: + clickhouse-password: '{{ ( .Values.clickhousePassword | default "empty" ) }}' + +env: + CLICKHOUSE_DB: "{{ .Values.clickhouseDatabase }}" + CLICKHOUSE_USER: "{{ .Values.clickhouseUsername }}" + CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT: "{{ .Values.clickhouseDefaultAccessManagement }}" + CLICKHOUSE_PASSWORD: + secretKeyRef: + name: '{{ .Values.existingSecret | default ( printf "%s-credentials" ( include "tc.common.names.fullname" . ) ) }}' + key: "clickhouse-password" diff --git a/dependency/clickhouse/1.0.0/questions.yaml b/dependency/clickhouse/1.0.0/questions.yaml new file mode 100644 index 00000000000..86cd09af9d2 --- /dev/null +++ b/dependency/clickhouse/1.0.0/questions.yaml @@ -0,0 +1,2640 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: false + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "statefulset" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "RollingUpdate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: clickhouseDatabase + group: "App Configuration" + label: "Database Name" + schema: + type: string + default: "test" + required: true + - variable: clickhouseUsername + group: "App Configuration" + label: "Database User" + schema: + type: string + default: "test" + required: true + - variable: clickhousePassword + group: "App Configuration" + label: "Database Password" + schema: + type: string + default: "" + required: true + private: true + - variable: clickhouseDefaultAccessManagement + group: "App Configuration" + label: "Default Access Management" + schema: + type: int + default: 0 + required: true + enum: + - value: 0 + description: "Disabled" + - value: 1 + description: "Enabled" + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 8123 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 8123 + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - variable: volumeClaimTemplates + 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: Stores the ClickHouse Data + 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: config-server + label: Server Configuration Storage + description: Files with Server Settings Adjustments + 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: config-users + label: Users Configuration Storage + description: Files with Users Settings Adjustments + 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: 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: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + 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: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/dependency/mariadb/3.0.38/templates/common.yaml b/dependency/clickhouse/1.0.0/templates/common.yaml similarity index 100% rename from dependency/mariadb/3.0.38/templates/common.yaml rename to dependency/clickhouse/1.0.0/templates/common.yaml diff --git a/dependency/mariadb/3.0.38/values.yaml b/dependency/clickhouse/1.0.0/values.yaml similarity index 100% rename from dependency/mariadb/3.0.38/values.yaml rename to dependency/clickhouse/1.0.0/values.yaml diff --git a/dependency/clickhouse/item.yaml b/dependency/clickhouse/item.yaml new file mode 100644 index 00000000000..b51605bd300 --- /dev/null +++ b/dependency/clickhouse/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/clickhouse.png +categories: +- database + diff --git a/dependency/collabora-online/12.1.19/CHANGELOG.md b/dependency/collabora-online/12.1.19/CHANGELOG.md new file mode 100644 index 00000000000..3ea8a39d745 --- /dev/null +++ b/dependency/collabora-online/12.1.19/CHANGELOG.md @@ -0,0 +1,99 @@ +# Changelog + + +## [collabora-online-12.1.19](https://github.com/truecharts/apps/compare/collabora-online-12.1.18...collabora-online-12.1.19) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- move clickhouse to dependency train, remove 2 breaking apps and remove some special characters +- update helm chart common to v10.4.6 + +### Fix + +- remove some non-utf8 characters + + + +## [collabora-online-12.1.19](https://github.com/truecharts/apps/compare/collabora-online-12.1.18...collabora-online-12.1.19) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- update helm chart common to v10.4.6 + +### Fix + +- remove some non-utf8 characters + + + +## [collabora-online-12.1.19](https://github.com/truecharts/apps/compare/collabora-online-12.1.18...collabora-online-12.1.19) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- update helm chart common to v10.4.6 + + + +## [collabora-online-12.1.19](https://github.com/truecharts/apps/compare/collabora-online-12.1.18...collabora-online-12.1.19) (2022-07-20) + +### Chore + +- update helm chart common to v10.4.6 + + + +## [collabora-online-12.1.18](https://github.com/truecharts/apps/compare/collabora-online-12.1.17...collabora-online-12.1.18) (2022-07-20) + +### Feat + +- force the use of TCCR in CI ([#3226](https://github.com/truecharts/apps/issues/3226)) + + + +## [collabora-online-12.1.17](https://github.com/truecharts/apps/compare/collabora-online-12.1.16...collabora-online-12.1.17) (2022-07-19) + +### Chore + +- Update Readme and Description on SCALE + + + +## [collabora-online-12.1.16](https://github.com/truecharts/apps/compare/collabora-online-12.1.15...collabora-online-12.1.16) (2022-07-14) + +### Fix + +- regenerate catalog and update template + + + +## [collabora-online-12.1.15](https://github.com/truecharts/apps/compare/collabora-online-12.1.13...collabora-online-12.1.15) (2022-07-14) + +### Fix + +- bump to ensure .helmignore is present on all Charts + + + +## [collabora-online-12.1.13](https://github.com/truecharts/apps/compare/collabora-online-12.1.12...collabora-online-12.1.13) (2022-07-14) + +### Chore + +- update docker general non-major ([#3171](https://github.com/truecharts/apps/issues/3171)) + + + + +## [collabora-online-12.1.11](https://github.com/truecharts/apps/compare/collabora-online-12.1.8...collabora-online-12.1.11) (2022-07-12) + +### Chore + +- update icons ([#3156](https://github.com/truecharts/apps/issues/3156)) +- bump to cleanup old docs and use correct icon urls + + diff --git a/dependency/collabora-online/12.1.19/Chart.lock b/dependency/collabora-online/12.1.19/Chart.lock new file mode 100644 index 00000000000..1c5a2ea4154 --- /dev/null +++ b/dependency/collabora-online/12.1.19/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:01:55.425838613Z" diff --git a/dependency/collabora-online/12.1.19/Chart.yaml b/dependency/collabora-online/12.1.19/Chart.yaml new file mode 100644 index 00000000000..8316aa38401 --- /dev/null +++ b/dependency/collabora-online/12.1.19/Chart.yaml @@ -0,0 +1,31 @@ +apiVersion: v2 +appVersion: "22.05.4.1" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: "An awesome Online Office suite." +home: https://github.com/truecharts/apps/tree/master/charts/stable/collabora-online +icon: https://truecharts.org/img/chart-icons/collabora-online.png +keywords: +- collabora-online +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: collabora-online +sources: +- https://hub.docker.com/r/collabora/code +- https://sdk.collaboraonline.com/contents.html +- https://github.com/CollaboraOnline/online/tree/master/kubernetes/helm +type: application +version: 12.1.19 +annotations: + truecharts.org/catagories: | + - office + - documents + - productivity + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/dependency/collabora-online/12.1.19/README.md b/dependency/collabora-online/12.1.19/README.md new file mode 100644 index 00000000000..15e90414893 --- /dev/null +++ b/dependency/collabora-online/12.1.19/README.md @@ -0,0 +1,109 @@ +# collabora-online + +![Version: 12.1.19](https://img.shields.io/badge/Version-12.1.19-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 22.05.4.1](https://img.shields.io/badge/AppVersion-22.05.4.1-informational?style=flat-square) + +An awesome Online Office suite. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [collabora-online](https://truecharts.org/charts/stable/collabora-online) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `collabora-online` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install collabora-online TrueCharts/collabora-online +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `collabora-online` deployment + +```console +helm uninstall collabora-online +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install collabora-online \ + --set env.TZ="America/New York" \ + TrueCharts/collabora-online +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install collabora-online TrueCharts/collabora-online -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/dependency/collabora-online/12.1.19/app-readme.md b/dependency/collabora-online/12.1.19/app-readme.md new file mode 100644 index 00000000000..ccceec29807 --- /dev/null +++ b/dependency/collabora-online/12.1.19/app-readme.md @@ -0,0 +1,8 @@ +An awesome Online Office suite. + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/dependency/collabora-online + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/dependency/collabora-online/12.1.19/charts/common-10.4.6.tgz b/dependency/collabora-online/12.1.19/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/dependency/collabora-online/12.1.19/ix_values.yaml b/dependency/collabora-online/12.1.19/ix_values.yaml new file mode 100644 index 00000000000..882c7fef3ce --- /dev/null +++ b/dependency/collabora-online/12.1.19/ix_values.yaml @@ -0,0 +1,51 @@ +image: + repository: tccr.io/truecharts/collabora + tag: v22.05.4.1.1@sha256:e852db304bfb879b462d449c000e7d8e3f348390f821dcb629bef22083b96365 + pullPolicy: IfNotPresent + +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 + allowPrivilegeEscalation: true + +podSecurityContext: + runAsUser: 104 + runAsGroup: 106 + +service: + main: + ports: + main: + port: 10105 + targetPort: 9980 + +secretEnv: + username: "" + password: "" + +env: + aliasgroup1: "" + dictionaries: "de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru" + extra_params: "--o:welcome.enable=false --o:logging.level=information --o:user_interface.mode=notebookbar --o:ssl.termination=true --o:ssl.enable=false " + server_name: "collabora.domain.tld" + DONT_GEN_SSL_CERT: true diff --git a/dependency/collabora-online/12.1.19/questions.yaml b/dependency/collabora-online/12.1.19/questions.yaml new file mode 100644 index 00000000000..da1abfbb249 --- /dev/null +++ b/dependency/collabora-online/12.1.19/questions.yaml @@ -0,0 +1,2313 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" + path: "/" + admin: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" + path: "/browser/dist/admin/admin.html" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "RollingUpdate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: secretEnv + group: "Container Configuration" + label: "Image Secrets" + schema: + additional_attrs: true + type: dict + attrs: + - variable: username + label: "Username for WebUI" + schema: + type: string + default: "admin" + required: true + - variable: password + label: "Password for WebUI" + schema: + type: string + valid_chars: "[a-zA-Z0-9!@#$%^&*?]{8,}" + private: true + required: true + default: "REPLACETHIS" + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: aliasgroup1 + label: "aliasgroup1" + description: "Comma separated hosts list." + schema: + type: string + default: "" + - variable: dictionaries + label: "Dictionaries to use, leave empty to use all" + schema: + type: string + default: "de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru" + - variable: extra_params + label: "Extra Parameters to add" + description: 'e.g. "--o:welcome.enable=false", See more on /etc/loolwsd/loolwsd.xml. Separate params with space' + schema: + type: string + default: "--o:welcome.enable=false --o:logging.level=information --o:user_interface.mode=notebookbar --o:ssl.termination=true --o:ssl.enable=false" + - variable: DONT_GEN_SSL_CERT + label: "DONT_GEN_SSL_CERT" + description: "When set to true it does NOT generate an SSL cert, you have to use your own" + schema: + type: boolean + default: true + - variable: server_name + label: "Server Name" + description: "When this environment variable is set (is not empty), then its value will be used as server name in /etc/loolwsd/loolwsd.xml. Without this, CODE is not delivering a correct host for the websocket connection in case of a proxy in front of it." + schema: + type: string + default: 'collabora.domain.tld' + valid_chars: '^((([a-z\d](-?[a-z\d]){0,62})\.)*(([a-z\d](-?[a-z\d]){0,62})\.)([a-z](-?[a-z\d]){1,62})|((\d{1,3}\.){3}\d{1,3}))$' + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10105 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 9980 + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - 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: true + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 104 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 106 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/stable/grafana/4.0.29/templates/common.yaml b/dependency/collabora-online/12.1.19/templates/common.yaml similarity index 100% rename from stable/grafana/4.0.29/templates/common.yaml rename to dependency/collabora-online/12.1.19/templates/common.yaml diff --git a/dependency/memcached/3.0.39/values.yaml b/dependency/collabora-online/12.1.19/values.yaml similarity index 100% rename from dependency/memcached/3.0.39/values.yaml rename to dependency/collabora-online/12.1.19/values.yaml diff --git a/dependency/mariadb/3.0.38/CHANGELOG.md b/dependency/mariadb/3.0.38/CHANGELOG.md deleted file mode 100644 index 981e3d1dd49..00000000000 --- a/dependency/mariadb/3.0.38/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -# Changelog - - - - -## [mariadb-3.0.36](https://github.com/truecharts/apps/compare/mariadb-3.0.35...mariadb-3.0.36) (2022-07-16) - -### Chore - -- update docker general non-major ([#3192](https://github.com/truecharts/apps/issues/3192)) - - - -## [memcached-3.0.36](https://github.com/truecharts/apps/compare/memcached-3.0.35...memcached-3.0.36) (2022-07-14) - -### Fix - -- regenerate catalog and update template - - - -## [memcached-3.0.35](https://github.com/truecharts/apps/compare/memcached-3.0.33...memcached-3.0.35) (2022-07-14) - -### Fix - -- bump to ensure .helmignore is present on all Charts - - - - -## [memcached-3.0.32](https://github.com/truecharts/apps/compare/memcached-3.0.30...memcached-3.0.32) (2022-07-12) - -### Chore - -- update icons ([#3156](https://github.com/truecharts/apps/issues/3156)) -- bump to cleanup old docs and use correct icon urls - - - -## [memcached-3.0.30](https://github.com/truecharts/apps/compare/memcached-3.0.29...memcached-3.0.30) (2022-07-12) - -### Chore - -- bump to regenerate documentation - - - - -### [memcached-3.0.29](https://github.com/truecharts/apps/compare/memcached-3.0.28...memcached-3.0.29) (2022-07-12) - -#### Chore - -* update helm chart common to v10.4.4 ([#3146](https://github.com/truecharts/apps/issues/3146)) - - - - -### [memcached-3.0.28](https://github.com/truecharts/apps/compare/memcached-3.0.27...memcached-3.0.28) (2022-07-11) - - - - -### [memcached-3.0.27](https://github.com/truecharts/apps/compare/memcached-3.0.26...memcached-3.0.27) (2022-07-11) - -#### Chore - -* move icons into the apps folder ([#3139](https://github.com/truecharts/apps/issues/3139)) -* update helm chart common to v10.4.3 ([#3137](https://github.com/truecharts/apps/issues/3137)) - - - - -### [memcached-3.0.26](https://github.com/truecharts/apps/compare/memcached-3.0.25...memcached-3.0.26) (2022-07-11) - -#### Chore - -* update helm chart common to v10.4.2 - - - - -### [memcached-3.0.25](https://github.com/truecharts/apps/compare/memcached-3.0.24...memcached-3.0.25) (2022-07-10) - -#### Chore - -* update helm chart common to v10.4.0 ([#3123](https://github.com/truecharts/apps/issues/3123)) -* update docker general non-major ([#3115](https://github.com/truecharts/apps/issues/3115)) - - - - -### [memcached-3.0.24](https://github.com/truecharts/apps/compare/memcached-3.0.23...memcached-3.0.24) (2022-07-10) - -#### Chore - -* update helm chart common to v10.3.0 - - - diff --git a/dependency/mariadb/3.0.39/CHANGELOG.md b/dependency/mariadb/3.0.39/CHANGELOG.md new file mode 100644 index 00000000000..d0ad1d0acf7 --- /dev/null +++ b/dependency/mariadb/3.0.39/CHANGELOG.md @@ -0,0 +1,99 @@ +# Changelog + + +## [mariadb-3.0.39](https://github.com/truecharts/apps/compare/mariadb-3.0.38...mariadb-3.0.39) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- update helm chart common to v10.4.6 + +### Feat + +- force the use of TCCR in CI ([#3226](https://github.com/truecharts/apps/issues/3226)) + + + +## [mariadb-3.0.39](https://github.com/truecharts/apps/compare/mariadb-3.0.38...mariadb-3.0.39) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- update helm chart common to v10.4.6 + +### Feat + +- force the use of TCCR in CI ([#3226](https://github.com/truecharts/apps/issues/3226)) + + + +## [mariadb-3.0.39](https://github.com/truecharts/apps/compare/mariadb-3.0.38...mariadb-3.0.39) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- update helm chart common to v10.4.6 + +### Feat + +- force the use of TCCR in CI ([#3226](https://github.com/truecharts/apps/issues/3226)) + + + +## [mariadb-3.0.39](https://github.com/truecharts/apps/compare/mariadb-3.0.38...mariadb-3.0.39) (2022-07-20) + +### Chore + +- update helm chart common to v10.4.6 + +### Feat + +- force the use of TCCR in CI ([#3226](https://github.com/truecharts/apps/issues/3226)) + + + + + +## [mariadb-3.0.36](https://github.com/truecharts/apps/compare/mariadb-3.0.35...mariadb-3.0.36) (2022-07-16) + +### Chore + +- update docker general non-major ([#3192](https://github.com/truecharts/apps/issues/3192)) + + + +## [memcached-3.0.36](https://github.com/truecharts/apps/compare/memcached-3.0.35...memcached-3.0.36) (2022-07-14) + +### Fix + +- regenerate catalog and update template + + + +## [memcached-3.0.35](https://github.com/truecharts/apps/compare/memcached-3.0.33...memcached-3.0.35) (2022-07-14) + +### Fix + +- bump to ensure .helmignore is present on all Charts + + + + +## [memcached-3.0.32](https://github.com/truecharts/apps/compare/memcached-3.0.30...memcached-3.0.32) (2022-07-12) + +### Chore + +- update icons ([#3156](https://github.com/truecharts/apps/issues/3156)) +- bump to cleanup old docs and use correct icon urls + + + +## [memcached-3.0.30](https://github.com/truecharts/apps/compare/memcached-3.0.29...memcached-3.0.30) (2022-07-12) + +### Chore + +- bump to regenerate documentation + diff --git a/dependency/mariadb/3.0.39/Chart.lock b/dependency/mariadb/3.0.39/Chart.lock new file mode 100644 index 00000000000..f214a1eff18 --- /dev/null +++ b/dependency/mariadb/3.0.39/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:01:55.540985013Z" diff --git a/dependency/mariadb/3.0.38/Chart.yaml b/dependency/mariadb/3.0.39/Chart.yaml similarity index 96% rename from dependency/mariadb/3.0.38/Chart.yaml rename to dependency/mariadb/3.0.39/Chart.yaml index d4bf094ff4a..acbb5e1fa39 100644 --- a/dependency/mariadb/3.0.38/Chart.yaml +++ b/dependency/mariadb/3.0.39/Chart.yaml @@ -3,7 +3,7 @@ appVersion: "10.8.3" dependencies: - name: common repository: https://library-charts.truecharts.org - version: 10.4.4 + version: 10.4.6 deprecated: false description: Fast, reliable, scalable, and easy to use open-source relational database system. home: https://github.com/truecharts/apps/tree/master/charts/dependency/mariadb @@ -24,7 +24,7 @@ sources: - https://github.com/prometheus/mysqld_exporter - https://mariadb.org type: application -version: 3.0.38 +version: 3.0.39 annotations: truecharts.org/catagories: | - database diff --git a/dependency/mariadb/3.0.38/README.md b/dependency/mariadb/3.0.39/README.md similarity index 96% rename from dependency/mariadb/3.0.38/README.md rename to dependency/mariadb/3.0.39/README.md index 5cc10f32a47..f9705cafade 100644 --- a/dependency/mariadb/3.0.38/README.md +++ b/dependency/mariadb/3.0.39/README.md @@ -1,6 +1,6 @@ # mariadb -![Version: 3.0.38](https://img.shields.io/badge/Version-3.0.38-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 10.8.3](https://img.shields.io/badge/AppVersion-10.8.3-informational?style=flat-square) +![Version: 3.0.39](https://img.shields.io/badge/Version-3.0.39-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 10.8.3](https://img.shields.io/badge/AppVersion-10.8.3-informational?style=flat-square) Fast, reliable, scalable, and easy to use open-source relational database system. @@ -25,7 +25,7 @@ Kubernetes: `>=1.16.0-0` | Repository | Name | Version | |------------|------|---------| -| https://library-charts.truecharts.org | common | 10.4.4 | +| https://library-charts.truecharts.org | common | 10.4.6 | ## Installing the Chart diff --git a/dependency/mariadb/3.0.38/app-readme.md b/dependency/mariadb/3.0.39/app-readme.md similarity index 100% rename from dependency/mariadb/3.0.38/app-readme.md rename to dependency/mariadb/3.0.39/app-readme.md diff --git a/dependency/mariadb/3.0.39/charts/common-10.4.6.tgz b/dependency/mariadb/3.0.39/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/dependency/mariadb/3.0.38/ix_values.yaml b/dependency/mariadb/3.0.39/ix_values.yaml similarity index 98% rename from dependency/mariadb/3.0.38/ix_values.yaml rename to dependency/mariadb/3.0.39/ix_values.yaml index fe66b6e3e07..3dca6df8ac2 100644 --- a/dependency/mariadb/3.0.38/ix_values.yaml +++ b/dependency/mariadb/3.0.39/ix_values.yaml @@ -1,5 +1,5 @@ image: - repository: ghcr.io/truecharts/mariadb + repository: tccr.io/truecharts/mariadb pullPolicy: IfNotPresent tag: v10.8.3@sha256:aebc0d76ebb721a985c11950f7e28239b43de126d6229e5825605b4c2d37269d diff --git a/dependency/mariadb/3.0.38/questions.yaml b/dependency/mariadb/3.0.39/questions.yaml similarity index 100% rename from dependency/mariadb/3.0.38/questions.yaml rename to dependency/mariadb/3.0.39/questions.yaml diff --git a/dependency/mariadb/3.0.39/templates/common.yaml b/dependency/mariadb/3.0.39/templates/common.yaml new file mode 100644 index 00000000000..c1a366e1cf0 --- /dev/null +++ b/dependency/mariadb/3.0.39/templates/common.yaml @@ -0,0 +1 @@ +{{ include "tc.common.loader.all" . }} diff --git a/dependency/mongodb/1.0.42/values.yaml b/dependency/mariadb/3.0.39/values.yaml similarity index 100% rename from dependency/mongodb/1.0.42/values.yaml rename to dependency/mariadb/3.0.39/values.yaml diff --git a/dependency/memcached/3.0.39/CHANGELOG.md b/dependency/memcached/3.0.39/CHANGELOG.md deleted file mode 100644 index 4849a0659c7..00000000000 --- a/dependency/memcached/3.0.39/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -# Changelog - - -## [memcached-3.0.39](https://github.com/truecharts/apps/compare/memcached-3.0.38...memcached-3.0.39) (2022-07-20) - -### Chore - -- update docker general non-major ([#3222](https://github.com/truecharts/apps/issues/3222)) - - - -## [memcached-3.0.38](https://github.com/truecharts/apps/compare/memcached-3.0.37...memcached-3.0.38) (2022-07-19) - -### Chore - -- Update Readme and Description on SCALE - - - -## [memcached-3.0.37](https://github.com/truecharts/apps/compare/memcached-3.0.36...memcached-3.0.37) (2022-07-15) - -### Chore - -- update docker general non-major ([#3184](https://github.com/truecharts/apps/issues/3184)) - - - - -## [memcached-3.0.35](https://github.com/truecharts/apps/compare/memcached-3.0.33...memcached-3.0.35) (2022-07-14) - -### Fix - -- bump to ensure .helmignore is present on all Charts - - - - -## [memcached-3.0.32](https://github.com/truecharts/apps/compare/memcached-3.0.30...memcached-3.0.32) (2022-07-12) - -### Chore - -- update icons ([#3156](https://github.com/truecharts/apps/issues/3156)) -- bump to cleanup old docs and use correct icon urls - - - -## [memcached-3.0.30](https://github.com/truecharts/apps/compare/memcached-3.0.29...memcached-3.0.30) (2022-07-12) - -### Chore - -- bump to regenerate documentation - - - - -### [memcached-3.0.29](https://github.com/truecharts/apps/compare/memcached-3.0.28...memcached-3.0.29) (2022-07-12) - -#### Chore - -* update helm chart common to v10.4.4 ([#3146](https://github.com/truecharts/apps/issues/3146)) - - - - -### [memcached-3.0.28](https://github.com/truecharts/apps/compare/memcached-3.0.27...memcached-3.0.28) (2022-07-11) - - - - -### [memcached-3.0.27](https://github.com/truecharts/apps/compare/memcached-3.0.26...memcached-3.0.27) (2022-07-11) - -#### Chore - -* move icons into the apps folder ([#3139](https://github.com/truecharts/apps/issues/3139)) -* update helm chart common to v10.4.3 ([#3137](https://github.com/truecharts/apps/issues/3137)) - - - - -### [memcached-3.0.26](https://github.com/truecharts/apps/compare/memcached-3.0.25...memcached-3.0.26) (2022-07-11) - -#### Chore - -* update helm chart common to v10.4.2 - - - - -### [memcached-3.0.25](https://github.com/truecharts/apps/compare/memcached-3.0.24...memcached-3.0.25) (2022-07-10) - -#### Chore - -* update helm chart common to v10.4.0 ([#3123](https://github.com/truecharts/apps/issues/3123)) -* update docker general non-major ([#3115](https://github.com/truecharts/apps/issues/3115)) - - - - -### [memcached-3.0.24](https://github.com/truecharts/apps/compare/memcached-3.0.23...memcached-3.0.24) (2022-07-10) diff --git a/dependency/memcached/3.0.39/ix_values.yaml b/dependency/memcached/3.0.39/ix_values.yaml deleted file mode 100644 index 31a810f1bb8..00000000000 --- a/dependency/memcached/3.0.39/ix_values.yaml +++ /dev/null @@ -1,11 +0,0 @@ -image: - repository: ghcr.io/truecharts/memcached - pullPolicy: IfNotPresent - tag: v1.6.15@sha256:2315cdfed681ffbbf882321d6b71936f635da76a033ef1701cbf1e7fbfe78581 - -service: - main: - ports: - main: - port: 11211 - targetPort: 11211 diff --git a/dependency/memcached/3.0.41/CHANGELOG.md b/dependency/memcached/3.0.41/CHANGELOG.md new file mode 100644 index 00000000000..86559acb481 --- /dev/null +++ b/dependency/memcached/3.0.41/CHANGELOG.md @@ -0,0 +1,99 @@ +# Changelog + + +## [memcached-3.0.41](https://github.com/truecharts/apps/compare/memcached-3.0.39...memcached-3.0.41) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- update docker general non-major ([#3239](https://github.com/truecharts/apps/issues/3239)) +- update helm chart common to v10.4.6 + +### Feat + +- force the use of TCCR in CI ([#3226](https://github.com/truecharts/apps/issues/3226)) + + + +## [memcached-3.0.41](https://github.com/truecharts/apps/compare/memcached-3.0.39...memcached-3.0.41) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- update docker general non-major ([#3239](https://github.com/truecharts/apps/issues/3239)) +- update helm chart common to v10.4.6 + +### Feat + +- force the use of TCCR in CI ([#3226](https://github.com/truecharts/apps/issues/3226)) + + + +## [memcached-3.0.41](https://github.com/truecharts/apps/compare/memcached-3.0.39...memcached-3.0.41) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- update docker general non-major ([#3239](https://github.com/truecharts/apps/issues/3239)) +- update helm chart common to v10.4.6 + +### Feat + +- force the use of TCCR in CI ([#3226](https://github.com/truecharts/apps/issues/3226)) + + + +## [memcached-3.0.40](https://github.com/truecharts/apps/compare/memcached-3.0.39...memcached-3.0.40) (2022-07-20) + +### Chore + +- update helm chart common to v10.4.6 + +### Feat + +- force the use of TCCR in CI ([#3226](https://github.com/truecharts/apps/issues/3226)) + + + +## [memcached-3.0.39](https://github.com/truecharts/apps/compare/memcached-3.0.38...memcached-3.0.39) (2022-07-20) + +### Chore + +- update docker general non-major ([#3222](https://github.com/truecharts/apps/issues/3222)) + + + +## [memcached-3.0.38](https://github.com/truecharts/apps/compare/memcached-3.0.37...memcached-3.0.38) (2022-07-19) + +### Chore + +- Update Readme and Description on SCALE + + + +## [memcached-3.0.37](https://github.com/truecharts/apps/compare/memcached-3.0.36...memcached-3.0.37) (2022-07-15) + +### Chore + +- update docker general non-major ([#3184](https://github.com/truecharts/apps/issues/3184)) + + + + +## [memcached-3.0.35](https://github.com/truecharts/apps/compare/memcached-3.0.33...memcached-3.0.35) (2022-07-14) + +### Fix + +- bump to ensure .helmignore is present on all Charts + + + + +## [memcached-3.0.32](https://github.com/truecharts/apps/compare/memcached-3.0.30...memcached-3.0.32) (2022-07-12) + +### Chore + +- update icons ([#3156](https://github.com/truecharts/apps/issues/3156)) diff --git a/dependency/memcached/3.0.41/Chart.lock b/dependency/memcached/3.0.41/Chart.lock new file mode 100644 index 00000000000..06433b8e362 --- /dev/null +++ b/dependency/memcached/3.0.41/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:01:55.517677011Z" diff --git a/dependency/memcached/3.0.39/Chart.yaml b/dependency/memcached/3.0.41/Chart.yaml similarity index 95% rename from dependency/memcached/3.0.39/Chart.yaml rename to dependency/memcached/3.0.41/Chart.yaml index 5c296b6507d..03c9f8db481 100644 --- a/dependency/memcached/3.0.39/Chart.yaml +++ b/dependency/memcached/3.0.41/Chart.yaml @@ -3,7 +3,7 @@ appVersion: "1.6.15" dependencies: - name: common repository: https://library-charts.truecharts.org - version: 10.4.4 + version: 10.4.6 deprecated: false description: Memcached is a memory-backed database caching solution home: https://github.com/truecharts/apps/tree/master/charts/dependency/memcached @@ -22,7 +22,7 @@ sources: - https://github.com/bitnami/bitnami-docker-memcached - http://memcached.org/ type: application -version: 3.0.39 +version: 3.0.41 annotations: truecharts.org/catagories: | - database diff --git a/dependency/memcached/3.0.39/README.md b/dependency/memcached/3.0.41/README.md similarity index 96% rename from dependency/memcached/3.0.39/README.md rename to dependency/memcached/3.0.41/README.md index 9a5ccd28c79..5904ff55e8a 100644 --- a/dependency/memcached/3.0.39/README.md +++ b/dependency/memcached/3.0.41/README.md @@ -1,6 +1,6 @@ # memcached -![Version: 3.0.39](https://img.shields.io/badge/Version-3.0.39-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.6.15](https://img.shields.io/badge/AppVersion-1.6.15-informational?style=flat-square) +![Version: 3.0.41](https://img.shields.io/badge/Version-3.0.41-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.6.15](https://img.shields.io/badge/AppVersion-1.6.15-informational?style=flat-square) Memcached is a memory-backed database caching solution @@ -24,7 +24,7 @@ Kubernetes: `>=1.16.0-0` | Repository | Name | Version | |------------|------|---------| -| https://library-charts.truecharts.org | common | 10.4.4 | +| https://library-charts.truecharts.org | common | 10.4.6 | ## Installing the Chart diff --git a/dependency/memcached/3.0.39/app-readme.md b/dependency/memcached/3.0.41/app-readme.md similarity index 100% rename from dependency/memcached/3.0.39/app-readme.md rename to dependency/memcached/3.0.41/app-readme.md diff --git a/dependency/memcached/3.0.41/charts/common-10.4.6.tgz b/dependency/memcached/3.0.41/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/dependency/memcached/3.0.41/ix_values.yaml b/dependency/memcached/3.0.41/ix_values.yaml new file mode 100644 index 00000000000..7a8483a5295 --- /dev/null +++ b/dependency/memcached/3.0.41/ix_values.yaml @@ -0,0 +1,11 @@ +image: + repository: tccr.io/truecharts/memcached + pullPolicy: IfNotPresent + tag: v1.6.15@sha256:33973f411fb8647f8f086f8a4b7018f4a40ddd377a73c85972068aad632400f5 + +service: + main: + ports: + main: + port: 11211 + targetPort: 11211 diff --git a/dependency/memcached/3.0.39/questions.yaml b/dependency/memcached/3.0.41/questions.yaml similarity index 100% rename from dependency/memcached/3.0.39/questions.yaml rename to dependency/memcached/3.0.41/questions.yaml diff --git a/dependency/memcached/3.0.39/templates/common.yaml b/dependency/memcached/3.0.41/templates/common.yaml similarity index 100% rename from dependency/memcached/3.0.39/templates/common.yaml rename to dependency/memcached/3.0.41/templates/common.yaml diff --git a/dependency/postgresql/8.0.40/values.yaml b/dependency/memcached/3.0.41/values.yaml similarity index 100% rename from dependency/postgresql/8.0.40/values.yaml rename to dependency/memcached/3.0.41/values.yaml diff --git a/dependency/mongodb/1.0.42/CHANGELOG.md b/dependency/mongodb/1.0.42/CHANGELOG.md deleted file mode 100644 index d2d85aa974c..00000000000 --- a/dependency/mongodb/1.0.42/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -# Changelog - - -## [mariadb-3.0.38](https://github.com/truecharts/apps/compare/mariadb-3.0.37...mariadb-3.0.38) (2022-07-20) - -### Chore - -- update docker general non-major ([#3222](https://github.com/truecharts/apps/issues/3222)) - - - - -## [mariadb-3.0.36](https://github.com/truecharts/apps/compare/mariadb-3.0.35...mariadb-3.0.36) (2022-07-16) - -### Chore - -- update docker general non-major ([#3192](https://github.com/truecharts/apps/issues/3192)) - - - -## [memcached-3.0.36](https://github.com/truecharts/apps/compare/memcached-3.0.35...memcached-3.0.36) (2022-07-14) - -### Fix - -- regenerate catalog and update template - - - -## [memcached-3.0.35](https://github.com/truecharts/apps/compare/memcached-3.0.33...memcached-3.0.35) (2022-07-14) - -### Fix - -- bump to ensure .helmignore is present on all Charts - - - - -## [memcached-3.0.32](https://github.com/truecharts/apps/compare/memcached-3.0.30...memcached-3.0.32) (2022-07-12) - -### Chore - -- update icons ([#3156](https://github.com/truecharts/apps/issues/3156)) -- bump to cleanup old docs and use correct icon urls - - - -## [memcached-3.0.30](https://github.com/truecharts/apps/compare/memcached-3.0.29...memcached-3.0.30) (2022-07-12) - -### Chore - -- bump to regenerate documentation - - - - -### [memcached-3.0.29](https://github.com/truecharts/apps/compare/memcached-3.0.28...memcached-3.0.29) (2022-07-12) - -#### Chore - -* update helm chart common to v10.4.4 ([#3146](https://github.com/truecharts/apps/issues/3146)) - - - - -### [memcached-3.0.28](https://github.com/truecharts/apps/compare/memcached-3.0.27...memcached-3.0.28) (2022-07-11) - - - - -### [memcached-3.0.27](https://github.com/truecharts/apps/compare/memcached-3.0.26...memcached-3.0.27) (2022-07-11) - -#### Chore - -* move icons into the apps folder ([#3139](https://github.com/truecharts/apps/issues/3139)) -* update helm chart common to v10.4.3 ([#3137](https://github.com/truecharts/apps/issues/3137)) - - - - -### [memcached-3.0.26](https://github.com/truecharts/apps/compare/memcached-3.0.25...memcached-3.0.26) (2022-07-11) - -#### Chore - -* update helm chart common to v10.4.2 - - - - -### [memcached-3.0.25](https://github.com/truecharts/apps/compare/memcached-3.0.24...memcached-3.0.25) (2022-07-10) - -#### Chore - -* update helm chart common to v10.4.0 ([#3123](https://github.com/truecharts/apps/issues/3123)) -* update docker general non-major ([#3115](https://github.com/truecharts/apps/issues/3115)) - - - - -### [memcached-3.0.24](https://github.com/truecharts/apps/compare/memcached-3.0.23...memcached-3.0.24) (2022-07-10) diff --git a/dependency/mongodb/1.0.43/CHANGELOG.md b/dependency/mongodb/1.0.43/CHANGELOG.md new file mode 100644 index 00000000000..9d13787df4e --- /dev/null +++ b/dependency/mongodb/1.0.43/CHANGELOG.md @@ -0,0 +1,99 @@ +# Changelog + + +## [mongodb-1.0.43](https://github.com/truecharts/apps/compare/mongodb-1.0.42...mongodb-1.0.43) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- update helm chart common to v10.4.6 + +### Feat + +- force the use of TCCR in CI ([#3226](https://github.com/truecharts/apps/issues/3226)) + + + +## [mongodb-1.0.43](https://github.com/truecharts/apps/compare/mongodb-1.0.42...mongodb-1.0.43) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- update helm chart common to v10.4.6 + +### Feat + +- force the use of TCCR in CI ([#3226](https://github.com/truecharts/apps/issues/3226)) + + + +## [mongodb-1.0.43](https://github.com/truecharts/apps/compare/mongodb-1.0.42...mongodb-1.0.43) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- update helm chart common to v10.4.6 + +### Feat + +- force the use of TCCR in CI ([#3226](https://github.com/truecharts/apps/issues/3226)) + + + +## [mongodb-1.0.43](https://github.com/truecharts/apps/compare/mongodb-1.0.42...mongodb-1.0.43) (2022-07-20) + +### Chore + +- update helm chart common to v10.4.6 + +### Feat + +- force the use of TCCR in CI ([#3226](https://github.com/truecharts/apps/issues/3226)) + + + +## [mariadb-3.0.38](https://github.com/truecharts/apps/compare/mariadb-3.0.37...mariadb-3.0.38) (2022-07-20) + +### Chore + +- update docker general non-major ([#3222](https://github.com/truecharts/apps/issues/3222)) + + + + +## [mariadb-3.0.36](https://github.com/truecharts/apps/compare/mariadb-3.0.35...mariadb-3.0.36) (2022-07-16) + +### Chore + +- update docker general non-major ([#3192](https://github.com/truecharts/apps/issues/3192)) + + + +## [memcached-3.0.36](https://github.com/truecharts/apps/compare/memcached-3.0.35...memcached-3.0.36) (2022-07-14) + +### Fix + +- regenerate catalog and update template + + + +## [memcached-3.0.35](https://github.com/truecharts/apps/compare/memcached-3.0.33...memcached-3.0.35) (2022-07-14) + +### Fix + +- bump to ensure .helmignore is present on all Charts + + + + +## [memcached-3.0.32](https://github.com/truecharts/apps/compare/memcached-3.0.30...memcached-3.0.32) (2022-07-12) + +### Chore + +- update icons ([#3156](https://github.com/truecharts/apps/issues/3156)) +- bump to cleanup old docs and use correct icon urls + + diff --git a/dependency/mongodb/1.0.43/Chart.lock b/dependency/mongodb/1.0.43/Chart.lock new file mode 100644 index 00000000000..a4348bc95a0 --- /dev/null +++ b/dependency/mongodb/1.0.43/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:02:11.221575507Z" diff --git a/dependency/mongodb/1.0.42/Chart.yaml b/dependency/mongodb/1.0.43/Chart.yaml similarity index 95% rename from dependency/mongodb/1.0.42/Chart.yaml rename to dependency/mongodb/1.0.43/Chart.yaml index 86576b48815..583a864dc27 100644 --- a/dependency/mongodb/1.0.42/Chart.yaml +++ b/dependency/mongodb/1.0.43/Chart.yaml @@ -3,7 +3,7 @@ appVersion: "5.0.9" dependencies: - name: common repository: https://library-charts.truecharts.org - version: 10.4.4 + version: 10.4.6 deprecated: false description: Fast, reliable, scalable, and easy to use open-source no-sql database system. home: https://github.com/truecharts/apps/tree/master/charts/dependency/mongodb @@ -23,7 +23,7 @@ sources: - https://github.com/bitnami/bitnami-docker-mongodb - https://www.mongodb.com type: application -version: 1.0.42 +version: 1.0.43 annotations: truecharts.org/catagories: | - database diff --git a/dependency/mongodb/1.0.42/README.md b/dependency/mongodb/1.0.43/README.md similarity index 96% rename from dependency/mongodb/1.0.42/README.md rename to dependency/mongodb/1.0.43/README.md index da2bb5ca9de..007ce706535 100644 --- a/dependency/mongodb/1.0.42/README.md +++ b/dependency/mongodb/1.0.43/README.md @@ -1,6 +1,6 @@ # mongodb -![Version: 1.0.42](https://img.shields.io/badge/Version-1.0.42-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 5.0.9](https://img.shields.io/badge/AppVersion-5.0.9-informational?style=flat-square) +![Version: 1.0.43](https://img.shields.io/badge/Version-1.0.43-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 5.0.9](https://img.shields.io/badge/AppVersion-5.0.9-informational?style=flat-square) Fast, reliable, scalable, and easy to use open-source no-sql database system. @@ -25,7 +25,7 @@ Kubernetes: `>=1.16.0-0` | Repository | Name | Version | |------------|------|---------| -| https://library-charts.truecharts.org | common | 10.4.4 | +| https://library-charts.truecharts.org | common | 10.4.6 | ## Installing the Chart diff --git a/dependency/mongodb/1.0.42/app-readme.md b/dependency/mongodb/1.0.43/app-readme.md similarity index 100% rename from dependency/mongodb/1.0.42/app-readme.md rename to dependency/mongodb/1.0.43/app-readme.md diff --git a/dependency/mongodb/1.0.43/charts/common-10.4.6.tgz b/dependency/mongodb/1.0.43/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/dependency/mongodb/1.0.42/ix_values.yaml b/dependency/mongodb/1.0.43/ix_values.yaml similarity index 98% rename from dependency/mongodb/1.0.42/ix_values.yaml rename to dependency/mongodb/1.0.43/ix_values.yaml index 8b3305de187..92094cc1a57 100644 --- a/dependency/mongodb/1.0.42/ix_values.yaml +++ b/dependency/mongodb/1.0.43/ix_values.yaml @@ -1,5 +1,5 @@ image: - repository: ghcr.io/truecharts/mongodb + repository: tccr.io/truecharts/mongodb pullPolicy: IfNotPresent tag: v5.0.9@sha256:8a3aa7687468fe558a847f2b3c815a6a6a3dbcfaa0747984583f7325e611f07a diff --git a/dependency/mongodb/1.0.42/questions.yaml b/dependency/mongodb/1.0.43/questions.yaml similarity index 100% rename from dependency/mongodb/1.0.42/questions.yaml rename to dependency/mongodb/1.0.43/questions.yaml diff --git a/dependency/mongodb/1.0.42/templates/common.yaml b/dependency/mongodb/1.0.43/templates/common.yaml similarity index 100% rename from dependency/mongodb/1.0.42/templates/common.yaml rename to dependency/mongodb/1.0.43/templates/common.yaml diff --git a/dependency/promtail/3.0.31/values.yaml b/dependency/mongodb/1.0.43/values.yaml similarity index 100% rename from dependency/promtail/3.0.31/values.yaml rename to dependency/mongodb/1.0.43/values.yaml diff --git a/dependency/postgresql/8.0.40/Chart.lock b/dependency/postgresql/8.0.40/Chart.lock deleted file mode 100644 index b531bed6869..00000000000 --- a/dependency/postgresql/8.0.40/Chart.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: common - repository: https://library-charts.truecharts.org - version: 10.4.4 -digest: sha256:e76f58e980866194e06f0e9135c981662f0b1132d3c5848dbf344c48ab657396 -generated: "2022-07-20T08:27:56.329877523Z" diff --git a/dependency/postgresql/8.0.40/CHANGELOG.md b/dependency/postgresql/8.0.41/CHANGELOG.md similarity index 56% rename from dependency/postgresql/8.0.40/CHANGELOG.md rename to dependency/postgresql/8.0.41/CHANGELOG.md index acc7e8bb170..55ee48a6351 100644 --- a/dependency/postgresql/8.0.40/CHANGELOG.md +++ b/dependency/postgresql/8.0.41/CHANGELOG.md @@ -1,6 +1,47 @@ # Changelog +## [postgresql-8.0.41](https://github.com/truecharts/apps/compare/postgresql-8.0.40...postgresql-8.0.41) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- update helm chart common to v10.4.6 + +### Feat + +- force the use of TCCR in CI ([#3226](https://github.com/truecharts/apps/issues/3226)) + + + + +## [postgresql-8.0.41](https://github.com/truecharts/apps/compare/postgresql-8.0.40...postgresql-8.0.41) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- update helm chart common to v10.4.6 + +### Feat + +- force the use of TCCR in CI ([#3226](https://github.com/truecharts/apps/issues/3226)) + + + +## [postgresql-8.0.41](https://github.com/truecharts/apps/compare/postgresql-8.0.40...postgresql-8.0.41) (2022-07-20) + +### Chore + +- update helm chart common to v10.4.6 + +### Feat + +- force the use of TCCR in CI ([#3226](https://github.com/truecharts/apps/issues/3226)) + + + ## [postgresql-8.0.40](https://github.com/truecharts/apps/compare/postgresql-8.0.39...postgresql-8.0.40) (2022-07-20) ### Chore @@ -56,44 +97,3 @@ - update icons ([#3156](https://github.com/truecharts/apps/issues/3156)) - bump to cleanup old docs and use correct icon urls - - -## [postgresql-8.0.31](https://github.com/truecharts/apps/compare/postgresql-8.0.30...postgresql-8.0.31) (2022-07-12) - -### Chore - -- bump to regenerate documentation - - - - -### [postgresql-8.0.30](https://github.com/truecharts/apps/compare/postgresql-8.0.29...postgresql-8.0.30) (2022-07-11) - - - - -### [postgresql-8.0.29](https://github.com/truecharts/apps/compare/postgresql-8.0.28...postgresql-8.0.29) (2022-07-11) - - - - -### [postgresql-8.0.28](https://github.com/truecharts/apps/compare/postgresql-8.0.27...postgresql-8.0.28) (2022-07-11) - -#### Chore - -* move icons into the apps folder ([#3139](https://github.com/truecharts/apps/issues/3139)) -* update helm chart common to v10.4.3 ([#3137](https://github.com/truecharts/apps/issues/3137)) - - - - -### [postgresql-8.0.27](https://github.com/truecharts/apps/compare/postgresql-8.0.26...postgresql-8.0.27) (2022-07-11) - -#### Chore - -* update helm chart common to v10.4.2 - - - - -### [postgresql-8.0.26](https://github.com/truecharts/apps/compare/postgresql-8.0.25...postgresql-8.0.26) (2022-07-10) diff --git a/dependency/postgresql/8.0.41/Chart.lock b/dependency/postgresql/8.0.41/Chart.lock new file mode 100644 index 00000000000..33544d8bcbc --- /dev/null +++ b/dependency/postgresql/8.0.41/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:02:11.496793903Z" diff --git a/dependency/postgresql/8.0.40/Chart.yaml b/dependency/postgresql/8.0.41/Chart.yaml similarity index 95% rename from dependency/postgresql/8.0.40/Chart.yaml rename to dependency/postgresql/8.0.41/Chart.yaml index b7c6bbbecea..f759d8e018c 100644 --- a/dependency/postgresql/8.0.40/Chart.yaml +++ b/dependency/postgresql/8.0.41/Chart.yaml @@ -3,7 +3,7 @@ appVersion: "14.4.0" dependencies: - name: common repository: https://library-charts.truecharts.org - version: 10.4.4 + version: 10.4.6 deprecated: false description: PostgresSQL home: https://github.com/truecharts/apps/tree/master/charts/dependency/postgresql @@ -22,7 +22,7 @@ name: postgresql sources: - https://www.postgresql.org/ type: application -version: 8.0.40 +version: 8.0.41 annotations: truecharts.org/catagories: | - database diff --git a/dependency/postgresql/8.0.40/README.md b/dependency/postgresql/8.0.41/README.md similarity index 96% rename from dependency/postgresql/8.0.40/README.md rename to dependency/postgresql/8.0.41/README.md index d5a263a0e44..29eed22b710 100644 --- a/dependency/postgresql/8.0.40/README.md +++ b/dependency/postgresql/8.0.41/README.md @@ -1,6 +1,6 @@ # postgresql -![Version: 8.0.40](https://img.shields.io/badge/Version-8.0.40-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 14.4.0](https://img.shields.io/badge/AppVersion-14.4.0-informational?style=flat-square) +![Version: 8.0.41](https://img.shields.io/badge/Version-8.0.41-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 14.4.0](https://img.shields.io/badge/AppVersion-14.4.0-informational?style=flat-square) PostgresSQL @@ -23,7 +23,7 @@ Kubernetes: `>=1.16.0-0` | Repository | Name | Version | |------------|------|---------| -| https://library-charts.truecharts.org | common | 10.4.4 | +| https://library-charts.truecharts.org | common | 10.4.6 | ## Installing the Chart diff --git a/dependency/postgresql/8.0.40/app-readme.md b/dependency/postgresql/8.0.41/app-readme.md similarity index 100% rename from dependency/postgresql/8.0.40/app-readme.md rename to dependency/postgresql/8.0.41/app-readme.md diff --git a/dependency/postgresql/8.0.41/charts/common-10.4.6.tgz b/dependency/postgresql/8.0.41/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/dependency/postgresql/8.0.40/ix_values.yaml b/dependency/postgresql/8.0.41/ix_values.yaml similarity index 98% rename from dependency/postgresql/8.0.40/ix_values.yaml rename to dependency/postgresql/8.0.41/ix_values.yaml index 41ea89a726e..baef03cda50 100644 --- a/dependency/postgresql/8.0.40/ix_values.yaml +++ b/dependency/postgresql/8.0.41/ix_values.yaml @@ -1,5 +1,5 @@ image: - repository: ghcr.io/truecharts/postgresql + repository: tccr.io/truecharts/postgresql pullPolicy: IfNotPresent tag: v14.4.0@sha256:c640658966db42b0b6589f4f2975be0a20d6aa8f0ba2510504451103a2554ce5 diff --git a/dependency/postgresql/8.0.40/questions.yaml b/dependency/postgresql/8.0.41/questions.yaml similarity index 100% rename from dependency/postgresql/8.0.40/questions.yaml rename to dependency/postgresql/8.0.41/questions.yaml diff --git a/dependency/postgresql/8.0.40/templates/common.yaml b/dependency/postgresql/8.0.41/templates/common.yaml similarity index 100% rename from dependency/postgresql/8.0.40/templates/common.yaml rename to dependency/postgresql/8.0.41/templates/common.yaml diff --git a/dependency/redis/3.0.40/values.yaml b/dependency/postgresql/8.0.41/values.yaml similarity index 100% rename from dependency/redis/3.0.40/values.yaml rename to dependency/postgresql/8.0.41/values.yaml diff --git a/dependency/promtail/3.0.31/CHANGELOG.md b/dependency/promtail/3.0.31/CHANGELOG.md deleted file mode 100644 index c1a4228d5fd..00000000000 --- a/dependency/promtail/3.0.31/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -# Changelog - - -## [promtail-3.0.31](https://github.com/truecharts/apps/compare/promtail-3.0.30...promtail-3.0.31) (2022-07-20) - -### Feat - -- force the use of TCCR in CI ([#3226](https://github.com/truecharts/apps/issues/3226)) - - - -## [promtail-3.0.30](https://github.com/truecharts/apps/compare/promtail-3.0.29...promtail-3.0.30) (2022-07-20) - -### Chore - -- update docker general non-major ([#3222](https://github.com/truecharts/apps/issues/3222)) - - - -## [promtail-3.0.29](https://github.com/truecharts/apps/compare/promtail-3.0.28...promtail-3.0.29) (2022-07-19) - -### Chore - -- Update Readme and Description on SCALE - - - -## [promtail-3.0.28](https://github.com/truecharts/apps/compare/promtail-3.0.27...promtail-3.0.28) (2022-07-14) - -### Fix - -- regenerate catalog and update template - - - -## [promtail-3.0.27](https://github.com/truecharts/apps/compare/promtail-3.0.25...promtail-3.0.27) (2022-07-14) - -### Fix - -- bump to ensure .helmignore is present on all Charts - - - -## [promtail-3.0.25](https://github.com/truecharts/apps/compare/promtail-3.0.23...promtail-3.0.25) (2022-07-12) - -### Chore - -- update icons ([#3156](https://github.com/truecharts/apps/issues/3156)) -- bump to cleanup old docs and use correct icon urls - - - -## [promtail-3.0.23](https://github.com/truecharts/apps/compare/promtail-3.0.22...promtail-3.0.23) (2022-07-12) - -### Chore - -- bump to regenerate documentation - - - - -### [promtail-3.0.22](https://github.com/truecharts/apps/compare/promtail-3.0.21...promtail-3.0.22) (2022-07-12) - -#### Chore - -* update helm chart common to v10.4.4 ([#3146](https://github.com/truecharts/apps/issues/3146)) - - - - -### [promtail-3.0.21](https://github.com/truecharts/apps/compare/promtail-3.0.20...promtail-3.0.21) (2022-07-11) - - - - -### [promtail-3.0.20](https://github.com/truecharts/apps/compare/promtail-3.0.19...promtail-3.0.20) (2022-07-11) - -#### Chore - -* move icons into the apps folder ([#3139](https://github.com/truecharts/apps/issues/3139)) -* update helm chart common to v10.4.3 ([#3137](https://github.com/truecharts/apps/issues/3137)) - - - - -### [promtail-3.0.19](https://github.com/truecharts/apps/compare/promtail-3.0.18...promtail-3.0.19) (2022-07-11) - -#### Chore - -* update helm chart common to v10.4.2 - - - - -### [promtail-3.0.18](https://github.com/truecharts/apps/compare/promtail-3.0.17...promtail-3.0.18) (2022-07-10) - -#### Chore - -* update helm chart common to v10.4.0 ([#3123](https://github.com/truecharts/apps/issues/3123)) diff --git a/dependency/promtail/3.0.31/Chart.lock b/dependency/promtail/3.0.31/Chart.lock deleted file mode 100644 index 2533bc8e6ba..00000000000 --- a/dependency/promtail/3.0.31/Chart.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: common - repository: https://library-charts.truecharts.org - version: 10.4.4 -digest: sha256:e76f58e980866194e06f0e9135c981662f0b1132d3c5848dbf344c48ab657396 -generated: "2022-07-20T09:04:19.782150603Z" diff --git a/dependency/promtail/3.0.32/CHANGELOG.md b/dependency/promtail/3.0.32/CHANGELOG.md new file mode 100644 index 00000000000..04231eea827 --- /dev/null +++ b/dependency/promtail/3.0.32/CHANGELOG.md @@ -0,0 +1,99 @@ +# Changelog + + +## [promtail-3.0.32](https://github.com/truecharts/apps/compare/promtail-3.0.31...promtail-3.0.32) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- update helm chart common to v10.4.6 + + + +## [postgresql-8.0.41](https://github.com/truecharts/apps/compare/postgresql-8.0.40...postgresql-8.0.41) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- update helm chart common to v10.4.6 + +### Feat + +- force the use of TCCR in CI ([#3226](https://github.com/truecharts/apps/issues/3226)) + + + +## [postgresql-8.0.41](https://github.com/truecharts/apps/compare/postgresql-8.0.40...postgresql-8.0.41) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- update helm chart common to v10.4.6 + +### Feat + +- force the use of TCCR in CI ([#3226](https://github.com/truecharts/apps/issues/3226)) + + + +## [postgresql-8.0.41](https://github.com/truecharts/apps/compare/postgresql-8.0.40...postgresql-8.0.41) (2022-07-20) + +### Chore + +- update helm chart common to v10.4.6 + +### Feat + +- force the use of TCCR in CI ([#3226](https://github.com/truecharts/apps/issues/3226)) + + + +## [postgresql-8.0.40](https://github.com/truecharts/apps/compare/postgresql-8.0.39...postgresql-8.0.40) (2022-07-20) + +### Chore + +- update docker general non-major ([#3222](https://github.com/truecharts/apps/issues/3222)) + + + +## [postgresql-8.0.39](https://github.com/truecharts/apps/compare/postgresql-8.0.38...postgresql-8.0.39) (2022-07-19) + +### Chore + +- Update Readme and Description on SCALE + + + +## [postgresql-8.0.38](https://github.com/truecharts/apps/compare/postgresql-8.0.37...postgresql-8.0.38) (2022-07-17) + +### Chore + +- update docker general non-major ([#3198](https://github.com/truecharts/apps/issues/3198)) + + + +## [postgresql-8.0.37](https://github.com/truecharts/apps/compare/postgresql-8.0.36...postgresql-8.0.37) (2022-07-14) + +### Fix + +- regenerate catalog and update template + + + +## [postgresql-8.0.36](https://github.com/truecharts/apps/compare/postgresql-8.0.34...postgresql-8.0.36) (2022-07-14) + +### Fix + +- bump to ensure .helmignore is present on all Charts + + + +## [postgresql-8.0.34](https://github.com/truecharts/apps/compare/postgresql-8.0.33...postgresql-8.0.34) (2022-07-13) + +### Chore + +- update docker general non-major ([#3157](https://github.com/truecharts/apps/issues/3157)) + diff --git a/dependency/promtail/3.0.32/Chart.lock b/dependency/promtail/3.0.32/Chart.lock new file mode 100644 index 00000000000..dff2ec63a96 --- /dev/null +++ b/dependency/promtail/3.0.32/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:02:12.762658134Z" diff --git a/dependency/promtail/3.0.31/Chart.yaml b/dependency/promtail/3.0.32/Chart.yaml similarity index 95% rename from dependency/promtail/3.0.31/Chart.yaml rename to dependency/promtail/3.0.32/Chart.yaml index 66ad9a2b5c5..b447f2a9e59 100644 --- a/dependency/promtail/3.0.31/Chart.yaml +++ b/dependency/promtail/3.0.32/Chart.yaml @@ -3,7 +3,7 @@ appVersion: "2.6.1" dependencies: - name: common repository: https://library-charts.truecharts.org - version: 10.4.4 + version: 10.4.6 deprecated: false description: Promtail is an agent which ships the contents of local logs to a Loki instance icon: https://truecharts.org/img/chart-icons/promtail.png @@ -22,7 +22,7 @@ sources: - https://grafana.com/oss/loki/ - https://grafana.com/docs/loki/latest/ type: application -version: 3.0.31 +version: 3.0.32 annotations: truecharts.org/catagories: | - metrics diff --git a/dependency/promtail/3.0.31/README.md b/dependency/promtail/3.0.32/README.md similarity index 96% rename from dependency/promtail/3.0.31/README.md rename to dependency/promtail/3.0.32/README.md index 2b2d28511c9..c3e434e26ac 100644 --- a/dependency/promtail/3.0.31/README.md +++ b/dependency/promtail/3.0.32/README.md @@ -1,6 +1,6 @@ # promtail -![Version: 3.0.31](https://img.shields.io/badge/Version-3.0.31-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 2.6.1](https://img.shields.io/badge/AppVersion-2.6.1-informational?style=flat-square) +![Version: 3.0.32](https://img.shields.io/badge/Version-3.0.32-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 2.6.1](https://img.shields.io/badge/AppVersion-2.6.1-informational?style=flat-square) Promtail is an agent which ships the contents of local logs to a Loki instance @@ -25,7 +25,7 @@ Kubernetes: `>=1.16.0-0` | Repository | Name | Version | |------------|------|---------| -| https://library-charts.truecharts.org | common | 10.4.4 | +| https://library-charts.truecharts.org | common | 10.4.6 | ## Installing the Chart diff --git a/dependency/promtail/3.0.31/app-readme.md b/dependency/promtail/3.0.32/app-readme.md similarity index 100% rename from dependency/promtail/3.0.31/app-readme.md rename to dependency/promtail/3.0.32/app-readme.md diff --git a/dependency/promtail/3.0.32/charts/common-10.4.6.tgz b/dependency/promtail/3.0.32/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/dependency/promtail/3.0.31/ix_values.yaml b/dependency/promtail/3.0.32/ix_values.yaml similarity index 100% rename from dependency/promtail/3.0.31/ix_values.yaml rename to dependency/promtail/3.0.32/ix_values.yaml diff --git a/dependency/promtail/3.0.31/questions.yaml b/dependency/promtail/3.0.32/questions.yaml similarity index 100% rename from dependency/promtail/3.0.31/questions.yaml rename to dependency/promtail/3.0.32/questions.yaml diff --git a/dependency/promtail/3.0.31/templates/_servicemonitor.tpl b/dependency/promtail/3.0.32/templates/_servicemonitor.tpl similarity index 100% rename from dependency/promtail/3.0.31/templates/_servicemonitor.tpl rename to dependency/promtail/3.0.32/templates/_servicemonitor.tpl diff --git a/dependency/promtail/3.0.31/templates/common.yaml b/dependency/promtail/3.0.32/templates/common.yaml similarity index 100% rename from dependency/promtail/3.0.31/templates/common.yaml rename to dependency/promtail/3.0.32/templates/common.yaml diff --git a/dependency/solr/0.0.14/values.yaml b/dependency/promtail/3.0.32/values.yaml similarity index 100% rename from dependency/solr/0.0.14/values.yaml rename to dependency/promtail/3.0.32/values.yaml diff --git a/dependency/redis/3.0.40/CHANGELOG.md b/dependency/redis/3.0.40/CHANGELOG.md deleted file mode 100644 index bea4de8a0c9..00000000000 --- a/dependency/redis/3.0.40/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -# Changelog - - -## [redis-3.0.40](https://github.com/truecharts/apps/compare/redis-3.0.39...redis-3.0.40) (2022-07-20) - -### Chore - -- update docker general non-major ([#3222](https://github.com/truecharts/apps/issues/3222)) - - - -## [redis-3.0.39](https://github.com/truecharts/apps/compare/redis-3.0.38...redis-3.0.39) (2022-07-19) - -### Chore - -- Update Readme and Description on SCALE - - - -## [redis-3.0.38](https://github.com/truecharts/apps/compare/redis-3.0.37...redis-3.0.38) (2022-07-17) - -### Chore - -- update docker general non-major ([#3198](https://github.com/truecharts/apps/issues/3198)) - - - -## [redis-3.0.37](https://github.com/truecharts/apps/compare/redis-3.0.36...redis-3.0.37) (2022-07-14) - -### Fix - -- regenerate catalog and update template - - - -## [redis-3.0.36](https://github.com/truecharts/apps/compare/redis-3.0.34...redis-3.0.36) (2022-07-14) - -### Fix - -- bump to ensure .helmignore is present on all Charts - - - -## [mongodb-1.0.36](https://github.com/truecharts/apps/compare/mongodb-1.0.35...mongodb-1.0.36) (2022-07-13) - -### Chore - -- update docker general non-major ([#3157](https://github.com/truecharts/apps/issues/3157)) - - - -## [mongodb-1.0.35](https://github.com/truecharts/apps/compare/mongodb-1.0.33...mongodb-1.0.35) (2022-07-12) - -### Chore - -- update icons ([#3156](https://github.com/truecharts/apps/issues/3156)) -- bump to cleanup old docs and use correct icon urls - - - -## [mongodb-1.0.33](https://github.com/truecharts/apps/compare/mongodb-1.0.32...mongodb-1.0.33) (2022-07-12) - -### Chore - -- bump to regenerate documentation - - - - -### [mongodb-1.0.32](https://github.com/truecharts/apps/compare/mongodb-1.0.31...mongodb-1.0.32) (2022-07-12) - -#### Chore - -* update helm chart common to v10.4.4 ([#3146](https://github.com/truecharts/apps/issues/3146)) - - - - - -### [mongodb-1.0.30](https://github.com/truecharts/apps/compare/mongodb-1.0.29...mongodb-1.0.30) (2022-07-11) - -#### Chore - -* move icons into the apps folder ([#3139](https://github.com/truecharts/apps/issues/3139)) -* update helm chart common to v10.4.3 ([#3137](https://github.com/truecharts/apps/issues/3137)) - - - - -### [mongodb-1.0.29](https://github.com/truecharts/apps/compare/mongodb-1.0.28...mongodb-1.0.29) (2022-07-11) - -#### Chore - -* update helm chart common to v10.4.2 - - - - -### [mongodb-1.0.28](https://github.com/truecharts/apps/compare/mongodb-1.0.27...mongodb-1.0.28) (2022-07-10) diff --git a/dependency/redis/3.0.40/Chart.lock b/dependency/redis/3.0.40/Chart.lock deleted file mode 100644 index 20f20f9f30d..00000000000 --- a/dependency/redis/3.0.40/Chart.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: common - repository: https://library-charts.truecharts.org - version: 10.4.4 -digest: sha256:e76f58e980866194e06f0e9135c981662f0b1132d3c5848dbf344c48ab657396 -generated: "2022-07-20T08:28:14.567851547Z" diff --git a/dependency/redis/3.0.41/CHANGELOG.md b/dependency/redis/3.0.41/CHANGELOG.md new file mode 100644 index 00000000000..ef69101f75f --- /dev/null +++ b/dependency/redis/3.0.41/CHANGELOG.md @@ -0,0 +1,99 @@ +# Changelog + + +## [redis-3.0.41](https://github.com/truecharts/apps/compare/redis-3.0.40...redis-3.0.41) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- update helm chart common to v10.4.6 + +### Feat + +- force the use of TCCR in CI ([#3226](https://github.com/truecharts/apps/issues/3226)) + + + +## [redis-3.0.41](https://github.com/truecharts/apps/compare/redis-3.0.40...redis-3.0.41) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- update helm chart common to v10.4.6 + +### Feat + +- force the use of TCCR in CI ([#3226](https://github.com/truecharts/apps/issues/3226)) + + + +## [redis-3.0.41](https://github.com/truecharts/apps/compare/redis-3.0.40...redis-3.0.41) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- update helm chart common to v10.4.6 + +### Feat + +- force the use of TCCR in CI ([#3226](https://github.com/truecharts/apps/issues/3226)) + + + +## [redis-3.0.41](https://github.com/truecharts/apps/compare/redis-3.0.40...redis-3.0.41) (2022-07-20) + +### Chore + +- update helm chart common to v10.4.6 + +### Feat + +- force the use of TCCR in CI ([#3226](https://github.com/truecharts/apps/issues/3226)) + + + +## [redis-3.0.40](https://github.com/truecharts/apps/compare/redis-3.0.39...redis-3.0.40) (2022-07-20) + +### Chore + +- update docker general non-major ([#3222](https://github.com/truecharts/apps/issues/3222)) + + + +## [redis-3.0.39](https://github.com/truecharts/apps/compare/redis-3.0.38...redis-3.0.39) (2022-07-19) + +### Chore + +- Update Readme and Description on SCALE + + + +## [redis-3.0.38](https://github.com/truecharts/apps/compare/redis-3.0.37...redis-3.0.38) (2022-07-17) + +### Chore + +- update docker general non-major ([#3198](https://github.com/truecharts/apps/issues/3198)) + + + +## [redis-3.0.37](https://github.com/truecharts/apps/compare/redis-3.0.36...redis-3.0.37) (2022-07-14) + +### Fix + +- regenerate catalog and update template + + + +## [redis-3.0.36](https://github.com/truecharts/apps/compare/redis-3.0.34...redis-3.0.36) (2022-07-14) + +### Fix + +- bump to ensure .helmignore is present on all Charts + + + +## [mongodb-1.0.36](https://github.com/truecharts/apps/compare/mongodb-1.0.35...mongodb-1.0.36) (2022-07-13) + diff --git a/dependency/redis/3.0.41/Chart.lock b/dependency/redis/3.0.41/Chart.lock new file mode 100644 index 00000000000..0f90fe2ea2c --- /dev/null +++ b/dependency/redis/3.0.41/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:02:12.88954274Z" diff --git a/dependency/redis/3.0.40/Chart.yaml b/dependency/redis/3.0.41/Chart.yaml similarity index 95% rename from dependency/redis/3.0.40/Chart.yaml rename to dependency/redis/3.0.41/Chart.yaml index a497173b3f7..70d8e497f15 100644 --- a/dependency/redis/3.0.40/Chart.yaml +++ b/dependency/redis/3.0.41/Chart.yaml @@ -3,7 +3,7 @@ appVersion: "7.0.4" dependencies: - name: common repository: https://library-charts.truecharts.org - version: 10.4.4 + version: 10.4.6 deprecated: false description: Open source, advanced key-value store. home: https://github.com/truecharts/apps/tree/master/charts/dependency/redis @@ -22,7 +22,7 @@ sources: - https://github.com/bitnami/bitnami-docker-redis - http://redis.io/ type: application -version: 3.0.40 +version: 3.0.41 annotations: truecharts.org/catagories: | - database diff --git a/dependency/redis/3.0.40/README.md b/dependency/redis/3.0.41/README.md similarity index 96% rename from dependency/redis/3.0.40/README.md rename to dependency/redis/3.0.41/README.md index 82e00f4a07a..a3f3574675d 100644 --- a/dependency/redis/3.0.40/README.md +++ b/dependency/redis/3.0.41/README.md @@ -1,6 +1,6 @@ # redis -![Version: 3.0.40](https://img.shields.io/badge/Version-3.0.40-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 7.0.4](https://img.shields.io/badge/AppVersion-7.0.4-informational?style=flat-square) +![Version: 3.0.41](https://img.shields.io/badge/Version-3.0.41-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 7.0.4](https://img.shields.io/badge/AppVersion-7.0.4-informational?style=flat-square) Open source, advanced key-value store. @@ -24,7 +24,7 @@ Kubernetes: `>=1.16.0-0` | Repository | Name | Version | |------------|------|---------| -| https://library-charts.truecharts.org | common | 10.4.4 | +| https://library-charts.truecharts.org | common | 10.4.6 | ## Installing the Chart diff --git a/dependency/redis/3.0.40/app-readme.md b/dependency/redis/3.0.41/app-readme.md similarity index 100% rename from dependency/redis/3.0.40/app-readme.md rename to dependency/redis/3.0.41/app-readme.md diff --git a/dependency/redis/3.0.41/charts/common-10.4.6.tgz b/dependency/redis/3.0.41/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/dependency/redis/3.0.40/ix_values.yaml b/dependency/redis/3.0.41/ix_values.yaml similarity index 99% rename from dependency/redis/3.0.40/ix_values.yaml rename to dependency/redis/3.0.41/ix_values.yaml index f9ebe4ea26d..28344a2cf3c 100644 --- a/dependency/redis/3.0.40/ix_values.yaml +++ b/dependency/redis/3.0.41/ix_values.yaml @@ -1,5 +1,5 @@ image: - repository: ghcr.io/truecharts/redis + repository: tccr.io/truecharts/redis pullPolicy: IfNotPresent tag: v7.0.4@sha256:22446a44032b19b70f1f75b9278a2cc5351ac19778ee82a0f4a442e6dd10c170 diff --git a/dependency/redis/3.0.40/questions.yaml b/dependency/redis/3.0.41/questions.yaml similarity index 100% rename from dependency/redis/3.0.40/questions.yaml rename to dependency/redis/3.0.41/questions.yaml diff --git a/dependency/redis/3.0.40/templates/common.yaml b/dependency/redis/3.0.41/templates/common.yaml similarity index 100% rename from dependency/redis/3.0.40/templates/common.yaml rename to dependency/redis/3.0.41/templates/common.yaml diff --git a/incubator/awesome-ttrss/0.0.21/values.yaml b/dependency/redis/3.0.41/values.yaml similarity index 100% rename from incubator/awesome-ttrss/0.0.21/values.yaml rename to dependency/redis/3.0.41/values.yaml diff --git a/dependency/solr/0.0.14/Chart.lock b/dependency/solr/0.0.14/Chart.lock deleted file mode 100644 index 9750dc9684e..00000000000 --- a/dependency/solr/0.0.14/Chart.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: common - repository: https://library-charts.truecharts.org - version: 10.4.4 -digest: sha256:e76f58e980866194e06f0e9135c981662f0b1132d3c5848dbf344c48ab657396 -generated: "2022-07-20T08:28:14.877583764Z" diff --git a/dependency/solr/0.0.14/charts/common-10.4.4.tgz b/dependency/solr/0.0.14/charts/common-10.4.4.tgz deleted file mode 100644 index 8604b47288a457e2e334c195e3226036e9560f82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47288 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 diff --git a/incubator/awesome-ttrss/0.0.21/CHANGELOG.md b/incubator/awesome-ttrss/0.0.22/CHANGELOG.md similarity index 70% rename from incubator/awesome-ttrss/0.0.21/CHANGELOG.md rename to incubator/awesome-ttrss/0.0.22/CHANGELOG.md index f7c520e4b43..fe6c1a7a747 100644 --- a/incubator/awesome-ttrss/0.0.21/CHANGELOG.md +++ b/incubator/awesome-ttrss/0.0.22/CHANGELOG.md @@ -1,6 +1,33 @@ # Changelog +## [awesome-ttrss-0.0.22](https://github.com/truecharts/apps/compare/awesome-ttrss-0.0.21...awesome-ttrss-0.0.22) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- update docker general non-major ([#3239](https://github.com/truecharts/apps/issues/3239)) + + + +## [awesome-ttrss-0.0.22](https://github.com/truecharts/apps/compare/awesome-ttrss-0.0.21...awesome-ttrss-0.0.22) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- update docker general non-major ([#3239](https://github.com/truecharts/apps/issues/3239)) + + + +## [awesome-ttrss-0.0.22](https://github.com/truecharts/apps/compare/awesome-ttrss-0.0.21...awesome-ttrss-0.0.22) (2022-07-21) + +### Chore + +- update docker general non-major ([#3239](https://github.com/truecharts/apps/issues/3239)) + + + ## [awesome-ttrss-0.0.21](https://github.com/truecharts/apps/compare/awesome-ttrss-0.0.20...awesome-ttrss-0.0.21) (2022-07-20) ### Chore @@ -70,30 +97,3 @@ ### [awesome-ttrss-0.0.11](https://github.com/truecharts/apps/compare/awesome-ttrss-0.0.10...awesome-ttrss-0.0.11) (2022-07-09) - -#### Chore - -* update helm general non-major helm releases ([#3113](https://github.com/truecharts/apps/issues/3113)) - - - - -### [awesome-ttrss-0.0.10](https://github.com/truecharts/apps/compare/awesome-ttrss-0.0.9...awesome-ttrss-0.0.10) (2022-07-05) - -#### Chore - -* update helm general non-major helm releases ([#3075](https://github.com/truecharts/apps/issues/3075)) - - - - -### [awesome-ttrss-0.0.9](https://github.com/truecharts/apps/compare/awesome-ttrss-0.0.8...awesome-ttrss-0.0.9) (2022-07-04) - -#### Chore - -* update helm general non-major helm releases ([#3066](https://github.com/truecharts/apps/issues/3066)) - - - - -### [awesome-ttrss-0.0.8](https://github.com/truecharts/apps/compare/awesome-ttrss-0.0.7...awesome-ttrss-0.0.8) (2022-06-25) diff --git a/incubator/awesome-ttrss/0.0.21/Chart.lock b/incubator/awesome-ttrss/0.0.22/Chart.lock similarity index 85% rename from incubator/awesome-ttrss/0.0.21/Chart.lock rename to incubator/awesome-ttrss/0.0.22/Chart.lock index cd4fd3225b6..3fcc64a999a 100644 --- a/incubator/awesome-ttrss/0.0.21/Chart.lock +++ b/incubator/awesome-ttrss/0.0.22/Chart.lock @@ -6,4 +6,4 @@ dependencies: repository: https://charts.truecharts.org/ version: 8.0.30 digest: sha256:01ffe8729acfd7e545afcc82e92919e6d38fbf37cd990e82c939f3f79edfe6ac -generated: "2022-07-20T08:28:21.417111388Z" +generated: "2022-07-21T13:02:33.256917787Z" diff --git a/incubator/awesome-ttrss/0.0.21/Chart.yaml b/incubator/awesome-ttrss/0.0.22/Chart.yaml similarity index 98% rename from incubator/awesome-ttrss/0.0.21/Chart.yaml rename to incubator/awesome-ttrss/0.0.22/Chart.yaml index 38274758d1a..ba51a1a5e47 100644 --- a/incubator/awesome-ttrss/0.0.21/Chart.yaml +++ b/incubator/awesome-ttrss/0.0.22/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 appVersion: "2022" description: Awesome TTRSS aims to provide a powerful Dockerized all-in-one solution for Tiny Tiny RSS name: awesome-ttrss -version: 0.0.21 +version: 0.0.22 kubeVersion: ">=1.16.0-0" keywords: - tt-rss diff --git a/incubator/awesome-ttrss/0.0.21/README.md b/incubator/awesome-ttrss/0.0.22/README.md similarity index 98% rename from incubator/awesome-ttrss/0.0.21/README.md rename to incubator/awesome-ttrss/0.0.22/README.md index b2d047e1f3d..1d2c26dd255 100644 --- a/incubator/awesome-ttrss/0.0.21/README.md +++ b/incubator/awesome-ttrss/0.0.22/README.md @@ -1,6 +1,6 @@ # awesome-ttrss -![Version: 0.0.21](https://img.shields.io/badge/Version-0.0.21-informational?style=flat-square) ![AppVersion: 2022](https://img.shields.io/badge/AppVersion-2022-informational?style=flat-square) +![Version: 0.0.22](https://img.shields.io/badge/Version-0.0.22-informational?style=flat-square) ![AppVersion: 2022](https://img.shields.io/badge/AppVersion-2022-informational?style=flat-square) Awesome TTRSS aims to provide a powerful Dockerized all-in-one solution for Tiny Tiny RSS diff --git a/incubator/awesome-ttrss/0.0.21/app-readme.md b/incubator/awesome-ttrss/0.0.22/app-readme.md similarity index 100% rename from incubator/awesome-ttrss/0.0.21/app-readme.md rename to incubator/awesome-ttrss/0.0.22/app-readme.md diff --git a/dependency/memcached/3.0.39/charts/common-10.4.4.tgz b/incubator/awesome-ttrss/0.0.22/charts/common-10.4.4.tgz similarity index 100% rename from dependency/memcached/3.0.39/charts/common-10.4.4.tgz rename to incubator/awesome-ttrss/0.0.22/charts/common-10.4.4.tgz diff --git a/incubator/awesome-ttrss/0.0.21/charts/postgresql-8.0.30.tgz b/incubator/awesome-ttrss/0.0.22/charts/postgresql-8.0.30.tgz similarity index 100% rename from incubator/awesome-ttrss/0.0.21/charts/postgresql-8.0.30.tgz rename to incubator/awesome-ttrss/0.0.22/charts/postgresql-8.0.30.tgz diff --git a/incubator/awesome-ttrss/0.0.21/ix_values.yaml b/incubator/awesome-ttrss/0.0.22/ix_values.yaml similarity index 92% rename from incubator/awesome-ttrss/0.0.21/ix_values.yaml rename to incubator/awesome-ttrss/0.0.22/ix_values.yaml index cdf5dd8a211..a499f4bac32 100644 --- a/incubator/awesome-ttrss/0.0.21/ix_values.yaml +++ b/incubator/awesome-ttrss/0.0.22/ix_values.yaml @@ -1,7 +1,7 @@ image: repository: tccr.io/truecharts/awesome-ttrss pullPolicy: IfNotPresent - tag: v2022-04@sha256:b675568ec75d005a2a55a764b50643d0c7d5a693e6b080ca8e9213d403f78085 + tag: v2022-04@sha256:3a62cb14f2ef31c29fadec8fefe2350dd41cad927be83acfbdd8022e7b62ccf8 securityContext: readOnlyRootFilesystem: false diff --git a/incubator/awesome-ttrss/0.0.21/questions.yaml b/incubator/awesome-ttrss/0.0.22/questions.yaml similarity index 100% rename from incubator/awesome-ttrss/0.0.21/questions.yaml rename to incubator/awesome-ttrss/0.0.22/questions.yaml diff --git a/incubator/awesome-ttrss/0.0.21/templates/common.yaml b/incubator/awesome-ttrss/0.0.22/templates/common.yaml similarity index 100% rename from incubator/awesome-ttrss/0.0.21/templates/common.yaml rename to incubator/awesome-ttrss/0.0.22/templates/common.yaml diff --git a/stable/grafana/4.0.29/values.yaml b/incubator/awesome-ttrss/0.0.22/values.yaml similarity index 100% rename from stable/grafana/4.0.29/values.yaml rename to incubator/awesome-ttrss/0.0.22/values.yaml diff --git a/incubator/dailynotes/0.0.10/CHANGELOG.md b/incubator/dailynotes/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..7a11157794d --- /dev/null +++ b/incubator/dailynotes/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [dailynotes-0.0.10]dailynotes-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [dailynotes-0.0.10]dailynotes-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [dailynotes-0.0.10]dailynotes-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [dailynotes-0.0.10]dailynotes-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [dailynotes-0.0.10]dailynotes-0.0.10 (2022-07-20) diff --git a/incubator/dailynotes/0.0.10/Chart.lock b/incubator/dailynotes/0.0.10/Chart.lock new file mode 100644 index 00000000000..13ec1b91fc4 --- /dev/null +++ b/incubator/dailynotes/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:02:29.10112269Z" diff --git a/incubator/dailynotes/0.0.10/Chart.yaml b/incubator/dailynotes/0.0.10/Chart.yaml new file mode 100644 index 00000000000..53f75182329 --- /dev/null +++ b/incubator/dailynotes/0.0.10/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: 10.4.6 +deprecated: false +description: 'App for taking notes and tracking tasks on a daily basis. + + ' +home: https://github.com/truecharts/apps/tree/master/charts/stable/dailynotes +icon: https://truecharts.org/img/chart-icons/dailynotes.png +keywords: +- dailynotes +- Other +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: dailynotes +sources: +- https://hub.docker.com/r/m0ngr31/dailynotes/ +type: application +version: 0.0.10 diff --git a/incubator/dailynotes/0.0.10/README.md b/incubator/dailynotes/0.0.10/README.md new file mode 100644 index 00000000000..2673ea67bb1 --- /dev/null +++ b/incubator/dailynotes/0.0.10/README.md @@ -0,0 +1,107 @@ +# dailynotes + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +App for taking notes and tracking tasks on a daily basis. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [dailynotes](https://truecharts.org/charts/stable/dailynotes) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `dailynotes` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install dailynotes TrueCharts/dailynotes +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `dailynotes` deployment + +```console +helm uninstall dailynotes +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install dailynotes \ + --set env.TZ="America/New York" \ + TrueCharts/dailynotes +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install dailynotes TrueCharts/dailynotes -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/dailynotes/0.0.10/app-readme.md b/incubator/dailynotes/0.0.10/app-readme.md new file mode 100644 index 00000000000..5c388ce9880 --- /dev/null +++ b/incubator/dailynotes/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +App for taking notes and tracking tasks on a daily basis. + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/dailynotes + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/dailynotes/0.0.10/charts/common-10.4.6.tgz b/incubator/dailynotes/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/dailynotes/0.0.10/ix_values.yaml b/incubator/dailynotes/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..c99ffa14d29 --- /dev/null +++ b/incubator/dailynotes/0.0.10/ix_values.yaml @@ -0,0 +1,25 @@ +env: + PREVENT_SIGNUPS: '' +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/dailynotes + tag: latest +persistence: + config: + enabled: true + mountPath: /app/config +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 5000 + protocol: TCP + targetPort: 5000 diff --git a/incubator/dailynotes/0.0.10/questions.yaml b/incubator/dailynotes/0.0.10/questions.yaml new file mode 100644 index 00000000000..ac1d10d6c2f --- /dev/null +++ b/incubator/dailynotes/0.0.10/questions.yaml @@ -0,0 +1,2455 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: PREVENT_SIGNUPS + label: 'PREVENT_SIGNUPS' + description: "Disable signup form? Anything in this variable will prevent signups." + schema: + type: string + default: "" + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 5000 + + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - 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 appconfig" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/dailynotes/0.0.10/templates/common.yaml b/incubator/dailynotes/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/dailynotes/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/stable/prometheus/4.0.39/values.yaml b/incubator/dailynotes/0.0.10/values.yaml similarity index 100% rename from stable/prometheus/4.0.39/values.yaml rename to incubator/dailynotes/0.0.10/values.yaml diff --git a/incubator/dailynotes/item.yaml b/incubator/dailynotes/item.yaml new file mode 100644 index 00000000000..144352e5e89 --- /dev/null +++ b/incubator/dailynotes/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/dailynotes.png +categories: +- Other + diff --git a/incubator/damselfly/0.0.10/CHANGELOG.md b/incubator/damselfly/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..b1d4a87e942 --- /dev/null +++ b/incubator/damselfly/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [damselfly-0.0.10]damselfly-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [damselfly-0.0.10]damselfly-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [damselfly-0.0.10]damselfly-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [damselfly-0.0.10]damselfly-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [damselfly-0.0.10]damselfly-0.0.10 (2022-07-20) diff --git a/incubator/damselfly/0.0.10/Chart.lock b/incubator/damselfly/0.0.10/Chart.lock new file mode 100644 index 00000000000..6bbda07eece --- /dev/null +++ b/incubator/damselfly/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:02:29.563863498Z" diff --git a/incubator/damselfly/0.0.10/Chart.yaml b/incubator/damselfly/0.0.10/Chart.yaml new file mode 100644 index 00000000000..326195075aa --- /dev/null +++ b/incubator/damselfly/0.0.10/Chart.yaml @@ -0,0 +1,31 @@ +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: 10.4.6 +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://github.com/truecharts/apps/tree/master/charts/stable/damselfly +icon: https://truecharts.org/img/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/Webreaper/Damselfly +- https://hub.docker.com/r/webreaper/damselfly/ +type: application +version: 0.0.10 diff --git a/incubator/damselfly/0.0.10/README.md b/incubator/damselfly/0.0.10/README.md new file mode 100644 index 00000000000..6d5501a8b93 --- /dev/null +++ b/incubator/damselfly/0.0.10/README.md @@ -0,0 +1,108 @@ +# damselfly + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +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. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [damselfly](https://truecharts.org/charts/stable/damselfly) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `damselfly` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install damselfly TrueCharts/damselfly +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `damselfly` deployment + +```console +helm uninstall damselfly +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install damselfly \ + --set env.TZ="America/New York" \ + TrueCharts/damselfly +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install damselfly TrueCharts/damselfly -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/damselfly/0.0.10/app-readme.md b/incubator/damselfly/0.0.10/app-readme.md new file mode 100644 index 00000000000..58c65e7a437 --- /dev/null +++ b/incubator/damselfly/0.0.10/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 + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/damselfly/0.0.10/charts/common-10.4.6.tgz b/incubator/damselfly/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/damselfly/0.0.10/ix_values.yaml b/incubator/damselfly/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..1cb5dc58ea3 --- /dev/null +++ b/incubator/damselfly/0.0.10/ix_values.yaml @@ -0,0 +1,30 @@ +env: {} +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/damselfly + tag: latest +persistence: + config: + enabled: true + mountPath: /config + pictures: + enabled: true + mountPath: /pictures + thumbs: + enabled: true + mountPath: /thumbs +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 6363 + protocol: TCP + targetPort: 6363 diff --git a/incubator/damselfly/0.0.10/questions.yaml b/incubator/damselfly/0.0.10/questions.yaml new file mode 100644 index 00000000000..8673b507c0c --- /dev/null +++ b/incubator/damselfly/0.0.10/questions.yaml @@ -0,0 +1,2795 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 6363 + + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/damselfly/0.0.10/templates/common.yaml b/incubator/damselfly/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/damselfly/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/damselfly/0.0.10/values.yaml b/incubator/damselfly/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/damselfly/item.yaml b/incubator/damselfly/item.yaml new file mode 100644 index 00000000000..778227812f6 --- /dev/null +++ b/incubator/damselfly/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/damselfly.png +categories: +- MediaApp-Photos + diff --git a/incubator/dashmachine/0.0.10/CHANGELOG.md b/incubator/dashmachine/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..7781b6aefa3 --- /dev/null +++ b/incubator/dashmachine/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [dashmachine-0.0.10]dashmachine-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [dashmachine-0.0.10]dashmachine-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [dashmachine-0.0.10]dashmachine-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [dashmachine-0.0.10]dashmachine-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [dashmachine-0.0.10]dashmachine-0.0.10 (2022-07-20) diff --git a/incubator/dashmachine/0.0.10/Chart.lock b/incubator/dashmachine/0.0.10/Chart.lock new file mode 100644 index 00000000000..9b0901d8337 --- /dev/null +++ b/incubator/dashmachine/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:02:43.322624707Z" diff --git a/incubator/dashmachine/0.0.10/Chart.yaml b/incubator/dashmachine/0.0.10/Chart.yaml new file mode 100644 index 00000000000..add71db755f --- /dev/null +++ b/incubator/dashmachine/0.0.10/Chart.yaml @@ -0,0 +1,32 @@ +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: 10.4.6 +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://github.com/truecharts/apps/tree/master/charts/stable/dashmachine +icon: https://truecharts.org/img/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://hub.docker.com/r/rmountjoy/dashmachine/ +- https://hub.docker.com/r/rmountjoy/dashmachine/ +type: application +version: 0.0.10 diff --git a/incubator/dashmachine/0.0.10/README.md b/incubator/dashmachine/0.0.10/README.md new file mode 100644 index 00000000000..8f9f1e8b2f9 --- /dev/null +++ b/incubator/dashmachine/0.0.10/README.md @@ -0,0 +1,108 @@ +# dashmachine + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +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] + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [dashmachine](https://truecharts.org/charts/stable/dashmachine) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `dashmachine` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install dashmachine TrueCharts/dashmachine +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `dashmachine` deployment + +```console +helm uninstall dashmachine +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install dashmachine \ + --set env.TZ="America/New York" \ + TrueCharts/dashmachine +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install dashmachine TrueCharts/dashmachine -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/dashmachine/0.0.10/app-readme.md b/incubator/dashmachine/0.0.10/app-readme.md new file mode 100644 index 00000000000..2b7bb2f8157 --- /dev/null +++ b/incubator/dashmachine/0.0.10/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 + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/dashmachine/0.0.10/charts/common-10.4.6.tgz b/incubator/dashmachine/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/dashmachine/0.0.10/ix_values.yaml b/incubator/dashmachine/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..248a1000e66 --- /dev/null +++ b/incubator/dashmachine/0.0.10/ix_values.yaml @@ -0,0 +1,24 @@ +env: {} +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/dashmachine + tag: latest +persistence: + appdata: + enabled: true + mountPath: /dashmachine/dashmachine/user_data +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 5000 + protocol: TCP + targetPort: 5000 diff --git a/incubator/dashmachine/0.0.10/questions.yaml b/incubator/dashmachine/0.0.10/questions.yaml new file mode 100644 index 00000000000..af494d0c8f1 --- /dev/null +++ b/incubator/dashmachine/0.0.10/questions.yaml @@ -0,0 +1,2441 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 5000 + + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/dashmachine/0.0.10/templates/common.yaml b/incubator/dashmachine/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/dashmachine/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/dashmachine/0.0.10/values.yaml b/incubator/dashmachine/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/dashmachine/item.yaml b/incubator/dashmachine/item.yaml new file mode 100644 index 00000000000..f884ded420c --- /dev/null +++ b/incubator/dashmachine/item.yaml @@ -0,0 +1,5 @@ +icon_url: https://truecharts.org/img/chart-icons/dashmachine.png +categories: +- Productivity +- Network-Web + diff --git a/incubator/dayofdefeatsource/0.0.10/CHANGELOG.md b/incubator/dayofdefeatsource/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..82d800f9923 --- /dev/null +++ b/incubator/dayofdefeatsource/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [dayofdefeatsource-0.0.10]dayofdefeatsource-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [dayofdefeatsource-0.0.10]dayofdefeatsource-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [dayofdefeatsource-0.0.10]dayofdefeatsource-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [dayofdefeatsource-0.0.10]dayofdefeatsource-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [dayofdefeatsource-0.0.10]dayofdefeatsource-0.0.10 (2022-07-20) diff --git a/incubator/dayofdefeatsource/0.0.10/Chart.lock b/incubator/dayofdefeatsource/0.0.10/Chart.lock new file mode 100644 index 00000000000..f1546b3554c --- /dev/null +++ b/incubator/dayofdefeatsource/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:02:45.969890555Z" diff --git a/incubator/dayofdefeatsource/0.0.10/Chart.yaml b/incubator/dayofdefeatsource/0.0.10/Chart.yaml new file mode 100644 index 00000000000..30f45a6bdba --- /dev/null +++ b/incubator/dayofdefeatsource/0.0.10/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: 10.4.6 +deprecated: false +description: "This Docker will download and install SteamCMD. It will also install\ + \ Day of Defeat: Source and run it.\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/dayofdefeatsource +icon: https://truecharts.org/img/chart-icons/dayofdefeatsource.png +keywords: +- dayofdefeatsource +- GameServers +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: dayofdefeatsource +sources: +- https://www.steampowered.com/ +- https://hub.docker.com/r/ich777/steamcmd/ +type: application +version: 0.0.10 diff --git a/incubator/dayofdefeatsource/0.0.10/README.md b/incubator/dayofdefeatsource/0.0.10/README.md new file mode 100644 index 00000000000..f3805fa2d11 --- /dev/null +++ b/incubator/dayofdefeatsource/0.0.10/README.md @@ -0,0 +1,108 @@ +# dayofdefeatsource + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +This Docker will download and install SteamCMD. It will also install Day of Defeat: Source and run it. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [dayofdefeatsource](https://truecharts.org/charts/stable/dayofdefeatsource) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `dayofdefeatsource` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install dayofdefeatsource TrueCharts/dayofdefeatsource +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `dayofdefeatsource` deployment + +```console +helm uninstall dayofdefeatsource +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install dayofdefeatsource \ + --set env.TZ="America/New York" \ + TrueCharts/dayofdefeatsource +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install dayofdefeatsource TrueCharts/dayofdefeatsource -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/dayofdefeatsource/0.0.10/app-readme.md b/incubator/dayofdefeatsource/0.0.10/app-readme.md new file mode 100644 index 00000000000..6a815491dde --- /dev/null +++ b/incubator/dayofdefeatsource/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +This Docker will download and install SteamCMD. It will also install Day of Defeat: Source and run it. + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/dayofdefeatsource + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/dayofdefeatsource/0.0.10/charts/common-10.4.6.tgz b/incubator/dayofdefeatsource/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/dayofdefeatsource/0.0.10/ix_values.yaml b/incubator/dayofdefeatsource/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..36c9799c476 --- /dev/null +++ b/incubator/dayofdefeatsource/0.0.10/ix_values.yaml @@ -0,0 +1,49 @@ +env: + GAME_ID: '232290' + GAME_NAME: dod + GAME_PARAMS: -secure +maxplayers 24 +map dod_kalt + GAME_PORT: '27015' + PASSWRD: '' + USERNAME: '' + VALIDATE: '' +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/dayofdefeatsource + tag: latest +persistence: + serverfiles: + enabled: true + mountPath: /serverdata/serverfiles + steamcmd: + enabled: true + mountPath: /serverdata/steamcmd +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +probes: + liveness: + port: '{{ .Values.service.tcprcon.ports.tcprcon.targetPort }}' + readiness: + port: '{{ .Values.service.tcprcon.ports.tcprcon.targetPort }}' + startup: + port: '{{ .Values.service.tcprcon.ports.tcprcon.targetPort }}' +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 27015 + protocol: UDP + targetPort: 27015 + tcprcon: + enabled: true + ports: + tcprcon: + enabled: true + port: 27015 + protocol: TCP + targetPort: 27015 diff --git a/incubator/dayofdefeatsource/0.0.10/questions.yaml b/incubator/dayofdefeatsource/0.0.10/questions.yaml new file mode 100644 index 00000000000..b7620d9a532 --- /dev/null +++ b/incubator/dayofdefeatsource/0.0.10/questions.yaml @@ -0,0 +1,2799 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: GAME_ID + label: 'GAME_ID' + description: "The GAMEID that the container download at startup.(httpsdeveloper.valvesoftware.comwikiDedicatedServersList)" + schema: + type: string + default: "232290" + - variable: GAME_NAME + label: 'GAME_NAME' + description: "Game name to start (is connected to the GAMEPARAMS)." + schema: + type: string + default: "dod" + - variable: GAME_PARAMS + label: 'GAME_PARAMS' + description: "Enter your start up commands for the server." + schema: + type: string + default: "-secure +maxplayers 24 +map dod_kalt" + - variable: USERNAME + label: 'USERNAME' + description: "Your Steam username goes here if you want to install a game that needs a valid account, otherwise leave it blank (ATTENTION You have to disable Steam Guard)." + schema: + type: string + default: "" + - variable: VALIDATE + label: 'VALIDATE' + description: "Set the Variable to true if you want to validate the installation otherwise leave it blank." + schema: + type: string + default: "" + - variable: PASSWRD + label: 'PASSWRD' + description: "Your Steam password goes here if you want to install a game that needs a valid account, otherwise leave it blank (ATTENTION You have to disable Steam Guard)." + schema: + type: string + default: "" + - variable: GAME_PORT + label: 'GAME_PORT' + description: "Container Variable GAMEPORT" + schema: + type: string + default: "27015" + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 27015 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: UDP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 27015 + + - variable: tcprcon + label: 'tcprcon service' + description: "TCP RCON Port (not required)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: tcprcon + label: "tcprcon Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 27015 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 27015 + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - variable: persistence + label: "Integrated Persistent Storage" + description: "Integrated Persistent Storage" + group: "Storage and Persistence" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: steamcmd + label: "steamcmd Storage" + description: "Container Path serverdatasteamcmd" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: serverfiles + label: "serverfiles Storage" + description: "Container Path serverdataserverfiles" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/dayofdefeatsource/0.0.10/templates/common.yaml b/incubator/dayofdefeatsource/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/dayofdefeatsource/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/dayofdefeatsource/0.0.10/values.yaml b/incubator/dayofdefeatsource/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/dayofdefeatsource/item.yaml b/incubator/dayofdefeatsource/item.yaml new file mode 100644 index 00000000000..0fe2b40e962 --- /dev/null +++ b/incubator/dayofdefeatsource/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/dayofdefeatsource.png +categories: +- GameServers + diff --git a/incubator/daysofwar/0.0.10/CHANGELOG.md b/incubator/daysofwar/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..bd148483ab3 --- /dev/null +++ b/incubator/daysofwar/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [daysofwar-0.0.10]daysofwar-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [daysofwar-0.0.10]daysofwar-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [daysofwar-0.0.10]daysofwar-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [daysofwar-0.0.10]daysofwar-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [daysofwar-0.0.10]daysofwar-0.0.10 (2022-07-20) diff --git a/incubator/daysofwar/0.0.10/Chart.lock b/incubator/daysofwar/0.0.10/Chart.lock new file mode 100644 index 00000000000..d53ed18e04a --- /dev/null +++ b/incubator/daysofwar/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:02:46.511268828Z" diff --git a/incubator/daysofwar/0.0.10/Chart.yaml b/incubator/daysofwar/0.0.10/Chart.yaml new file mode 100644 index 00000000000..af10e9e808e --- /dev/null +++ b/incubator/daysofwar/0.0.10/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: 10.4.6 +deprecated: false +description: "This Docker will download and install SteamCMD. It will also install\ + \ Days of War and run it.\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/daysofwar +icon: https://truecharts.org/img/chart-icons/daysofwar.png +keywords: +- daysofwar +- GameServers +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: daysofwar +sources: +- https://www.steampowered.com/ +- https://hub.docker.com/r/ich777/steamcmd/ +type: application +version: 0.0.10 diff --git a/incubator/daysofwar/0.0.10/README.md b/incubator/daysofwar/0.0.10/README.md new file mode 100644 index 00000000000..02f47aef2a9 --- /dev/null +++ b/incubator/daysofwar/0.0.10/README.md @@ -0,0 +1,108 @@ +# daysofwar + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +This Docker will download and install SteamCMD. It will also install Days of War and run it. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [daysofwar](https://truecharts.org/charts/stable/daysofwar) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `daysofwar` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install daysofwar TrueCharts/daysofwar +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `daysofwar` deployment + +```console +helm uninstall daysofwar +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install daysofwar \ + --set env.TZ="America/New York" \ + TrueCharts/daysofwar +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install daysofwar TrueCharts/daysofwar -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/daysofwar/0.0.10/app-readme.md b/incubator/daysofwar/0.0.10/app-readme.md new file mode 100644 index 00000000000..17e778adbdf --- /dev/null +++ b/incubator/daysofwar/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +This Docker will download and install SteamCMD. It will also install Days of War and run it. + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/daysofwar + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/daysofwar/0.0.10/charts/common-10.4.6.tgz b/incubator/daysofwar/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/daysofwar/0.0.10/ix_values.yaml b/incubator/daysofwar/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..491b882667c --- /dev/null +++ b/incubator/daysofwar/0.0.10/ix_values.yaml @@ -0,0 +1,49 @@ +env: + GAME_ID: '541790' + GAME_PARAMS: dow_cathedral + GAME_PORT: '7777' + PASSWRD: '' + QUERY_PORT: '27015' + USERNAME: '' + VALIDATE: '' +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/daysofwar + tag: latest +persistence: + serverfiles: + enabled: true + mountPath: /serverdata/serverfiles + steamcmd: + enabled: true + mountPath: /serverdata/steamcmd +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 7777 + protocol: UDP + targetPort: 7777 + steamport: + enabled: true + ports: + steamport: + enabled: true + port: 27015 + protocol: UDP + targetPort: 27015 diff --git a/incubator/daysofwar/0.0.10/questions.yaml b/incubator/daysofwar/0.0.10/questions.yaml new file mode 100644 index 00000000000..f3ceee98a52 --- /dev/null +++ b/incubator/daysofwar/0.0.10/questions.yaml @@ -0,0 +1,2799 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: GAME_ID + label: 'GAME_ID' + description: "The GAMEID that the container download at startup.(httpsdeveloper.valvesoftware.comwikiDedicatedServersList)" + schema: + type: string + default: "541790" + - variable: GAME_PARAMS + label: 'GAME_PARAMS' + description: "Enter your start up commands for the server." + schema: + type: string + default: "dow_cathedral" + - variable: USERNAME + label: 'USERNAME' + description: "Your Steam username goes here if you want to install a game that needs a valid account, otherwise leave it blank (ATTENTION You have to disable Steam Guard)." + schema: + type: string + default: "" + - variable: VALIDATE + label: 'VALIDATE' + description: "Set the Variable to true if you want to validate the installation otherwise leave it blank." + schema: + type: string + default: "" + - variable: PASSWRD + label: 'PASSWRD' + description: "Your Steam password goes here if you want to install a game that needs a valid account, otherwise leave it blank (ATTENTION You have to disable Steam Guard)." + schema: + type: string + default: "" + - variable: GAME_PORT + label: 'GAME_PORT' + description: "Container Variable GAMEPORT" + schema: + type: string + default: "7777" + - variable: QUERY_PORT + label: 'QUERY_PORT' + description: "Container Variable QUERYPORT" + schema: + type: string + default: "27015" + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: UDP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 7777 + + - variable: steamport + label: 'steamport service' + description: "UDP Steam Port (if you need another port, please delete this entry and create a new UDP Port with the required port number, also dont forget to click on Show more settings in the template and change the portnumber)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: steamport + label: "steamport Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 27015 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: UDP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 27015 + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - variable: persistence + label: "Integrated Persistent Storage" + description: "Integrated Persistent Storage" + group: "Storage and Persistence" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: steamcmd + label: "steamcmd Storage" + description: "Container Path serverdatasteamcmd" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: serverfiles + label: "serverfiles Storage" + description: "Container Path serverdataserverfiles" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/daysofwar/0.0.10/templates/common.yaml b/incubator/daysofwar/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/daysofwar/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/daysofwar/0.0.10/values.yaml b/incubator/daysofwar/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/daysofwar/item.yaml b/incubator/daysofwar/item.yaml new file mode 100644 index 00000000000..f668b397fd3 --- /dev/null +++ b/incubator/daysofwar/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/daysofwar.png +categories: +- GameServers + diff --git a/incubator/dayz/0.0.10/CHANGELOG.md b/incubator/dayz/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..73896083286 --- /dev/null +++ b/incubator/dayz/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [dayz-0.0.10]dayz-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [dayz-0.0.10]dayz-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [dayz-0.0.10]dayz-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [dayz-0.0.10]dayz-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [dayz-0.0.10]dayz-0.0.10 (2022-07-20) diff --git a/incubator/dayz/0.0.10/Chart.lock b/incubator/dayz/0.0.10/Chart.lock new file mode 100644 index 00000000000..7cee3f62cbf --- /dev/null +++ b/incubator/dayz/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:02:54.751786435Z" diff --git a/incubator/dayz/0.0.10/Chart.yaml b/incubator/dayz/0.0.10/Chart.yaml new file mode 100644 index 00000000000..63c9a4dfb7c --- /dev/null +++ b/incubator/dayz/0.0.10/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: 10.4.6 +deprecated: false +description: "This Docker will download and install SteamCMD. It will also install\ + \ DayZ and run it.\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/dayz +icon: https://truecharts.org/img/chart-icons/dayz.png +keywords: +- dayz +- GameServers +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: dayz +sources: +- https://www.bohemia.net/games/dayz +- https://hub.docker.com/r/ich777/steamcmd/ +type: application +version: 0.0.10 diff --git a/incubator/dayz/0.0.10/README.md b/incubator/dayz/0.0.10/README.md new file mode 100644 index 00000000000..6fd10cb5a03 --- /dev/null +++ b/incubator/dayz/0.0.10/README.md @@ -0,0 +1,108 @@ +# dayz + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +This Docker will download and install SteamCMD. It will also install DayZ and run it. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [dayz](https://truecharts.org/charts/stable/dayz) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `dayz` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install dayz TrueCharts/dayz +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `dayz` deployment + +```console +helm uninstall dayz +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install dayz \ + --set env.TZ="America/New York" \ + TrueCharts/dayz +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install dayz TrueCharts/dayz -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/dayz/0.0.10/app-readme.md b/incubator/dayz/0.0.10/app-readme.md new file mode 100644 index 00000000000..4dc3eb10271 --- /dev/null +++ b/incubator/dayz/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +This Docker will download and install SteamCMD. It will also install DayZ and run it. + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/dayz + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/dayz/0.0.10/charts/common-10.4.6.tgz b/incubator/dayz/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/dayz/0.0.10/ix_values.yaml b/incubator/dayz/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..bd26dce7a11 --- /dev/null +++ b/incubator/dayz/0.0.10/ix_values.yaml @@ -0,0 +1,48 @@ +env: + GAME_ID: '1042420' + GAME_PARAMS: '' + GAME_PORT: '2302' + PASSWRD: '' + USERNAME: '' + VALIDATE: '' +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/dayz + tag: latest +persistence: + serverfiles: + enabled: true + mountPath: /serverdata/serverfiles + steamcmd: + enabled: true + mountPath: /serverdata/steamcmd +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 2302 + protocol: UDP + targetPort: 2302 + steamqueryport: + enabled: true + ports: + steamqueryport: + enabled: true + port: 27016 + protocol: UDP + targetPort: 27016 diff --git a/incubator/dayz/0.0.10/questions.yaml b/incubator/dayz/0.0.10/questions.yaml new file mode 100644 index 00000000000..bc010bc1948 --- /dev/null +++ b/incubator/dayz/0.0.10/questions.yaml @@ -0,0 +1,2791 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: GAME_ID + label: 'GAME_ID' + description: "The GAMEID that the container downloads at startup.If you want to install a static or beta version of the game change the value to 1042420 -beta YOURBRANCH (without quotes, replace YOURBRANCH with the branch or version you want to install)." + schema: + type: string + default: "1042420" + - variable: GAME_PARAMS + label: 'GAME_PARAMS' + description: "Enter your extra start up commands for the server here otherwise leave empty." + schema: + type: string + default: "" + - variable: VALIDATE + label: 'VALIDATE' + description: "Set the Variable to true if you want to validate the installation otherwise leave it blank." + schema: + type: string + default: "" + - variable: GAME_PORT + label: 'GAME_PORT' + description: "Only change if you know what you are doing (initial GAMEPORT Dont forget to create create a new UDP port mapping with the corresponding port and delete the default port)" + schema: + type: string + default: "2302" + - variable: USERNAME + label: 'USERNAME' + description: "Your Steam username goes here if you want to install a game that needs a valid account, otherwise leave it blank (ATTENTION You have to disable Steam Guard)." + schema: + type: string + default: "" + - variable: PASSWRD + label: 'PASSWRD' + description: "Your Steam password goes here if you want to install a game that needs a valid account, otherwise leave it blank (ATTENTION You have to disable Steam Guard)." + schema: + type: string + default: "" + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 2302 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: UDP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 2302 + + - variable: steamqueryport + label: 'steamqueryport service' + description: "UDP Steam Query 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, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: steamqueryport + label: "steamqueryport Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 27016 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: UDP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 27016 + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - variable: persistence + label: "Integrated Persistent Storage" + description: "Integrated Persistent Storage" + group: "Storage and Persistence" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: steamcmd + label: "steamcmd 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: serverfiles + label: "serverfiles 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/dayz/0.0.10/templates/common.yaml b/incubator/dayz/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/dayz/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/dayz/0.0.10/values.yaml b/incubator/dayz/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/dayz/item.yaml b/incubator/dayz/item.yaml new file mode 100644 index 00000000000..1b269145748 --- /dev/null +++ b/incubator/dayz/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/dayz.png +categories: +- GameServers + diff --git a/incubator/ddns-route53/0.0.10/CHANGELOG.md b/incubator/ddns-route53/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..b89faa129e4 --- /dev/null +++ b/incubator/ddns-route53/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [ddns-route53-0.0.10]ddns-route53-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [ddns-route53-0.0.10]ddns-route53-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [ddns-route53-0.0.10]ddns-route53-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [ddns-route53-0.0.10]ddns-route53-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [ddns-route53-0.0.10]ddns-route53-0.0.10 (2022-07-20) diff --git a/incubator/ddns-route53/0.0.10/Chart.lock b/incubator/ddns-route53/0.0.10/Chart.lock new file mode 100644 index 00000000000..63caf9cf405 --- /dev/null +++ b/incubator/ddns-route53/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:02:59.371887637Z" diff --git a/incubator/ddns-route53/0.0.10/Chart.yaml b/incubator/ddns-route53/0.0.10/Chart.yaml new file mode 100644 index 00000000000..f74e82c567b --- /dev/null +++ b/incubator/ddns-route53/0.0.10/Chart.yaml @@ -0,0 +1,28 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - Network-DNS +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: "Dynamic DNS for Amazon Route 53\u200E on a time-based schedule" +home: https://github.com/truecharts/apps/tree/master/charts/stable/ddns-route53 +icon: https://truecharts.org/img/chart-icons/ddns-route53.png +keywords: +- ddns-route53 +- Network-DNS +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: ddns-route53 +sources: +- https://github.com/crazy-max/ddns-route53 +- https://hub.docker.com/r/crazymax/ddns-route53/ +type: application +version: 0.0.10 diff --git a/incubator/ddns-route53/0.0.10/README.md b/incubator/ddns-route53/0.0.10/README.md new file mode 100644 index 00000000000..18c1ec7a9df --- /dev/null +++ b/incubator/ddns-route53/0.0.10/README.md @@ -0,0 +1,108 @@ +# ddns-route53 + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +Dynamic DNS for Amazon Route 53‎ on a time-based schedule + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [ddns-route53](https://truecharts.org/charts/stable/ddns-route53) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `ddns-route53` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install ddns-route53 TrueCharts/ddns-route53 +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `ddns-route53` deployment + +```console +helm uninstall ddns-route53 +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install ddns-route53 \ + --set env.TZ="America/New York" \ + TrueCharts/ddns-route53 +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install ddns-route53 TrueCharts/ddns-route53 -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/ddns-route53/0.0.10/app-readme.md b/incubator/ddns-route53/0.0.10/app-readme.md new file mode 100644 index 00000000000..7726ef77e80 --- /dev/null +++ b/incubator/ddns-route53/0.0.10/app-readme.md @@ -0,0 +1,8 @@ +Dynamic DNS for Amazon Route 53‎ on a time-based schedule + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/ddns-route53 + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/ddns-route53/0.0.10/charts/common-10.4.6.tgz b/incubator/ddns-route53/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/ddns-route53/0.0.10/ix_values.yaml b/incubator/ddns-route53/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..a996bc86b28 --- /dev/null +++ b/incubator/ddns-route53/0.0.10/ix_values.yaml @@ -0,0 +1,35 @@ +env: + DDNSR53_CREDENTIALS_ACCESSKEYID: ABCDEFGHIJKLMNO123456 + DDNSR53_CREDENTIALS_SECRETACCESSKEY: abcdefgh123456IJKLMN+OPQRS7890+ABCDEFGH + DDNSR53_ROUTE53_HOSTEDZONEID: ABCEEFG123456789 + DDNSR53_ROUTE53_RECORDSSET_0_NAME: ddns.example.com. + DDNSR53_ROUTE53_RECORDSSET_0_TTL: '300' + DDNSR53_ROUTE53_RECORDSSET_0_TYPE: A + LOG_JSON: 'false' + LOG_LEVEL: info + MAX_RETRIES: '3' + SCHEDULE: '*/30 * * * *' +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/ddns-route53 + tag: latest +persistence: {} +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: false + ports: + main: + enabled: false diff --git a/incubator/ddns-route53/0.0.10/questions.yaml b/incubator/ddns-route53/0.0.10/questions.yaml new file mode 100644 index 00000000000..251e06b1033 --- /dev/null +++ b/incubator/ddns-route53/0.0.10/questions.yaml @@ -0,0 +1,1897 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: {} +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: false + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: SCHEDULE + label: 'SCHEDULE' + description: "CRON expression to schedule ddns-route53 - httpwww.cronmaker.com" + schema: + type: string + default: "*/30 * * * *" + - variable: MAX_RETRIES + label: 'MAX_RETRIES' + description: "Number of retries in case of WAN IP retrieval failure" + schema: + type: string + default: "3" + - variable: LOG_LEVEL + label: 'LOG_LEVEL' + description: "Log level output" + schema: + type: string + default: "info" + - variable: LOG_JSON + label: 'LOG_JSON' + description: "Enable JSON logging output" + schema: + type: string + default: "false" + - variable: DDNSR53_CREDENTIALS_ACCESSKEYID + label: 'DDNSR53_CREDENTIALS_ACCESSKEYID' + description: "Access Key ID" + schema: + type: string + default: "ABCDEFGHIJKLMNO123456" + - variable: DDNSR53_CREDENTIALS_SECRETACCESSKEY + label: 'DDNSR53_CREDENTIALS_SECRETACCESSKEY' + description: "Secret Access Key" + schema: + type: string + default: "abcdefgh123456IJKLMN+OPQRS7890+ABCDEFGH" + - variable: DDNSR53_ROUTE53_HOSTEDZONEID + label: 'DDNSR53_ROUTE53_HOSTEDZONEID' + description: "Host Zone ID" + schema: + type: string + default: "ABCEEFG123456789" + - variable: DDNSR53_ROUTE53_RECORDSSET_0_NAME + label: 'DDNSR53_ROUTE53_RECORDSSET_0_NAME' + description: "Record Set 0 " + schema: + type: string + default: "ddns.example.com." + - variable: DDNSR53_ROUTE53_RECORDSSET_0_TYPE + label: 'DDNSR53_ROUTE53_RECORDSSET_0_TYPE' + description: "Record Set 0 Type" + schema: + type: string + default: "A" + - variable: DDNSR53_ROUTE53_RECORDSSET_0_TTL + label: 'DDNSR53_ROUTE53_RECORDSSET_0_TTL' + description: "Record Set 0 TTL" + schema: + type: string + default: "300" + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/ddns-route53/0.0.10/templates/common.yaml b/incubator/ddns-route53/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/ddns-route53/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/ddns-route53/0.0.10/values.yaml b/incubator/ddns-route53/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/ddns-route53/item.yaml b/incubator/ddns-route53/item.yaml new file mode 100644 index 00000000000..d19fbfe5d40 --- /dev/null +++ b/incubator/ddns-route53/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/ddns-route53.png +categories: +- Network-DNS + diff --git a/incubator/debian-apt-mirror/0.0.10/CHANGELOG.md b/incubator/debian-apt-mirror/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..75cacbe6586 --- /dev/null +++ b/incubator/debian-apt-mirror/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [debian-apt-mirror-0.0.10]debian-apt-mirror-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [debian-apt-mirror-0.0.10]debian-apt-mirror-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [debian-apt-mirror-0.0.10]debian-apt-mirror-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [debian-apt-mirror-0.0.10]debian-apt-mirror-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [debian-apt-mirror-0.0.10]debian-apt-mirror-0.0.10 (2022-07-20) diff --git a/incubator/debian-apt-mirror/0.0.10/Chart.lock b/incubator/debian-apt-mirror/0.0.10/Chart.lock new file mode 100644 index 00000000000..f6993e83347 --- /dev/null +++ b/incubator/debian-apt-mirror/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:03:02.306704364Z" diff --git a/incubator/debian-apt-mirror/0.0.10/Chart.yaml b/incubator/debian-apt-mirror/0.0.10/Chart.yaml new file mode 100644 index 00000000000..af964aad9a9 --- /dev/null +++ b/incubator/debian-apt-mirror/0.0.10/Chart.yaml @@ -0,0 +1,35 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - Network-Other + - Productivity + - Tools-Utilities + - Drivers +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: "This container will run apt-mirror and Apache2. This allows you to create\ + \ a local apt mirror for Debian packages.\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/debian-apt-mirror +icon: https://truecharts.org/img/chart-icons/debian-apt-mirror.png +keywords: +- debian-apt-mirror +- Network-Other +- Productivity +- Tools-Utilities +- Drivers +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: debian-apt-mirror +sources: +- https://www.debian.org/ +- https://hub.docker.com/r/ich777/debian-mirror +type: application +version: 0.0.10 diff --git a/incubator/debian-apt-mirror/0.0.10/README.md b/incubator/debian-apt-mirror/0.0.10/README.md new file mode 100644 index 00000000000..069c5f62fe3 --- /dev/null +++ b/incubator/debian-apt-mirror/0.0.10/README.md @@ -0,0 +1,108 @@ +# debian-apt-mirror + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +This container will run apt-mirror and Apache2. This allows you to create a local apt mirror for Debian packages. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [debian-apt-mirror](https://truecharts.org/charts/stable/debian-apt-mirror) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `debian-apt-mirror` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install debian-apt-mirror TrueCharts/debian-apt-mirror +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `debian-apt-mirror` deployment + +```console +helm uninstall debian-apt-mirror +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install debian-apt-mirror \ + --set env.TZ="America/New York" \ + TrueCharts/debian-apt-mirror +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install debian-apt-mirror TrueCharts/debian-apt-mirror -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/debian-apt-mirror/0.0.10/app-readme.md b/incubator/debian-apt-mirror/0.0.10/app-readme.md new file mode 100644 index 00000000000..443751fbcc2 --- /dev/null +++ b/incubator/debian-apt-mirror/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +This container will run apt-mirror and Apache2. This allows you to create a local apt mirror for Debian packages. + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/debian-apt-mirror + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/debian-apt-mirror/0.0.10/charts/common-10.4.6.tgz b/incubator/debian-apt-mirror/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/debian-apt-mirror/0.0.10/ix_values.yaml b/incubator/debian-apt-mirror/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..345ae4cfb6e --- /dev/null +++ b/incubator/debian-apt-mirror/0.0.10/ix_values.yaml @@ -0,0 +1,31 @@ +env: + APACHE2_PORT: '980' + DATA_PERM: '770' + FORCE_UPDATE: 'false' + UMASK: '0000' +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/debian-apt-mirror + tag: latest +persistence: + config: + enabled: true + mountPath: /debian-mirror/config + data: + enabled: true + mountPath: /debian-mirror/data +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 980 + protocol: TCP + targetPort: 980 diff --git a/incubator/debian-apt-mirror/0.0.10/questions.yaml b/incubator/debian-apt-mirror/0.0.10/questions.yaml new file mode 100644 index 00000000000..fc797ea49af --- /dev/null +++ b/incubator/debian-apt-mirror/0.0.10/questions.yaml @@ -0,0 +1,2648 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: FORCE_UPDATE + label: 'FORCE_UPDATE' + description: "Force update from the packages on every startrestart of the container." + schema: + type: string + default: "false" + - variable: DATA_PERM + label: 'DATA_PERM' + schema: + type: string + default: "770" + - variable: UMASK + label: 'UMASK' + schema: + type: string + default: "0000" + - variable: APACHE2_PORT + label: 'APACHE2_PORT' + description: "If you change this value you also have to delete the old port mapping and create a new one with the appropriate port mapping." + schema: + type: string + default: "980" + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 980 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 980 + + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - 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: "Keep in mind that the mirror can consume very much space (stable main contrib non-free Will need about 200GB of hard drive space!) - you can also put the data directory somewhere on a disk outside the Array or Cache for example with Unassigned Devices." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: config + label: "config Storage" + description: "Configuration 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/debian-apt-mirror/0.0.10/templates/common.yaml b/incubator/debian-apt-mirror/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/debian-apt-mirror/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/debian-apt-mirror/0.0.10/values.yaml b/incubator/debian-apt-mirror/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/debian-apt-mirror/item.yaml b/incubator/debian-apt-mirror/item.yaml new file mode 100644 index 00000000000..d98b9559d04 --- /dev/null +++ b/incubator/debian-apt-mirror/item.yaml @@ -0,0 +1,7 @@ +icon_url: https://truecharts.org/img/chart-icons/debian-apt-mirror.png +categories: +- Network-Other +- Productivity +- Tools-Utilities +- Drivers + diff --git a/incubator/debian-bullseye/0.0.10/CHANGELOG.md b/incubator/debian-bullseye/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..60b46640ab4 --- /dev/null +++ b/incubator/debian-bullseye/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [debian-bullseye-0.0.10]debian-bullseye-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [debian-bullseye-0.0.10]debian-bullseye-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [debian-bullseye-0.0.10]debian-bullseye-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [debian-bullseye-0.0.10]debian-bullseye-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [debian-bullseye-0.0.10]debian-bullseye-0.0.10 (2022-07-20) diff --git a/incubator/debian-bullseye/0.0.10/Chart.lock b/incubator/debian-bullseye/0.0.10/Chart.lock new file mode 100644 index 00000000000..ecbc7682a42 --- /dev/null +++ b/incubator/debian-bullseye/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:03:02.751563079Z" diff --git a/incubator/debian-bullseye/0.0.10/Chart.yaml b/incubator/debian-bullseye/0.0.10/Chart.yaml new file mode 100644 index 00000000000..2ff9707f0db --- /dev/null +++ b/incubator/debian-bullseye/0.0.10/Chart.yaml @@ -0,0 +1,31 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - Productivity + - Tools-System +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: "This Container is a full Debian Bullseye Xfce4 Desktop environment with\ + \ a noVNC webGUI and all the basic tools pre-installed.\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/debian-bullseye +icon: https://truecharts.org/img/chart-icons/debian-bullseye.png +keywords: +- debian-bullseye +- Productivity +- Tools-System +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: debian-bullseye +sources: +- https://www.debian.org/ +- https://hub.docker.com/r/ich777/debian-bullseye +type: application +version: 0.0.10 diff --git a/incubator/debian-bullseye/0.0.10/README.md b/incubator/debian-bullseye/0.0.10/README.md new file mode 100644 index 00000000000..5aba6d85698 --- /dev/null +++ b/incubator/debian-bullseye/0.0.10/README.md @@ -0,0 +1,108 @@ +# debian-bullseye + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +This Container is a full Debian Bullseye Xfce4 Desktop environment with a noVNC webGUI and all the basic tools pre-installed. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [debian-bullseye](https://truecharts.org/charts/stable/debian-bullseye) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `debian-bullseye` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install debian-bullseye TrueCharts/debian-bullseye +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `debian-bullseye` deployment + +```console +helm uninstall debian-bullseye +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install debian-bullseye \ + --set env.TZ="America/New York" \ + TrueCharts/debian-bullseye +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install debian-bullseye TrueCharts/debian-bullseye -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/debian-bullseye/0.0.10/app-readme.md b/incubator/debian-bullseye/0.0.10/app-readme.md new file mode 100644 index 00000000000..2837d551c8f --- /dev/null +++ b/incubator/debian-bullseye/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +This Container is a full Debian Bullseye Xfce4 Desktop environment with a noVNC webGUI and all the basic tools pre-installed. + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/debian-bullseye + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/debian-bullseye/0.0.10/charts/common-10.4.6.tgz b/incubator/debian-bullseye/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/debian-bullseye/0.0.10/ix_values.yaml b/incubator/debian-bullseye/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..ef1aa56cf7a --- /dev/null +++ b/incubator/debian-bullseye/0.0.10/ix_values.yaml @@ -0,0 +1,31 @@ +env: + CUSTOM_RES_H: '1000' + CUSTOM_RES_W: '1800' + DATA_PERM: '770' + DEV: '' + ROOT_PWD: '' + UMASK: '0000' + USER_LOCALES: en_US.UTF-8 UTF-8 +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/debian-bullseye + tag: latest +persistence: + homedirectory: + enabled: true + mountPath: /debian +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 8080 + protocol: TCP + targetPort: 8080 diff --git a/incubator/debian-bullseye/0.0.10/questions.yaml b/incubator/debian-bullseye/0.0.10/questions.yaml new file mode 100644 index 00000000000..171c13d23b8 --- /dev/null +++ b/incubator/debian-bullseye/0.0.10/questions.yaml @@ -0,0 +1,2491 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: CUSTOM_RES_W + label: 'CUSTOM_RES_W' + description: "Enter the preferred resolution width" + schema: + type: string + default: "1800" + - variable: CUSTOM_RES_H + label: 'CUSTOM_RES_H' + description: "Enter the preferred resolution height" + schema: + type: string + default: "1000" + - variable: ROOT_PWD + label: 'ROOT_PWD' + description: "Please choose a strong password for your root account!" + schema: + type: string + default: "" + - variable: DATA_PERM + label: 'DATA_PERM' + description: "Container Variable DATAPERM" + schema: + type: string + default: "770" + - variable: USER_LOCALES + label: 'USER_LOCALES' + description: "Enter your prefered locales, you can find a full list of supported languages in usrsharei18nSUPPORTED (eg enUS.UTF-8 UTF8 or deDE.UTF-8 UTF-8,...)" + schema: + type: string + default: "en_US.UTF-8 UTF-8" + - variable: DEV + label: 'DEV' + description: "Container Variable DEV" + schema: + type: string + default: "" + - variable: UMASK + label: 'UMASK' + description: "Container Variable UMASK" + schema: + type: string + default: "0000" + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 8080 + + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - variable: persistence + label: "Integrated Persistent Storage" + description: "Integrated Persistent Storage" + group: "Storage and Persistence" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: homedirectory + label: "homedirectory Storage" + description: "All things that are saved in the container should be in the this or a subdirectory in of this folder, all files that are store outside this folder are not persistant and will be wiped if there is an update of the container or you change something in the template." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/debian-bullseye/0.0.10/templates/common.yaml b/incubator/debian-bullseye/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/debian-bullseye/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/debian-bullseye/0.0.10/values.yaml b/incubator/debian-bullseye/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/debian-bullseye/item.yaml b/incubator/debian-bullseye/item.yaml new file mode 100644 index 00000000000..21c188a01da --- /dev/null +++ b/incubator/debian-bullseye/item.yaml @@ -0,0 +1,5 @@ +icon_url: https://truecharts.org/img/chart-icons/debian-bullseye.png +categories: +- Productivity +- Tools-System + diff --git a/incubator/dispatch/0.0.10/CHANGELOG.md b/incubator/dispatch/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..12161519b05 --- /dev/null +++ b/incubator/dispatch/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [dispatch-0.0.10]dispatch-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [dispatch-0.0.10]dispatch-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [dispatch-0.0.10]dispatch-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [dispatch-0.0.10]dispatch-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [dispatch-0.0.10]dispatch-0.0.10 (2022-07-20) diff --git a/incubator/dispatch/0.0.10/Chart.lock b/incubator/dispatch/0.0.10/Chart.lock new file mode 100644 index 00000000000..ad940bf851e --- /dev/null +++ b/incubator/dispatch/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:03:11.427612134Z" diff --git a/incubator/dispatch/0.0.10/Chart.yaml b/incubator/dispatch/0.0.10/Chart.yaml new file mode 100644 index 00000000000..8f68b37f6a6 --- /dev/null +++ b/incubator/dispatch/0.0.10/Chart.yaml @@ -0,0 +1,28 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - Network-Messenger +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: Web-based IRC client in Go. +home: https://github.com/truecharts/apps/tree/master/charts/stable/dispatch +icon: https://truecharts.org/img/chart-icons/dispatch.png +keywords: +- dispatch +- Network-Messenger +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: dispatch +sources: +- https://github.com/khlieng/dispatch +- https://hub.docker.com/r/khlieng/dispatch/ +type: application +version: 0.0.10 diff --git a/incubator/dispatch/0.0.10/README.md b/incubator/dispatch/0.0.10/README.md new file mode 100644 index 00000000000..d3276ff6aad --- /dev/null +++ b/incubator/dispatch/0.0.10/README.md @@ -0,0 +1,108 @@ +# dispatch + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +Web-based IRC client in Go. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [dispatch](https://truecharts.org/charts/stable/dispatch) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `dispatch` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install dispatch TrueCharts/dispatch +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `dispatch` deployment + +```console +helm uninstall dispatch +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install dispatch \ + --set env.TZ="America/New York" \ + TrueCharts/dispatch +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install dispatch TrueCharts/dispatch -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/dispatch/0.0.10/app-readme.md b/incubator/dispatch/0.0.10/app-readme.md new file mode 100644 index 00000000000..beafbd724fa --- /dev/null +++ b/incubator/dispatch/0.0.10/app-readme.md @@ -0,0 +1,8 @@ +Web-based IRC client in Go. + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/dispatch + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/dispatch/0.0.10/charts/common-10.4.6.tgz b/incubator/dispatch/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/dispatch/0.0.10/ix_values.yaml b/incubator/dispatch/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..8348aede9ae --- /dev/null +++ b/incubator/dispatch/0.0.10/ix_values.yaml @@ -0,0 +1,32 @@ +env: {} +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/dispatch + tag: latest +persistence: + data: + enabled: true + mountPath: /data +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + https: + enabled: true + ports: + https: + enabled: true + port: 4596 + protocol: TCP + targetPort: 443 + main: + enabled: true + ports: + main: + enabled: true + port: 8000 + protocol: HTTP + targetPort: 80 diff --git a/incubator/dispatch/0.0.10/questions.yaml b/incubator/dispatch/0.0.10/questions.yaml new file mode 100644 index 00000000000..b5fd9a7fd75 --- /dev/null +++ b/incubator/dispatch/0.0.10/questions.yaml @@ -0,0 +1,2572 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: HTTP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 80 + + - variable: https + label: 'https service' + description: "HTTPs (Not Required if you use reverse proxy)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - 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: 4596 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 443 + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - 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" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/dispatch/0.0.10/templates/common.yaml b/incubator/dispatch/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/dispatch/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/dispatch/0.0.10/values.yaml b/incubator/dispatch/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/dispatch/item.yaml b/incubator/dispatch/item.yaml new file mode 100644 index 00000000000..cd062a3cbbc --- /dev/null +++ b/incubator/dispatch/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/dispatch.png +categories: +- Network-Messenger + diff --git a/incubator/dns-doh-companion/0.0.10/CHANGELOG.md b/incubator/dns-doh-companion/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..d2a98362a62 --- /dev/null +++ b/incubator/dns-doh-companion/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [dns-doh-companion-0.0.10]dns-doh-companion-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [dns-doh-companion-0.0.10]dns-doh-companion-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [dns-doh-companion-0.0.10]dns-doh-companion-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [dns-doh-companion-0.0.10]dns-doh-companion-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [dns-doh-companion-0.0.10]dns-doh-companion-0.0.10 (2022-07-20) diff --git a/incubator/dns-doh-companion/0.0.10/Chart.lock b/incubator/dns-doh-companion/0.0.10/Chart.lock new file mode 100644 index 00000000000..78594d39e5b --- /dev/null +++ b/incubator/dns-doh-companion/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:03:15.361581558Z" diff --git a/incubator/dns-doh-companion/0.0.10/Chart.yaml b/incubator/dns-doh-companion/0.0.10/Chart.yaml new file mode 100644 index 00000000000..e316cce4cfc --- /dev/null +++ b/incubator/dns-doh-companion/0.0.10/Chart.yaml @@ -0,0 +1,29 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - Network-DNS +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: "A very simple DNS server to connect to DNS-over-HTTPS service. This\ + \ is similar to my other Pihole-with-DoH docker, without Pihole.\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/dns-doh-companion +icon: https://truecharts.org/img/chart-icons/dns-doh-companion.png +keywords: +- dns-doh-companion +- Network-DNS +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: dns-doh-companion +sources: +- https://developers.cloudflare.com/1.1.1.1/dns-over-https/cloudflared-proxy/ +- https://hub.docker.com/r/testdasi/simple-dns-doh/ +type: application +version: 0.0.10 diff --git a/incubator/dns-doh-companion/0.0.10/README.md b/incubator/dns-doh-companion/0.0.10/README.md new file mode 100644 index 00000000000..a8ee298de5f --- /dev/null +++ b/incubator/dns-doh-companion/0.0.10/README.md @@ -0,0 +1,108 @@ +# dns-doh-companion + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +A very simple DNS server to connect to DNS-over-HTTPS service. This is similar to my other Pihole-with-DoH docker, without Pihole. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [dns-doh-companion](https://truecharts.org/charts/stable/dns-doh-companion) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `dns-doh-companion` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install dns-doh-companion TrueCharts/dns-doh-companion +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `dns-doh-companion` deployment + +```console +helm uninstall dns-doh-companion +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install dns-doh-companion \ + --set env.TZ="America/New York" \ + TrueCharts/dns-doh-companion +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install dns-doh-companion TrueCharts/dns-doh-companion -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/dns-doh-companion/0.0.10/app-readme.md b/incubator/dns-doh-companion/0.0.10/app-readme.md new file mode 100644 index 00000000000..58eb52d3db1 --- /dev/null +++ b/incubator/dns-doh-companion/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +A very simple DNS server to connect to DNS-over-HTTPS service. This is similar to my other Pihole-with-DoH docker, without Pihole. + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/dns-doh-companion + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/dns-doh-companion/0.0.10/charts/common-10.4.6.tgz b/incubator/dns-doh-companion/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/dns-doh-companion/0.0.10/ix_values.yaml b/incubator/dns-doh-companion/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..db9a661f02e --- /dev/null +++ b/incubator/dns-doh-companion/0.0.10/ix_values.yaml @@ -0,0 +1,29 @@ +env: {} +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/dns-doh-companion + tag: latest +persistence: {} +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + dnsudp: + enabled: true + ports: + dnsudp: + enabled: true + port: 53 + protocol: UDP + targetPort: 53 + main: + enabled: true + ports: + main: + enabled: true + port: 53 + protocol: TCP + targetPort: 53 diff --git a/incubator/dns-doh-companion/0.0.10/questions.yaml b/incubator/dns-doh-companion/0.0.10/questions.yaml new file mode 100644 index 00000000000..7e13e10c922 --- /dev/null +++ b/incubator/dns-doh-companion/0.0.10/questions.yaml @@ -0,0 +1,2385 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 53 + + - variable: dnsudp + label: 'dnsudp service' + description: "Container Port 53" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: dnsudp + label: "dnsudp Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: UDP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 53 + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/dns-doh-companion/0.0.10/templates/common.yaml b/incubator/dns-doh-companion/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/dns-doh-companion/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/dns-doh-companion/0.0.10/values.yaml b/incubator/dns-doh-companion/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/dns-doh-companion/item.yaml b/incubator/dns-doh-companion/item.yaml new file mode 100644 index 00000000000..d99de6736d3 --- /dev/null +++ b/incubator/dns-doh-companion/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/dns-doh-companion.png +categories: +- Network-DNS + diff --git a/incubator/docker-hub-rss/0.0.10/CHANGELOG.md b/incubator/docker-hub-rss/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..2948ade3116 --- /dev/null +++ b/incubator/docker-hub-rss/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [docker-hub-rss-0.0.10]docker-hub-rss-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [docker-hub-rss-0.0.10]docker-hub-rss-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [docker-hub-rss-0.0.10]docker-hub-rss-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [docker-hub-rss-0.0.10]docker-hub-rss-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [docker-hub-rss-0.0.10]docker-hub-rss-0.0.10 (2022-07-20) diff --git a/incubator/docker-hub-rss/0.0.10/Chart.lock b/incubator/docker-hub-rss/0.0.10/Chart.lock new file mode 100644 index 00000000000..41fee3f675d --- /dev/null +++ b/incubator/docker-hub-rss/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:03:18.554815163Z" diff --git a/incubator/docker-hub-rss/0.0.10/Chart.yaml b/incubator/docker-hub-rss/0.0.10/Chart.yaml new file mode 100644 index 00000000000..bb4db964925 --- /dev/null +++ b/incubator/docker-hub-rss/0.0.10/Chart.yaml @@ -0,0 +1,32 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - Cloud + - Tools-Utilities + - Network-Web +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: "DESCRIPTION\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/docker-hub-rss +icon: https://truecharts.org/img/chart-icons/docker-hub-rss.png +keywords: +- docker-hub-rss +- Cloud +- Tools-Utilities +- Network-Web +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: docker-hub-rss +sources: +- https://github.com/TheConnMan/docker-hub-rss +- https://hub.docker.com/r/theconnman/docker-hub-rss +type: application +version: 0.0.10 diff --git a/incubator/docker-hub-rss/0.0.10/README.md b/incubator/docker-hub-rss/0.0.10/README.md new file mode 100644 index 00000000000..04470c47d0c --- /dev/null +++ b/incubator/docker-hub-rss/0.0.10/README.md @@ -0,0 +1,108 @@ +# docker-hub-rss + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +DESCRIPTION + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [docker-hub-rss](https://truecharts.org/charts/stable/docker-hub-rss) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `docker-hub-rss` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install docker-hub-rss TrueCharts/docker-hub-rss +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `docker-hub-rss` deployment + +```console +helm uninstall docker-hub-rss +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install docker-hub-rss \ + --set env.TZ="America/New York" \ + TrueCharts/docker-hub-rss +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install docker-hub-rss TrueCharts/docker-hub-rss -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/docker-hub-rss/0.0.10/app-readme.md b/incubator/docker-hub-rss/0.0.10/app-readme.md new file mode 100644 index 00000000000..fb31c67807a --- /dev/null +++ b/incubator/docker-hub-rss/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +DESCRIPTION + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/docker-hub-rss + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/docker-hub-rss/0.0.10/charts/common-10.4.6.tgz b/incubator/docker-hub-rss/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/docker-hub-rss/0.0.10/ix_values.yaml b/incubator/docker-hub-rss/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..60c19aceb48 --- /dev/null +++ b/incubator/docker-hub-rss/0.0.10/ix_values.yaml @@ -0,0 +1,25 @@ +env: {} +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/docker-hub-rss + tag: latest +persistence: {} +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: false + ports: + main: + enabled: false diff --git a/incubator/docker-hub-rss/0.0.10/questions.yaml b/incubator/docker-hub-rss/0.0.10/questions.yaml new file mode 100644 index 00000000000..c6590a40435 --- /dev/null +++ b/incubator/docker-hub-rss/0.0.10/questions.yaml @@ -0,0 +1,1829 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: {} +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: false + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + 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: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/docker-hub-rss/0.0.10/templates/common.yaml b/incubator/docker-hub-rss/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/docker-hub-rss/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/docker-hub-rss/0.0.10/values.yaml b/incubator/docker-hub-rss/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/docker-hub-rss/item.yaml b/incubator/docker-hub-rss/item.yaml new file mode 100644 index 00000000000..ab484985c68 --- /dev/null +++ b/incubator/docker-hub-rss/item.yaml @@ -0,0 +1,6 @@ +icon_url: https://truecharts.org/img/chart-icons/docker-hub-rss.png +categories: +- Cloud +- Tools-Utilities +- Network-Web + diff --git a/incubator/dockerregistry/0.0.10/CHANGELOG.md b/incubator/dockerregistry/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..eb7b6d2ddf7 --- /dev/null +++ b/incubator/dockerregistry/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [dockerregistry-0.0.10]dockerregistry-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [dockerregistry-0.0.10]dockerregistry-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [dockerregistry-0.0.10]dockerregistry-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [dockerregistry-0.0.10]dockerregistry-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [dockerregistry-0.0.10]dockerregistry-0.0.10 (2022-07-20) diff --git a/incubator/dockerregistry/0.0.10/Chart.lock b/incubator/dockerregistry/0.0.10/Chart.lock new file mode 100644 index 00000000000..0af1eb1039e --- /dev/null +++ b/incubator/dockerregistry/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:03:19.572410659Z" diff --git a/incubator/dockerregistry/0.0.10/Chart.yaml b/incubator/dockerregistry/0.0.10/Chart.yaml new file mode 100644 index 00000000000..e0a2d5554e6 --- /dev/null +++ b/incubator/dockerregistry/0.0.10/Chart.yaml @@ -0,0 +1,38 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - Cloud + - Network-Management + - Productivity + - Tools-Utilities +apiVersion: v2 +appVersion: "2" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: 'Docker Registry is used to store and distribute Docker images using + HTTP API. This allows you host your own private Registry and store your images. + Uses official Docker Registry image @ https://hub.docker.com/_/registry/ + + ' +home: https://github.com/truecharts/apps/tree/master/charts/stable/dockerregistry +icon: https://truecharts.org/img/chart-icons/dockerregistry.png +keywords: +- dockerregistry +- Cloud +- Network-Management +- Productivity +- Tools-Utilities +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: dockerregistry +sources: +- https://github.com/distribution/distribution +- https://registry.hub.docker.com/_/registry/ +type: application +version: 0.0.10 diff --git a/incubator/dockerregistry/0.0.10/README.md b/incubator/dockerregistry/0.0.10/README.md new file mode 100644 index 00000000000..a6fa4679cf4 --- /dev/null +++ b/incubator/dockerregistry/0.0.10/README.md @@ -0,0 +1,108 @@ +# dockerregistry + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 2](https://img.shields.io/badge/AppVersion-2-informational?style=flat-square) + +Docker Registry is used to store and distribute Docker images using HTTP API. This allows you host your own private Registry and store your images. Uses official Docker Registry image @ https://hub.docker.com/_/registry/ + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [dockerregistry](https://truecharts.org/charts/stable/dockerregistry) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `dockerregistry` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install dockerregistry TrueCharts/dockerregistry +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `dockerregistry` deployment + +```console +helm uninstall dockerregistry +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install dockerregistry \ + --set env.TZ="America/New York" \ + TrueCharts/dockerregistry +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install dockerregistry TrueCharts/dockerregistry -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/dockerregistry/0.0.10/app-readme.md b/incubator/dockerregistry/0.0.10/app-readme.md new file mode 100644 index 00000000000..ebe3c1076fd --- /dev/null +++ b/incubator/dockerregistry/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +Docker Registry is used to store and distribute Docker images using HTTP API. This allows you host your own private Registry and store your images. Uses official Docker Registry image @ https://hub.docker.com/_/registry/ + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/dockerregistry + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/dockerregistry/0.0.10/charts/common-10.4.6.tgz b/incubator/dockerregistry/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/dockerregistry/0.0.10/ix_values.yaml b/incubator/dockerregistry/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..1d84eb6707f --- /dev/null +++ b/incubator/dockerregistry/0.0.10/ix_values.yaml @@ -0,0 +1,24 @@ +env: {} +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/dockerregistry + tag: v2 +persistence: + datastoragepath: + enabled: true + mountPath: /var/lib/registry +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 5000 + protocol: TCP + targetPort: 5000 diff --git a/incubator/dockerregistry/0.0.10/questions.yaml b/incubator/dockerregistry/0.0.10/questions.yaml new file mode 100644 index 00000000000..2891f07f341 --- /dev/null +++ b/incubator/dockerregistry/0.0.10/questions.yaml @@ -0,0 +1,2441 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 5000 + + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - variable: persistence + label: "Integrated Persistent Storage" + description: "Integrated Persistent Storage" + group: "Storage and Persistence" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: datastoragepath + label: "datastoragepath Storage" + description: "This is where Docker Registry will store its 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/dockerregistry/0.0.10/templates/common.yaml b/incubator/dockerregistry/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/dockerregistry/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/dockerregistry/0.0.10/values.yaml b/incubator/dockerregistry/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/dockerregistry/item.yaml b/incubator/dockerregistry/item.yaml new file mode 100644 index 00000000000..4a97e85b8e9 --- /dev/null +++ b/incubator/dockerregistry/item.yaml @@ -0,0 +1,7 @@ +icon_url: https://truecharts.org/img/chart-icons/dockerregistry.png +categories: +- Cloud +- Network-Management +- Productivity +- Tools-Utilities + diff --git a/incubator/dontstarvetogether/0.0.10/CHANGELOG.md b/incubator/dontstarvetogether/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..99b2f222679 --- /dev/null +++ b/incubator/dontstarvetogether/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [dontstarvetogether-0.0.10]dontstarvetogether-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [dontstarvetogether-0.0.10]dontstarvetogether-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [dontstarvetogether-0.0.10]dontstarvetogether-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [dontstarvetogether-0.0.10]dontstarvetogether-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [dontstarvetogether-0.0.10]dontstarvetogether-0.0.10 (2022-07-20) diff --git a/incubator/dontstarvetogether/0.0.10/Chart.lock b/incubator/dontstarvetogether/0.0.10/Chart.lock new file mode 100644 index 00000000000..27a4a21c780 --- /dev/null +++ b/incubator/dontstarvetogether/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:03:27.859155805Z" diff --git a/incubator/dontstarvetogether/0.0.10/Chart.yaml b/incubator/dontstarvetogether/0.0.10/Chart.yaml new file mode 100644 index 00000000000..98d5c52161e --- /dev/null +++ b/incubator/dontstarvetogether/0.0.10/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: 10.4.6 +deprecated: false +description: "This Docker will download and install SteamCMD. It will also install\ + \ Don't Starve Together and run it.\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/dontstarvetogether +icon: https://truecharts.org/img/chart-icons/dontstarvetogether.png +keywords: +- dontstarvetogether +- GameServers +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: dontstarvetogether +sources: +- https://www.klei.com/games/dont-starve-together +- https://hub.docker.com/r/ich777/steamcmd/ +type: application +version: 0.0.10 diff --git a/incubator/dontstarvetogether/0.0.10/README.md b/incubator/dontstarvetogether/0.0.10/README.md new file mode 100644 index 00000000000..74bbc8d808f --- /dev/null +++ b/incubator/dontstarvetogether/0.0.10/README.md @@ -0,0 +1,108 @@ +# dontstarvetogether + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +This Docker will download and install SteamCMD. It will also install Don't Starve Together and run it. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [dontstarvetogether](https://truecharts.org/charts/stable/dontstarvetogether) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `dontstarvetogether` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install dontstarvetogether TrueCharts/dontstarvetogether +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `dontstarvetogether` deployment + +```console +helm uninstall dontstarvetogether +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install dontstarvetogether \ + --set env.TZ="America/New York" \ + TrueCharts/dontstarvetogether +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install dontstarvetogether TrueCharts/dontstarvetogether -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/dontstarvetogether/0.0.10/app-readme.md b/incubator/dontstarvetogether/0.0.10/app-readme.md new file mode 100644 index 00000000000..2b5d755c520 --- /dev/null +++ b/incubator/dontstarvetogether/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +This Docker will download and install SteamCMD. It will also install Don't Starve Together and run it. + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/dontstarvetogether + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/dontstarvetogether/0.0.10/charts/common-10.4.6.tgz b/incubator/dontstarvetogether/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/dontstarvetogether/0.0.10/ix_values.yaml b/incubator/dontstarvetogether/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..7e4f75239ec --- /dev/null +++ b/incubator/dontstarvetogether/0.0.10/ix_values.yaml @@ -0,0 +1,59 @@ +env: + CAVES: 'true' + FORCE_X64: 'true' + GAME_ID: '343050' + PASSWRD: '' + USERNAME: '' + VALIDATE: '' +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/dontstarvetogether + tag: latest +persistence: + serverfiles: + enabled: true + mountPath: /serverdata/serverfiles + steamcmd: + enabled: true + mountPath: /serverdata/steamcmd + token: + enabled: true + mountPath: /serverdata/.klei/DoNotStarveTogether +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + authentication: + enabled: true + ports: + authentication: + enabled: true + port: 8766 + protocol: UDP + targetPort: 8766 + main: + enabled: true + ports: + main: + enabled: true + port: 10890 + protocol: UDP + targetPort: 10890 + masterserver: + enabled: true + ports: + masterserver: + enabled: true + port: 27016 + protocol: UDP + targetPort: 27016 diff --git a/incubator/dontstarvetogether/0.0.10/questions.yaml b/incubator/dontstarvetogether/0.0.10/questions.yaml new file mode 100644 index 00000000000..18baa00ce67 --- /dev/null +++ b/incubator/dontstarvetogether/0.0.10/questions.yaml @@ -0,0 +1,3101 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: GAME_ID + label: 'GAME_ID' + description: "The GAMEID that the container download at startup.(httpsdeveloper.valvesoftware.comwikiDedicatedServersList)" + schema: + type: string + default: "343050" + - variable: USERNAME + label: 'USERNAME' + description: "Your Steam username goes here if you want to install a game that needs a valid account, otherwise leave it blank (ATTENTION You have to disable Steam Guard)." + schema: + type: string + default: "" + - variable: VALIDATE + label: 'VALIDATE' + description: "Set the Variable to true if you want to validate the installation otherwise leave it blank." + schema: + type: string + default: "" + - variable: PASSWRD + label: 'PASSWRD' + description: "Your Steam password goes here if you want to install a game that needs a valid account, otherwise leave it blank (ATTENTION You have to disable Steam Guard)." + schema: + type: string + default: "" + - variable: CAVES + label: 'CAVES' + description: "Delete true if you dont want Caves on your Server." + schema: + type: string + default: "true" + - variable: FORCE_X64 + label: 'FORCE_X64' + description: "Set to true if you want to run the game in 64bit mode or leave empty to run it in 32bit mode." + schema: + type: string + default: "true" + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10890 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: UDP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 10890 + + - variable: masterserver + label: 'masterserver service' + description: "Container Port 27016" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: masterserver + label: "masterserver Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 27016 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: UDP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 27016 + - variable: authentication + label: 'authentication service' + description: "Container Port 8766" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: authentication + label: "authentication Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 8766 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: UDP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 8766 + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - variable: persistence + label: "Integrated Persistent Storage" + description: "Integrated Persistent Storage" + group: "Storage and Persistence" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: steamcmd + label: "steamcmd Storage" + description: "Container Path serverdatasteamcmd" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: serverfiles + label: "serverfiles Storage" + description: "Container Path serverdataserverfiles" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: token + label: "token Storage" + description: "Put your created clustertoken.txt in the Cluster1 subfolder." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/dontstarvetogether/0.0.10/templates/common.yaml b/incubator/dontstarvetogether/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/dontstarvetogether/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/dontstarvetogether/0.0.10/values.yaml b/incubator/dontstarvetogether/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/dontstarvetogether/item.yaml b/incubator/dontstarvetogether/item.yaml new file mode 100644 index 00000000000..41651b89e83 --- /dev/null +++ b/incubator/dontstarvetogether/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/dontstarvetogether.png +categories: +- GameServers + diff --git a/incubator/dropbox-by-otherguy/0.0.10/CHANGELOG.md b/incubator/dropbox-by-otherguy/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..4bd61b40561 --- /dev/null +++ b/incubator/dropbox-by-otherguy/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [dropbox-by-otherguy-0.0.10]dropbox-by-otherguy-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [dropbox-by-otherguy-0.0.10]dropbox-by-otherguy-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [dropbox-by-otherguy-0.0.10]dropbox-by-otherguy-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [dropbox-by-otherguy-0.0.10]dropbox-by-otherguy-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [dropbox-by-otherguy-0.0.10]dropbox-by-otherguy-0.0.10 (2022-07-20) diff --git a/incubator/dropbox-by-otherguy/0.0.10/Chart.lock b/incubator/dropbox-by-otherguy/0.0.10/Chart.lock new file mode 100644 index 00000000000..fa8b22dd64b --- /dev/null +++ b/incubator/dropbox-by-otherguy/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:03:32.125276974Z" diff --git a/incubator/dropbox-by-otherguy/0.0.10/Chart.yaml b/incubator/dropbox-by-otherguy/0.0.10/Chart.yaml new file mode 100644 index 00000000000..8cc5464ba56 --- /dev/null +++ b/incubator/dropbox-by-otherguy/0.0.10/Chart.yaml @@ -0,0 +1,28 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - Cloud +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: "Dropbox client which syncs a local path with your cloud.\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/dropbox-by-otherguy +icon: https://truecharts.org/img/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/otherguy/docker-dropbox +- https://hub.docker.com/r/otherguy/dropbox +type: application +version: 0.0.10 diff --git a/incubator/dropbox-by-otherguy/0.0.10/README.md b/incubator/dropbox-by-otherguy/0.0.10/README.md new file mode 100644 index 00000000000..0c9f2f0c448 --- /dev/null +++ b/incubator/dropbox-by-otherguy/0.0.10/README.md @@ -0,0 +1,108 @@ +# dropbox-by-otherguy + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +Dropbox client which syncs a local path with your cloud. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [dropbox-by-otherguy](https://truecharts.org/charts/stable/dropbox-by-otherguy) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `dropbox-by-otherguy` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install dropbox-by-otherguy TrueCharts/dropbox-by-otherguy +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `dropbox-by-otherguy` deployment + +```console +helm uninstall dropbox-by-otherguy +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install dropbox-by-otherguy \ + --set env.TZ="America/New York" \ + TrueCharts/dropbox-by-otherguy +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install dropbox-by-otherguy TrueCharts/dropbox-by-otherguy -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/dropbox-by-otherguy/0.0.10/app-readme.md b/incubator/dropbox-by-otherguy/0.0.10/app-readme.md new file mode 100644 index 00000000000..dee4e7b318d --- /dev/null +++ b/incubator/dropbox-by-otherguy/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +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 + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/dropbox-by-otherguy/0.0.10/charts/common-10.4.6.tgz b/incubator/dropbox-by-otherguy/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/dropbox-by-otherguy/0.0.10/ix_values.yaml b/incubator/dropbox-by-otherguy/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..6b69e8512e3 --- /dev/null +++ b/incubator/dropbox-by-otherguy/0.0.10/ix_values.yaml @@ -0,0 +1,33 @@ +env: + DROPBOX_GID: '100' + DROPBOX_UID: '99' +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/dropbox-by-otherguy + tag: latest +persistence: + dropboxsettings: + enabled: true + mountPath: /opt/dropbox/.dropbox + dropboxuserfiles: + enabled: true + mountPath: /opt/dropbox/Dropbox +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: false + ports: + main: + enabled: false diff --git a/incubator/dropbox-by-otherguy/0.0.10/questions.yaml b/incubator/dropbox-by-otherguy/0.0.10/questions.yaml new file mode 100644 index 00000000000..80879b0276c --- /dev/null +++ b/incubator/dropbox-by-otherguy/0.0.10/questions.yaml @@ -0,0 +1,2213 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: {} +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: false + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container 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: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/dropbox-by-otherguy/0.0.10/templates/common.yaml b/incubator/dropbox-by-otherguy/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/dropbox-by-otherguy/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/dropbox-by-otherguy/0.0.10/values.yaml b/incubator/dropbox-by-otherguy/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/dropbox-by-otherguy/item.yaml b/incubator/dropbox-by-otherguy/item.yaml new file mode 100644 index 00000000000..05d8af2ea1f --- /dev/null +++ b/incubator/dropbox-by-otherguy/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/dropbox-by-otherguy.png +categories: +- Cloud + diff --git a/incubator/duplicacy/0.0.10/CHANGELOG.md b/incubator/duplicacy/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..570bca94b64 --- /dev/null +++ b/incubator/duplicacy/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [duplicacy-0.0.10]duplicacy-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [duplicacy-0.0.10]duplicacy-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [duplicacy-0.0.10]duplicacy-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [duplicacy-0.0.10]duplicacy-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [duplicacy-0.0.10]duplicacy-0.0.10 (2022-07-20) diff --git a/incubator/duplicacy/0.0.10/Chart.lock b/incubator/duplicacy/0.0.10/Chart.lock new file mode 100644 index 00000000000..8fc104c0c80 --- /dev/null +++ b/incubator/duplicacy/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:03:34.922610888Z" diff --git a/incubator/duplicacy/0.0.10/Chart.yaml b/incubator/duplicacy/0.0.10/Chart.yaml new file mode 100644 index 00000000000..4f183d6dd4f --- /dev/null +++ b/incubator/duplicacy/0.0.10/Chart.yaml @@ -0,0 +1,28 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - Backup +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: A new generation cross-platform cloud backup tool. +home: https://github.com/truecharts/apps/tree/master/charts/stable/duplicacy +icon: https://truecharts.org/img/chart-icons/duplicacy.png +keywords: +- duplicacy +- Backup +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: duplicacy +sources: +- https://hotio.dev/containers/duplicacy +- https://hub.docker.com/r/hotio/duplicacy +type: application +version: 0.0.10 diff --git a/incubator/duplicacy/0.0.10/README.md b/incubator/duplicacy/0.0.10/README.md new file mode 100644 index 00000000000..e7201a29b26 --- /dev/null +++ b/incubator/duplicacy/0.0.10/README.md @@ -0,0 +1,108 @@ +# duplicacy + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +A new generation cross-platform cloud backup tool. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [duplicacy](https://truecharts.org/charts/stable/duplicacy) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `duplicacy` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install duplicacy TrueCharts/duplicacy +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `duplicacy` deployment + +```console +helm uninstall duplicacy +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install duplicacy \ + --set env.TZ="America/New York" \ + TrueCharts/duplicacy +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install duplicacy TrueCharts/duplicacy -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/duplicacy/0.0.10/app-readme.md b/incubator/duplicacy/0.0.10/app-readme.md new file mode 100644 index 00000000000..2234e1334db --- /dev/null +++ b/incubator/duplicacy/0.0.10/app-readme.md @@ -0,0 +1,8 @@ +A new generation cross-platform cloud backup tool. + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/duplicacy + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/duplicacy/0.0.10/charts/common-10.4.6.tgz b/incubator/duplicacy/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 zcmV)UK(N0biwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0POv1ciT9UI1bNieF{8GdfT40uD0bwGuda|j??YaiQ{8C>EG_` z90wvH31f<21E3sDI^X?&a3#QtMETa~8FObl76}vzg+f)KP$-0CJ|{`{Xa*_oEa5!< z)BQiaUavRY+mrwHdcESmz2R>EPyM~YaR1<7x8L9UQ?EbRJJ|gb=sf@~r6*$?(m(a? z+*Yx3e~<^J_#>hWlVk)IgBDCv`!j|dG2V(03n@;yeD@|xLh%=f@t8uo1QSBRCC!jz zAl90ZIU0c(=P4U?yHm_(*|-yud6&}+g|bW+rYY-kicohB8Ar6M-z!#Z;ZQVWK)?m$ zkg|>fl`%v^l5mu82{r2;4EK7ygZ=&1HCo;f8nIEU4f4iXZG&lBzG$_9Zss~0Biq&Q z|Lax1(;s$v?cVpTIm8KvI6+hbLvx7Z5x~iW{C5txL+G>xKmtX79RdK5(KtuHP(c;f z81Q9^Mh3ms!r;>Hb@n>L)+3F-p8pFNXNWzJ09ZNy`~AJ%-d=J3AMEZw&Hu-Eo`H57 zyiZZ`@$3|^6oq(#LlBZ=f~OgUVy?HIf&Y%s1ZFW8g)a~SV-%B{7D-XENRyK}oT5<+ z014|t!dL=6LqHb*VT@720Tu;Y08o??hB=|j5tzCOikiX94j}bVToDzOU5fdG1Noc=dihj%>jW(tF z4W?)+D%R6Ihux6m7G?uzE}<9wPOmfQ4f?&8{XIkPK{$S~i=vmqy>NdQ_6E^ze+>6v z?*R4o5PY$_5BK)MefVS!Skau@?Fo3%+UckZb@L&Sb-iu-HKoE7@+uQ3+Uhcv@)Ps9r zZ#Z~~CQ-j1jSr$h|3$dlJBVJs3>&n)5p@&9*^CgrDRoV~dg@xp4XJC&uZLAHEQb3p zU%VVl`omp_29v?y<^I9oAnLt1nCzk6UWmd$)F1SEgYd=Pa2WN&$z-?(_xJn5@p!j4 zp1=le*HiZ}zJW`o=^By-LZc5p_W<701nYISski1TnMi4y~-s|k=EIfSiB04~5 zupjNiy#YFS5$%pAdk5j(aMFu*2Po_hU%Z^`@9(~RF?}crhFg#s_=haQ9$5*q=l%2E)C{LA9pynr=$cc@}ew6TD(_ z%OY)2rYU*y8ddNpiZH97P_NVL^bLXb`u!LCQHWq44JSj`+ue^|^j`KNxYvUy42N*| zGDMT%aQw0#h5g;#0esmDUq*w$i(x<79UiP}xG8<6F&V=+rwif$CV(sur8q)zQKiH( zn&8iXOysXg7RO=%p_d)+b!iWZD2Eb`DUxMCgeHPuf`@?xP+1d3kt_#eps)im9HW?Z zz)vWi1CHjYl$0QZ2^b@gF%)%LK$jYUFJD(fgGoZToK0&%Iz=VimRRyp632*Ilu-i5 zG14>Nd=-_|hiD`hfko2fMS)m-b>#PtFvbxea)rwPq=IT`OqO$$@Es6AG$#o|91sc^ zha63^m?6P~Y5|uQt|5Ta9Y7L^M_#Avfb80~d?LKXjE}(I{;uHbH76r;q`Bc406;F_ z)LZ$di_6_HSTVe6{5JrrD%`bCw`|t!$Z0koBPwQBgcznM0x5}@l0z{LAsd1I3I@v3 zDTNUNj8n+bbSaCzAr!o}$gmyJ2OO!MDBe0pAw`fQu%$K1Hh@V4&Pg2OWcneEAlG~; zU|s0mT%bx|?~~UkMjVwvXiIwVdCZfMFS(Dgg4YLRDvI3w2XSxsh@p|7E4cxf)RcgrWszm?U6^nNT$# z#&fAr%!i-U`?uot2<*06*wbN3(C4bk*IRz6To3v0Yt@7{Mx@pR7br#{CltUqCO1rK z1q9g=q&U3B$rL~k;mHKid<7ceknaFIPYLBP;Z~7c938$r20wl{QJpc6M<9^DgO+aC zXa>#e^EphSEw*jp7$Znb1L+}a=|XZUSHOUD%2w1CpPj0QQKV|%#EKZeiGh^KIR(V< zkCz5or}Ye+Q9Oqf$IFTiqtBeeL%$ut2S)}8aEa&WpCm!8%l{pL50^)+RtkAIJ4pz~ zlciQ9El&)jvcV;gbdIeP^z`sTwcJu4irQ+55~M6jqti72Wo^!3>MF1ajG2{rma1ov z&p^h+_|JqET|kOO1tv?Tkk3Zo`|kIpdZM)%VSGpN(PubMV>A+kRKOqzGsejroSezJ zqU;FtUk*C`;fv02*cn!Wgc;#;$Z-hccnPME&ybL$IGIw!nCzddr(c{A%12;096AJD zttwLzwNertR;a@Y#Zjp?TF;!unzW#-j`iA3*L>@1wB~44D>DzOgUV~f5uM`%F>o_O zg3$R)Qd34$1vE<-xWRk|E-(Mba8swn`O>h|Ex|D!;UotrfBGQh`~^P|ivKAf#o&xY z;4tHag)m06u#Ea^gqei(U#*#~az>)Of|x&Zh!dp;N)to#qoYx-aT3X?1?g03eNn`1 zQ$Ujh7N1n9pK%g7ibk5vdUmP;DDrK*1~46XbDZFLHV1G{vV;rB+PwIl3DL$~uQP4in%`ByUj!FavXCh`|K(3($7JT(rqDRe%GM#LH4C2?Nq=6amN#UaBGe!>F&^ zkWwBFXVyal6lgjDHX~Uai6xn`Rimo;mxFX9rx-&RMMh~C0Lv<+)t!ZNIYZv`E271T zSRy)fObD0OfUthGRV{{yW@raM1qw5xby1`>ox7H{i%uH$wFtmi4g% zMwSip->y#d!1x+;1%#58-vArasUl4MesknpDwW}_M)f?CLsH#gDn1q}y+#wM>yT_{7wx#E<``{p?*OF#)i2uWx0>;?>ZSB! z1wmZ{$k_5R4lz98Y4IV?T^QfD*PFX#W#V z;e4e3*3P~lnuTdlQ+G^ztEw_FnL|?osGlciNA6Aovy}j7gTO4mdY%5D*B$H?DxZ^# zBfm<77{>`z(K?qm*ZOlV zMneqEbv8ycK^zHshZJ!z!Ibe%OZ_@d7S8m22j%)Hf zho6mScGP+X4!40>q(1{cY=g7Ii;G`gkHGg|zJSg-l1$MNateI?`hDveII=}ry7y|O z{SKx-qvbi8*!M>HtMBbOOxt$lCZB7x9Ety!*RM;U<*M!tC36R;B15Sy)0+BRXsO(m zd^#OLljCi>y1e{fuVq7)H!Dh1(+QbTLdinnZ&tCESPu4eWNPcql#052EEwmKVTe{A zRsc*WnM+TW;UZ_BLe@A{E@JJ&Xy=7I5iUg0YbC+8HL3VhKp!K)$SaIn&nAT-&tME9 z$e|EOV+3LXBWa{rJ6FPn3@}b{GJOp>)G&@1U@3t)6TLy(3uwE%qp>YS&;Rx}iY9;m`<4m$ z%vE9slWs&p)(uG#qLj0)sn^!lBu=K{V}e57hN<*}$ZocE!R|8{hKLEaZSxs2ueV!D zTwSQ2Z*g+Xd@eMO>N842ePL!%aPk^#oqafYy)AmyUO>^0R4$Fn<(su~7?ChuRox?!aP*mXLYTrajxon#Kr_y8WEb^6emD_h z?7PdA$T@PV2{a-~QayYya<>@rb%6Bs>(+s8-Yy5ulq2=R$4>5ZWyv8EG%>xDFMgyX zOU;{!|C42D8Y969FqR(-W9f27Ga&`dgnXZz6T;tNHitZ%ZHBdUC+1rutc-n1@dC$a z>Z&U--`*$jQndR9$4JS1y9+M2kj_lKV-~_#+lUr`puj1Sh}&vmVMM$!Sv@K-o}h3U z#;C4iwt%DlE~U}wxS?-w91CuvS+XP4D@*`RFt;Uk00d%oi1~}>2tW>S!Z?g$>GSBc z^e?;H!|u5?B-Sb@!ZJJ{Q@fFx)8)dh)6)CIl^B>f5|}JyOL-x=iWN8rLr92mx&)Y` zIqQI9(WF<}IP7L{fdCfL{3a3hqYzKRfGNNbpHyEXvj?DpT4{vn>fj6?$(o)x`z2xH z4pmiJ)vr}p=CCSpJ)>ldN)cY|b`w#~A-k3WU9oyQB~jbr>%5Qg0wrR#EhZ+Ge=!az z&(gN?>vgwR#hs4Lvaa0*Z#5|85G>$bbd={%05CX|O=C4dU9i3ptf#*h{D7rN^GSUA zB#aVaFx_A_Q*L`T`b&~gIYg00phFJ$ zY-E4gm4l!Qm|zq~hN)F&bqGgsW89;f>2K zq){d8I?e$S^N}{KBqSKWMloDoppYaH8-adLe@zj^QppzH3kgXwZa?hn_Y;WYjH1gK zMNA+pzT|Nl5yZFRbvw=1XQ3x*2-d16t5s(2h!QCdB z+xR_CvntT{G0BRPX`tUfd!}6da|9CxFb6YXr-M2CEW--O1nmELxA&^Q-xI4+QCG6D zz!GFB7^4ZH!j_b?l2y;>`iVR2wOYzzhF*N3zx0v31v$8x;c%w5n{h0C9{C%8G4wqH z4p=ZpjKL|g>yaCZIY&vyG^gy;Rc0zh(peZH=VKeDxO+qBbxdH?rihV@hKO~A3A^Zb zpVOvr1R=$Dh874+DGbphi{s@ZVJ~r) zt)7+iRdK!Uti6nw+-Ogg89$VcfUEKctO0yjfr4Js!6-rz7^`)q4tuprNU@YBh6>$NjL@3kpj(7^crl&IFP}{&__G3UbgLRV%sfK) zCrTFaD1QCbZfsxRc^adww**FG7{eq)bbAMgpFilIJH{P; za<&6bNrcW+7^*QO?AKyIl5;Ad=3GMU$pqbjGfEbs(=|b@N&(E_Qo5PYuNkIF6xPH= zl@3eX60KVunW*oQ2DPF$aaAx(rNq%rY-Ky)WJ2g%305T<)|nKdT23IR$IcNg69I5Z z;beltLez*66gh`!{t!$R!Z?SyUS#u(6N+J+yZXCILbq|+-BtrwiOr}6b)4!TjgC73 zl4*=CI1I0Mz?sw%uQM3y7w2jm>>Cw$k-mX*950Q7+5u4rz{4q+h@#l+wB@>6I@fYE zPR3N$7}p}vtoG_XMJ9VKV-IBTTfWyPzjXZ3{gi|LBt}f1 zN=A`hmN~;8U5iNCw)f zp>xduxjf8q&#^A@gLfKU>tofbmBOz6mZN0!wr2}4mr{4#d9|CY0T# zBgK(os9PzfnsHNKK{QioLzX6aGsw<@sbIiezP%{2O9%WQ6t)U5mJ!=R zJSxr-BarF*+%wS7^NwLwh!$!Aip^d)uXk0`a{*El|JK zu$dGDdxbW9c+GmlB3QNJu(j0zzrqn$zp9sI2CO?C>({Na6eIv!OdUZm32+PY*dCk# z?y&+RxF&>*z!=h1oOWj}YdD5Fg0Cj{Eyu@huf8_h>jhlBcnP`5$~r5?-uP&dw_jlCxV>+E^Y5c1&Y*_VH*( z|M}C|j^KzLfaWP*zQ%M%E4-b2%I!#HC6lfQhLbT8&Q4OgaF%wLYB?w1R2;YcMS3bYQOZh1e2_SsBeP=jH{%U~-6JWVx_=eu zT#?BYpP?&N{l7l#=%V_Vh$#7e`+KcIncLDhX_K_?gpN? zVDnuDSsg_(fUB*7xJ6wP;9io-8#+`}d#n8^7o1QyMc~MuzRIPw2SECdbU@Ij_NN^X zEfYA$p)ku-HYs(o#ZWA&s3uL2_W!=QkU=+2ERg|$XoV9&_p1y~%xON8XRTs}6v!!F zpad}0E7hrT{Vb6lV-$fc2aW9=kPxq`G(u$nlH3RulVwJ%f1(O~)rbp2EuPvgZ|iuZ z8>kXJP?X7&Q2>3$OtNGcLp{R8cmB-xeToGf}X4zOS z8Z=sJHc^tosXnpc$-zT;KIk2Bvql<;$P2vsE_Y=TZOBXOSb_j^5+OTha%cZo2mk5e zQ{x&T`v22FH*&%&7~LGhw!)B^gHCOM1ye3~XuCE7=Lkl>P|VSLVX)@im&Y@0Dj9>L z>4nfVh~--rwX|XQpJ)VLzI^#3F8UIPT)QZiREIccN~&imNx&zWgDXq)F_TYPREdHW zc~X3@pNR|fj zauRmV#L2+m<`2^WdYZ$$rC?%}q+w`*!wgbkT=5%(5&&cOyhqDnj!k&OGK6d|!gPCe zAgn+kDkO-qt4*b(4dzAd)K!%$yhn2s;Y_+(1C?wj$h9s6e4b7i*g8La*B-<0TCkTr zakXtGx&~^)Bo${Gz=AT$!auDiM(J&(`MyJi_*6oWh)N8{fy9{WPo39N1v?(=7Q0S>s#h zi(_T3i0;9B?L60Mo$faB0-UgoSC70X)sE0&&Da~<+~qY6XDWJM`#waO^3t?p_i!|~ zL}=kyd1g0MnrJDabIh3ZLg)h_Gjfxtly$SY&Kk)OKg$c2mbew`e!bvmxazlOL&UIr zGMIm=TCUHRuif5UxS2sr#mi+Xy*y&|6V6b0ZO&D2y42nSA5(*q7$#?XEh3@J>8t&B zgc^s9PvLTYs)7$e5@Q1of(bk*Gpvd&{vG*Nd8Qh$uW@1Bm3>u@@1Kbc+$UE4omg2f zFLMsA<2zNbJvX^eS1_I9|NH|xB%S^~oLf?*TU3riH4+~+NU`1*bi0EC#Yh(AC{e#I z%+g)%_<(1*4|`-^0pp%iUX{H;&-tYG3g*kU$rV(?S7wK;32T|M{;o?se|Z~X<b z@0X*YwhDA+E(S6LN+9>=}4Zf!r4ZF=pJkX+o^gv$WKT^V;q+ z@fo^Me{azK;76=}d7F6Q48gRm-?e4zs;2s>kRWP{Nf10F3F8!EnS*~LgGXhQ#L2Xc z7Am@=3mL=HL}p$}NQAo25_#XDI#0UY62C6I)1{7tVgOF$v6!WUlS-GpaW20msF~K< zFp1hQ;ka$yY`4r`6-aWDl9)`F7pY+CqdQ`1j*H7v;_9flX`szy3+ zbNKn<8r_V*Uva|G6w&{Z>|rYYETsBhRW4NZ=!uCs+(`$3#6u z#0EZ?emK>#MD)w@82<6>!>CYa0gx}_wQ;HMO%pm#<@HyA6vB#IAPQsA|F*mXQ)i!4 z5i2%vU?k&kbga_KKuH)yHedY8mTh?E$Fo!2d8iv+8P39f-AKuW%<6xYwWCYdv*A_vqg0Yw}gO`orbA z!Q308cF`h~a12%Cqs|3v{G6h(3omnslr3$zZD9z5SNmjB$k+{`k=o=T+0-07Fl#64 zcm%d=9$U|RKcSWLs9Wxwc(lh@Nwu#nxh zhKByYgJP{>NK_m<>6-1?X_bJ~q*PMD%f_FaCV=4xh0wVJ&GGZfHJaz()k{FpD|PeY zMBUS9g9IhUdXc&C+;aAo!EYF0FOC=#B8gG5$i0T;TkSw895}xdC6btz!?yM6S+e-p zPGYsJQ>EYF*dE6zZ}L~}>D_8u#M{?fq>1?djzB?wO^960dTrnP?!xB#3#A{A&Di>O`6)NtqJ4(8Brkj1|r!U*y4L zxgveM3*YVpJcOLcyL&rv;naUvso@dNX;oh@EA8C;3RvU35-U?Ic+a?|+R{(hjv$Ba z2vc6%3E({M_m&lQzYaQ zO_+@`&Rwoyb(_~{2{^n)Oz=@Cj5w2D$Z1`*R>a}hM67EEvYwIRO?7Wn5_e_QqtB_l zEe9Kqvt;9hTOo|VCmdZ-20s~L?4hKt(8CLmfm@x5$F$g2Yu&l6-K~I@?+A;YHai5HBLKDfoIPiB#n&(OwnWn z?l+B%*MR#YPiq5qhyC7x;sYl~ONkE>n^R;1M##5R>T)1}O|l>q4ptV9&;xxNn;N># zssr&A$J|Bjsw3-Cpl*6%z4pwyIgGuTQI=9N=Mcw^MV1?7F_|j&7MtM|nCu`ixyBn< zYO4(<)BY-R$>P}5RszjUB@4UKPP(O8WP#qwD6+L5(Ij$6TxAgDc8Yf)qu{U)=Wj)~ z-;!%AKM3w9CzMuMAtdum?a5DN0_a*kY~72Pn1g*b>4Ua%M1}63JEB14l3jP)xrnE? z*~CZ?XEUNsQkscDNhWwezE13YS@K$`8_Z|Y=r|+My-f~-!>Y+)@qCDdgav+|v%>{&~v0%!RqqsoLXkI@OUOtmRcm`G=J!cA7D2&E_yMjJ*i+q_#;RBP5FS@dx`H5ZH>jW_R>uGp+&y6_`+ zjU-cYtFEbv4ZEfaKW^8;7>Cz0A_{NZyS#3*4(8<_w~vg(bo1VcTFv?;Ne`Fcx^i!}dsV(PyTjA?c5U=}z20zdPyXBM^@{)Y4tD#0>hBGP`v(WR{r=vc zdV^lSH~16i-FIiJo{Vuw|J1v4TgA@(L7p#Px_@p-Gs-3slIwaMBr%RNlv13i3{=OO zDS+h)dwa9Gl$Y8Y{acyM2%&fTKb&-0f9`($+WPXv20sQo>?jWG$i4qgne775)^+d% zfX+u{fKOvGhH(dfJ`ziPbA_fZNMSNX;5kkr^mzw7#}d)eD_a?VJ}x!m-NFt8q;|XA zf+^Ok{SgSRU$9P?;7*u?lMW``ML%d=<0KjZy#abCZ>|>>@oSrVxiv=|st`aEVUItz zzkC7Di}!HLml9{uy16Mwr?8SYck7;f{rbJ^CQ2gH~JgS?-*gL`|sPT!Ts zTUL=yW~V&lGx@%oztasDK$&q=efavd1%Ug;9Z<1m_vG-Dc2p?jSL3}kOd(!hrg8p3 ze9}F91-9gk`L@t=u6pO zsD8?W&d{u; z^Nf&d0a0HVA1wL-2#(BQuE1?K$ZG_7zfi*IG9|*$5FNWgW9cwN<*qp;Ew$Y0uPVzG z30W3My4O-dIFQ}R@M={Z(}-rt3i`NnW=o5Ja+p#-mMRe9T;_j}kZz!#9q^cQJ-U!Ozr_0N;f&|FL zsFtEZ#pLy+i-(vyZe{7oW9E0K&=?C=4xSl3m_%T!$fa^Px4~BB*g8y6kh&E>o|i;H z&190&&Y^)8iB*8*w+g_*{PyhcMPFOnR<2ao)(U9L?iWf7K$T9H-viJAzkx)|p@f4y z(XfG+?-L94V8=stN^Lb-wecJHH6vUPy4sDFb;MBn-{cmF{3d$seN)bsFOE?DZZYb1 zzgvvHTYR?&928We3cLce?SfjpG$^hTYV7|IQQo~0|5YBRJ1qp(*#Cq6!EV9+KiKUL zpX~p~cvji}V)#2MNJT9Il&*GikxNsyG`G}|mPr=J;x94B+ODX0FI@&&3Wzp-B5{PM zEM&#v46>imvc7QO=I#u1T`g`L1Yddcscrrjc!la3>9}nOBT0M;>WkZa=V06EjB9N+ zLC?qScCFg^E&lZN(Ull9Ce}Y7a6#H-Ob$9QvfAy=#?%cYf~pgFZ_L83fV_jcW06!X z${ZGj3y5Q}`Us>VQP*N97!rs<@&A(V*#9K~2-@wo)Tfo|MG3qL-6G_+(=X+*v0j{W zq|%)#QrmEq&6JM{nJV4)VU-e(Str!`Weri%Y#ih8XS7sA`3-P#A@K8NH5BaRs|99~Fn`e#w-yIBx1^qwV-932H|BvxV|NlAS z6r%-_v65Z6=O`qvbEyZw%n6lQ@5e97W!HtcUXfW(m%b))^a^YVSvk)be~nOjMAD_> z56e}WE*~gd1T1}9si)n3M$1!anCSBBG0GdWyCjuezS7aS7IZH31WnBkMd6}6bpIBL z%N-ac&1KXv@dl>hP&nG)n(Bj&^xK^(~3#=(}%@dUqw(1_Hp& zXMhucKOf~^Su;xJ)1!in9s5$-{)PnkmV?tE*fO6>1noG4bZnFDwUf;4uDtTd#LcN2 z92#|TP1l}l+$7)Jz6bdNX*H2-b6)#)2V}FlcmnD%wo}-!qpaR>Nm`bKx{#hPaP}oIuZWetNc8~t&G8S`@e%y{6~MV|Fr-6D36N&Fh-5MRgzS;)yWyIa`##Bs8h=BJ{mto z_s`%^UMX5Su9Amg>u~4%Mut4S1CSVMheuwc+TB$|xnnD+6~0g<{{!c-@8EL4dd@3r zF*uzq;}^(A+b*3-06kTwiE^UR=k{VJdnU{ragjN(Jp$-+Y7Ki|0BhWTdB-)l3YVSZ z4(YAvgfp_bUY>b8KeylyqAsy%A3oaDnk&arLtj0R?oCyJYT+8?;RBk51LMC6Y$C4! z1a0wpnTpryFns`mg@c>MV0#tSqVi-gaTN}wR!%b$0O3zJJBIS($K32$2d9Q$1xN)~ zZ%`Bt6#!~nn;LFVXkps}Q^6ndJX$BOUD0foR5rZXaF~#fro&;*%T*4C{@7$VOuIGI z^dYSq4h^CEXYd+vMCT^Sp*mpcU&Z<#>fopDui>LbXf_ud=d#;Om4C9d>9Aek&P8aV zf7bK23h;40NHp8!*p{oEJRHZTla6?4`-B)x5iLp8^$zF3mT;EBL? z#_yuxu;%kYBODY^Z#WXqW#}H=s(&2kMZdE z?}AxSJou+`4d8?!DpTcbV8OfQu$b6tGtD_-FAoZiK=9>@mCX6q6Y;U*B$4>~b+n=& zhg0zNYoK7BWpR8)VjQYnt-3m?EhYo6%Li4xL#q1ckCbGo_>Gdq$c;MJ#~N4b8B@qr z^Dv2QZK=)jUn<3bEZlZBBfY{}0_%g4?q^lo+w3dHDNP`bL2xGbGHnh*0l1szH*oT@ zR2@mJ4N=m6$=qctX;KK_zup1Q7s`KD>icy?hZpO^V01zW1IbJDVEOdSgz((fP*A}> zUZM$=L?-WCJ!nxsZ=dZOY0T0$CY+PC)v`? z!b}O_-40{3uFA}!4#b;$%=%rSlWQhRp5658S1(DboPM0hHL4q4Fu40sk*DWh@M&cK zvAe|puCf36gOdH%+dbHOvi~0AvG$)yZW=lnN!7SBYyGKopPN~KC3j%^5yW`K@x4az zT~)jLuz=w=lNM&Gk5$f+^;?S-V|u z0sx$-bnbe0>Z7?I^j6xz-Dr6X4Y9GIuXN$4iCeyQsgOqxZz57%2>!yo0IyLfenEMC zaZg5h_d5;thb`~ACVg3xvxYGzS_(^;Cs*zt=c$wbCXLsfoxcs_|8Q?ul>hs?y(jtq z7>||z^;zFGcm5h!)vjOjwaW2pzO8Zl`o)?!ef=7~%Xed+F90D-;TXr5W2B`cjG{bA z^y%^C)#2-RC#S6q{KJ-Ne@ySNWuW`=4ZHMsc+ap-tT~dEp1SxyH@)g32mhI-SB3sLvSC%=Uq$lO z`;Gdm(sU0T^OuunWyD`YW4vzun}oyC{!wmvkll8w}Md8? z*P`B~$HOn`*F;@eWE#g@DMi&0I{B5n;@Qec&mIU$QB9^ZrkI9QiWRDd=|>HfKjqio z%NvjGAu_8$EY`{){)4zc{;i+&`ri)cL-~LD2m8CF_@Cj^`tMPmI{%M*@6;pve@xRG zEg!4>KNUAq-LLnv!@x1&w|M0ZCCJL9MP)>-<;9Q58hT)q0JK?43hU_@GY-h4a$VhmNhE8+iql0xhAQXt1UK4TuwuD-$xqBV zrUzQ_>*gPE!EZaf@p_-#J+YJNF1zn!PEWe#n|K<@{|CpNp$^?_Ym-d%VG}v7p`` zbHiA$(0%O{YbreaHgU}+gJ}O6$MMAt=Hbk5?aj&g@h^vO-@2^@?@t4#$ocyZm&aFq zuSEY~(CH65y-u&&9|SGn-;<~AD^?-3WK3@zliys=k4LdydB;!SszI${zBM0re>31 z2T?Z03zQ(n&L|nnhP)R|;~m;-T6vggibnR|!{-0!4F{$D|GoXE`@bLMd6@hk#Z_bb zwh1{Jh@0oGxY;1G`*~et_s6r-tHTeMKb5ZIlgg!u;B6*!?OjQ~=W2M>{I~AtJ9+@u z&i{jQ{O|B7|HGp^b^gC!%-G+H2T+TQwQ|GR0IBxwh5d9;^TJnRO2ypvtL}`+)4{Dld@zxW*4u zDA&XjRH(9vFKB=GqTmfuZ|>|5$`>UU$7hG{INWofH%bs+#_&%lw@w@Cb^t5=mDs5azd-wceV0M& z;~*Y7_RGz*_iy9T+3YFVfAVgJ?$u9(;(rR=9iNftFylmCarYqie+|m{Kl;1-Px(I{ z<$N&W6I73oWN$oqcOaW370chC*5P8c71AGQKfE0m{BFItH${0?j zdci0-4a9g%AziLCBGvsOvlO})hCEki!Z*5iKCdj^ZhU3Et~*PishY!azB?B^n!8_8 zSO^m|_t{rph~l2%_ip?&fSfC2bZf6Hj>X$w+&k1g({9VZGqP}#&$hkY(YyBETh$s$ zyz;Mo5ArW7U^s%S=nFKQgp+A^G0=X&8WB`;GrK`RHg%Vjyu$JnHDzm;lIQG3h=+5U zvhG4{?O7x4RC2@ zC)DZxyJ!8$pLP1bU(EmBAMQQf|MNJ{M*1Jd=Iq@&nAYojp~rA?JEdPp9&``d+akQ7 z4)@P5-dU5Ek3)U~`rM~YS*!csZ>QUvW^pPsX2Gf?26IHGD8DjWX>Ug#ML6W!mCk&3 zzt4F6x3@hzL9Msa7;NRMuI=&$VL?sQA_tR%a4D6WVd#{vM$;*fYuXL*RrIzv8(hWf zysU(2K>85t)}Bw{yMO4XPXC*$MepJG-x~ej@9zzJrSpGJ`JW!=*;xOd=(}PcMElz- zMej-XYj_)Ke)l@uJL~=8-MZg^)_18=*7@$&1{&W%@Oet{9Ma{5zT$WE3QV0HaC7r- zrINz0wEs1r?i-n#u1;E?ex8U=wYVLGD7;XWDyP%6)RLw-| zCsO4&c@t{>)?1JlTjA(*5 zVj+!!+-X?cUvG$xMdhvy=W8T?y;K;+dEE#Whh<(lBJ&LgW8Q2W=BtKaeh2E;w_i*6 z4Vo*{ydY33hF?m{x%a|KtabFN=GZbUOA9e7t0vKk23b{O+ok>%eGk0ce96VQva;2Z*iQk!A8pEUJC^B1zYg^m4|pLR7i(I)^ED z-j0yDNE?9CO=kts>He>z$%7wyrQTtNvAb$Ch%hofBCirupfQ!#nU`v<*FoxkZN}`eX zay=628UyTZSDGi+e1_1ax&X-A3`%bSNV54DQB^&^Cco4V&uS`Qbh^HMmNVAcrivu1 zn}YwszV15zuMR_0;n8>W01rm(LJ5b%$U3dX=j; zgo%3?5NKDgiu+&h;njSVO2GH#=k>UCLvOEF_kMi7Wstdi`CUD~WjdApisdrR_kGox z$zvXGJ*HvfWZJoYA(sJ*e$CRVjK;UR!1`nD1Dj<^N}>xCqmUCiDlZ|NuZ2$5mQZEn z1p*3}S}fYWTR_*ILmtlFHVxeCFx~juia5Suox{oNpq__CqJc5%s@Hh_B?u82MsJ7tc*qQBR#< zsE6dXgFc5S^=wP^rfSK&qEg$tfUD9t^+#*{8y{ii{8Jh_{9+^!LgJyq+gAUYs{C#Ne*ZYlnMdXA2_hf zq+f@gONbJV&c~*Ry6`r~_7<$;3j0P(<5VcKOX;J}C?(HO!W^;{^cJXCHnwXEc?&)> zXmz+Y<)*s&ci^Ly6xxV`RzkXO-YM~tYdGjlO7_BxNhP7rxL&arcFI*>Uwd(Rp zwx!`!(q7`_lm2?rUr+k0vGjS;Ur+k$kF38QQ+<8;T~a{R`G3UJM>g@>^ zTCFaYL(6^2m26i$XH@M;HqE(oBGk4`5r;SdRZiP_r>oONU0;(mn4x&yVY99|^V!y0 z9V2j!P}-_c<&Wn-ZtgIyaB zog*0iLNQ10lMn?mDWkJ-@8#qG^0Fi3gv2mTs7znwMC&m8Pp^TOFJJzMgPK4lTPa1M z`BdG1_YhWTY^ugU?e*O$R+ZQo zm`q4d*FJnZPo4co$MD_^z;*WD{$9!c+uM7x{~qPp$o>;d@gM-CKwH15UIgH8BiD<- zWWxXgNtJtv8?cb_rRnb)E?|jKwh!&6+Z_s*;ss`0W)zYpixUu_kBi3{H^T+BVIkk# z*f+zJk{Ia}M=-@Yy=mmKBv>k{*oX3-zP&aJcm?s(;c_pHnR)7#rG zp8xOlpYDHrlxJiApT6AhK^%VWbrJVq%Q>ennp<5+KacWk ztp82Uj0Z9RB=D8He(sULyX^QCj}~sU+t>Qy96Yg{Ts2zXih$b*r&K3t1Ij?jn z`5HMT{iG4j2hgmwle1t=$qF{B!K*;0*r{mf;J@>buPRk5UJ{(gH^ zh1Eb+9@QmiFRKsa93?(5|B-6 zO~3NrMNVik0``ZE5&e=MHxT-3$H|7_SxVj@idQ;!nTFR^nH6kOgN~coKy8@%Sr0n- zOZT<__pUClHET@xA7wkMBe!d zWQ*BUDj|4nl{mUwj{;u#X)y|c|$(h?7_gym+bCb2!$f#XY94C>= zfz@WtFUAJj*<3-Cb zbl7MGl>zxg`@LoqKYqK);(W<=W0q>`%{Vtbsj;Nt+GjLg11_dLWd5@ zf>Ln|ZV0`O35?`b)f-Z%V=Bv|AA!3mWG|ukY}Y6WM|1*1#FWP=qY{V=Toc${zhIq3 zzY`|76DHxLgGtw1A}o9U4}udA?111Fuy0M2Thb%=9go8PTRyAgzn3Tb4hmqM{NLR@ zD9ZnX-KYGIkMgLA9LMAa{G5%EHopKTV2l7!)>?#;&Z>!AnNR&Xhvw=7<1*+Rxs{xz zI|cHcls}b%ALsdbnW=(c{LJa#G%(}Rf+*cvZEOauPsR!SM4n~CQ5#d zNV~XAe5(Zf+p9^bjcl4#-G}m|JvMk&$$#y7y>kfII{ClXFXsOp?(aUue?Q9O+W$K6 zWnNI9G?1VLQi~9m}{3WeyWKMNxaa^bea{7Dw)Rqm`?onl;hAt%z2d z{x+M^-FT)nwCzfAT0c)MFF6jsa&??A4wI^bKgG`d-m~%XpH=c-k@msw|K9Hnc8l_V z_u$F@^C*v;&Bvcpm_*WWmI8uIl=EJ&!Kz8@&OOH=t|Zy1>+V&TdwI5@@q>RXB%$zp z%N3wrfh`-#Q1Q7SPF<(-c5M!>d{rVPz7!3%6`LsDZKk5>ZSb2gNs|x^cjcdWevwTk z_%jIFWxs}$qpc&kV*;SXV3Ni068xIM7*DW}sA($4q|^EZDd@617j1~~VPK3xm@xzx znIpM|Q-V*8yy$+{hyirpDC5O4Ix%sp{j30#@$ zN<|8sXF9l^`&5jLsa~vC+g`h52;{ff+!C0L$!Pm=0hR+)JH8GrCdO2lRF^3=;8)7; zdy^MK`Y@g+B}gmM>e-p7sx_OBK+i{q(S=~tMxkJG$?SUOs8Z6BSuZ8EwOjBQIDK_Q zkN!KiIw?wH7$Ok-X8?k$U~@rZI#v|%g&kc^L~B~QNC~PxrJVrK7a8etLp(nG$#o|HE`wE3$!s<#vwa zOn!}$21@YPD9LARE)hCHA~c;556Bxg@N&56W;#0l;v-6^RrB%O}BDY-#t~vkN z?-lcZ4SKsz{=dh0#KiCZ8C=c~m_wWZJKUukz8pRF=dKkR75f9ZP!$l53_vAl+F-pi zrxd}3=O)c!MIHGu_ayn1&ayamP7>G+aPh5^+K-?*UO}_~O?-g<;pG6m#z}O-geIdn znFhIY&btM*CL|ryW_#Qq8Rr)_YxzeT7);?Io$7Su`Ylv1RLl~c+LH-hk7Xg>_P!OEb-oI}U(|WYIIiAGz8K#xT7_EKEBa>ZL{<%R-6lPSNQ{w0|HwT`)m$!~s zt7tFA6BI5(bD^mHd7o`?MCUkB>8R$2F)_s|L={an?|NAS^25dP`PKbHy?==B4ljP*5T>lN z7UcSh|iYW4Llq}xpE7VF3;gBMJoJ*m$&M2r8kgDevYs8u{amL||y}wQ41Uk0qX4pvc z&KA%ESCQ*pPi7$2!V^4w2UD*J_ibG(Zkg2$tyzY6r_ifn@$%)mEUFI0aEj+E&c;** z_2q!nMF8(embmcr{B}Ru^YwW{b;G#^bxOvl8h4wUwfpB50Phf;A|@Rgmo!7ChZo@D z=xwjj4$TOK z=Re}9NJU4j5$e%+xp=TDU*MTgJ4#fd&^nJ+hrpBs3arxb?h3{fm4 z3`rtc$tm$;sX)#25;ELwyfwA{DM}$lLEXg$Hs_FX_nD}J6Lyj?4&&H!>2bt(2ip(s zC;c`@PbVYN)^GXq=#_E-mEBeX$z-+McXyn~1I`;J2e6v4q zsC(VD;S5j-a;iOF<%kx~SsBa$#qAx_j1 zy7uF}A`l~*Cvb6o-nNk^cjNE$H1PjXe#b+A>&|~4?3eO??C(CE|9g~2Zi}4BRG`-3 zXO6dc4!>sZKDmM99L`cnMvZE2*KE#JUBw~HMU#lsKP*(8)>P*+U7@jMNl#gq3M&|| zz&vC8Q0rv%PStL2x;?DUilEP;c9)_gLR8Y$#55@2mbxYdE3@uZ-C5a-=Qd?)kwAW6 zt#p{_J;UPi%*_eCRSKBQKRO#y{^^SM8C3_L7>I~8npl=f;)oU_-J=PiPD<(y*s>+S zcWlS`1k`~Hb*!wid6Wm>YFoypQLavK?c~Kabn=r$fARBL*QK|5ZpT zKLf0IGbdTX&k&tsc^v`+{~%+P0~Rwtv!pdf6GF}LNbOBh9?qtE#JD2uEkjcof#}55 ztcX*zmBbq24Dy+ZHL%~$K3=2c2&6H@i5S(& zR?pwRzq~p-ytw$~{rT&MXkLG7Q$lz}4|U!9$t{&-sg<~rGl?+;qdjllhdmY7suzPhwoOfk_9c) zh4!Y_g1hTvucfy5utF4i#{k)#BTJ5ws4s%gzktRBB^bL;lDJ3t0ktZLV z!}v}Wea0U%Sv&yS&gMvS9Hn`E83J#cvRHu#G$LK8b`3Pbyufe3LFaun?Vbq#@N0CM?3MS}nS>?+Y39_SB z6Y31#ADmy#4F`z6sTIrDuaXt?lE2VlVX`tWO8-F^#6xETR6ORPH=j4Cx|*pRm6}2x z&Q21-@nl(KC7gs5K{+N^mrw!KPB*szTe6VHpnU@-tfR|y=J4}X#t^-_5%3XvwLjP! zym$eA`%S|}loBe2mOJ2sZNX#fK$>iV?A3mMuohxdIuORE6tQ39^6g8?GdUIWPE5eU zEgOE0q#y_692v?Ij$=Ej>GTRSieR(^?GNty&p{&p)6vDCJyTaeDO?;zi3ngZLMa%u z%!>py?0Sv;Tf|yXIU09pmK-S^y!C&9u-yJH*bcyN%E$%nw#4oE7uRn73fgVy6dWA% z`UlQOW8R7azh)Tmzf^STFSqDZ^`f%ar}>io8pCLg6VT4Y5)8Cw!SgTfn)7P_+Ntx- zTM>Q@r0EL&&qDl<|F{pJj6-1Hru)#)`etYuq_|*i)4E@C=Hwd1KFF}sG?HENYB?&{Xo^Ls3AOIZC5y?1cGq4K= z4t-T6u^0?vTzC(}{4hAml|Z>bn)mqqc|`%c5>d~#{Tolf-$3x(ARK^KuRw72{`AKH z{9Op4^2fLD4_}|0{s_(mx&SkI@vOO*DS{jd#fB3wM{`1#0r-1CQ36Fz?V>S{nud8( zrBAB4bNM|IY6>Nhl8Bh+fegZaWgJo|Ed9hITWs6YW1dEAjDRqBRTwrH~|vu;oa?f`+81S}$^y1}<-L62mYd*-e z_1B;)WocK?(;East_u=Vu$tqlhoLwS{!qAFU+(p{jeI_DzIZt>#B==qO{?YrUZxvLEYd{5Ez_aA@_P!td3u`d z|B~??vw*LO|Jmye_e%G_?e9MA|31c};(z2A>+7H~NkB}dIBdRKtIl5Aeb+Z;M-v zySurq3Y8+S#MdBjwpe>!K(=iKeElk!$=hnxFvE;-GB0L+R^Q|udcT?d+)|`yF&?I% zVvA$$jkFu&RYXbZRKI{NBCoB_O9h7?F5d^G!fr3*NWAh|&x3rbS}A10UIlR_ww?`M zZFV^w%kT5IO_Z+d_rHh_)o2DY&eI z@#G*Rvb7Lui7orU!}NlL*QsSBI*ebV7%uJEM~8!i0O?c|0;@;VfESCZjH1gKMQldm zs0_PUq9I`INvcKJ|K1R2>K_3u!t_2@Lu?qnTK(tmZL>T*_xG%||J{Z9Emr|+?EgW3 zw~+s1(C-~Q#eY7^BjeLQs0K!eWlP(|0|n?;5Ey4tkYDH$q>C`n4Y~IKRJ8O;7c)?5t|M`x7*+Wk z!V1vkyZg)DBn8fx=UWMKK?Ln!TLpXiE-<-k>+aY}xZZgIMKL#LUZDq`1I%@g74jn#k1Cs*Ph-B$AU!Xl3UN~f71fQ$v>kRyxTp6dL^P441(Ua~j*4t&Op<76tuyf0Yg73?=~$v{fcL~f4*zc`-Q6E+NS zlXtR&>8n*uuDOG)`)BZ;&k()A3;~6PyebfZvyVsW=w6}OVh@w5+v$LxVPQ+Um+C4> z1E%b-bNaVcxHhffz|=OmT~5WE6c3!1JV*D0Q^82BYraV438Bivyb7naHL48OJZY?{ z%s=L)iSp@&;!iI}oNe`a;pn1qq86qa2+%y`%h#Ct)6Kl~4r=+9p9^Y^BAk`n$@x(! z3ocM4g9`h4bqfst6TQWATs-$%*@!J%)sFmW%2s99ws7hXGHHquTAo9Ssy1bCuw7R~ zg~SKj9^KV#%~sOcoa~mZodWW_FH&a#U7;;kbb|K{Q+ti)0BT#-nY*1g&p~PNwzAXq zkg)o#xHS(Ea3EK1DJasYTI%o9b#;AnxXeFV<-8-2t>?U|TADNhD`;(_Amopc!<;J* z#trN3_mvYiUo^`K=BH{mH7kcao4;KiYknyxT>E)tKTRp=+SeroI+k#?lw04SWWsb` zk_j_|P8Wz4I-*|IbVGmC7*voUttUZhyT2Y;wQ=SNOJ91pRg?vGk)m)#(v_-2@Rj!` zmXJ{wC{~zH&0NP%UgU4=sa*d>C`E#4LX24VDi3HpN&X>IC2hDETpRz0B z)e6#OI5&V6Ylib8JXQzVs>q03gUir}!uii2FBpx_AY(d=M7N=mpv8n-XDJ94{Qv|i zA9YZ5*{ai)o5f!PmP<#mChbI!Ll+Z!#xU3hzk%^^FG8Uek>14)IV>?4GJoM|HV6B? zf<(=;9!P5-KP%!r!FP*xjz!>n@sE<&AQM9QPyX4H74Swc`h(qIB|NcEufk8p5{$at zGCUc-T0H7v;AJ!h1$a56(RYjgu7LO5LZDc|Nco@k+>4>U-}=hB&M|0(<3FNtSnhKm zUXQ|Ab)Pkk#Xh&&?G{Y2z8ic57X8*WPNES|EZUkQ4h5?Tqefm$?u6G?#UsfgLDg*# zx$W%CrmtUH26_c6tKynqlBrP=`uCRD!^|V#F7h?suBapU(5)v=A{pMSsfUy42oxS! zPw-%Mos7n%Dzc8?v+62x7^|wtVXvyw@|TfiW>OO(|9xg;1=z~TE5U7BCR+inBajay z83P~9EkpNP0TXqD`vN8g(*x#=?yUhj7~Tz_lt4w=X+GK%SV-n+jJPL!w={!o3QO=< z88OXyIj|}tye-qYuC@R4VYXWue+~Tq`-A=B{{O+?$^ZW-PeuNx-`DyxM<>gsU*j{d z8bog8tv;Fg*c#Q#$D{4Ll%fSDnM#$|(C`dgK-PGzv}m7GLb(50^~m^_9So{WSfHZ= z@?zSYHTi?AEejlD)&XVPZvxCqMpOZ@*r>ERHp9__+KhjdrIrxJHpBA& z&saPs5qhN$Qaw7>1zXlbU5Yb_X}wHa3AYaB=HQe~>p_yQ*srm6l*&a*nFsENN}{c{ zJjq^#g!=FZ2x#C{DCkcQh=lTWzfa+>8LBY`H6%Np&N2ZM)(K#RO<4qUu7!jJiaG5&vjok=PGB_6r*u!p?tuJi?`_n#c$)ZsqCm^z`F|tVjQ_jS(f<7BlRTfF z|0l}<-N*kEAgcYpa2ocHqoG(f+X|0hUzApcJS+v)!qNO!qx6*Ly$wDSLK zG(MjHSH7yT6k9cN0?RI7145Y}$ZH$@9u(6s z?LaXN)8B_;n=hynT{ROP2761#R>}VE{x|2KE#M~3nt+gj>guc+VD9Iv$hdFHB{?L9MkGx^Q z0;w-JU2lg}wr%8n^&?W+R#G57Z_2B-JDc{pedF_Y;AN*1Rx8jS##3wp(dPLYonAdv z9Cvtf0NCLM?`6JIv)pZwdeWS z3IEP~arIEm+#i)Si=+LhQf%*Y{~?|R{y)F(p!@FcPXFKYoT<70I~q>+{{K@vpPm0N zt_!(`>(2pHdi|xFNS@l^*Djd6kI$cj+2QsF^9$~@p62(?_MD#4AN;@iiKT}L4ivA< ztZ?9qAM9|l%h0;G)fFh~+~pnqE{CR@1mcH@H=Px%0j-;N*Z|pp?euUM4<#>0C!-7c z?ptR3u2aiGd>C)77FYxSh_{zuI(kK-Binf~8riMkH}zfagTv;r>>AKch-`jJ3uJp! z@`0ZQ_FqcE_2{IRE7E1%=lxiD{VjXDypY8{qpOE zMSTJiCY@}*3{Gz4v7hR;cM7<2Qz>hvS#kQO(()=?hg@OC72X%ExF*o5%{Yy=N<*%U zG;h+uk~7N%Fj(SFE!~bQUr(JQtqzkI*Kc>XUKk9~c?H`=<9Vk-=CrgkUc_Q*r0xyq zO-+|d40|2_giodZ-%uPL{|pxkexbrWZ-3gI|1otY=KW8ev#3N7#3VPq1z3s98{<9}t%EJ#=@QCKxW!HZ3Tqve&q zLcu1)(eh#$k?iM}ACbS|b;Az;=*w!XDDsi2u(yWPU%mVoCrI1|ewx+a?1LL5i#TDxzlYK)fzOVt9C+^nxp0Y_1g$yhC`oqNl(u2vTD- zS1<|gJDLo}qmQOQ!dj^kd(8)vLAc`gn~~%iC8}m(|Bp1HHDh?c;mbyjt^FQT%WT;^ z);Q`HL&$RavN|b8t5^MOEJp?!Os$xrDqqPbPD{X|Q30@a_nKuKxMYk;pvK~u{X3$# z)7Zo$Fyy39)-j1tM6+>0A87)=XLI_)9m2c| zhNGp5d(dTBP4w{2p}io#=D2@yfgZx~o`q9oJmr6=$FAO%F#Y?f1q|E~w0i)$Tv{Li<9P%UE)($#>H0bL>S zHRvrvGKV48iuKF7h$K^R35rRIDM_}f4DcXBJjh?>4Jce1U$I}bTUphY`E?(sTrn7! zIG|cTfpuZtcVLq;=u58RA2SPeQCS9CU1~2%ip}f;vO>XdTu#7+U^2xivs<+ z9{!0^=OC}lyn^XJ&^7~=w=H8WA}xKXdAt<^nZv0WNbRG?97nknUJ(BVCE$XO>RYtL zDNVL=GYN3j3!VokPLK~N3QoZ$MW8fJ35o)gTyDZpG)w`GQi@=3SU(}+yoIsKGDT@! zXzr2y-S9A9hUz2ncf&PVAnXCV5-}?PQZ|?}rULT~%(T99Vq=(b+ z^-qodm!|il>wjlFGUNY~kvrMz|EG9b=>LCYt^r6Xi~{CUi#bv^#pNtgEwoDhb-U=5 zqC)yilyK=uA`qZBBwKOmwbF6AtH{$8(p$gyMFVOJ?&eN{Gsv%P^#9(YY=3Ijzr4M@ zkE3OR(t8Mk9qZq9r)K>xXTSgVL=Rv8nhxd$DOpH;%qIYl699;7u^-Nklmo{|Pu&284Fy~GUjKQ5G=xfPKV@}jf+p@jhE{A!8wrK?m zpTGhqDXjor1n^Y$%>HTjG?4$v9QyaN0(Z)PXJqDojJ32w<+T}s-^;7;C&?FuE;GStCQ-yg)Y+de*698xgdNm%m4G9 z2J$~e$u0KLBijFF{D0^SC*!^Re~QN@|K*^!Q2}b6)M$Y#@yTvQpwMf&K>cK@1BJG! zM#yM*B&DE{UP4)?8dN)7I~ZO1`zeTwgT0RUb3M)F|C#TTO+-7WfnD-{SgQZ$PTYO` z=SiL&@?Q>m2Q>iYblI&9QzQT7wD~zE3BA`g;4b;^jm-Klj79;@>Eb%Rh zz*WH^7_{>U_zbGi1effCo${a4#H9YMszQ~Ng(Cl|v4|IlTMKrP*5`odA&QEy4)y%L z1;inEuF_225FjXq2?B~h*2T*5|DWDp(*NoGR}ZL;Gwu{u*L=58E~?Lp4A&_V-a=O& zyhDF?r6CC4tBMDH>f}Eq30&SI?xUVv@_%IB|LaaB?mqtWBv1SNPd!!ZN=y-O9>Ua? zcBQ6~&%ViXtz_v46#1w+4OII;O9lnIQmPDeeZ3Zh22y>;DK931KS#fSUcYDm{IDRe zva9m6FW&H)5C7BqpMqpo8R1;qG9*{$XRlxO|M~4z4KmOa+h5WiklA^~T)hGQc)o%O zJ(mXp%%&!VEzmXS&_cSp?0_a@Y9JnqXCuStKT=!N$bTA#($Ko62G}A09VYCJ{a<(L z?B)McJgww^6rdypP~_YKx`Gt=B%%;UdG_t#;9Uxr=+vSO@<}C&dG+#Ln{dhLwaY&OXz z*Kk>L{O2tpbjKR61gM*P{P?GN_Tv*s&=P(87DoZ-^^^bkpWy#|`6*q&;dpY|<6`B< zv$t<9-n=>mZ*$&2fT%d1^8D9dfqv-Zx8F|LFYKG&emgt@F+Xg{a7zJ+DZnX6X+ol9 zxCIGf}qBKrVkB(4EIW z`!I%c9NxDE)DHRYji#;{|8@8Ezn|ve@*i#}Swo6_7=~M}2+q$ge}41w`sZ&h-n{tv z>gC(_7w0c`C4NhbOP@4_SnmRVM8P?X&jNm!ke{*2-};-BlC||U2X1{EY?<)$t?w1; z7YT{$a9iFhQB$#fMUs_mUFbFIhf87BiXd!M zWL<7!zc3%ZZrrW~K7-fdB&fw$$zpbGSAuUZWz>BE3w14J87L#6$r8Dj2OCen26CfA zXN!lB)HeePlO>`Y=^=OyZg3PZ=LSd2SE~A^5bgpgTHm7NoUCJ*Akh2U*T8j#Bj%Z9 zW>X~;4NlJW*MKG)WEqe`1S|s@*Agz@cBeV+Ozo~e4zyh-1<@vyq)_OYQngnN_4q5` zll7d5S=L#138o0ZFa-KqV-}=3Ld}J<#GK1PpF}>SMcG@BEC!VY7)qL%K=|)P*d~nEf^9rKQ!eV)_mUryn1&5QZ_B{ z0{f7Asm(0J!ma_ISLOZdEHa>xP|)kVq>lcJR==7ubCN(Q?N-< z&`{u;Hdl_wsKI74(lp9SzJzL{QPZ`dnpY z?fRD<>V0g#FB+`>(WDgr^PK(u&yzg0_Fr}g?BQ%bl@hwk?kfdHcG!GZ5?-x^_L{)p z8yLdKM~Thy`wz2l>ev4!jzhFY5ryHaglyt&y8t`Z|8QvD|1fk%&Tzl}pW+egKaSb- zR^@-o!!BzsC30;CU@3lXxaLdndU-DJ@mC;)x5$Dt4xx`$Bn(gjZefC%ol=Z-@t~A! zpd#<%$%z@nUKYR5qIBr?mF?X!-jv@ds$;$hj*>o#C`y>kq;Vk8;i!@WodL~)iAiu} z7(NxfQq9=cU7;93M>!P|^vi}bwakX10!Xb@XvC^3%(O%8=jt55!^(kDqYPXJ3>`2W zJs>yCfR*mx$@`2Owu}9qqN2- zE>Aent6K6J9sBhB&*iDr{|}S?xjX;UbIbW(d;kAQ9xh!0f-U>#?0hv};N zb<>={tnC2ijR$Ok6;cE%aj07g_%RWSRH#N^+YG3|GZ06?wc{YAMX$AHxVXu{JFuRZ zI;=I`Ro)2nG-w68qDatT8(X5)`WN-B+bn(l?6m*K#`%xoaDV>eiJr>!pO3S-^krT3 z)~lWuO0Qe*0&vTv9_Dn`uW}7~y9FM?dF}cZ6j)H%S2gIVQumdsIE3?7i})T-gY_?~ zPIpxPP0oLr=l_SEH{RF(dXh(5|JCCxBtZFHLm8k-mRr=mmiCOJ0DU|HUt)^ZRi)n5 z=e*22MeD4_i+b^8naGkn(eW`DRmOrLMJ!NDazqy+90Xm*;<6$GQHkK96~WutuvXE> z`paq>XebWzF4yV&)-QA`TwK+{?C&<73<$z`EA#{>Ez*PS-&#tHe4DXgJ*ae^2sg>)$@kLL5}T?{Ma)E(E+oCfJSx+3bUA zns*xtO@hcZuv?oArh8bTzRE|eA;4})*c?Rz*L`e?{qx6p+R6WJKH%>7pDF*nef^Io zdaC8W=>wKtb&&dv~t0CUsFVx^x_=eS3Tlt4Y1bcbDf2y9A^1o9IV3+(a z*Z&_n?tcIGNgj**&m{jP`%%c>4kF(S1;i-n6bdj&`@F*eip#oiKr_Cz!xB4K7GHkm zOy{$p90SoceFm&94pJx}UetR}wR!$0c$&z65_I4D|Ds9$Pig;uIGRlM^8YCwUH+HG zSsMR^-52$t7hxJ z``+&tjp~1x>)-XJd;kAQp5pp1`Tgpr7OUQp>X(6f*c`ti*oF(eX;xnmc*7*!Dp#DN z{4A}KM(aPJ_t^byu>Vt9|IWnQ>;ETt3hQ5vvs(K}{rSGax=(29y`18O&btD848v~U zaVYT&*=G`1&Q}@Ju!yR;M>%ZZT@81+SHm{`Rn`HThc#>zdo;?&3Q(npV+P+IW#r!& zl8xVaS07v42O2-$r-A&J>-5p`e_Y2k^Z#7e-RJ*3$)m}CZJdP$Py)JLWv2?uuaW4s zYY2<%?kc*UI4)Ktx0{?T{W48%%T}rylX`ibd7tw0g3L~n+t1Pz-9Nv>Qd7x2=P3D$ySv97=R0= z9>NfatJQcdB7VP6xaGGOWryRxGbivtwMsv`CGNAoE-fMKZXk>jtxD-@vw zQY4FzKwh&fW@JSER@E!{>R8tm<%_5!bWxUMpzX!z2oki0nBR6K?z?Ub7RGV7RdD|R z0@l9%86yuP0d}nak>icb`ajNapa1WZev3(A$_2g(n=E9p zCJIYgTqen(p^p?L5ezRPijoENi)*;@N?{*{Xi#p))*bi+B4*}A6gb7jEvp>+BtU&; z7ctot1bq@QvoArvY;eNsy;avLf?8pgY4c?|C&lnk;K42N}g=NMAtCx|u%FFtPwJJ;^J^q~UJOX=il zww@C1tU%u0gbiFR2<@>-k_ ztx1%kCMfey?}IU=kfOyVOX+Vx_=(81oK<<}HhNtG2*cQI5F{z4q%{i~!2nhLWWUqQoSnOvU{Y zf*7Xh9Z7;zcr7R>nd6lvmk8}(zQe3w4RG|o$fqQ!N1mVnr}xLp!8Am<)(^3Nvm%=m-5+xft0D4~gvtHUGAJg(|1bl{s{grYeUkW}JDN^Q z@xQ(Pf0~Ey|FSXXaeRIo0VQIWRxOPBB%p#K<{p~W2iaX3FpHryZ(dF^t`9cUWGgns zUY*2B+``KNp6_#ujW+yvJ<;$jC?kp3A)8>^uNO?CCTq;5(ldmg7p< zhhXvFZP8 zyXyfAfF1hZn@lIB{vS{F_rE;J(?$PhbK}7cfZ~Si4htarcy9viO@JLHK!V~B`!Kb) z6z}!)YnnicmRoV5nCQpeTO?+9w2EWIINh@<7ZI1sP3-EjL3 zd)A!qud`LEtx&Puo}oCbm{#hYP?8J?@1-w`>{RG#z5jH=jU)rv2k4hNPM?zm4AKox zb>Bqr7UB@j!#p9NfZ(*ke$X1__}B2`yZm=C_%)_N5u%_*hjqn%X#l0-L_pr#dt-EO zjD9}GsKx%%(tz%70Pf2F9lPfK|75z4|3A&s!T!6FbK?;rK!xlx`PG-V+0C5lSd)5_ zpb)_ny^&|W25-gRgE#VYR=okK@v*lc_ZH++S&#+8=RRiS577%0qDM3%^@ZNRj@)o` zS1qi`W~SjTb8`^Ggkpa0Xq~Z`ePtcNdZ15i#mP;!H|>Q{z5UnNMyoIs_h#EY%r*e3 z(#KA-xn-P%z7^-CcVBx8K)*D|ni5ky%LC8y2sC3oV^`-60O=m}+v!p}|&;vh&{5l1Z^-!!U$cLe~49OgZJ@92IKm89M8!p-ZGEtmg`zel{ zJof$n?r>=4|4g0n{`}vQJly^lhw)PFeA4$Y&TRYa{M39azTn4zYt8ub$))OZyi7_3 zIZEzyR3F!p(vdYd;#Xw~z`BUce=M39`PbPQp?*P0GJb4Nqma z*@_%65Lt1OFFWU3>}`_T$FBcnrHD&jDdJvMz%KvKbIttE>2$o;|4;Ii{J+AmKY$Nt z6db8D1`3}xH3*9IYGy(4g<%{NC%45!D14+D3Ps3W+{GfNb&g{N4UJvMD*7MEnJl2{ zRibWeEf_Oq?`l5gW0(K&t^Y*vzu~YP|C{dfznnk{!V$XoP^8w=e0M)7F+}Nbtc}QqhG-DY|EIF!{3X_WBi9h>B{kDA8|@?wB-Do z(o4TyRZ|U&xPGM|FMZ!wjF&N)LR`22)s9{pDPG+AF5zt~!9~{=N{jXPLj1FQ?D9XE z!v|6TyXAkm{;#{2|4;Hf>i&^7Fq9yPi*4i#gBUX`-4p?_#|3 zh8CMW4+iGgx6OC#e77j-Ar^UvIkK z|9_IFB>%7Yus?wCSE1W}@#H~%kqvwOGP*5>alg!d&qcM6Kmnw@LT_u)mBo+^(2XUS z5rqD=bc=Ucuc;c`4ON@?ym<8y|HV*ma!pzkoOr9LI0>YSl9SV*E;Oa1YwXMvXnZ7H zWeoWJM*B~$vFhZ%sPgsb`~U9Hy#LdkjQ9D!PxDmBe{sRsLnr`Q8okZ|kRP>>l!Cm9 zdqhjJQp{hgu;i}`(lWn~w5_;QZFjl_1+?8f1I1WV=b*^xqsd%3*hO?Lq^@fJA0c)> zn`fu|m$z};M-A-U{~b@v`=8z6e*gDLo|62R!+s`){o&L=cB@MRZJ?01(+R3oSv9CP z)fz&+wJHi&))5NeJyeAPv0GzQWez`{vUudI<0ALH9AR5ckwe%kjC(v%{ts3tT;pX# z67=vmcF2EcT)O{bICb{*U!UZ81}-6`D2Y-gpTrCRcPkWu`38ppj+P*X{taBBba3zt z@Jb=+CKgx7rz;eOU>TCRI0BEO3TAVvuYafAj3gBMpnUr~~vgJG*<>A_cn^e#U5YA}a42VV{7 zn*Ez3czN*E|99{VyoU)Un-pBUc$ppy;)E~>cQC*Kg2&?Xg#7Qp;5PM1fR6tN;zq9j z^Y6~yyn6ZihgXAj@ZdOV*T3tGUC%Mszc-%l*Z)&I&%pVL8B-xy{%xN8{ovr>Z{j4= z*F7;c`m=#Ma7Vqr|Lqw5{ovWNXW*y8i+?>|Q5vVG$Hz-dSDQIg*2gs2AZ{V1$Gql_ zPu4L^(6Qdq8w>^oNQdD0&>0T)c^Oqr*JC!$$2p%tHClM)|Na<*q^bu#$2)c4tALZqm6} z!zH(yWo`Z~T!(V3nh}$a)v#u)TpP!3XO10%W4DfDx{V3IQFeb&f?^`sY(_!Ordz|N zV`J0l%I3`A(z(}+6fBQt?N}bq4iCG}_L-$mnh{aaB`3u$ndv>^7~}pU#GhSn$x80|_Pv2;3P0}wn08uDAcsvLf#?PCQzcuz!AbB9Oc0YQP~1t3=No4FG5I^+EIBsk zq?syI*qjsR(2(f~T9aD@K9J;taHENGYGJb6h?2~VuSv_vJE@txHjAyh!B!kc-CT3J z2?A%-j$da~!>`p|>&mZbt?B$`p2)WdQa+u+klcYaNf5Yvck$x*-Ng%D=8y+a(rx66 zfW|BK?$yN$!M@kds&TxToqd}f*U^k~%;9!w*`IILF^^8ikoqe*>U{>4qzD8!h4T<) z-IT6if&zeJ*$vI)OWqBhts5LmH#pt8;bh=Wi!$3O_Je1v^Kah1Jp0GRn^!>_$b$U_Qsj%k7wd?IHh0z$u2bC+g6@i*5HC7+h30DtNOgU| z-0bUrf;qy`65J&uT83M>ArvsbMw&Hj(n#@$`Hs>8B`ESy$}7K$&P&i5;)uaHi{n)E zmD5h|IgUl|3C3)F)k#?LmafrPxwstmhbLXcr8{eP=#@f;O9+hNeNc@{hX4zU0 zrLy^JAxoJX$V?N6BP8d+q?L=qzPI+r#5NBmo#(;Cmnz-)_@ zhjs+BUdzGv?1MkC4gRF_;E#3xNI=q=bxU?a5CFKLB*f7T zdn?c5N-svd=*+WM;CZY$GQ+;xDa7NR%vuR__I(Y{7UehYto+7?@*8W)Z`gNR2Ra1L z(^mE``@V)}ixL}mR$^mAu#F2!%;~1YPA094UiN(r&lce|?kv2e8$++dZ8P}~Fi+mh+mX9Mng)NANsqIfq8G!%9IMaqWs>2yjFw zUTmfRB09F6;yD@H70;+LEGJ%c?%1N@8EKKZp=OP@>sYU)K=SMYX=GD8qt1$FWGJ4I zrg+@G=eFiqzMya^6z|EfX0V?)0SHDwv+stpbaR8g*7tBSS@vG!^Ccho&Dc{VcG?DTOyEWxh9# zQVPS6I~<#MnZN*v?WWApNUi)>RK%#Witr2-G162-fgeqBE20?#ikUP~6cL?sV8{6O4Ud zGhr-J-RmsXhowcLOLezWs=s=7!N;puN{utyE;P=*=N=UL$OCIWjNu%Im|~&-7$OeV zX*mHMyLB_PExKXnMK?4S-LSamN_`k7Bt}WNWfOiA1N4z5un&`EmYge@ZaHxr`@|XA z7R#{nVi_8XWmsG+Lqh-r#1|W=bcF!p5r!bYrGwcAE6Dd2Kn#-<@#})v924L04w*De zVpAP5aqZ!@p=~7%JFg_S)FDoFhiEJ5`ue|*z}5AOi#NOrE-t@?Ys@A_VIH(xQ;vN* zp?d#Oyy(cbqh}TgNG98rq&SsXJK{xWQi>L;qb2URU4wsCG258uir51G=}`7TJMlZ2+QqM9Gj5&E z#;s%MZKq(|I$)T&cZt4_C|!DQ5u=TRNc z7Om=Z)~b%7M4WTY6F11=*;ub;Mvo8KB)-6 zWY>YuMa@|zJQEb)RPx(yQ)N7{ZmKZiZ2We#24;hyYw$a)L+W2Z(;yEc=~?QGJyhDqn@CY@u7X_{=o zhUeKqkfK`C<;*IZvjmpj;svX>@~Nuz2+MBnmegv$Ub;%)J7-m z7TxHiZqeC{sD_qr6_bV$*0btU+~UQ(mZCX5N1YgLXC97h zr<*thx~Ww7T_db~Ac?1@!!XSE#`Pq1O2GB``CCD4%Mie5B+j*=DBUEe8a_-ADAvTd zJ@^XvA%f8+7B!bJU$~-(kiSVV-GZ1os1VFCRcA8I$-VW%F)QH0oKxi9}TBu++AUYU zIHwkoyMcAi+swmmr`WT_ZMX=oZX#B!p$D8<57H|(1G3wp_pDb8N5a*ONFHLVCdX#l zb++sb!)|7hQ5>B1;^*;2;sZ(#OQ+im&`$OzYiO9By5;FKuspjW|K#F$O8B%p?y{L zn?$NpL|3%ibROByc+4z2VY99qVY7h|_8RG3VY(I~Wm;Mj$^i^Ml6bR(>rOGXy=_+6YXY}J*!#QEvuQST85Pj$^nrAJ*6apOLQK>G=0Nn=MwP) zmQjEbe#^c(ef&r9gZbF<%I8o@Odthd~8_Ut>(Czi22={mM2#j!mp zj;&jgx+#%o$hprW>J#H=32>BE+g2NMHV&!>@1*PC8Ap9jii1}^0GLtlZ&FIu`95L@ z=P2ZALX|%s$l+@#n5I_2WIOfS`OvR%=66~@d@2>4Pg^}7J-=RR1*0I811ePt?}L`7 z#ytC}G202?&If=e#q6M|Wdda4N%zOg8_>nvHF;Nuex0GJy)3$=<;u1vT1+hV)TFCD zH7VLtlcGIkP7NGMt0_*%ocVMi-0~ivc#X(LY{=gsc!LssOGxwd3+#4tECj}|&+6ynFh^oC?v3+yP?{@V=h}T)| ze^J)u*8i&%IW5oQd-n7Aw&VDnPveh^PWYrCiM4*v#I5pI)b>^gw>GzBY;mc_U0v#N z(WM?2T#=tr)XNglYONQ;r z?6L37*saKn;Cm1J5(6N<6{k_=P0g(MlyLDW%NL>b z93>zoDP1Ng{UrnmAr!RQR!hZJlA?1( z3Zo#!xS+@@Y6)Bk&v=_1EDBH@k}Y$cj|w)mG`0EW**S?Q`Y2L$h9~WW!tkU;IW?F((V1+x;WTWSnmM$mW_q?9C$DpklV{{O zd3uhM&ZJ6F%iS3e1%&dgNSCi}W^4peN@5Wr)sBD;C+*Cl;l%2=dbX@6uX9$EXJkcr zdRCNEb0flB#D9--ljM{aj&M|pTY#4+rL2c0Q*XK$O+;_B+<_bxb1LdjJ`KH=OUkQT zQq?xL*Eu)KGjg*$JvXbatBob)wVY30-F&LHa=rWJW;q6%>!OMPES zSnDFOP_ury_RvxZNd&IW&tAV2J=F5J?a+SQ)~mi!L%irb4TeVVcv|mNS7h%7w)v(dUK~WIZSTLjRIF}6jVj%#b^bH z%JQ@%0x5+QEjD48B5ECtYJ=bFcufdz=^CRk)JMbIi#{ju7T}LOKq3wKL1`b965y|J z7>JVkmN>F!%boH%=1%dJ=E8HUnUS^`Q)ql7`v3g)N-Zj(-%3m|YgLSzEaya5d>bVN zOMHtWv6bYu+(vQj+bEtbi^}VmMa5dqjP7yt?wJ~6{eN##3gU#^;sAj=nDFJrnfF&~ z5`YE7Vml3PD2Y+B#%ap6KktcgJCDX4TRj@jlECG4P2lndh52Pd*ozvN`a}2-E(fm4RCK7xtq*SjLr?XSz7*36&IW;>-sU9Auv&rogO>Rdsx$7yZ zHhGU1?+jrvzkZn)Ny zQEg6kE`H^hgEDDGMztN(xi*tgn#sxSAV!AGo3PbK>R28ro2R29EnYKPY;vT#7%7r5 zY(_@4rs-T-$fzvjd?WJ(+5ChQ+#wK<=&zJ-7(Cx1dI-pd0RVZ=k_6Mv zM$NQn)J#pIro<6zA0mpvt-6S86KzryWZd!ieYWCI#4oEVe6b)2>kk`;RmRe^tFbgK z8Yol4PAah{c_N`Dw_Lw*O|T)qJ5K!s$JO!ism0!zcC~k=MSEvz*gF-2CN?T=%0fn`2pDTPDv~j->ozHSU=$I`j|;uVDHSuEA3qU) zie=2CQJfGTrKzl=EiY;d^fL&vcDIqwY?qNwEjHt{tIaqq+Kf}fW^5Q7oV802n2GFw zVpV1w)gG1>JMp43+vQ`-L^=k?cCn5Va?3NE_`eVcA~CRRiRf45r`w3ak64agt8BlS zE!l5sF}0^%O>NfDFdPbYLpi~POF3QyUIegLo4IzK1?%Wn-<`h&Yn&uKNUU zsVI_A#(Q>r_~s<-L)u>vnJyu^i80=;pvTNs~@3 zmQ50IGuW)%fxj6)@At+2`9nNnCLOTcpJRro3p!}`4)t#wd`S*fwO9X-xuW<+y5JO5)5*-1$ z!fA%%4yItf!68@83F3!3)(}S&MUbKMNlL*S(L019VRs4eJX*y}GpY1xvIWpzVRXw# zToM>E8pXx+FW&z5fXPnqR$M5>gk^eg@Q=+LB@v=1Jp~{B{!ySR2e%WCErq7lL1cM8vOHeHXamFJ|A)7@VlDnMbYAf`$Bx@S3j!Q1`}tfrJ_HM#q;zo52UiGjc7OU2 z-(VYt!-GCJ&q;fMQ=cS3{&gUJ7%Z2^^nH4H{oRk(G+~W?h*1O}_=zj1HmWQ_cgOyU zkQ5yr^!xpTvoHj2@p45|W?G`;76qUWu8UJ#CJFyRG@z9KD-^E#GIa3ZN}yK$yUxfR zPYwC+dBfpe{y)XTWSGb^W|F15D&FN&HXXL+{=7dG7=G1g;PT+0~}t z8n4m6NrV_=&2`Q1J_Vm-sFnfw^*0WI-;%loFxpmnyD3n@lid?fWE32kcXR(I1B|LMfXB1z-~eC=nBg6Og!$CQk-Sm0>LXxL6Y0e z^DQr?APa**rh9lS`ReLBwrcE{2ja-Tkj|Pw<Mf>pmnmxcxLyh)UK=X0BwU zR2wUmz}n0?4SxNc)1Y^oa~URc&gqaJXwGH0TF$wwUCTK);FH3no6WTt(p4%Z$dVuM zWN3u2vjDom6)KT|diVA<1N54IkvF}KqsCL-a7?lZ|Nin#rb|96!#_(r?BB-Gp~3b* z5cn+)QE^80?TyF~}qhD*i+G<>`_G+RMTmcsWi2$%^hCcqpm*qopV|B@1cU92ofR|7sd^Ki7W z2H9$pMNdlPRtuf>f`O;twUY^KZ8Q`IlF|nfVvkQNv+gRyNAB^Uh(VOZ`o_$z1~y=> zawIkmOeuDrF!z9B7^X78BVt%3zYNutGqSVdH{v}9D;Vadd12-xQX@E(RZP&1wTRI1StP$NPTE$5me zT`X{f>9%4Oyg&;aG4D)$;*%)l7ot&+Y&J(2q!fj-M%9eHaCO7*X6;zeph+#yCP3d@5RIm-wW1 za^*k<@g@u}Nr-*JH@;ZBA@owXdZj);6DY)rU=TnoK^V{zeb-BazFheU>mhx2g*U55 zWrC-0S%iDbYb6c;uXF{6?Wr3JzpLN$SH; zaFPw|-_#WTI}>$503i5|B>3N~ZOB|Ga3&i{IJuizJ4y5~kbR;Uz`9Kq-My`zF(#T8 zvql5n0C5$v@*Elsh66`Up_3sR1}DxCjc4=WWHuf-v&nckgU~raC*B;*gQ4S$0yvqB z76{GYeB#es7mXHU_RrBt1FF{nk(TUKb+`8KzCwJn1iw9U5fr84@f0P$Bz)1XMJG@k}}ZhF=B#hLb&`Hz7X z-Bfo7RDum4g%$AfR{R5=xEoPp-$JIa1{R8U`i3dUljqYW#LBB6%H+NlFLrQF6B33f z+0m6uO#}TCY3=4kQjb;5rxelS0HQUCQbcR8R9b1=jnxW|-XEhq!Y6Z$Wv{63&Gy#r zWu)fUaC9L}v~JQ5_rsGQo^#HaU^dAo@WEv`-fVawVzK}MN-^^?V-lq0#E1g zOwzu_YaXJPfIJ==7x1t60U_} z=mB`arzisf@G|1Q>I$c&HCJKQXI%6w%v)`Ht&DTNLP%1WRUAK$BAmk*&T)t-M#iG= z!64|J{`9Y-UXYNO{fmo%^L&?@XEm_-T69_lz7CUYD03>6$N1{q1zXm|EC@!9$fzv} zhoAmc(8pTAVg6l}Qhq1tlEVxmU92$VNL~+xRoO*;H8=)i+sgucqJm9=~0+ zi`SY)*GnUF=Au-vVRSL`TZPS&imsL;**pD7yzHI!c(vBvQIAi)-f7S6{r0b;UW#Di zuTYwei`p&(FWy|K{onK`GhS7CoT&XO(111Ef&`@`yhR{NLqcvgvD%LykvQ_Ag-=pM zH?f?(L6lZlymGC+P#GbVfZlnyNhwOc#Yswg055nv=S{Zx0k}QDmr>!qbj-{a?4vmYlWip&$4z;($yyW&UNl&m-fXNTbWpQqs6^*Q+F z5L}*JUH$mt6#VtqU%}w5yn2A=WB&HrU%`3)0e?_*`)xwj@-F}e12q=>_mX;7FR$aU zf)DkUCk)B<)!%%iD2ZTr5mA&ZppVM_<+~Kgj3_M6BtuGhY7XCE;F%O+-D3r0pt3mG z+P;GcIt4rxYQBv{vGbdgG@As9js%`nxwqUEWiN0pc$6ucZ=x`vIo~P=WdJU-Y%wL$ z1c^*uF?`FA%wafKY{HNUh0O7(QIja5I6?e`1;c}*+-#80a4Lmwd9mo9H9-g?K-4FS z193BMw*4we=aAV_<`vT| zJCnAQfDaZi`5{AD3Wv(EItxQ`r-H#eW{y5GNrY+MOr;JnShy~_Az@aBE^uAIqR>+R zCTnO09||p0T!8;|rEUl;m{0r_x12<@C;JMD9$=Fc!E_5^?B6K&e8CSMtNmZ*t{(xs zj!8mcL@g^*Wn}D(C9tOQW3)4zkbl@Uny`jA`m2I7&`BMzS3A7lY^$l-Gri-RK+JfU zv+?7(|3MX!4JAw=S55u14J9Far*({w&MN4p9Z;;27| zDfUHjAvb}^LQp3g$gOmmK(xR&`WvRhxFn3BkCaqp1GI(|`#j6+oSV!kx0$oi&ih@5 z#*c%>F^U2KS)3H%NOLS{mWz|M6fZS>w^8L2iVlIIFQ0$UQxr364ILH;VbqZg&&DFD zv~kx8FNy-5NLlV_F13Gh{>A@M6dim?_R&YUjzcsEi4Q|ANSKgS%Eb(U$yLhDg{p;+ zq2s&r>K|1}QkQ(&@~&+>p7))AqADMNMY=I>tvci@itP7_2bugs=# zl;t31zFOM+>#Wd&l!iDJ`^qh_@}s$pvGT7QW0im8MZ{~2E&W@O&!!USGbEXil4qq- z-Lc|_q-JFrtg*NX0WH66Dx25UVn!LU3hEzN$dp*#Wyu!y6ND|aSuh)R$B32?iNhb; z3O(~Zv+Q_lVIqs~ltK`j&^QwJyrxHNX|n$z>JJ8k!vVP9#&m)hF>4V`f)Q{PfFsRv znCo^0rO4c|M6O<$Y zN_L+ik(UM5vL%m)YkjJ#uWXo|2~jE!oz3t<^a zX?VD7p=xx-&N%Q!o`Zs^?*=1pfdcm=mRQeqN;}Ndya2iZb=A+?wKJ!N> zbI)l;m0JFVJ+xhmU;p@i7GlFRo$O?VhFNB)*r-(ppG{iJ`P-=t^gx&x-xI@w>AgiT z_%Xp0{Sf&g@OhShnT6!@6Qtrqz(6=8!eJnCg>u(SSTbu8pv?P`S^T2Awq%oJ7b?lq z;K_frTh5~OaZXiVmW)+fVSR=_J+$^keKHhtJ&OrZm+#NB&#FOo5ajx3a(mqdS{^by z4i=uBaC~Q`LIQ|>s@n^F5nXb^!qT$~^9A&#Alz_kX|0=T!QXTqyLyHqbJ7H)Y zg9i>ts8wyjmLM4L%=U`ut;8~3=uDN)bpQsVpF4RKSW^6NV@l0tvsXAfRs_YskVPgx z6f+6>WrI?haa1X>Y*_V+H>*N*5|{X(SZp$beX-!XZEPa+KOBKz8^Ja9g?vjfiR7h$ zD)+e1AiIn3!%-poG;55Kia@sh{6;JVEn*q@p4hUFWsY3MJhP3cmHN?TafQ$P|GLL|Efw@Jl^-AAQC?e zNLL? z{Yd`vyUQaG-}*-Ytz)`mjErF=~mye@-E zXI^J#nQNi`d8DV#l<26kHd}ASxBWGY%YLV(Me}}?eJ+mBDY3Vkg2xuFeA4vgAUBy9 zVwPEEg$C_UF(Gt*o^T`v0sw<*Jt!rnml%!r5+D1XcWf7fSy{bx#A710Wnf~qac(=vI>%9m^Q)B@s+UWT=OSr%O3OxSvz?2E&r29?_&WZe z`1w#xP=Ib5NrS9g1U(Nka5jo;gAkzGhZqDMgC(%_`zo@zrm9V@TPyQ?Z`4g^zoW5+L zN*W$zK~$joyw`j7ko3tp}$iwjFpx z@Lt;#`?Yt2w!PDysshnF>cyh+%6i-9b^DLk+kW=;w|^OixkM}A*86-0DSraD$>7ND zM2in=9cbB+jl5?A?;|^G=?W%1reD2>lpPdP0UU*d62O~gWzq{5Ri*cmZyZ;Eld=IJ zs2!|PfH#%<1S;uJenAQ7eUH{8+4l1J1_52iixfP6d-i>Q4!Mlv8%x`iqV=I3H{)X` zgQE)M3R1vY$*pPkWJACU ztjM|~Te9JM8L7&+0z9nD&+2hNKyoE}v`imGYx@!Z&STD{6?O`V{MuWjub83TI~`9>j?`c0 zy!5z8lIorIe&E;aeUH;Mr2eXR)Z@4B>FxLr?^2Y=zx4~a_;>kP_hS06A`U3()U3G7 z7)U4#Z6zDIsrj3}KviD8Y**g3&4JcsjL3Q`#bf58V>w){5)p@&(q)3uUrGgKmDIb; zzo^Y}&LKTvqH~V4HqlPwvL@Hg0M;$tPD53lYG-0;k!_bZ-Ho;iRYd}Hp}Lkknz(@n z=aZ?k@cofH8+!h1xbQs3pLs*)WVo12#vXD!7okPq`o24KhaL>(?$B8{ez`zfiK;Bi zF2RJa?7DMK=VJFteGB|7i6TEWOPNmQRS0CoQJJnO)Az-Z7TdIFunk6Gdc(D|Sou8V zGgIu^?;*ZL5lYiO^9V8j7cU;ZiTi>EwQt7%7^u%}l)YB(`S(?GwFqaRcK0h>SuS3% zaPdV{5zCw}oUXX(B1deiu9Q_!FFEombUO>Wivtz~CaU0=2NHY7Jz)nx@ZI(GrEIA( zj#P;oJ_p$QWA>k`tV+V6cCt>jslu8X8>i;|Cj9*ZBXK`F8|yTWc$G^B7P@PoGU`NH zBMQI=F*c{Xc*qBNVVZ!xB4Lm!SgKfp6xRmSDn88QlHT?CCF{R5OD*Bu$3Nq>?IS{E z^fue6FO5w$fo(nX76lMDnVcD(0amP+Aj>!K_9ddCcvP#$)EN}#3LsgO0An`wc83MfxHFBQ@Uo|Sq}J=mNq0!_9QYF+xXax|bJ z^m~BK;dM9-(Prp)t#Av8Z~41A;?fOoW;;)iy_S2VWkLo3M}D|bRU+V=+#=p(2}ORgjpYF; zsacOiUIyQ--G z_h(oC=$#G=BXcQhFuY4q0xn*F=d8gYK+$dg7A8Pd*9o@;B-Qago)vPL;9DG`C3>0q zFyzx*#?p>@dI3;2eae+Yk9x6cA7stcKJZ&Y=(kzWTV0C6Rk+a!ecZ}j1thyH_hq$873^P=53>NA= zUt0OrzBt~JokPC3yd52}|4yt(wpE7O6)#kAMWKIFvQls?%`y#-_WcpKD)Jbogc zF>zSSo2`h}wd$Bi)J?C2(X!$Zhr6TPk+s^9B*IqhNX$fQsUtfJgc6?sQJ{&9VN`GF7jhj%Y7KMa8I^w|&6=a1oC1R%IRzbsTe zTq2sUR9>c*t)F*qU-P$oU2B_4bxcv1ED_x`bMu;u+V@6qMFjc_qMmoaA|Y#GKj$@# z`5PWa_>cqqzz-R!Yp7%pL7!hrJjn#PTvuz61!MdBL(Bp5LEy!cqvfxtotqG-k zCR4g;7ng;M30+F+ih3P~=s6Rvb17U8j|#H(2xRb%a+#}b?y?Ckwm|IiIv#mg3xjpT=l;K%~ExgZxx|BENxe$S>yf16C z9|0(U;8Y1M6v!YR)eA#s)h;yxTdu)c8=Zrt0Z)N1b>$0HS}pHOEon&Hs!alrY$8!| zR6;6TeIp?7VIC|K=%Y)NV4gZbqCmfk#QBizc-ATU?6kA?vJYc?%#?jdV9?Jz{NtDe z{ag3=SyoBy@LwgG)+kNk64^4AADN)OTSJnyxb%||MM9}gD{jSA_8k<5BJwZqTfB%v z{ z_{b4e?|c|IT5Nq}EqCIqz*CWLGjIk&XXrXJca+t)nnE;MoH*`@cQQUf!Ni-+=99(A zVmeuzpv7q6&PUVHd^jA=Pn_`-IWu<-o%slj7n9*^Hrq*=*abN_3q$Z0FIO}LZ^iX5 z0qAped!201Ip-H#CWH;-!591I^LoV9(Z?!8I#>q}kHc{sXEGY`|2vLj{@)o*reCO1ClI{e`X2*`^PlFx7&fArakWFeBGnyBR%GS zCn)^7m(p#B(iK9q2af-KaPaIIul?KS;)4D8?AbGL<->@{luby}gM)*EPv8v!-{Z6( z?3pgvM1i`yhsn#+{;uZ}$C&G2g^{Uuo+O~Zs-oui9=83nfA-J*x%cz`2LJ&7|8;EI IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/duplicacy/0.0.10/ix_values.yaml b/incubator/duplicacy/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..ef0dc38e21d --- /dev/null +++ b/incubator/duplicacy/0.0.10/ix_values.yaml @@ -0,0 +1,31 @@ +env: + UMASK: '' +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/duplicacy + tag: latest +persistence: + config: + enabled: true + mountPath: /config + hostpathforcache: + enabled: true + mountPath: /cache + hostpathforlogs: + enabled: true + mountPath: /logs +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 3875 + protocol: TCP + targetPort: 3875 diff --git a/incubator/duplicacy/0.0.10/questions.yaml b/incubator/duplicacy/0.0.10/questions.yaml new file mode 100644 index 00000000000..1d5feec6f2b --- /dev/null +++ b/incubator/duplicacy/0.0.10/questions.yaml @@ -0,0 +1,2809 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: UMASK + label: 'UMASK' + description: "Container Variable UMASK" + schema: + type: string + default: "" + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 3875 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 3875 + + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hostpathforcache + label: "hostpathforcache Storage" + description: "Container Path 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hostpathforlogs + label: "hostpathforlogs Storage" + description: "Container Path 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/duplicacy/0.0.10/templates/common.yaml b/incubator/duplicacy/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/duplicacy/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/duplicacy/0.0.10/values.yaml b/incubator/duplicacy/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/duplicacy/item.yaml b/incubator/duplicacy/item.yaml new file mode 100644 index 00000000000..6e16ca7b81f --- /dev/null +++ b/incubator/duplicacy/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/duplicacy.png +categories: +- Backup + diff --git a/incubator/dvblink/0.0.10/CHANGELOG.md b/incubator/dvblink/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..35a4d2eca3e --- /dev/null +++ b/incubator/dvblink/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [dvblink-0.0.10]dvblink-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [dvblink-0.0.10]dvblink-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [dvblink-0.0.10]dvblink-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [dvblink-0.0.10]dvblink-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [dvblink-0.0.10]dvblink-0.0.10 (2022-07-20) diff --git a/incubator/dvblink/0.0.10/Chart.lock b/incubator/dvblink/0.0.10/Chart.lock new file mode 100644 index 00000000000..ba36b4cbfc5 --- /dev/null +++ b/incubator/dvblink/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:03:35.959795129Z" diff --git a/incubator/dvblink/0.0.10/Chart.yaml b/incubator/dvblink/0.0.10/Chart.yaml new file mode 100644 index 00000000000..0cbffa09079 --- /dev/null +++ b/incubator/dvblink/0.0.10/Chart.yaml @@ -0,0 +1,29 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - MediaServer-Video +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: DVBLink need to enjoy your favorite channels and recordings within your + home network and on the go! +home: https://github.com/truecharts/apps/tree/master/charts/stable/dvblink +icon: https://truecharts.org/img/chart-icons/dvblink.png +keywords: +- dvblink +- MediaServer-Video +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: dvblink +sources: +- http://dvblogic.com +- https://hub.docker.com/r/chvb/docker-dvblink/ +type: application +version: 0.0.10 diff --git a/incubator/dvblink/0.0.10/README.md b/incubator/dvblink/0.0.10/README.md new file mode 100644 index 00000000000..39784e7734b --- /dev/null +++ b/incubator/dvblink/0.0.10/README.md @@ -0,0 +1,108 @@ +# dvblink + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +DVBLink need to enjoy your favorite channels and recordings within your home network and on the go! + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [dvblink](https://truecharts.org/charts/stable/dvblink) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `dvblink` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install dvblink TrueCharts/dvblink +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `dvblink` deployment + +```console +helm uninstall dvblink +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install dvblink \ + --set env.TZ="America/New York" \ + TrueCharts/dvblink +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install dvblink TrueCharts/dvblink -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/dvblink/0.0.10/app-readme.md b/incubator/dvblink/0.0.10/app-readme.md new file mode 100644 index 00000000000..eeffcb5a7da --- /dev/null +++ b/incubator/dvblink/0.0.10/app-readme.md @@ -0,0 +1,8 @@ +DVBLink need to enjoy your favorite channels and recordings within your home network and on the go! + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/dvblink + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/dvblink/0.0.10/charts/common-10.4.6.tgz b/incubator/dvblink/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/dvblink/0.0.10/ix_values.yaml b/incubator/dvblink/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..4f62c52c573 --- /dev/null +++ b/incubator/dvblink/0.0.10/ix_values.yaml @@ -0,0 +1,40 @@ +env: {} +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/dvblink + tag: latest +persistence: + dvblink: + enabled: true + mountPath: /opt/DVBLink +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 39876 + protocol: HTTP + targetPort: 39876 + tcpport1: + enabled: true + ports: + tcpport1: + enabled: true + port: 8100 + protocol: TCP + targetPort: 8100 + tcpport2: + enabled: true + ports: + tcpport2: + enabled: true + port: 2222 + protocol: TCP + targetPort: 22 diff --git a/incubator/dvblink/0.0.10/questions.yaml b/incubator/dvblink/0.0.10/questions.yaml new file mode 100644 index 00000000000..5bc94c6d8b8 --- /dev/null +++ b/incubator/dvblink/0.0.10/questions.yaml @@ -0,0 +1,2700 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 39876 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: HTTP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 39876 + + - 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, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - 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: 8100 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 8100 + - variable: tcpport2 + label: 'tcpport2 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, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: tcpport2 + label: "tcpport2 Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 22 + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - variable: persistence + label: "Integrated Persistent Storage" + description: "Integrated Persistent Storage" + group: "Storage and Persistence" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: dvblink + label: "dvblink 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/dvblink/0.0.10/templates/common.yaml b/incubator/dvblink/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/dvblink/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/dvblink/0.0.10/values.yaml b/incubator/dvblink/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/dvblink/item.yaml b/incubator/dvblink/item.yaml new file mode 100644 index 00000000000..d7ecd5e0c9c --- /dev/null +++ b/incubator/dvblink/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/dvblink.png +categories: +- MediaServer-Video + diff --git a/incubator/eco/0.0.10/CHANGELOG.md b/incubator/eco/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..47f64b81dd5 --- /dev/null +++ b/incubator/eco/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [eco-0.0.10](https://github.com/truecharts/apps/compare/cstrikeconditionzero-0.0.10...eco-0.0.10) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [eco-0.0.10](https://github.com/truecharts/apps/compare/cstrikeconditionzero-0.0.10...eco-0.0.10) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [eco-0.0.10](https://github.com/truecharts/apps/compare/cstrikeconditionzero-0.0.10...eco-0.0.10) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [eco-0.0.10](https://github.com/truecharts/apps/compare/cstrikeconditionzero-0.0.10...eco-0.0.10) (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [eco-0.0.10](https://github.com/truecharts/apps/compare/cstrikeconditionzero-0.0.10...eco-0.0.10) (2022-07-20) diff --git a/incubator/eco/0.0.10/Chart.lock b/incubator/eco/0.0.10/Chart.lock new file mode 100644 index 00000000000..203618ddc7e --- /dev/null +++ b/incubator/eco/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:03:44.535534536Z" diff --git a/incubator/eco/0.0.10/Chart.yaml b/incubator/eco/0.0.10/Chart.yaml new file mode 100644 index 00000000000..758d3738e9d --- /dev/null +++ b/incubator/eco/0.0.10/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: 10.4.6 +deprecated: false +description: "This Docker will download and install SteamCMD. It will also install\ + \ ECO and run it.\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/eco +icon: https://truecharts.org/img/chart-icons/eco.png +keywords: +- eco +- GameServers +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: eco +sources: +- https://www.steampowered.com/ +- https://hub.docker.com/r/ich777/steamcmd/ +type: application +version: 0.0.10 diff --git a/incubator/eco/0.0.10/README.md b/incubator/eco/0.0.10/README.md new file mode 100644 index 00000000000..81a79e3fb63 --- /dev/null +++ b/incubator/eco/0.0.10/README.md @@ -0,0 +1,108 @@ +# eco + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +This Docker will download and install SteamCMD. It will also install ECO and run it. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [eco](https://truecharts.org/charts/stable/eco) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `eco` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install eco TrueCharts/eco +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `eco` deployment + +```console +helm uninstall eco +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install eco \ + --set env.TZ="America/New York" \ + TrueCharts/eco +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install eco TrueCharts/eco -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/eco/0.0.10/app-readme.md b/incubator/eco/0.0.10/app-readme.md new file mode 100644 index 00000000000..847adf33edc --- /dev/null +++ b/incubator/eco/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +This Docker will download and install SteamCMD. It will also install ECO and run it. + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/eco + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/eco/0.0.10/charts/common-10.4.6.tgz b/incubator/eco/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/eco/0.0.10/ix_values.yaml b/incubator/eco/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..a22ae89298a --- /dev/null +++ b/incubator/eco/0.0.10/ix_values.yaml @@ -0,0 +1,42 @@ +env: + DATA_PERM: '770' + GAME_ID: '739590' + GAME_PARAMS: '' + PASSWRD: '' + UMASK: '000' + USERNAME: '' + VALIDATE: '' +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/eco + tag: latest +persistence: + serverfiles: + enabled: true + mountPath: /serverdata/serverfiles + steamcmd: + enabled: true + mountPath: /serverdata/steamcmd +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 3001 + protocol: HTTP + targetPort: 3001 + udpgameport: + enabled: true + ports: + udpgameport: + enabled: true + port: 3000 + protocol: UDP + targetPort: 3000 diff --git a/incubator/eco/0.0.10/questions.yaml b/incubator/eco/0.0.10/questions.yaml new file mode 100644 index 00000000000..10ff544fbe4 --- /dev/null +++ b/incubator/eco/0.0.10/questions.yaml @@ -0,0 +1,2799 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: GAME_ID + label: 'GAME_ID' + description: "The GAMEID that the container download at startup.(httpsdeveloper.valvesoftware.comwikiDedicatedServersList)" + schema: + type: string + default: "739590" + - variable: GAME_PARAMS + label: 'GAME_PARAMS' + description: "Enter your start up commands for the server." + schema: + type: string + default: "" + - variable: USERNAME + label: 'USERNAME' + description: "Your Steam username goes here if you want to install a game that needs a valid account, otherwise leave it blank (ATTENTION You have to disable Steam Guard)." + schema: + type: string + default: "" + - variable: VALIDATE + label: 'VALIDATE' + description: "Set the Variable to true if you want to validate the installation otherwise leave it blank." + schema: + type: string + default: "" + - variable: PASSWRD + label: 'PASSWRD' + description: "Your Steam password goes here if you want to install a game that needs a valid account, otherwise leave it blank (ATTENTION You have to disable Steam Guard)." + schema: + type: string + default: "" + - variable: DATA_PERM + label: 'DATA_PERM' + description: "Container Variable DATAPERM" + schema: + type: string + default: "770" + - variable: UMASK + label: 'UMASK' + description: "Container Variable UMASK" + schema: + type: string + default: "000" + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 3001 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: HTTP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 3001 + + - variable: udpgameport + label: 'udpgameport service' + description: "UDP Game 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, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: udpgameport + label: "udpgameport Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: UDP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 3000 + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - variable: persistence + label: "Integrated Persistent Storage" + description: "Integrated Persistent Storage" + group: "Storage and Persistence" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: steamcmd + label: "steamcmd Storage" + description: "Container Path serverdatasteamcmd" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: serverfiles + label: "serverfiles Storage" + description: "Container Path serverdataserverfiles" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/eco/0.0.10/templates/common.yaml b/incubator/eco/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/eco/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/eco/0.0.10/values.yaml b/incubator/eco/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/eco/item.yaml b/incubator/eco/item.yaml new file mode 100644 index 00000000000..2a12f1c1952 --- /dev/null +++ b/incubator/eco/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/eco.png +categories: +- GameServers + diff --git a/incubator/ecodms/0.0.10/CHANGELOG.md b/incubator/ecodms/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..727a2ad826c --- /dev/null +++ b/incubator/ecodms/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [ecodms-0.0.10]ecodms-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [ecodms-0.0.10]ecodms-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [ecodms-0.0.10]ecodms-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [ecodms-0.0.10]ecodms-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [ecodms-0.0.10]ecodms-0.0.10 (2022-07-20) diff --git a/incubator/ecodms/0.0.10/Chart.lock b/incubator/ecodms/0.0.10/Chart.lock new file mode 100644 index 00000000000..f31c8cf0cf5 --- /dev/null +++ b/incubator/ecodms/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:03:48.536515715Z" diff --git a/incubator/ecodms/0.0.10/Chart.yaml b/incubator/ecodms/0.0.10/Chart.yaml new file mode 100644 index 00000000000..91ad0da6043 --- /dev/null +++ b/incubator/ecodms/0.0.10/Chart.yaml @@ -0,0 +1,32 @@ +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: 10.4.6 +deprecated: false +description: "ecoDMS 18.09 (apu) Full Installation - Document Management System (DMS)\ + \ - Audit-compliant archive for scanning, archiving, managing and retrieving all\ + \ data and documents.\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/ecodms +icon: https://truecharts.org/img/chart-icons/ecodms.png +keywords: +- ecodms +- Cloud +- Productivity +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: ecodms +sources: +- https://www.ecodms.de/index.php/en/ +- https://hub.docker.com/r/ecodms/allinone-18.09/ +type: application +version: 0.0.10 diff --git a/incubator/ecodms/0.0.10/README.md b/incubator/ecodms/0.0.10/README.md new file mode 100644 index 00000000000..68dc4988388 --- /dev/null +++ b/incubator/ecodms/0.0.10/README.md @@ -0,0 +1,108 @@ +# ecodms + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +ecoDMS 18.09 (apu) Full Installation - Document Management System (DMS) - Audit-compliant archive for scanning, archiving, managing and retrieving all data and documents. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [ecodms](https://truecharts.org/charts/stable/ecodms) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `ecodms` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install ecodms TrueCharts/ecodms +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `ecodms` deployment + +```console +helm uninstall ecodms +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install ecodms \ + --set env.TZ="America/New York" \ + TrueCharts/ecodms +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install ecodms TrueCharts/ecodms -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/ecodms/0.0.10/app-readme.md b/incubator/ecodms/0.0.10/app-readme.md new file mode 100644 index 00000000000..76e8dacaae2 --- /dev/null +++ b/incubator/ecodms/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +ecoDMS 18.09 (apu) Full Installation - Document Management System (DMS) - Audit-compliant archive for scanning, archiving, managing and retrieving all data and documents. + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/ecodms + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/ecodms/0.0.10/charts/common-10.4.6.tgz b/incubator/ecodms/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/ecodms/0.0.10/ix_values.yaml b/incubator/ecodms/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..3a7e96a996c --- /dev/null +++ b/incubator/ecodms/0.0.10/ix_values.yaml @@ -0,0 +1,37 @@ +env: {} +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/ecodms + tag: latest +persistence: + backuppath: + enabled: true + mountPath: /srv/backup + data: + enabled: true + mountPath: /srv/data + restorepath: + enabled: true + mountPath: /srv/restore + scaninputpath: + enabled: true + mountPath: /srv/scaninput +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: false + ports: + main: + enabled: false diff --git a/incubator/ecodms/0.0.10/questions.yaml b/incubator/ecodms/0.0.10/questions.yaml new file mode 100644 index 00000000000..123608de132 --- /dev/null +++ b/incubator/ecodms/0.0.10/questions.yaml @@ -0,0 +1,2547 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: {} +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: false + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + 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: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - variable: persistence + label: "Integrated Persistent Storage" + description: "Integrated Persistent Storage" + group: "Storage and Persistence" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: scaninputpath + label: "scaninputpath Storage" + description: "Container Path srvscaninput" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: restorepath + label: "restorepath Storage" + description: "Container Path srvrestore" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: backuppath + label: "backuppath Storage" + description: "Container Path srvbackup" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: data + label: "data Storage" + description: "Container Path srvdata" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/ecodms/0.0.10/templates/common.yaml b/incubator/ecodms/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/ecodms/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/ecodms/0.0.10/values.yaml b/incubator/ecodms/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/ecodms/item.yaml b/incubator/ecodms/item.yaml new file mode 100644 index 00000000000..32f152e45b4 --- /dev/null +++ b/incubator/ecodms/item.yaml @@ -0,0 +1,5 @@ +icon_url: https://truecharts.org/img/chart-icons/ecodms.png +categories: +- Cloud +- Productivity + diff --git a/incubator/electrum/0.0.10/CHANGELOG.md b/incubator/electrum/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..5ea043bbfec --- /dev/null +++ b/incubator/electrum/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [electrum-0.0.10]electrum-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [electrum-0.0.10]electrum-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [electrum-0.0.10]electrum-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [electrum-0.0.10]electrum-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [electrum-0.0.10]electrum-0.0.10 (2022-07-20) diff --git a/incubator/electrum/0.0.10/Chart.lock b/incubator/electrum/0.0.10/Chart.lock new file mode 100644 index 00000000000..3ade0c5a7cd --- /dev/null +++ b/incubator/electrum/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:03:51.04599204Z" diff --git a/incubator/electrum/0.0.10/Chart.yaml b/incubator/electrum/0.0.10/Chart.yaml new file mode 100644 index 00000000000..2b1ff1a1955 --- /dev/null +++ b/incubator/electrum/0.0.10/Chart.yaml @@ -0,0 +1,35 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - Network-Other + - Productivity + - Tools-Utilities +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: "Electrum is a Bitcoin wallet focused on speed and simplicity, with low\ + \ resource usage. It uses remote servers that handle the most complicated parts\ + \ of the Bitcoin system, and it allows you to recover your wallet from a secret\ + \ phrase.\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/electrum +icon: https://truecharts.org/img/chart-icons/electrum.png +keywords: +- electrum +- Network-Other +- Productivity +- Tools-Utilities +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: electrum +sources: +- https://electrum.org/ +- https://hub.docker.com/r/ich777/electrum +type: application +version: 0.0.10 diff --git a/incubator/electrum/0.0.10/README.md b/incubator/electrum/0.0.10/README.md new file mode 100644 index 00000000000..84bcbc1f60e --- /dev/null +++ b/incubator/electrum/0.0.10/README.md @@ -0,0 +1,108 @@ +# electrum + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +Electrum is a Bitcoin wallet focused on speed and simplicity, with low resource usage. It uses remote servers that handle the most complicated parts of the Bitcoin system, and it allows you to recover your wallet from a secret phrase. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [electrum](https://truecharts.org/charts/stable/electrum) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `electrum` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install electrum TrueCharts/electrum +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `electrum` deployment + +```console +helm uninstall electrum +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install electrum \ + --set env.TZ="America/New York" \ + TrueCharts/electrum +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install electrum TrueCharts/electrum -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/electrum/0.0.10/app-readme.md b/incubator/electrum/0.0.10/app-readme.md new file mode 100644 index 00000000000..652d329bcfa --- /dev/null +++ b/incubator/electrum/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +Electrum is a Bitcoin wallet focused on speed and simplicity, with low resource usage. It uses remote servers that handle the most complicated parts of the Bitcoin system, and it allows you to recover your wallet from a secret phrase. + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/electrum + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/electrum/0.0.10/charts/common-10.4.6.tgz b/incubator/electrum/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/electrum/0.0.10/ix_values.yaml b/incubator/electrum/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..ed471e58e95 --- /dev/null +++ b/incubator/electrum/0.0.10/ix_values.yaml @@ -0,0 +1,28 @@ +env: + CUSTOM_RES_H: '768' + CUSTOM_RES_W: '1024' + DATA_PERM: '770' + UMASK: '000' +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/electrum + tag: latest +persistence: + datapath: + enabled: true + mountPath: /electrum +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 8080 + protocol: TCP + targetPort: 8080 diff --git a/incubator/electrum/0.0.10/questions.yaml b/incubator/electrum/0.0.10/questions.yaml new file mode 100644 index 00000000000..405bdb46442 --- /dev/null +++ b/incubator/electrum/0.0.10/questions.yaml @@ -0,0 +1,2473 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: CUSTOM_RES_H + label: 'CUSTOM_RES_H' + description: "Minimum screen hight 768 pixels" + schema: + type: string + default: "768" + - variable: UMASK + label: 'UMASK' + description: "Container Variable UMASK" + schema: + type: string + default: "000" + - variable: DATA_PERM + label: 'DATA_PERM' + description: "Container Variable DATAPERM" + schema: + type: string + default: "770" + - variable: CUSTOM_RES_W + label: 'CUSTOM_RES_W' + description: "Minimum screen width 1024 pixels" + schema: + type: string + default: "1024" + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 8080 + + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - variable: persistence + label: "Integrated Persistent Storage" + description: "Integrated Persistent Storage" + group: "Storage and Persistence" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: datapath + label: "datapath Storage" + description: "Please keep in mind that your wallet is stored there and I strongly recommend you to backup that path (the wallet is stored in your Electron appdata directory.electrumwalletsYOURWALLETNAME)." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/electrum/0.0.10/templates/common.yaml b/incubator/electrum/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/electrum/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/electrum/0.0.10/values.yaml b/incubator/electrum/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/electrum/item.yaml b/incubator/electrum/item.yaml new file mode 100644 index 00000000000..1021147ca2f --- /dev/null +++ b/incubator/electrum/item.yaml @@ -0,0 +1,6 @@ +icon_url: https://truecharts.org/img/chart-icons/electrum.png +categories: +- Network-Other +- Productivity +- Tools-Utilities + diff --git a/incubator/emby-sync/0.0.10/CHANGELOG.md b/incubator/emby-sync/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..398736c88f2 --- /dev/null +++ b/incubator/emby-sync/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [emby-sync-0.0.10]emby-sync-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [emby-sync-0.0.10]emby-sync-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [emby-sync-0.0.10]emby-sync-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [emby-sync-0.0.10]emby-sync-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [emby-sync-0.0.10]emby-sync-0.0.10 (2022-07-20) diff --git a/incubator/emby-sync/0.0.10/Chart.lock b/incubator/emby-sync/0.0.10/Chart.lock new file mode 100644 index 00000000000..0cbed37fa30 --- /dev/null +++ b/incubator/emby-sync/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:03:51.952802754Z" diff --git a/incubator/emby-sync/0.0.10/Chart.yaml b/incubator/emby-sync/0.0.10/Chart.yaml new file mode 100644 index 00000000000..2869155d889 --- /dev/null +++ b/incubator/emby-sync/0.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: 10.4.6 +deprecated: false +description: A small flask based service to sync up Emby clients +home: https://github.com/truecharts/apps/tree/master/charts/stable/emby-sync +icon: https://truecharts.org/img/chart-icons/emby-sync.png +keywords: +- emby-sync +- Tools-Utilities +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: emby-sync +sources: +- https://github.com/cameronurnes/emby-sync +- https://hub.docker.com/r/lastelement21/emby-sync/ +type: application +version: 0.0.10 diff --git a/incubator/emby-sync/0.0.10/README.md b/incubator/emby-sync/0.0.10/README.md new file mode 100644 index 00000000000..4cd19e72ef9 --- /dev/null +++ b/incubator/emby-sync/0.0.10/README.md @@ -0,0 +1,108 @@ +# emby-sync + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +A small flask based service to sync up Emby clients + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [emby-sync](https://truecharts.org/charts/stable/emby-sync) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `emby-sync` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install emby-sync TrueCharts/emby-sync +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `emby-sync` deployment + +```console +helm uninstall emby-sync +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install emby-sync \ + --set env.TZ="America/New York" \ + TrueCharts/emby-sync +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install emby-sync TrueCharts/emby-sync -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/emby-sync/0.0.10/app-readme.md b/incubator/emby-sync/0.0.10/app-readme.md new file mode 100644 index 00000000000..143568fea61 --- /dev/null +++ b/incubator/emby-sync/0.0.10/app-readme.md @@ -0,0 +1,8 @@ +A small flask based service to sync up Emby clients + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/emby-sync + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/emby-sync/0.0.10/charts/common-10.4.6.tgz b/incubator/emby-sync/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 zcmV)UK(N0biwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0POv1ciT9UI1bNieF{8GdfT40uD0bwGuda|j??YaiQ{8C>EG_` z90wvH31f<21E3sDI^X?&a3#QtMETa~8FObl76}vzg+f)KP$-0CJ|{`{Xa*_oEa5!< z)BQiaUavRY+mrwHdcESmz2R>EPyM~YaR1<7x8L9UQ?EbRJJ|gb=sf@~r6*$?(m(a? z+*Yx3e~<^J_#>hWlVk)IgBDCv`!j|dG2V(03n@;yeD@|xLh%=f@t8uo1QSBRCC!jz zAl90ZIU0c(=P4U?yHm_(*|-yud6&}+g|bW+rYY-kicohB8Ar6M-z!#Z;ZQVWK)?m$ zkg|>fl`%v^l5mu82{r2;4EK7ygZ=&1HCo;f8nIEU4f4iXZG&lBzG$_9Zss~0Biq&Q z|Lax1(;s$v?cVpTIm8KvI6+hbLvx7Z5x~iW{C5txL+G>xKmtX79RdK5(KtuHP(c;f z81Q9^Mh3ms!r;>Hb@n>L)+3F-p8pFNXNWzJ09ZNy`~AJ%-d=J3AMEZw&Hu-Eo`H57 zyiZZ`@$3|^6oq(#LlBZ=f~OgUVy?HIf&Y%s1ZFW8g)a~SV-%B{7D-XENRyK}oT5<+ z014|t!dL=6LqHb*VT@720Tu;Y08o??hB=|j5tzCOikiX94j}bVToDzOU5fdG1Noc=dihj%>jW(tF z4W?)+D%R6Ihux6m7G?uzE}<9wPOmfQ4f?&8{XIkPK{$S~i=vmqy>NdQ_6E^ze+>6v z?*R4o5PY$_5BK)MefVS!Skau@?Fo3%+UckZb@L&Sb-iu-HKoE7@+uQ3+Uhcv@)Ps9r zZ#Z~~CQ-j1jSr$h|3$dlJBVJs3>&n)5p@&9*^CgrDRoV~dg@xp4XJC&uZLAHEQb3p zU%VVl`omp_29v?y<^I9oAnLt1nCzk6UWmd$)F1SEgYd=Pa2WN&$z-?(_xJn5@p!j4 zp1=le*HiZ}zJW`o=^By-LZc5p_W<701nYISski1TnMi4y~-s|k=EIfSiB04~5 zupjNiy#YFS5$%pAdk5j(aMFu*2Po_hU%Z^`@9(~RF?}crhFg#s_=haQ9$5*q=l%2E)C{LA9pynr=$cc@}ew6TD(_ z%OY)2rYU*y8ddNpiZH97P_NVL^bLXb`u!LCQHWq44JSj`+ue^|^j`KNxYvUy42N*| zGDMT%aQw0#h5g;#0esmDUq*w$i(x<79UiP}xG8<6F&V=+rwif$CV(sur8q)zQKiH( zn&8iXOysXg7RO=%p_d)+b!iWZD2Eb`DUxMCgeHPuf`@?xP+1d3kt_#eps)im9HW?Z zz)vWi1CHjYl$0QZ2^b@gF%)%LK$jYUFJD(fgGoZToK0&%Iz=VimRRyp632*Ilu-i5 zG14>Nd=-_|hiD`hfko2fMS)m-b>#PtFvbxea)rwPq=IT`OqO$$@Es6AG$#o|91sc^ zha63^m?6P~Y5|uQt|5Ta9Y7L^M_#Avfb80~d?LKXjE}(I{;uHbH76r;q`Bc406;F_ z)LZ$di_6_HSTVe6{5JrrD%`bCw`|t!$Z0koBPwQBgcznM0x5}@l0z{LAsd1I3I@v3 zDTNUNj8n+bbSaCzAr!o}$gmyJ2OO!MDBe0pAw`fQu%$K1Hh@V4&Pg2OWcneEAlG~; zU|s0mT%bx|?~~UkMjVwvXiIwVdCZfMFS(Dgg4YLRDvI3w2XSxsh@p|7E4cxf)RcgrWszm?U6^nNT$# z#&fAr%!i-U`?uot2<*06*wbN3(C4bk*IRz6To3v0Yt@7{Mx@pR7br#{CltUqCO1rK z1q9g=q&U3B$rL~k;mHKid<7ceknaFIPYLBP;Z~7c938$r20wl{QJpc6M<9^DgO+aC zXa>#e^EphSEw*jp7$Znb1L+}a=|XZUSHOUD%2w1CpPj0QQKV|%#EKZeiGh^KIR(V< zkCz5or}Ye+Q9Oqf$IFTiqtBeeL%$ut2S)}8aEa&WpCm!8%l{pL50^)+RtkAIJ4pz~ zlciQ9El&)jvcV;gbdIeP^z`sTwcJu4irQ+55~M6jqti72Wo^!3>MF1ajG2{rma1ov z&p^h+_|JqET|kOO1tv?Tkk3Zo`|kIpdZM)%VSGpN(PubMV>A+kRKOqzGsejroSezJ zqU;FtUk*C`;fv02*cn!Wgc;#;$Z-hccnPME&ybL$IGIw!nCzddr(c{A%12;096AJD zttwLzwNertR;a@Y#Zjp?TF;!unzW#-j`iA3*L>@1wB~44D>DzOgUV~f5uM`%F>o_O zg3$R)Qd34$1vE<-xWRk|E-(Mba8swn`O>h|Ex|D!;UotrfBGQh`~^P|ivKAf#o&xY z;4tHag)m06u#Ea^gqei(U#*#~az>)Of|x&Zh!dp;N)to#qoYx-aT3X?1?g03eNn`1 zQ$Ujh7N1n9pK%g7ibk5vdUmP;DDrK*1~46XbDZFLHV1G{vV;rB+PwIl3DL$~uQP4in%`ByUj!FavXCh`|K(3($7JT(rqDRe%GM#LH4C2?Nq=6amN#UaBGe!>F&^ zkWwBFXVyal6lgjDHX~Uai6xn`Rimo;mxFX9rx-&RMMh~C0Lv<+)t!ZNIYZv`E271T zSRy)fObD0OfUthGRV{{yW@raM1qw5xby1`>ox7H{i%uH$wFtmi4g% zMwSip->y#d!1x+;1%#58-vArasUl4MesknpDwW}_M)f?CLsH#gDn1q}y+#wM>yT_{7wx#E<``{p?*OF#)i2uWx0>;?>ZSB! z1wmZ{$k_5R4lz98Y4IV?T^QfD*PFX#W#V z;e4e3*3P~lnuTdlQ+G^ztEw_FnL|?osGlciNA6Aovy}j7gTO4mdY%5D*B$H?DxZ^# zBfm<77{>`z(K?qm*ZOlV zMneqEbv8ycK^zHshZJ!z!Ibe%OZ_@d7S8m22j%)Hf zho6mScGP+X4!40>q(1{cY=g7Ii;G`gkHGg|zJSg-l1$MNateI?`hDveII=}ry7y|O z{SKx-qvbi8*!M>HtMBbOOxt$lCZB7x9Ety!*RM;U<*M!tC36R;B15Sy)0+BRXsO(m zd^#OLljCi>y1e{fuVq7)H!Dh1(+QbTLdinnZ&tCESPu4eWNPcql#052EEwmKVTe{A zRsc*WnM+TW;UZ_BLe@A{E@JJ&Xy=7I5iUg0YbC+8HL3VhKp!K)$SaIn&nAT-&tME9 z$e|EOV+3LXBWa{rJ6FPn3@}b{GJOp>)G&@1U@3t)6TLy(3uwE%qp>YS&;Rx}iY9;m`<4m$ z%vE9slWs&p)(uG#qLj0)sn^!lBu=K{V}e57hN<*}$ZocE!R|8{hKLEaZSxs2ueV!D zTwSQ2Z*g+Xd@eMO>N842ePL!%aPk^#oqafYy)AmyUO>^0R4$Fn<(su~7?ChuRox?!aP*mXLYTrajxon#Kr_y8WEb^6emD_h z?7PdA$T@PV2{a-~QayYya<>@rb%6Bs>(+s8-Yy5ulq2=R$4>5ZWyv8EG%>xDFMgyX zOU;{!|C42D8Y969FqR(-W9f27Ga&`dgnXZz6T;tNHitZ%ZHBdUC+1rutc-n1@dC$a z>Z&U--`*$jQndR9$4JS1y9+M2kj_lKV-~_#+lUr`puj1Sh}&vmVMM$!Sv@K-o}h3U z#;C4iwt%DlE~U}wxS?-w91CuvS+XP4D@*`RFt;Uk00d%oi1~}>2tW>S!Z?g$>GSBc z^e?;H!|u5?B-Sb@!ZJJ{Q@fFx)8)dh)6)CIl^B>f5|}JyOL-x=iWN8rLr92mx&)Y` zIqQI9(WF<}IP7L{fdCfL{3a3hqYzKRfGNNbpHyEXvj?DpT4{vn>fj6?$(o)x`z2xH z4pmiJ)vr}p=CCSpJ)>ldN)cY|b`w#~A-k3WU9oyQB~jbr>%5Qg0wrR#EhZ+Ge=!az z&(gN?>vgwR#hs4Lvaa0*Z#5|85G>$bbd={%05CX|O=C4dU9i3ptf#*h{D7rN^GSUA zB#aVaFx_A_Q*L`T`b&~gIYg00phFJ$ zY-E4gm4l!Qm|zq~hN)F&bqGgsW89;f>2K zq){d8I?e$S^N}{KBqSKWMloDoppYaH8-adLe@zj^QppzH3kgXwZa?hn_Y;WYjH1gK zMNA+pzT|Nl5yZFRbvw=1XQ3x*2-d16t5s(2h!QCdB z+xR_CvntT{G0BRPX`tUfd!}6da|9CxFb6YXr-M2CEW--O1nmELxA&^Q-xI4+QCG6D zz!GFB7^4ZH!j_b?l2y;>`iVR2wOYzzhF*N3zx0v31v$8x;c%w5n{h0C9{C%8G4wqH z4p=ZpjKL|g>yaCZIY&vyG^gy;Rc0zh(peZH=VKeDxO+qBbxdH?rihV@hKO~A3A^Zb zpVOvr1R=$Dh874+DGbphi{s@ZVJ~r) zt)7+iRdK!Uti6nw+-Ogg89$VcfUEKctO0yjfr4Js!6-rz7^`)q4tuprNU@YBh6>$NjL@3kpj(7^crl&IFP}{&__G3UbgLRV%sfK) zCrTFaD1QCbZfsxRc^adww**FG7{eq)bbAMgpFilIJH{P; za<&6bNrcW+7^*QO?AKyIl5;Ad=3GMU$pqbjGfEbs(=|b@N&(E_Qo5PYuNkIF6xPH= zl@3eX60KVunW*oQ2DPF$aaAx(rNq%rY-Ky)WJ2g%305T<)|nKdT23IR$IcNg69I5Z z;beltLez*66gh`!{t!$R!Z?SyUS#u(6N+J+yZXCILbq|+-BtrwiOr}6b)4!TjgC73 zl4*=CI1I0Mz?sw%uQM3y7w2jm>>Cw$k-mX*950Q7+5u4rz{4q+h@#l+wB@>6I@fYE zPR3N$7}p}vtoG_XMJ9VKV-IBTTfWyPzjXZ3{gi|LBt}f1 zN=A`hmN~;8U5iNCw)f zp>xduxjf8q&#^A@gLfKU>tofbmBOz6mZN0!wr2}4mr{4#d9|CY0T# zBgK(os9PzfnsHNKK{QioLzX6aGsw<@sbIiezP%{2O9%WQ6t)U5mJ!=R zJSxr-BarF*+%wS7^NwLwh!$!Aip^d)uXk0`a{*El|JK zu$dGDdxbW9c+GmlB3QNJu(j0zzrqn$zp9sI2CO?C>({Na6eIv!OdUZm32+PY*dCk# z?y&+RxF&>*z!=h1oOWj}YdD5Fg0Cj{Eyu@huf8_h>jhlBcnP`5$~r5?-uP&dw_jlCxV>+E^Y5c1&Y*_VH*( z|M}C|j^KzLfaWP*zQ%M%E4-b2%I!#HC6lfQhLbT8&Q4OgaF%wLYB?w1R2;YcMS3bYQOZh1e2_SsBeP=jH{%U~-6JWVx_=eu zT#?BYpP?&N{l7l#=%V_Vh$#7e`+KcIncLDhX_K_?gpN? zVDnuDSsg_(fUB*7xJ6wP;9io-8#+`}d#n8^7o1QyMc~MuzRIPw2SECdbU@Ij_NN^X zEfYA$p)ku-HYs(o#ZWA&s3uL2_W!=QkU=+2ERg|$XoV9&_p1y~%xON8XRTs}6v!!F zpad}0E7hrT{Vb6lV-$fc2aW9=kPxq`G(u$nlH3RulVwJ%f1(O~)rbp2EuPvgZ|iuZ z8>kXJP?X7&Q2>3$OtNGcLp{R8cmB-xeToGf}X4zOS z8Z=sJHc^tosXnpc$-zT;KIk2Bvql<;$P2vsE_Y=TZOBXOSb_j^5+OTha%cZo2mk5e zQ{x&T`v22FH*&%&7~LGhw!)B^gHCOM1ye3~XuCE7=Lkl>P|VSLVX)@im&Y@0Dj9>L z>4nfVh~--rwX|XQpJ)VLzI^#3F8UIPT)QZiREIccN~&imNx&zWgDXq)F_TYPREdHW zc~X3@pNR|fj zauRmV#L2+m<`2^WdYZ$$rC?%}q+w`*!wgbkT=5%(5&&cOyhqDnj!k&OGK6d|!gPCe zAgn+kDkO-qt4*b(4dzAd)K!%$yhn2s;Y_+(1C?wj$h9s6e4b7i*g8La*B-<0TCkTr zakXtGx&~^)Bo${Gz=AT$!auDiM(J&(`MyJi_*6oWh)N8{fy9{WPo39N1v?(=7Q0S>s#h zi(_T3i0;9B?L60Mo$faB0-UgoSC70X)sE0&&Da~<+~qY6XDWJM`#waO^3t?p_i!|~ zL}=kyd1g0MnrJDabIh3ZLg)h_Gjfxtly$SY&Kk)OKg$c2mbew`e!bvmxazlOL&UIr zGMIm=TCUHRuif5UxS2sr#mi+Xy*y&|6V6b0ZO&D2y42nSA5(*q7$#?XEh3@J>8t&B zgc^s9PvLTYs)7$e5@Q1of(bk*Gpvd&{vG*Nd8Qh$uW@1Bm3>u@@1Kbc+$UE4omg2f zFLMsA<2zNbJvX^eS1_I9|NH|xB%S^~oLf?*TU3riH4+~+NU`1*bi0EC#Yh(AC{e#I z%+g)%_<(1*4|`-^0pp%iUX{H;&-tYG3g*kU$rV(?S7wK;32T|M{;o?se|Z~X<b z@0X*YwhDA+E(S6LN+9>=}4Zf!r4ZF=pJkX+o^gv$WKT^V;q+ z@fo^Me{azK;76=}d7F6Q48gRm-?e4zs;2s>kRWP{Nf10F3F8!EnS*~LgGXhQ#L2Xc z7Am@=3mL=HL}p$}NQAo25_#XDI#0UY62C6I)1{7tVgOF$v6!WUlS-GpaW20msF~K< zFp1hQ;ka$yY`4r`6-aWDl9)`F7pY+CqdQ`1j*H7v;_9flX`szy3+ zbNKn<8r_V*Uva|G6w&{Z>|rYYETsBhRW4NZ=!uCs+(`$3#6u z#0EZ?emK>#MD)w@82<6>!>CYa0gx}_wQ;HMO%pm#<@HyA6vB#IAPQsA|F*mXQ)i!4 z5i2%vU?k&kbga_KKuH)yHedY8mTh?E$Fo!2d8iv+8P39f-AKuW%<6xYwWCYdv*A_vqg0Yw}gO`orbA z!Q308cF`h~a12%Cqs|3v{G6h(3omnslr3$zZD9z5SNmjB$k+{`k=o=T+0-07Fl#64 zcm%d=9$U|RKcSWLs9Wxwc(lh@Nwu#nxh zhKByYgJP{>NK_m<>6-1?X_bJ~q*PMD%f_FaCV=4xh0wVJ&GGZfHJaz()k{FpD|PeY zMBUS9g9IhUdXc&C+;aAo!EYF0FOC=#B8gG5$i0T;TkSw895}xdC6btz!?yM6S+e-p zPGYsJQ>EYF*dE6zZ}L~}>D_8u#M{?fq>1?djzB?wO^960dTrnP?!xB#3#A{A&Di>O`6)NtqJ4(8Brkj1|r!U*y4L zxgveM3*YVpJcOLcyL&rv;naUvso@dNX;oh@EA8C;3RvU35-U?Ic+a?|+R{(hjv$Ba z2vc6%3E({M_m&lQzYaQ zO_+@`&Rwoyb(_~{2{^n)Oz=@Cj5w2D$Z1`*R>a}hM67EEvYwIRO?7Wn5_e_QqtB_l zEe9Kqvt;9hTOo|VCmdZ-20s~L?4hKt(8CLmfm@x5$F$g2Yu&l6-K~I@?+A;YHai5HBLKDfoIPiB#n&(OwnWn z?l+B%*MR#YPiq5qhyC7x;sYl~ONkE>n^R;1M##5R>T)1}O|l>q4ptV9&;xxNn;N># zssr&A$J|Bjsw3-Cpl*6%z4pwyIgGuTQI=9N=Mcw^MV1?7F_|j&7MtM|nCu`ixyBn< zYO4(<)BY-R$>P}5RszjUB@4UKPP(O8WP#qwD6+L5(Ij$6TxAgDc8Yf)qu{U)=Wj)~ z-;!%AKM3w9CzMuMAtdum?a5DN0_a*kY~72Pn1g*b>4Ua%M1}63JEB14l3jP)xrnE? z*~CZ?XEUNsQkscDNhWwezE13YS@K$`8_Z|Y=r|+My-f~-!>Y+)@qCDdgav+|v%>{&~v0%!RqqsoLXkI@OUOtmRcm`G=J!cA7D2&E_yMjJ*i+q_#;RBP5FS@dx`H5ZH>jW_R>uGp+&y6_`+ zjU-cYtFEbv4ZEfaKW^8;7>Cz0A_{NZyS#3*4(8<_w~vg(bo1VcTFv?;Ne`Fcx^i!}dsV(PyTjA?c5U=}z20zdPyXBM^@{)Y4tD#0>hBGP`v(WR{r=vc zdV^lSH~16i-FIiJo{Vuw|J1v4TgA@(L7p#Px_@p-Gs-3slIwaMBr%RNlv13i3{=OO zDS+h)dwa9Gl$Y8Y{acyM2%&fTKb&-0f9`($+WPXv20sQo>?jWG$i4qgne775)^+d% zfX+u{fKOvGhH(dfJ`ziPbA_fZNMSNX;5kkr^mzw7#}d)eD_a?VJ}x!m-NFt8q;|XA zf+^Ok{SgSRU$9P?;7*u?lMW``ML%d=<0KjZy#abCZ>|>>@oSrVxiv=|st`aEVUItz zzkC7Di}!HLml9{uy16Mwr?8SYck7;f{rbJ^CQ2gH~JgS?-*gL`|sPT!Ts zTUL=yW~V&lGx@%oztasDK$&q=efavd1%Ug;9Z<1m_vG-Dc2p?jSL3}kOd(!hrg8p3 ze9}F91-9gk`L@t=u6pO zsD8?W&d{u; z^Nf&d0a0HVA1wL-2#(BQuE1?K$ZG_7zfi*IG9|*$5FNWgW9cwN<*qp;Ew$Y0uPVzG z30W3My4O-dIFQ}R@M={Z(}-rt3i`NnW=o5Ja+p#-mMRe9T;_j}kZz!#9q^cQJ-U!Ozr_0N;f&|FL zsFtEZ#pLy+i-(vyZe{7oW9E0K&=?C=4xSl3m_%T!$fa^Px4~BB*g8y6kh&E>o|i;H z&190&&Y^)8iB*8*w+g_*{PyhcMPFOnR<2ao)(U9L?iWf7K$T9H-viJAzkx)|p@f4y z(XfG+?-L94V8=stN^Lb-wecJHH6vUPy4sDFb;MBn-{cmF{3d$seN)bsFOE?DZZYb1 zzgvvHTYR?&928We3cLce?SfjpG$^hTYV7|IQQo~0|5YBRJ1qp(*#Cq6!EV9+KiKUL zpX~p~cvji}V)#2MNJT9Il&*GikxNsyG`G}|mPr=J;x94B+ODX0FI@&&3Wzp-B5{PM zEM&#v46>imvc7QO=I#u1T`g`L1Yddcscrrjc!la3>9}nOBT0M;>WkZa=V06EjB9N+ zLC?qScCFg^E&lZN(Ull9Ce}Y7a6#H-Ob$9QvfAy=#?%cYf~pgFZ_L83fV_jcW06!X z${ZGj3y5Q}`Us>VQP*N97!rs<@&A(V*#9K~2-@wo)Tfo|MG3qL-6G_+(=X+*v0j{W zq|%)#QrmEq&6JM{nJV4)VU-e(Str!`Weri%Y#ih8XS7sA`3-P#A@K8NH5BaRs|99~Fn`e#w-yIBx1^qwV-932H|BvxV|NlAS z6r%-_v65Z6=O`qvbEyZw%n6lQ@5e97W!HtcUXfW(m%b))^a^YVSvk)be~nOjMAD_> z56e}WE*~gd1T1}9si)n3M$1!anCSBBG0GdWyCjuezS7aS7IZH31WnBkMd6}6bpIBL z%N-ac&1KXv@dl>hP&nG)n(Bj&^xK^(~3#=(}%@dUqw(1_Hp& zXMhucKOf~^Su;xJ)1!in9s5$-{)PnkmV?tE*fO6>1noG4bZnFDwUf;4uDtTd#LcN2 z92#|TP1l}l+$7)Jz6bdNX*H2-b6)#)2V}FlcmnD%wo}-!qpaR>Nm`bKx{#hPaP}oIuZWetNc8~t&G8S`@e%y{6~MV|Fr-6D36N&Fh-5MRgzS;)yWyIa`##Bs8h=BJ{mto z_s`%^UMX5Su9Amg>u~4%Mut4S1CSVMheuwc+TB$|xnnD+6~0g<{{!c-@8EL4dd@3r zF*uzq;}^(A+b*3-06kTwiE^UR=k{VJdnU{ragjN(Jp$-+Y7Ki|0BhWTdB-)l3YVSZ z4(YAvgfp_bUY>b8KeylyqAsy%A3oaDnk&arLtj0R?oCyJYT+8?;RBk51LMC6Y$C4! z1a0wpnTpryFns`mg@c>MV0#tSqVi-gaTN}wR!%b$0O3zJJBIS($K32$2d9Q$1xN)~ zZ%`Bt6#!~nn;LFVXkps}Q^6ndJX$BOUD0foR5rZXaF~#fro&;*%T*4C{@7$VOuIGI z^dYSq4h^CEXYd+vMCT^Sp*mpcU&Z<#>fopDui>LbXf_ud=d#;Om4C9d>9Aek&P8aV zf7bK23h;40NHp8!*p{oEJRHZTla6?4`-B)x5iLp8^$zF3mT;EBL? z#_yuxu;%kYBODY^Z#WXqW#}H=s(&2kMZdE z?}AxSJou+`4d8?!DpTcbV8OfQu$b6tGtD_-FAoZiK=9>@mCX6q6Y;U*B$4>~b+n=& zhg0zNYoK7BWpR8)VjQYnt-3m?EhYo6%Li4xL#q1ckCbGo_>Gdq$c;MJ#~N4b8B@qr z^Dv2QZK=)jUn<3bEZlZBBfY{}0_%g4?q^lo+w3dHDNP`bL2xGbGHnh*0l1szH*oT@ zR2@mJ4N=m6$=qctX;KK_zup1Q7s`KD>icy?hZpO^V01zW1IbJDVEOdSgz((fP*A}> zUZM$=L?-WCJ!nxsZ=dZOY0T0$CY+PC)v`? z!b}O_-40{3uFA}!4#b;$%=%rSlWQhRp5658S1(DboPM0hHL4q4Fu40sk*DWh@M&cK zvAe|puCf36gOdH%+dbHOvi~0AvG$)yZW=lnN!7SBYyGKopPN~KC3j%^5yW`K@x4az zT~)jLuz=w=lNM&Gk5$f+^;?S-V|u z0sx$-bnbe0>Z7?I^j6xz-Dr6X4Y9GIuXN$4iCeyQsgOqxZz57%2>!yo0IyLfenEMC zaZg5h_d5;thb`~ACVg3xvxYGzS_(^;Cs*zt=c$wbCXLsfoxcs_|8Q?ul>hs?y(jtq z7>||z^;zFGcm5h!)vjOjwaW2pzO8Zl`o)?!ef=7~%Xed+F90D-;TXr5W2B`cjG{bA z^y%^C)#2-RC#S6q{KJ-Ne@ySNWuW`=4ZHMsc+ap-tT~dEp1SxyH@)g32mhI-SB3sLvSC%=Uq$lO z`;Gdm(sU0T^OuunWyD`YW4vzun}oyC{!wmvkll8w}Md8? z*P`B~$HOn`*F;@eWE#g@DMi&0I{B5n;@Qec&mIU$QB9^ZrkI9QiWRDd=|>HfKjqio z%NvjGAu_8$EY`{){)4zc{;i+&`ri)cL-~LD2m8CF_@Cj^`tMPmI{%M*@6;pve@xRG zEg!4>KNUAq-LLnv!@x1&w|M0ZCCJL9MP)>-<;9Q58hT)q0JK?43hU_@GY-h4a$VhmNhE8+iql0xhAQXt1UK4TuwuD-$xqBV zrUzQ_>*gPE!EZaf@p_-#J+YJNF1zn!PEWe#n|K<@{|CpNp$^?_Ym-d%VG}v7p`` zbHiA$(0%O{YbreaHgU}+gJ}O6$MMAt=Hbk5?aj&g@h^vO-@2^@?@t4#$ocyZm&aFq zuSEY~(CH65y-u&&9|SGn-;<~AD^?-3WK3@zliys=k4LdydB;!SszI${zBM0re>31 z2T?Z03zQ(n&L|nnhP)R|;~m;-T6vggibnR|!{-0!4F{$D|GoXE`@bLMd6@hk#Z_bb zwh1{Jh@0oGxY;1G`*~et_s6r-tHTeMKb5ZIlgg!u;B6*!?OjQ~=W2M>{I~AtJ9+@u z&i{jQ{O|B7|HGp^b^gC!%-G+H2T+TQwQ|GR0IBxwh5d9;^TJnRO2ypvtL}`+)4{Dld@zxW*4u zDA&XjRH(9vFKB=GqTmfuZ|>|5$`>UU$7hG{INWofH%bs+#_&%lw@w@Cb^t5=mDs5azd-wceV0M& z;~*Y7_RGz*_iy9T+3YFVfAVgJ?$u9(;(rR=9iNftFylmCarYqie+|m{Kl;1-Px(I{ z<$N&W6I73oWN$oqcOaW370chC*5P8c71AGQKfE0m{BFItH${0?j zdci0-4a9g%AziLCBGvsOvlO})hCEki!Z*5iKCdj^ZhU3Et~*PishY!azB?B^n!8_8 zSO^m|_t{rph~l2%_ip?&fSfC2bZf6Hj>X$w+&k1g({9VZGqP}#&$hkY(YyBETh$s$ zyz;Mo5ArW7U^s%S=nFKQgp+A^G0=X&8WB`;GrK`RHg%Vjyu$JnHDzm;lIQG3h=+5U zvhG4{?O7x4RC2@ zC)DZxyJ!8$pLP1bU(EmBAMQQf|MNJ{M*1Jd=Iq@&nAYojp~rA?JEdPp9&``d+akQ7 z4)@P5-dU5Ek3)U~`rM~YS*!csZ>QUvW^pPsX2Gf?26IHGD8DjWX>Ug#ML6W!mCk&3 zzt4F6x3@hzL9Msa7;NRMuI=&$VL?sQA_tR%a4D6WVd#{vM$;*fYuXL*RrIzv8(hWf zysU(2K>85t)}Bw{yMO4XPXC*$MepJG-x~ej@9zzJrSpGJ`JW!=*;xOd=(}PcMElz- zMej-XYj_)Ke)l@uJL~=8-MZg^)_18=*7@$&1{&W%@Oet{9Ma{5zT$WE3QV0HaC7r- zrINz0wEs1r?i-n#u1;E?ex8U=wYVLGD7;XWDyP%6)RLw-| zCsO4&c@t{>)?1JlTjA(*5 zVj+!!+-X?cUvG$xMdhvy=W8T?y;K;+dEE#Whh<(lBJ&LgW8Q2W=BtKaeh2E;w_i*6 z4Vo*{ydY33hF?m{x%a|KtabFN=GZbUOA9e7t0vKk23b{O+ok>%eGk0ce96VQva;2Z*iQk!A8pEUJC^B1zYg^m4|pLR7i(I)^ED z-j0yDNE?9CO=kts>He>z$%7wyrQTtNvAb$Ch%hofBCirupfQ!#nU`v<*FoxkZN}`eX zay=628UyTZSDGi+e1_1ax&X-A3`%bSNV54DQB^&^Cco4V&uS`Qbh^HMmNVAcrivu1 zn}YwszV15zuMR_0;n8>W01rm(LJ5b%$U3dX=j; zgo%3?5NKDgiu+&h;njSVO2GH#=k>UCLvOEF_kMi7Wstdi`CUD~WjdApisdrR_kGox z$zvXGJ*HvfWZJoYA(sJ*e$CRVjK;UR!1`nD1Dj<^N}>xCqmUCiDlZ|NuZ2$5mQZEn z1p*3}S}fYWTR_*ILmtlFHVxeCFx~juia5Suox{oNpq__CqJc5%s@Hh_B?u82MsJ7tc*qQBR#< zsE6dXgFc5S^=wP^rfSK&qEg$tfUD9t^+#*{8y{ii{8Jh_{9+^!LgJyq+gAUYs{C#Ne*ZYlnMdXA2_hf zq+f@gONbJV&c~*Ry6`r~_7<$;3j0P(<5VcKOX;J}C?(HO!W^;{^cJXCHnwXEc?&)> zXmz+Y<)*s&ci^Ly6xxV`RzkXO-YM~tYdGjlO7_BxNhP7rxL&arcFI*>Uwd(Rp zwx!`!(q7`_lm2?rUr+k0vGjS;Ur+k$kF38QQ+<8;T~a{R`G3UJM>g@>^ zTCFaYL(6^2m26i$XH@M;HqE(oBGk4`5r;SdRZiP_r>oONU0;(mn4x&yVY99|^V!y0 z9V2j!P}-_c<&Wn-ZtgIyaB zog*0iLNQ10lMn?mDWkJ-@8#qG^0Fi3gv2mTs7znwMC&m8Pp^TOFJJzMgPK4lTPa1M z`BdG1_YhWTY^ugU?e*O$R+ZQo zm`q4d*FJnZPo4co$MD_^z;*WD{$9!c+uM7x{~qPp$o>;d@gM-CKwH15UIgH8BiD<- zWWxXgNtJtv8?cb_rRnb)E?|jKwh!&6+Z_s*;ss`0W)zYpixUu_kBi3{H^T+BVIkk# z*f+zJk{Ia}M=-@Yy=mmKBv>k{*oX3-zP&aJcm?s(;c_pHnR)7#rG zp8xOlpYDHrlxJiApT6AhK^%VWbrJVq%Q>ennp<5+KacWk ztp82Uj0Z9RB=D8He(sULyX^QCj}~sU+t>Qy96Yg{Ts2zXih$b*r&K3t1Ij?jn z`5HMT{iG4j2hgmwle1t=$qF{B!K*;0*r{mf;J@>buPRk5UJ{(gH^ zh1Eb+9@QmiFRKsa93?(5|B-6 zO~3NrMNVik0``ZE5&e=MHxT-3$H|7_SxVj@idQ;!nTFR^nH6kOgN~coKy8@%Sr0n- zOZT<__pUClHET@xA7wkMBe!d zWQ*BUDj|4nl{mUwj{;u#X)y|c|$(h?7_gym+bCb2!$f#XY94C>= zfz@WtFUAJj*<3-Cb zbl7MGl>zxg`@LoqKYqK);(W<=W0q>`%{Vtbsj;Nt+GjLg11_dLWd5@ zf>Ln|ZV0`O35?`b)f-Z%V=Bv|AA!3mWG|ukY}Y6WM|1*1#FWP=qY{V=Toc${zhIq3 zzY`|76DHxLgGtw1A}o9U4}udA?111Fuy0M2Thb%=9go8PTRyAgzn3Tb4hmqM{NLR@ zD9ZnX-KYGIkMgLA9LMAa{G5%EHopKTV2l7!)>?#;&Z>!AnNR&Xhvw=7<1*+Rxs{xz zI|cHcls}b%ALsdbnW=(c{LJa#G%(}Rf+*cvZEOauPsR!SM4n~CQ5#d zNV~XAe5(Zf+p9^bjcl4#-G}m|JvMk&$$#y7y>kfII{ClXFXsOp?(aUue?Q9O+W$K6 zWnNI9G?1VLQi~9m}{3WeyWKMNxaa^bea{7Dw)Rqm`?onl;hAt%z2d z{x+M^-FT)nwCzfAT0c)MFF6jsa&??A4wI^bKgG`d-m~%XpH=c-k@msw|K9Hnc8l_V z_u$F@^C*v;&Bvcpm_*WWmI8uIl=EJ&!Kz8@&OOH=t|Zy1>+V&TdwI5@@q>RXB%$zp z%N3wrfh`-#Q1Q7SPF<(-c5M!>d{rVPz7!3%6`LsDZKk5>ZSb2gNs|x^cjcdWevwTk z_%jIFWxs}$qpc&kV*;SXV3Ni068xIM7*DW}sA($4q|^EZDd@617j1~~VPK3xm@xzx znIpM|Q-V*8yy$+{hyirpDC5O4Ix%sp{j30#@$ zN<|8sXF9l^`&5jLsa~vC+g`h52;{ff+!C0L$!Pm=0hR+)JH8GrCdO2lRF^3=;8)7; zdy^MK`Y@g+B}gmM>e-p7sx_OBK+i{q(S=~tMxkJG$?SUOs8Z6BSuZ8EwOjBQIDK_Q zkN!KiIw?wH7$Ok-X8?k$U~@rZI#v|%g&kc^L~B~QNC~PxrJVrK7a8etLp(nG$#o|HE`wE3$!s<#vwa zOn!}$21@YPD9LARE)hCHA~c;556Bxg@N&56W;#0l;v-6^RrB%O}BDY-#t~vkN z?-lcZ4SKsz{=dh0#KiCZ8C=c~m_wWZJKUukz8pRF=dKkR75f9ZP!$l53_vAl+F-pi zrxd}3=O)c!MIHGu_ayn1&ayamP7>G+aPh5^+K-?*UO}_~O?-g<;pG6m#z}O-geIdn znFhIY&btM*CL|ryW_#Qq8Rr)_YxzeT7);?Io$7Su`Ylv1RLl~c+LH-hk7Xg>_P!OEb-oI}U(|WYIIiAGz8K#xT7_EKEBa>ZL{<%R-6lPSNQ{w0|HwT`)m$!~s zt7tFA6BI5(bD^mHd7o`?MCUkB>8R$2F)_s|L={an?|NAS^25dP`PKbHy?==B4ljP*5T>lN z7UcSh|iYW4Llq}xpE7VF3;gBMJoJ*m$&M2r8kgDevYs8u{amL||y}wQ41Uk0qX4pvc z&KA%ESCQ*pPi7$2!V^4w2UD*J_ibG(Zkg2$tyzY6r_ifn@$%)mEUFI0aEj+E&c;** z_2q!nMF8(embmcr{B}Ru^YwW{b;G#^bxOvl8h4wUwfpB50Phf;A|@Rgmo!7ChZo@D z=xwjj4$TOK z=Re}9NJU4j5$e%+xp=TDU*MTgJ4#fd&^nJ+hrpBs3arxb?h3{fm4 z3`rtc$tm$;sX)#25;ELwyfwA{DM}$lLEXg$Hs_FX_nD}J6Lyj?4&&H!>2bt(2ip(s zC;c`@PbVYN)^GXq=#_E-mEBeX$z-+McXyn~1I`;J2e6v4q zsC(VD;S5j-a;iOF<%kx~SsBa$#qAx_j1 zy7uF}A`l~*Cvb6o-nNk^cjNE$H1PjXe#b+A>&|~4?3eO??C(CE|9g~2Zi}4BRG`-3 zXO6dc4!>sZKDmM99L`cnMvZE2*KE#JUBw~HMU#lsKP*(8)>P*+U7@jMNl#gq3M&|| zz&vC8Q0rv%PStL2x;?DUilEP;c9)_gLR8Y$#55@2mbxYdE3@uZ-C5a-=Qd?)kwAW6 zt#p{_J;UPi%*_eCRSKBQKRO#y{^^SM8C3_L7>I~8npl=f;)oU_-J=PiPD<(y*s>+S zcWlS`1k`~Hb*!wid6Wm>YFoypQLavK?c~Kabn=r$fARBL*QK|5ZpT zKLf0IGbdTX&k&tsc^v`+{~%+P0~Rwtv!pdf6GF}LNbOBh9?qtE#JD2uEkjcof#}55 ztcX*zmBbq24Dy+ZHL%~$K3=2c2&6H@i5S(& zR?pwRzq~p-ytw$~{rT&MXkLG7Q$lz}4|U!9$t{&-sg<~rGl?+;qdjllhdmY7suzPhwoOfk_9c) zh4!Y_g1hTvucfy5utF4i#{k)#BTJ5ws4s%gzktRBB^bL;lDJ3t0ktZLV z!}v}Wea0U%Sv&yS&gMvS9Hn`E83J#cvRHu#G$LK8b`3Pbyufe3LFaun?Vbq#@N0CM?3MS}nS>?+Y39_SB z6Y31#ADmy#4F`z6sTIrDuaXt?lE2VlVX`tWO8-F^#6xETR6ORPH=j4Cx|*pRm6}2x z&Q21-@nl(KC7gs5K{+N^mrw!KPB*szTe6VHpnU@-tfR|y=J4}X#t^-_5%3XvwLjP! zym$eA`%S|}loBe2mOJ2sZNX#fK$>iV?A3mMuohxdIuORE6tQ39^6g8?GdUIWPE5eU zEgOE0q#y_692v?Ij$=Ej>GTRSieR(^?GNty&p{&p)6vDCJyTaeDO?;zi3ngZLMa%u z%!>py?0Sv;Tf|yXIU09pmK-S^y!C&9u-yJH*bcyN%E$%nw#4oE7uRn73fgVy6dWA% z`UlQOW8R7azh)Tmzf^STFSqDZ^`f%ar}>io8pCLg6VT4Y5)8Cw!SgTfn)7P_+Ntx- zTM>Q@r0EL&&qDl<|F{pJj6-1Hru)#)`etYuq_|*i)4E@C=Hwd1KFF}sG?HENYB?&{Xo^Ls3AOIZC5y?1cGq4K= z4t-T6u^0?vTzC(}{4hAml|Z>bn)mqqc|`%c5>d~#{Tolf-$3x(ARK^KuRw72{`AKH z{9Op4^2fLD4_}|0{s_(mx&SkI@vOO*DS{jd#fB3wM{`1#0r-1CQ36Fz?V>S{nud8( zrBAB4bNM|IY6>Nhl8Bh+fegZaWgJo|Ed9hITWs6YW1dEAjDRqBRTwrH~|vu;oa?f`+81S}$^y1}<-L62mYd*-e z_1B;)WocK?(;East_u=Vu$tqlhoLwS{!qAFU+(p{jeI_DzIZt>#B==qO{?YrUZxvLEYd{5Ez_aA@_P!td3u`d z|B~??vw*LO|Jmye_e%G_?e9MA|31c};(z2A>+7H~NkB}dIBdRKtIl5Aeb+Z;M-v zySurq3Y8+S#MdBjwpe>!K(=iKeElk!$=hnxFvE;-GB0L+R^Q|udcT?d+)|`yF&?I% zVvA$$jkFu&RYXbZRKI{NBCoB_O9h7?F5d^G!fr3*NWAh|&x3rbS}A10UIlR_ww?`M zZFV^w%kT5IO_Z+d_rHh_)o2DY&eI z@#G*Rvb7Lui7orU!}NlL*QsSBI*ebV7%uJEM~8!i0O?c|0;@;VfESCZjH1gKMQldm zs0_PUq9I`INvcKJ|K1R2>K_3u!t_2@Lu?qnTK(tmZL>T*_xG%||J{Z9Emr|+?EgW3 zw~+s1(C-~Q#eY7^BjeLQs0K!eWlP(|0|n?;5Ey4tkYDH$q>C`n4Y~IKRJ8O;7c)?5t|M`x7*+Wk z!V1vkyZg)DBn8fx=UWMKK?Ln!TLpXiE-<-k>+aY}xZZgIMKL#LUZDq`1I%@g74jn#k1Cs*Ph-B$AU!Xl3UN~f71fQ$v>kRyxTp6dL^P441(Ua~j*4t&Op<76tuyf0Yg73?=~$v{fcL~f4*zc`-Q6E+NS zlXtR&>8n*uuDOG)`)BZ;&k()A3;~6PyebfZvyVsW=w6}OVh@w5+v$LxVPQ+Um+C4> z1E%b-bNaVcxHhffz|=OmT~5WE6c3!1JV*D0Q^82BYraV438Bivyb7naHL48OJZY?{ z%s=L)iSp@&;!iI}oNe`a;pn1qq86qa2+%y`%h#Ct)6Kl~4r=+9p9^Y^BAk`n$@x(! z3ocM4g9`h4bqfst6TQWATs-$%*@!J%)sFmW%2s99ws7hXGHHquTAo9Ssy1bCuw7R~ zg~SKj9^KV#%~sOcoa~mZodWW_FH&a#U7;;kbb|K{Q+ti)0BT#-nY*1g&p~PNwzAXq zkg)o#xHS(Ea3EK1DJasYTI%o9b#;AnxXeFV<-8-2t>?U|TADNhD`;(_Amopc!<;J* z#trN3_mvYiUo^`K=BH{mH7kcao4;KiYknyxT>E)tKTRp=+SeroI+k#?lw04SWWsb` zk_j_|P8Wz4I-*|IbVGmC7*voUttUZhyT2Y;wQ=SNOJ91pRg?vGk)m)#(v_-2@Rj!` zmXJ{wC{~zH&0NP%UgU4=sa*d>C`E#4LX24VDi3HpN&X>IC2hDETpRz0B z)e6#OI5&V6Ylib8JXQzVs>q03gUir}!uii2FBpx_AY(d=M7N=mpv8n-XDJ94{Qv|i zA9YZ5*{ai)o5f!PmP<#mChbI!Ll+Z!#xU3hzk%^^FG8Uek>14)IV>?4GJoM|HV6B? zf<(=;9!P5-KP%!r!FP*xjz!>n@sE<&AQM9QPyX4H74Swc`h(qIB|NcEufk8p5{$at zGCUc-T0H7v;AJ!h1$a56(RYjgu7LO5LZDc|Nco@k+>4>U-}=hB&M|0(<3FNtSnhKm zUXQ|Ab)Pkk#Xh&&?G{Y2z8ic57X8*WPNES|EZUkQ4h5?Tqefm$?u6G?#UsfgLDg*# zx$W%CrmtUH26_c6tKynqlBrP=`uCRD!^|V#F7h?suBapU(5)v=A{pMSsfUy42oxS! zPw-%Mos7n%Dzc8?v+62x7^|wtVXvyw@|TfiW>OO(|9xg;1=z~TE5U7BCR+inBajay z83P~9EkpNP0TXqD`vN8g(*x#=?yUhj7~Tz_lt4w=X+GK%SV-n+jJPL!w={!o3QO=< z88OXyIj|}tye-qYuC@R4VYXWue+~Tq`-A=B{{O+?$^ZW-PeuNx-`DyxM<>gsU*j{d z8bog8tv;Fg*c#Q#$D{4Ll%fSDnM#$|(C`dgK-PGzv}m7GLb(50^~m^_9So{WSfHZ= z@?zSYHTi?AEejlD)&XVPZvxCqMpOZ@*r>ERHp9__+KhjdrIrxJHpBA& z&saPs5qhN$Qaw7>1zXlbU5Yb_X}wHa3AYaB=HQe~>p_yQ*srm6l*&a*nFsENN}{c{ zJjq^#g!=FZ2x#C{DCkcQh=lTWzfa+>8LBY`H6%Np&N2ZM)(K#RO<4qUu7!jJiaG5&vjok=PGB_6r*u!p?tuJi?`_n#c$)ZsqCm^z`F|tVjQ_jS(f<7BlRTfF z|0l}<-N*kEAgcYpa2ocHqoG(f+X|0hUzApcJS+v)!qNO!qx6*Ly$wDSLK zG(MjHSH7yT6k9cN0?RI7145Y}$ZH$@9u(6s z?LaXN)8B_;n=hynT{ROP2761#R>}VE{x|2KE#M~3nt+gj>guc+VD9Iv$hdFHB{?L9MkGx^Q z0;w-JU2lg}wr%8n^&?W+R#G57Z_2B-JDc{pedF_Y;AN*1Rx8jS##3wp(dPLYonAdv z9Cvtf0NCLM?`6JIv)pZwdeWS z3IEP~arIEm+#i)Si=+LhQf%*Y{~?|R{y)F(p!@FcPXFKYoT<70I~q>+{{K@vpPm0N zt_!(`>(2pHdi|xFNS@l^*Djd6kI$cj+2QsF^9$~@p62(?_MD#4AN;@iiKT}L4ivA< ztZ?9qAM9|l%h0;G)fFh~+~pnqE{CR@1mcH@H=Px%0j-;N*Z|pp?euUM4<#>0C!-7c z?ptR3u2aiGd>C)77FYxSh_{zuI(kK-Binf~8riMkH}zfagTv;r>>AKch-`jJ3uJp! z@`0ZQ_FqcE_2{IRE7E1%=lxiD{VjXDypY8{qpOE zMSTJiCY@}*3{Gz4v7hR;cM7<2Qz>hvS#kQO(()=?hg@OC72X%ExF*o5%{Yy=N<*%U zG;h+uk~7N%Fj(SFE!~bQUr(JQtqzkI*Kc>XUKk9~c?H`=<9Vk-=CrgkUc_Q*r0xyq zO-+|d40|2_giodZ-%uPL{|pxkexbrWZ-3gI|1otY=KW8ev#3N7#3VPq1z3s98{<9}t%EJ#=@QCKxW!HZ3Tqve&q zLcu1)(eh#$k?iM}ACbS|b;Az;=*w!XDDsi2u(yWPU%mVoCrI1|ewx+a?1LL5i#TDxzlYK)fzOVt9C+^nxp0Y_1g$yhC`oqNl(u2vTD- zS1<|gJDLo}qmQOQ!dj^kd(8)vLAc`gn~~%iC8}m(|Bp1HHDh?c;mbyjt^FQT%WT;^ z);Q`HL&$RavN|b8t5^MOEJp?!Os$xrDqqPbPD{X|Q30@a_nKuKxMYk;pvK~u{X3$# z)7Zo$Fyy39)-j1tM6+>0A87)=XLI_)9m2c| zhNGp5d(dTBP4w{2p}io#=D2@yfgZx~o`q9oJmr6=$FAO%F#Y?f1q|E~w0i)$Tv{Li<9P%UE)($#>H0bL>S zHRvrvGKV48iuKF7h$K^R35rRIDM_}f4DcXBJjh?>4Jce1U$I}bTUphY`E?(sTrn7! zIG|cTfpuZtcVLq;=u58RA2SPeQCS9CU1~2%ip}f;vO>XdTu#7+U^2xivs<+ z9{!0^=OC}lyn^XJ&^7~=w=H8WA}xKXdAt<^nZv0WNbRG?97nknUJ(BVCE$XO>RYtL zDNVL=GYN3j3!VokPLK~N3QoZ$MW8fJ35o)gTyDZpG)w`GQi@=3SU(}+yoIsKGDT@! zXzr2y-S9A9hUz2ncf&PVAnXCV5-}?PQZ|?}rULT~%(T99Vq=(b+ z^-qodm!|il>wjlFGUNY~kvrMz|EG9b=>LCYt^r6Xi~{CUi#bv^#pNtgEwoDhb-U=5 zqC)yilyK=uA`qZBBwKOmwbF6AtH{$8(p$gyMFVOJ?&eN{Gsv%P^#9(YY=3Ijzr4M@ zkE3OR(t8Mk9qZq9r)K>xXTSgVL=Rv8nhxd$DOpH;%qIYl699;7u^-Nklmo{|Pu&284Fy~GUjKQ5G=xfPKV@}jf+p@jhE{A!8wrK?m zpTGhqDXjor1n^Y$%>HTjG?4$v9QyaN0(Z)PXJqDojJ32w<+T}s-^;7;C&?FuE;GStCQ-yg)Y+de*698xgdNm%m4G9 z2J$~e$u0KLBijFF{D0^SC*!^Re~QN@|K*^!Q2}b6)M$Y#@yTvQpwMf&K>cK@1BJG! zM#yM*B&DE{UP4)?8dN)7I~ZO1`zeTwgT0RUb3M)F|C#TTO+-7WfnD-{SgQZ$PTYO` z=SiL&@?Q>m2Q>iYblI&9QzQT7wD~zE3BA`g;4b;^jm-Klj79;@>Eb%Rh zz*WH^7_{>U_zbGi1effCo${a4#H9YMszQ~Ng(Cl|v4|IlTMKrP*5`odA&QEy4)y%L z1;inEuF_225FjXq2?B~h*2T*5|DWDp(*NoGR}ZL;Gwu{u*L=58E~?Lp4A&_V-a=O& zyhDF?r6CC4tBMDH>f}Eq30&SI?xUVv@_%IB|LaaB?mqtWBv1SNPd!!ZN=y-O9>Ua? zcBQ6~&%ViXtz_v46#1w+4OII;O9lnIQmPDeeZ3Zh22y>;DK931KS#fSUcYDm{IDRe zva9m6FW&H)5C7BqpMqpo8R1;qG9*{$XRlxO|M~4z4KmOa+h5WiklA^~T)hGQc)o%O zJ(mXp%%&!VEzmXS&_cSp?0_a@Y9JnqXCuStKT=!N$bTA#($Ko62G}A09VYCJ{a<(L z?B)McJgww^6rdypP~_YKx`Gt=B%%;UdG_t#;9Uxr=+vSO@<}C&dG+#Ln{dhLwaY&OXz z*Kk>L{O2tpbjKR61gM*P{P?GN_Tv*s&=P(87DoZ-^^^bkpWy#|`6*q&;dpY|<6`B< zv$t<9-n=>mZ*$&2fT%d1^8D9dfqv-Zx8F|LFYKG&emgt@F+Xg{a7zJ+DZnX6X+ol9 zxCIGf}qBKrVkB(4EIW z`!I%c9NxDE)DHRYji#;{|8@8Ezn|ve@*i#}Swo6_7=~M}2+q$ge}41w`sZ&h-n{tv z>gC(_7w0c`C4NhbOP@4_SnmRVM8P?X&jNm!ke{*2-};-BlC||U2X1{EY?<)$t?w1; z7YT{$a9iFhQB$#fMUs_mUFbFIhf87BiXd!M zWL<7!zc3%ZZrrW~K7-fdB&fw$$zpbGSAuUZWz>BE3w14J87L#6$r8Dj2OCen26CfA zXN!lB)HeePlO>`Y=^=OyZg3PZ=LSd2SE~A^5bgpgTHm7NoUCJ*Akh2U*T8j#Bj%Z9 zW>X~;4NlJW*MKG)WEqe`1S|s@*Agz@cBeV+Ozo~e4zyh-1<@vyq)_OYQngnN_4q5` zll7d5S=L#138o0ZFa-KqV-}=3Ld}J<#GK1PpF}>SMcG@BEC!VY7)qL%K=|)P*d~nEf^9rKQ!eV)_mUryn1&5QZ_B{ z0{f7Asm(0J!ma_ISLOZdEHa>xP|)kVq>lcJR==7ubCN(Q?N-< z&`{u;Hdl_wsKI74(lp9SzJzL{QPZ`dnpY z?fRD<>V0g#FB+`>(WDgr^PK(u&yzg0_Fr}g?BQ%bl@hwk?kfdHcG!GZ5?-x^_L{)p z8yLdKM~Thy`wz2l>ev4!jzhFY5ryHaglyt&y8t`Z|8QvD|1fk%&Tzl}pW+egKaSb- zR^@-o!!BzsC30;CU@3lXxaLdndU-DJ@mC;)x5$Dt4xx`$Bn(gjZefC%ol=Z-@t~A! zpd#<%$%z@nUKYR5qIBr?mF?X!-jv@ds$;$hj*>o#C`y>kq;Vk8;i!@WodL~)iAiu} z7(NxfQq9=cU7;93M>!P|^vi}bwakX10!Xb@XvC^3%(O%8=jt55!^(kDqYPXJ3>`2W zJs>yCfR*mx$@`2Owu}9qqN2- zE>Aent6K6J9sBhB&*iDr{|}S?xjX;UbIbW(d;kAQ9xh!0f-U>#?0hv};N zb<>={tnC2ijR$Ok6;cE%aj07g_%RWSRH#N^+YG3|GZ06?wc{YAMX$AHxVXu{JFuRZ zI;=I`Ro)2nG-w68qDatT8(X5)`WN-B+bn(l?6m*K#`%xoaDV>eiJr>!pO3S-^krT3 z)~lWuO0Qe*0&vTv9_Dn`uW}7~y9FM?dF}cZ6j)H%S2gIVQumdsIE3?7i})T-gY_?~ zPIpxPP0oLr=l_SEH{RF(dXh(5|JCCxBtZFHLm8k-mRr=mmiCOJ0DU|HUt)^ZRi)n5 z=e*22MeD4_i+b^8naGkn(eW`DRmOrLMJ!NDazqy+90Xm*;<6$GQHkK96~WutuvXE> z`paq>XebWzF4yV&)-QA`TwK+{?C&<73<$z`EA#{>Ez*PS-&#tHe4DXgJ*ae^2sg>)$@kLL5}T?{Ma)E(E+oCfJSx+3bUA zns*xtO@hcZuv?oArh8bTzRE|eA;4})*c?Rz*L`e?{qx6p+R6WJKH%>7pDF*nef^Io zdaC8W=>wKtb&&dv~t0CUsFVx^x_=eS3Tlt4Y1bcbDf2y9A^1o9IV3+(a z*Z&_n?tcIGNgj**&m{jP`%%c>4kF(S1;i-n6bdj&`@F*eip#oiKr_Cz!xB4K7GHkm zOy{$p90SoceFm&94pJx}UetR}wR!$0c$&z65_I4D|Ds9$Pig;uIGRlM^8YCwUH+HG zSsMR^-52$t7hxJ z``+&tjp~1x>)-XJd;kAQp5pp1`Tgpr7OUQp>X(6f*c`ti*oF(eX;xnmc*7*!Dp#DN z{4A}KM(aPJ_t^byu>Vt9|IWnQ>;ETt3hQ5vvs(K}{rSGax=(29y`18O&btD848v~U zaVYT&*=G`1&Q}@Ju!yR;M>%ZZT@81+SHm{`Rn`HThc#>zdo;?&3Q(npV+P+IW#r!& zl8xVaS07v42O2-$r-A&J>-5p`e_Y2k^Z#7e-RJ*3$)m}CZJdP$Py)JLWv2?uuaW4s zYY2<%?kc*UI4)Ktx0{?T{W48%%T}rylX`ibd7tw0g3L~n+t1Pz-9Nv>Qd7x2=P3D$ySv97=R0= z9>NfatJQcdB7VP6xaGGOWryRxGbivtwMsv`CGNAoE-fMKZXk>jtxD-@vw zQY4FzKwh&fW@JSER@E!{>R8tm<%_5!bWxUMpzX!z2oki0nBR6K?z?Ub7RGV7RdD|R z0@l9%86yuP0d}nak>icb`ajNapa1WZev3(A$_2g(n=E9p zCJIYgTqen(p^p?L5ezRPijoENi)*;@N?{*{Xi#p))*bi+B4*}A6gb7jEvp>+BtU&; z7ctot1bq@QvoArvY;eNsy;avLf?8pgY4c?|C&lnk;K42N}g=NMAtCx|u%FFtPwJJ;^J^q~UJOX=il zww@C1tU%u0gbiFR2<@>-k_ ztx1%kCMfey?}IU=kfOyVOX+Vx_=(81oK<<}HhNtG2*cQI5F{z4q%{i~!2nhLWWUqQoSnOvU{Y zf*7Xh9Z7;zcr7R>nd6lvmk8}(zQe3w4RG|o$fqQ!N1mVnr}xLp!8Am<)(^3Nvm%=m-5+xft0D4~gvtHUGAJg(|1bl{s{grYeUkW}JDN^Q z@xQ(Pf0~Ey|FSXXaeRIo0VQIWRxOPBB%p#K<{p~W2iaX3FpHryZ(dF^t`9cUWGgns zUY*2B+``KNp6_#ujW+yvJ<;$jC?kp3A)8>^uNO?CCTq;5(ldmg7p< zhhXvFZP8 zyXyfAfF1hZn@lIB{vS{F_rE;J(?$PhbK}7cfZ~Si4htarcy9viO@JLHK!V~B`!Kb) z6z}!)YnnicmRoV5nCQpeTO?+9w2EWIINh@<7ZI1sP3-EjL3 zd)A!qud`LEtx&Puo}oCbm{#hYP?8J?@1-w`>{RG#z5jH=jU)rv2k4hNPM?zm4AKox zb>Bqr7UB@j!#p9NfZ(*ke$X1__}B2`yZm=C_%)_N5u%_*hjqn%X#l0-L_pr#dt-EO zjD9}GsKx%%(tz%70Pf2F9lPfK|75z4|3A&s!T!6FbK?;rK!xlx`PG-V+0C5lSd)5_ zpb)_ny^&|W25-gRgE#VYR=okK@v*lc_ZH++S&#+8=RRiS577%0qDM3%^@ZNRj@)o` zS1qi`W~SjTb8`^Ggkpa0Xq~Z`ePtcNdZ15i#mP;!H|>Q{z5UnNMyoIs_h#EY%r*e3 z(#KA-xn-P%z7^-CcVBx8K)*D|ni5ky%LC8y2sC3oV^`-60O=m}+v!p}|&;vh&{5l1Z^-!!U$cLe~49OgZJ@92IKm89M8!p-ZGEtmg`zel{ zJof$n?r>=4|4g0n{`}vQJly^lhw)PFeA4$Y&TRYa{M39azTn4zYt8ub$))OZyi7_3 zIZEzyR3F!p(vdYd;#Xw~z`BUce=M39`PbPQp?*P0GJb4Nqma z*@_%65Lt1OFFWU3>}`_T$FBcnrHD&jDdJvMz%KvKbIttE>2$o;|4;Ii{J+AmKY$Nt z6db8D1`3}xH3*9IYGy(4g<%{NC%45!D14+D3Ps3W+{GfNb&g{N4UJvMD*7MEnJl2{ zRibWeEf_Oq?`l5gW0(K&t^Y*vzu~YP|C{dfznnk{!V$XoP^8w=e0M)7F+}Nbtc}QqhG-DY|EIF!{3X_WBi9h>B{kDA8|@?wB-Do z(o4TyRZ|U&xPGM|FMZ!wjF&N)LR`22)s9{pDPG+AF5zt~!9~{=N{jXPLj1FQ?D9XE z!v|6TyXAkm{;#{2|4;Hf>i&^7Fq9yPi*4i#gBUX`-4p?_#|3 zh8CMW4+iGgx6OC#e77j-Ar^UvIkK z|9_IFB>%7Yus?wCSE1W}@#H~%kqvwOGP*5>alg!d&qcM6Kmnw@LT_u)mBo+^(2XUS z5rqD=bc=Ucuc;c`4ON@?ym<8y|HV*ma!pzkoOr9LI0>YSl9SV*E;Oa1YwXMvXnZ7H zWeoWJM*B~$vFhZ%sPgsb`~U9Hy#LdkjQ9D!PxDmBe{sRsLnr`Q8okZ|kRP>>l!Cm9 zdqhjJQp{hgu;i}`(lWn~w5_;QZFjl_1+?8f1I1WV=b*^xqsd%3*hO?Lq^@fJA0c)> zn`fu|m$z};M-A-U{~b@v`=8z6e*gDLo|62R!+s`){o&L=cB@MRZJ?01(+R3oSv9CP z)fz&+wJHi&))5NeJyeAPv0GzQWez`{vUudI<0ALH9AR5ckwe%kjC(v%{ts3tT;pX# z67=vmcF2EcT)O{bICb{*U!UZ81}-6`D2Y-gpTrCRcPkWu`38ppj+P*X{taBBba3zt z@Jb=+CKgx7rz;eOU>TCRI0BEO3TAVvuYafAj3gBMpnUr~~vgJG*<>A_cn^e#U5YA}a42VV{7 zn*Ez3czN*E|99{VyoU)Un-pBUc$ppy;)E~>cQC*Kg2&?Xg#7Qp;5PM1fR6tN;zq9j z^Y6~yyn6ZihgXAj@ZdOV*T3tGUC%Mszc-%l*Z)&I&%pVL8B-xy{%xN8{ovr>Z{j4= z*F7;c`m=#Ma7Vqr|Lqw5{ovWNXW*y8i+?>|Q5vVG$Hz-dSDQIg*2gs2AZ{V1$Gql_ zPu4L^(6Qdq8w>^oNQdD0&>0T)c^Oqr*JC!$$2p%tHClM)|Na<*q^bu#$2)c4tALZqm6} z!zH(yWo`Z~T!(V3nh}$a)v#u)TpP!3XO10%W4DfDx{V3IQFeb&f?^`sY(_!Ordz|N zV`J0l%I3`A(z(}+6fBQt?N}bq4iCG}_L-$mnh{aaB`3u$ndv>^7~}pU#GhSn$x80|_Pv2;3P0}wn08uDAcsvLf#?PCQzcuz!AbB9Oc0YQP~1t3=No4FG5I^+EIBsk zq?syI*qjsR(2(f~T9aD@K9J;taHENGYGJb6h?2~VuSv_vJE@txHjAyh!B!kc-CT3J z2?A%-j$da~!>`p|>&mZbt?B$`p2)WdQa+u+klcYaNf5Yvck$x*-Ng%D=8y+a(rx66 zfW|BK?$yN$!M@kds&TxToqd}f*U^k~%;9!w*`IILF^^8ikoqe*>U{>4qzD8!h4T<) z-IT6if&zeJ*$vI)OWqBhts5LmH#pt8;bh=Wi!$3O_Je1v^Kah1Jp0GRn^!>_$b$U_Qsj%k7wd?IHh0z$u2bC+g6@i*5HC7+h30DtNOgU| z-0bUrf;qy`65J&uT83M>ArvsbMw&Hj(n#@$`Hs>8B`ESy$}7K$&P&i5;)uaHi{n)E zmD5h|IgUl|3C3)F)k#?LmafrPxwstmhbLXcr8{eP=#@f;O9+hNeNc@{hX4zU0 zrLy^JAxoJX$V?N6BP8d+q?L=qzPI+r#5NBmo#(;Cmnz-)_@ zhjs+BUdzGv?1MkC4gRF_;E#3xNI=q=bxU?a5CFKLB*f7T zdn?c5N-svd=*+WM;CZY$GQ+;xDa7NR%vuR__I(Y{7UehYto+7?@*8W)Z`gNR2Ra1L z(^mE``@V)}ixL}mR$^mAu#F2!%;~1YPA094UiN(r&lce|?kv2e8$++dZ8P}~Fi+mh+mX9Mng)NANsqIfq8G!%9IMaqWs>2yjFw zUTmfRB09F6;yD@H70;+LEGJ%c?%1N@8EKKZp=OP@>sYU)K=SMYX=GD8qt1$FWGJ4I zrg+@G=eFiqzMya^6z|EfX0V?)0SHDwv+stpbaR8g*7tBSS@vG!^Ccho&Dc{VcG?DTOyEWxh9# zQVPS6I~<#MnZN*v?WWApNUi)>RK%#Witr2-G162-fgeqBE20?#ikUP~6cL?sV8{6O4Ud zGhr-J-RmsXhowcLOLezWs=s=7!N;puN{utyE;P=*=N=UL$OCIWjNu%Im|~&-7$OeV zX*mHMyLB_PExKXnMK?4S-LSamN_`k7Bt}WNWfOiA1N4z5un&`EmYge@ZaHxr`@|XA z7R#{nVi_8XWmsG+Lqh-r#1|W=bcF!p5r!bYrGwcAE6Dd2Kn#-<@#})v924L04w*De zVpAP5aqZ!@p=~7%JFg_S)FDoFhiEJ5`ue|*z}5AOi#NOrE-t@?Ys@A_VIH(xQ;vN* zp?d#Oyy(cbqh}TgNG98rq&SsXJK{xWQi>L;qb2URU4wsCG258uir51G=}`7TJMlZ2+QqM9Gj5&E z#;s%MZKq(|I$)T&cZt4_C|!DQ5u=TRNc z7Om=Z)~b%7M4WTY6F11=*;ub;Mvo8KB)-6 zWY>YuMa@|zJQEb)RPx(yQ)N7{ZmKZiZ2We#24;hyYw$a)L+W2Z(;yEc=~?QGJyhDqn@CY@u7X_{=o zhUeKqkfK`C<;*IZvjmpj;svX>@~Nuz2+MBnmegv$Ub;%)J7-m z7TxHiZqeC{sD_qr6_bV$*0btU+~UQ(mZCX5N1YgLXC97h zr<*thx~Ww7T_db~Ac?1@!!XSE#`Pq1O2GB``CCD4%Mie5B+j*=DBUEe8a_-ADAvTd zJ@^XvA%f8+7B!bJU$~-(kiSVV-GZ1os1VFCRcA8I$-VW%F)QH0oKxi9}TBu++AUYU zIHwkoyMcAi+swmmr`WT_ZMX=oZX#B!p$D8<57H|(1G3wp_pDb8N5a*ONFHLVCdX#l zb++sb!)|7hQ5>B1;^*;2;sZ(#OQ+im&`$OzYiO9By5;FKuspjW|K#F$O8B%p?y{L zn?$NpL|3%ibROByc+4z2VY99qVY7h|_8RG3VY(I~Wm;Mj$^i^Ml6bR(>rOGXy=_+6YXY}J*!#QEvuQST85Pj$^nrAJ*6apOLQK>G=0Nn=MwP) zmQjEbe#^c(ef&r9gZbF<%I8o@Odthd~8_Ut>(Czi22={mM2#j!mp zj;&jgx+#%o$hprW>J#H=32>BE+g2NMHV&!>@1*PC8Ap9jii1}^0GLtlZ&FIu`95L@ z=P2ZALX|%s$l+@#n5I_2WIOfS`OvR%=66~@d@2>4Pg^}7J-=RR1*0I811ePt?}L`7 z#ytC}G202?&If=e#q6M|Wdda4N%zOg8_>nvHF;Nuex0GJy)3$=<;u1vT1+hV)TFCD zH7VLtlcGIkP7NGMt0_*%ocVMi-0~ivc#X(LY{=gsc!LssOGxwd3+#4tECj}|&+6ynFh^oC?v3+yP?{@V=h}T)| ze^J)u*8i&%IW5oQd-n7Aw&VDnPveh^PWYrCiM4*v#I5pI)b>^gw>GzBY;mc_U0v#N z(WM?2T#=tr)XNglYONQ;r z?6L37*saKn;Cm1J5(6N<6{k_=P0g(MlyLDW%NL>b z93>zoDP1Ng{UrnmAr!RQR!hZJlA?1( z3Zo#!xS+@@Y6)Bk&v=_1EDBH@k}Y$cj|w)mG`0EW**S?Q`Y2L$h9~WW!tkU;IW?F((V1+x;WTWSnmM$mW_q?9C$DpklV{{O zd3uhM&ZJ6F%iS3e1%&dgNSCi}W^4peN@5Wr)sBD;C+*Cl;l%2=dbX@6uX9$EXJkcr zdRCNEb0flB#D9--ljM{aj&M|pTY#4+rL2c0Q*XK$O+;_B+<_bxb1LdjJ`KH=OUkQT zQq?xL*Eu)KGjg*$JvXbatBob)wVY30-F&LHa=rWJW;q6%>!OMPES zSnDFOP_ury_RvxZNd&IW&tAV2J=F5J?a+SQ)~mi!L%irb4TeVVcv|mNS7h%7w)v(dUK~WIZSTLjRIF}6jVj%#b^bH z%JQ@%0x5+QEjD48B5ECtYJ=bFcufdz=^CRk)JMbIi#{ju7T}LOKq3wKL1`b965y|J z7>JVkmN>F!%boH%=1%dJ=E8HUnUS^`Q)ql7`v3g)N-Zj(-%3m|YgLSzEaya5d>bVN zOMHtWv6bYu+(vQj+bEtbi^}VmMa5dqjP7yt?wJ~6{eN##3gU#^;sAj=nDFJrnfF&~ z5`YE7Vml3PD2Y+B#%ap6KktcgJCDX4TRj@jlECG4P2lndh52Pd*ozvN`a}2-E(fm4RCK7xtq*SjLr?XSz7*36&IW;>-sU9Auv&rogO>Rdsx$7yZ zHhGU1?+jrvzkZn)Ny zQEg6kE`H^hgEDDGMztN(xi*tgn#sxSAV!AGo3PbK>R28ro2R29EnYKPY;vT#7%7r5 zY(_@4rs-T-$fzvjd?WJ(+5ChQ+#wK<=&zJ-7(Cx1dI-pd0RVZ=k_6Mv zM$NQn)J#pIro<6zA0mpvt-6S86KzryWZd!ieYWCI#4oEVe6b)2>kk`;RmRe^tFbgK z8Yol4PAah{c_N`Dw_Lw*O|T)qJ5K!s$JO!ism0!zcC~k=MSEvz*gF-2CN?T=%0fn`2pDTPDv~j->ozHSU=$I`j|;uVDHSuEA3qU) zie=2CQJfGTrKzl=EiY;d^fL&vcDIqwY?qNwEjHt{tIaqq+Kf}fW^5Q7oV802n2GFw zVpV1w)gG1>JMp43+vQ`-L^=k?cCn5Va?3NE_`eVcA~CRRiRf45r`w3ak64agt8BlS zE!l5sF}0^%O>NfDFdPbYLpi~POF3QyUIegLo4IzK1?%Wn-<`h&Yn&uKNUU zsVI_A#(Q>r_~s<-L)u>vnJyu^i80=;pvTNs~@3 zmQ50IGuW)%fxj6)@At+2`9nNnCLOTcpJRro3p!}`4)t#wd`S*fwO9X-xuW<+y5JO5)5*-1$ z!fA%%4yItf!68@83F3!3)(}S&MUbKMNlL*S(L019VRs4eJX*y}GpY1xvIWpzVRXw# zToM>E8pXx+FW&z5fXPnqR$M5>gk^eg@Q=+LB@v=1Jp~{B{!ySR2e%WCErq7lL1cM8vOHeHXamFJ|A)7@VlDnMbYAf`$Bx@S3j!Q1`}tfrJ_HM#q;zo52UiGjc7OU2 z-(VYt!-GCJ&q;fMQ=cS3{&gUJ7%Z2^^nH4H{oRk(G+~W?h*1O}_=zj1HmWQ_cgOyU zkQ5yr^!xpTvoHj2@p45|W?G`;76qUWu8UJ#CJFyRG@z9KD-^E#GIa3ZN}yK$yUxfR zPYwC+dBfpe{y)XTWSGb^W|F15D&FN&HXXL+{=7dG7=G1g;PT+0~}t z8n4m6NrV_=&2`Q1J_Vm-sFnfw^*0WI-;%loFxpmnyD3n@lid?fWE32kcXR(I1B|LMfXB1z-~eC=nBg6Og!$CQk-Sm0>LXxL6Y0e z^DQr?APa**rh9lS`ReLBwrcE{2ja-Tkj|Pw<Mf>pmnmxcxLyh)UK=X0BwU zR2wUmz}n0?4SxNc)1Y^oa~URc&gqaJXwGH0TF$wwUCTK);FH3no6WTt(p4%Z$dVuM zWN3u2vjDom6)KT|diVA<1N54IkvF}KqsCL-a7?lZ|Nin#rb|96!#_(r?BB-Gp~3b* z5cn+)QE^80?TyF~}qhD*i+G<>`_G+RMTmcsWi2$%^hCcqpm*qopV|B@1cU92ofR|7sd^Ki7W z2H9$pMNdlPRtuf>f`O;twUY^KZ8Q`IlF|nfVvkQNv+gRyNAB^Uh(VOZ`o_$z1~y=> zawIkmOeuDrF!z9B7^X78BVt%3zYNutGqSVdH{v}9D;Vadd12-xQX@E(RZP&1wTRI1StP$NPTE$5me zT`X{f>9%4Oyg&;aG4D)$;*%)l7ot&+Y&J(2q!fj-M%9eHaCO7*X6;zeph+#yCP3d@5RIm-wW1 za^*k<@g@u}Nr-*JH@;ZBA@owXdZj);6DY)rU=TnoK^V{zeb-BazFheU>mhx2g*U55 zWrC-0S%iDbYb6c;uXF{6?Wr3JzpLN$SH; zaFPw|-_#WTI}>$503i5|B>3N~ZOB|Ga3&i{IJuizJ4y5~kbR;Uz`9Kq-My`zF(#T8 zvql5n0C5$v@*Elsh66`Up_3sR1}DxCjc4=WWHuf-v&nckgU~raC*B;*gQ4S$0yvqB z76{GYeB#es7mXHU_RrBt1FF{nk(TUKb+`8KzCwJn1iw9U5fr84@f0P$Bz)1XMJG@k}}ZhF=B#hLb&`Hz7X z-Bfo7RDum4g%$AfR{R5=xEoPp-$JIa1{R8U`i3dUljqYW#LBB6%H+NlFLrQF6B33f z+0m6uO#}TCY3=4kQjb;5rxelS0HQUCQbcR8R9b1=jnxW|-XEhq!Y6Z$Wv{63&Gy#r zWu)fUaC9L}v~JQ5_rsGQo^#HaU^dAo@WEv`-fVawVzK}MN-^^?V-lq0#E1g zOwzu_YaXJPfIJ==7x1t60U_} z=mB`arzisf@G|1Q>I$c&HCJKQXI%6w%v)`Ht&DTNLP%1WRUAK$BAmk*&T)t-M#iG= z!64|J{`9Y-UXYNO{fmo%^L&?@XEm_-T69_lz7CUYD03>6$N1{q1zXm|EC@!9$fzv} zhoAmc(8pTAVg6l}Qhq1tlEVxmU92$VNL~+xRoO*;H8=)i+sgucqJm9=~0+ zi`SY)*GnUF=Au-vVRSL`TZPS&imsL;**pD7yzHI!c(vBvQIAi)-f7S6{r0b;UW#Di zuTYwei`p&(FWy|K{onK`GhS7CoT&XO(111Ef&`@`yhR{NLqcvgvD%LykvQ_Ag-=pM zH?f?(L6lZlymGC+P#GbVfZlnyNhwOc#Yswg055nv=S{Zx0k}QDmr>!qbj-{a?4vmYlWip&$4z;($yyW&UNl&m-fXNTbWpQqs6^*Q+F z5L}*JUH$mt6#VtqU%}w5yn2A=WB&HrU%`3)0e?_*`)xwj@-F}e12q=>_mX;7FR$aU zf)DkUCk)B<)!%%iD2ZTr5mA&ZppVM_<+~Kgj3_M6BtuGhY7XCE;F%O+-D3r0pt3mG z+P;GcIt4rxYQBv{vGbdgG@As9js%`nxwqUEWiN0pc$6ucZ=x`vIo~P=WdJU-Y%wL$ z1c^*uF?`FA%wafKY{HNUh0O7(QIja5I6?e`1;c}*+-#80a4Lmwd9mo9H9-g?K-4FS z193BMw*4we=aAV_<`vT| zJCnAQfDaZi`5{AD3Wv(EItxQ`r-H#eW{y5GNrY+MOr;JnShy~_Az@aBE^uAIqR>+R zCTnO09||p0T!8;|rEUl;m{0r_x12<@C;JMD9$=Fc!E_5^?B6K&e8CSMtNmZ*t{(xs zj!8mcL@g^*Wn}D(C9tOQW3)4zkbl@Uny`jA`m2I7&`BMzS3A7lY^$l-Gri-RK+JfU zv+?7(|3MX!4JAw=S55u14J9Far*({w&MN4p9Z;;27| zDfUHjAvb}^LQp3g$gOmmK(xR&`WvRhxFn3BkCaqp1GI(|`#j6+oSV!kx0$oi&ih@5 z#*c%>F^U2KS)3H%NOLS{mWz|M6fZS>w^8L2iVlIIFQ0$UQxr364ILH;VbqZg&&DFD zv~kx8FNy-5NLlV_F13Gh{>A@M6dim?_R&YUjzcsEi4Q|ANSKgS%Eb(U$yLhDg{p;+ zq2s&r>K|1}QkQ(&@~&+>p7))AqADMNMY=I>tvci@itP7_2bugs=# zl;t31zFOM+>#Wd&l!iDJ`^qh_@}s$pvGT7QW0im8MZ{~2E&W@O&!!USGbEXil4qq- z-Lc|_q-JFrtg*NX0WH66Dx25UVn!LU3hEzN$dp*#Wyu!y6ND|aSuh)R$B32?iNhb; z3O(~Zv+Q_lVIqs~ltK`j&^QwJyrxHNX|n$z>JJ8k!vVP9#&m)hF>4V`f)Q{PfFsRv znCo^0rO4c|M6O<$Y zN_L+ik(UM5vL%m)YkjJ#uWXo|2~jE!oz3t<^a zX?VD7p=xx-&N%Q!o`Zs^?*=1pfdcm=mRQeqN;}Ndya2iZb=A+?wKJ!N> zbI)l;m0JFVJ+xhmU;p@i7GlFRo$O?VhFNB)*r-(ppG{iJ`P-=t^gx&x-xI@w>AgiT z_%Xp0{Sf&g@OhShnT6!@6Qtrqz(6=8!eJnCg>u(SSTbu8pv?P`S^T2Awq%oJ7b?lq z;K_frTh5~OaZXiVmW)+fVSR=_J+$^keKHhtJ&OrZm+#NB&#FOo5ajx3a(mqdS{^by z4i=uBaC~Q`LIQ|>s@n^F5nXb^!qT$~^9A&#Alz_kX|0=T!QXTqyLyHqbJ7H)Y zg9i>ts8wyjmLM4L%=U`ut;8~3=uDN)bpQsVpF4RKSW^6NV@l0tvsXAfRs_YskVPgx z6f+6>WrI?haa1X>Y*_V+H>*N*5|{X(SZp$beX-!XZEPa+KOBKz8^Ja9g?vjfiR7h$ zD)+e1AiIn3!%-poG;55Kia@sh{6;JVEn*q@p4hUFWsY3MJhP3cmHN?TafQ$P|GLL|Efw@Jl^-AAQC?e zNLL? z{Yd`vyUQaG-}*-Ytz)`mjErF=~mye@-E zXI^J#nQNi`d8DV#l<26kHd}ASxBWGY%YLV(Me}}?eJ+mBDY3Vkg2xuFeA4vgAUBy9 zVwPEEg$C_UF(Gt*o^T`v0sw<*Jt!rnml%!r5+D1XcWf7fSy{bx#A710Wnf~qac(=vI>%9m^Q)B@s+UWT=OSr%O3OxSvz?2E&r29?_&WZe z`1w#xP=Ib5NrS9g1U(Nka5jo;gAkzGhZqDMgC(%_`zo@zrm9V@TPyQ?Z`4g^zoW5+L zN*W$zK~$joyw`j7ko3tp}$iwjFpx z@Lt;#`?Yt2w!PDysshnF>cyh+%6i-9b^DLk+kW=;w|^OixkM}A*86-0DSraD$>7ND zM2in=9cbB+jl5?A?;|^G=?W%1reD2>lpPdP0UU*d62O~gWzq{5Ri*cmZyZ;Eld=IJ zs2!|PfH#%<1S;uJenAQ7eUH{8+4l1J1_52iixfP6d-i>Q4!Mlv8%x`iqV=I3H{)X` zgQE)M3R1vY$*pPkWJACU ztjM|~Te9JM8L7&+0z9nD&+2hNKyoE}v`imGYx@!Z&STD{6?O`V{MuWjub83TI~`9>j?`c0 zy!5z8lIorIe&E;aeUH;Mr2eXR)Z@4B>FxLr?^2Y=zx4~a_;>kP_hS06A`U3()U3G7 z7)U4#Z6zDIsrj3}KviD8Y**g3&4JcsjL3Q`#bf58V>w){5)p@&(q)3uUrGgKmDIb; zzo^Y}&LKTvqH~V4HqlPwvL@Hg0M;$tPD53lYG-0;k!_bZ-Ho;iRYd}Hp}Lkknz(@n z=aZ?k@cofH8+!h1xbQs3pLs*)WVo12#vXD!7okPq`o24KhaL>(?$B8{ez`zfiK;Bi zF2RJa?7DMK=VJFteGB|7i6TEWOPNmQRS0CoQJJnO)Az-Z7TdIFunk6Gdc(D|Sou8V zGgIu^?;*ZL5lYiO^9V8j7cU;ZiTi>EwQt7%7^u%}l)YB(`S(?GwFqaRcK0h>SuS3% zaPdV{5zCw}oUXX(B1deiu9Q_!FFEombUO>Wivtz~CaU0=2NHY7Jz)nx@ZI(GrEIA( zj#P;oJ_p$QWA>k`tV+V6cCt>jslu8X8>i;|Cj9*ZBXK`F8|yTWc$G^B7P@PoGU`NH zBMQI=F*c{Xc*qBNVVZ!xB4Lm!SgKfp6xRmSDn88QlHT?CCF{R5OD*Bu$3Nq>?IS{E z^fue6FO5w$fo(nX76lMDnVcD(0amP+Aj>!K_9ddCcvP#$)EN}#3LsgO0An`wc83MfxHFBQ@Uo|Sq}J=mNq0!_9QYF+xXax|bJ z^m~BK;dM9-(Prp)t#Av8Z~41A;?fOoW;;)iy_S2VWkLo3M}D|bRU+V=+#=p(2}ORgjpYF; zsacOiUIyQ--G z_h(oC=$#G=BXcQhFuY4q0xn*F=d8gYK+$dg7A8Pd*9o@;B-Qago)vPL;9DG`C3>0q zFyzx*#?p>@dI3;2eae+Yk9x6cA7stcKJZ&Y=(kzWTV0C6Rk+a!ecZ}j1thyH_hq$873^P=53>NA= zUt0OrzBt~JokPC3yd52}|4yt(wpE7O6)#kAMWKIFvQls?%`y#-_WcpKD)Jbogc zF>zSSo2`h}wd$Bi)J?C2(X!$Zhr6TPk+s^9B*IqhNX$fQsUtfJgc6?sQJ{&9VN`GF7jhj%Y7KMa8I^w|&6=a1oC1R%IRzbsTe zTq2sUR9>c*t)F*qU-P$oU2B_4bxcv1ED_x`bMu;u+V@6qMFjc_qMmoaA|Y#GKj$@# z`5PWa_>cqqzz-R!Yp7%pL7!hrJjn#PTvuz61!MdBL(Bp5LEy!cqvfxtotqG-k zCR4g;7ng;M30+F+ih3P~=s6Rvb17U8j|#H(2xRb%a+#}b?y?Ckwm|IiIv#mg3xjpT=l;K%~ExgZxx|BENxe$S>yf16C z9|0(U;8Y1M6v!YR)eA#s)h;yxTdu)c8=Zrt0Z)N1b>$0HS}pHOEon&Hs!alrY$8!| zR6;6TeIp?7VIC|K=%Y)NV4gZbqCmfk#QBizc-ATU?6kA?vJYc?%#?jdV9?Jz{NtDe z{ag3=SyoBy@LwgG)+kNk64^4AADN)OTSJnyxb%||MM9}gD{jSA_8k<5BJwZqTfB%v z{ z_{b4e?|c|IT5Nq}EqCIqz*CWLGjIk&XXrXJca+t)nnE;MoH*`@cQQUf!Ni-+=99(A zVmeuzpv7q6&PUVHd^jA=Pn_`-IWu<-o%slj7n9*^Hrq*=*abN_3q$Z0FIO}LZ^iX5 z0qAped!201Ip-H#CWH;-!591I^LoV9(Z?!8I#>q}kHc{sXEGY`|2vLj{@)o*reCO1ClI{e`X2*`^PlFx7&fArakWFeBGnyBR%GS zCn)^7m(p#B(iK9q2af-KaPaIIul?KS;)4D8?AbGL<->@{luby}gM)*EPv8v!-{Z6( z?3pgvM1i`yhsn#+{;uZ}$C&G2g^{Uuo+O~Zs-oui9=83nfA-J*x%cz`2LJ&7|8;EI IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/emby-sync/0.0.10/ix_values.yaml b/incubator/emby-sync/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..d69f44810c5 --- /dev/null +++ b/incubator/emby-sync/0.0.10/ix_values.yaml @@ -0,0 +1,24 @@ +env: + DEFAULT_ROOM: '' + EMBY_SERVER: '' + SECRET_KEY: '' +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/emby-sync + tag: latest +persistence: {} +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 5000 + protocol: TCP + targetPort: 5000 diff --git a/incubator/emby-sync/0.0.10/questions.yaml b/incubator/emby-sync/0.0.10/questions.yaml new file mode 100644 index 00000000000..d22fe4e37dc --- /dev/null +++ b/incubator/emby-sync/0.0.10/questions.yaml @@ -0,0 +1,2280 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: SECRET_KEY + label: 'SECRET_KEY' + description: "Your API Key for Emby" + schema: + type: string + default: "" + - variable: EMBY_SERVER + label: 'EMBY_SERVER' + description: "URL to your Emby server" + schema: + type: string + default: "" + - variable: DEFAULT_ROOM + label: 'DEFAULT_ROOM' + description: "Make sure this room always exists! Leave empty for default. Default is Bacon Bar" + schema: + type: string + default: "" + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 5000 + + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/emby-sync/0.0.10/templates/common.yaml b/incubator/emby-sync/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/emby-sync/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/emby-sync/0.0.10/values.yaml b/incubator/emby-sync/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/emby-sync/item.yaml b/incubator/emby-sync/item.yaml new file mode 100644 index 00000000000..3377720049b --- /dev/null +++ b/incubator/emby-sync/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/emby-sync.png +categories: +- Tools-Utilities + diff --git a/incubator/ethercalc/0.0.10/CHANGELOG.md b/incubator/ethercalc/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..72981a0ed17 --- /dev/null +++ b/incubator/ethercalc/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [ethercalc-0.0.10]ethercalc-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [ethercalc-0.0.10]ethercalc-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [ethercalc-0.0.10]ethercalc-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [ethercalc-0.0.10]ethercalc-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [ethercalc-0.0.10]ethercalc-0.0.10 (2022-07-20) diff --git a/incubator/ethercalc/0.0.10/Chart.lock b/incubator/ethercalc/0.0.10/Chart.lock new file mode 100644 index 00000000000..ac370557b0c --- /dev/null +++ b/incubator/ethercalc/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:04:01.266167897Z" diff --git a/incubator/ethercalc/0.0.10/Chart.yaml b/incubator/ethercalc/0.0.10/Chart.yaml new file mode 100644 index 00000000000..a82db3cc505 --- /dev/null +++ b/incubator/ethercalc/0.0.10/Chart.yaml @@ -0,0 +1,32 @@ +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: 10.4.6 +deprecated: false +description: "DESCRIPTION\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/ethercalc +icon: https://truecharts.org/img/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/audreyt/ethercalc +- https://hub.docker.com/r/audreyt/ethercalc +type: application +version: 0.0.10 diff --git a/incubator/ethercalc/0.0.10/README.md b/incubator/ethercalc/0.0.10/README.md new file mode 100644 index 00000000000..ff3a0ea89e9 --- /dev/null +++ b/incubator/ethercalc/0.0.10/README.md @@ -0,0 +1,108 @@ +# ethercalc + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +DESCRIPTION + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [ethercalc](https://truecharts.org/charts/stable/ethercalc) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `ethercalc` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install ethercalc TrueCharts/ethercalc +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `ethercalc` deployment + +```console +helm uninstall ethercalc +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install ethercalc \ + --set env.TZ="America/New York" \ + TrueCharts/ethercalc +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install ethercalc TrueCharts/ethercalc -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/ethercalc/0.0.10/app-readme.md b/incubator/ethercalc/0.0.10/app-readme.md new file mode 100644 index 00000000000..f649edfcf81 --- /dev/null +++ b/incubator/ethercalc/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +DESCRIPTION + + +This App is supplied by TrueCharts, for more information visit the manual: 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/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/ethercalc/0.0.10/charts/common-10.4.6.tgz b/incubator/ethercalc/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/ethercalc/0.0.10/ix_values.yaml b/incubator/ethercalc/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..a028ff25d82 --- /dev/null +++ b/incubator/ethercalc/0.0.10/ix_values.yaml @@ -0,0 +1,23 @@ +env: + REDIS_PORT_6379_TCP_ADDR: '' + REDIS_PORT_6379_TCP_PORT: '' +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/ethercalc + tag: latest +persistence: {} +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 8084 + protocol: TCP + targetPort: 8000 diff --git a/incubator/ethercalc/0.0.10/questions.yaml b/incubator/ethercalc/0.0.10/questions.yaml new file mode 100644 index 00000000000..166674699ec --- /dev/null +++ b/incubator/ethercalc/0.0.10/questions.yaml @@ -0,0 +1,2274 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container 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: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 8000 + + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/ethercalc/0.0.10/templates/common.yaml b/incubator/ethercalc/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/ethercalc/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/ethercalc/0.0.10/values.yaml b/incubator/ethercalc/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/ethercalc/item.yaml b/incubator/ethercalc/item.yaml new file mode 100644 index 00000000000..7d867a9398c --- /dev/null +++ b/incubator/ethercalc/item.yaml @@ -0,0 +1,6 @@ +icon_url: https://truecharts.org/img/chart-icons/ethercalc.png +categories: +- Cloud +- Productivity +- Tools-Utilities + diff --git a/incubator/euterpe/0.0.10/CHANGELOG.md b/incubator/euterpe/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..6ef7876e8eb --- /dev/null +++ b/incubator/euterpe/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [euterpe-0.0.10]euterpe-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [euterpe-0.0.10]euterpe-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [euterpe-0.0.10]euterpe-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [euterpe-0.0.10]euterpe-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [euterpe-0.0.10]euterpe-0.0.10 (2022-07-20) diff --git a/incubator/euterpe/0.0.10/Chart.lock b/incubator/euterpe/0.0.10/Chart.lock new file mode 100644 index 00000000000..c654334f982 --- /dev/null +++ b/incubator/euterpe/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:04:06.036562885Z" diff --git a/incubator/euterpe/0.0.10/Chart.yaml b/incubator/euterpe/0.0.10/Chart.yaml new file mode 100644 index 00000000000..2f8d4066ff1 --- /dev/null +++ b/incubator/euterpe/0.0.10/Chart.yaml @@ -0,0 +1,34 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - Productivity + - Tools-Utilities + - MediaApp-Music + - MediaServer-Music +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: "DESCRIPTION\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/euterpe +icon: https://truecharts.org/img/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/ironsmile/euterpe +- https://hub.docker.com/r/ironsmile/euterpe +type: application +version: 0.0.10 diff --git a/incubator/euterpe/0.0.10/README.md b/incubator/euterpe/0.0.10/README.md new file mode 100644 index 00000000000..8d4a2eb1ee3 --- /dev/null +++ b/incubator/euterpe/0.0.10/README.md @@ -0,0 +1,108 @@ +# euterpe + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +DESCRIPTION + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [euterpe](https://truecharts.org/charts/stable/euterpe) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `euterpe` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install euterpe TrueCharts/euterpe +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `euterpe` deployment + +```console +helm uninstall euterpe +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install euterpe \ + --set env.TZ="America/New York" \ + TrueCharts/euterpe +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install euterpe TrueCharts/euterpe -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/euterpe/0.0.10/app-readme.md b/incubator/euterpe/0.0.10/app-readme.md new file mode 100644 index 00000000000..1ad5590f1d0 --- /dev/null +++ b/incubator/euterpe/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +DESCRIPTION + + +This App is supplied by TrueCharts, for more information visit the manual: 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/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/euterpe/0.0.10/charts/common-10.4.6.tgz b/incubator/euterpe/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/euterpe/0.0.10/ix_values.yaml b/incubator/euterpe/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..ff346d53fad --- /dev/null +++ b/incubator/euterpe/0.0.10/ix_values.yaml @@ -0,0 +1,24 @@ +env: {} +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/euterpe + tag: latest +persistence: + storagelibrary: + enabled: true + mountPath: /root/Music +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 9996 + protocol: TCP + targetPort: 9996 diff --git a/incubator/euterpe/0.0.10/questions.yaml b/incubator/euterpe/0.0.10/questions.yaml new file mode 100644 index 00000000000..bc34899cc16 --- /dev/null +++ b/incubator/euterpe/0.0.10/questions.yaml @@ -0,0 +1,2441 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 9996 + + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - variable: persistence + label: "Integrated Persistent Storage" + description: "Integrated Persistent Storage" + group: "Storage and Persistence" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: storagelibrary + label: "storagelibrary Storage" + description: "This is your music 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/euterpe/0.0.10/templates/common.yaml b/incubator/euterpe/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/euterpe/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/euterpe/0.0.10/values.yaml b/incubator/euterpe/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/euterpe/item.yaml b/incubator/euterpe/item.yaml new file mode 100644 index 00000000000..9ab8bc04ac2 --- /dev/null +++ b/incubator/euterpe/item.yaml @@ -0,0 +1,7 @@ +icon_url: https://truecharts.org/img/chart-icons/euterpe.png +categories: +- Productivity +- Tools-Utilities +- MediaApp-Music +- MediaServer-Music + diff --git a/incubator/explainshell/0.0.10/CHANGELOG.md b/incubator/explainshell/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..3d3dce62213 --- /dev/null +++ b/incubator/explainshell/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [explainshell-0.0.10]explainshell-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [explainshell-0.0.10]explainshell-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [explainshell-0.0.10]explainshell-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [explainshell-0.0.10]explainshell-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [explainshell-0.0.10]explainshell-0.0.10 (2022-07-20) diff --git a/incubator/explainshell/0.0.10/Chart.lock b/incubator/explainshell/0.0.10/Chart.lock new file mode 100644 index 00000000000..72c6a39c9e2 --- /dev/null +++ b/incubator/explainshell/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:04:07.690378726Z" diff --git a/incubator/explainshell/0.0.10/Chart.yaml b/incubator/explainshell/0.0.10/Chart.yaml new file mode 100644 index 00000000000..b27eff12c77 --- /dev/null +++ b/incubator/explainshell/0.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: 10.4.6 +deprecated: false +description: "Not everyone, especially people new to Linux and Unraid, know what a\ + \ command that they type i will actually do.\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/explainshell +icon: https://truecharts.org/img/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/idank/explainshell +- https://hub.docker.com/r/spaceinvaderone/explainshell +type: application +version: 0.0.10 diff --git a/incubator/explainshell/0.0.10/README.md b/incubator/explainshell/0.0.10/README.md new file mode 100644 index 00000000000..c9d61e8d83d --- /dev/null +++ b/incubator/explainshell/0.0.10/README.md @@ -0,0 +1,108 @@ +# explainshell + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +Not everyone, especially people new to Linux and Unraid, know what a command that they type i will actually do. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [explainshell](https://truecharts.org/charts/stable/explainshell) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `explainshell` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install explainshell TrueCharts/explainshell +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `explainshell` deployment + +```console +helm uninstall explainshell +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install explainshell \ + --set env.TZ="America/New York" \ + TrueCharts/explainshell +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install explainshell TrueCharts/explainshell -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/explainshell/0.0.10/app-readme.md b/incubator/explainshell/0.0.10/app-readme.md new file mode 100644 index 00000000000..c40bd9c9bc1 --- /dev/null +++ b/incubator/explainshell/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +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 + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/explainshell/0.0.10/charts/common-10.4.6.tgz b/incubator/explainshell/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/explainshell/0.0.10/ix_values.yaml b/incubator/explainshell/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..85870c10cc0 --- /dev/null +++ b/incubator/explainshell/0.0.10/ix_values.yaml @@ -0,0 +1,25 @@ +env: {} +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/explainshell + tag: latest +persistence: {} +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: false + ports: + main: + enabled: false diff --git a/incubator/explainshell/0.0.10/questions.yaml b/incubator/explainshell/0.0.10/questions.yaml new file mode 100644 index 00000000000..c6590a40435 --- /dev/null +++ b/incubator/explainshell/0.0.10/questions.yaml @@ -0,0 +1,1829 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: {} +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: false + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + 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: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/explainshell/0.0.10/templates/common.yaml b/incubator/explainshell/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/explainshell/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/explainshell/0.0.10/values.yaml b/incubator/explainshell/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/explainshell/item.yaml b/incubator/explainshell/item.yaml new file mode 100644 index 00000000000..6262890a264 --- /dev/null +++ b/incubator/explainshell/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/explainshell.png +categories: +- Tools-Utilities + diff --git a/incubator/external-ip/0.0.10/CHANGELOG.md b/incubator/external-ip/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..4742aca3489 --- /dev/null +++ b/incubator/external-ip/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [external-ip-0.0.10]external-ip-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [external-ip-0.0.10]external-ip-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [external-ip-0.0.10]external-ip-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [external-ip-0.0.10]external-ip-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [external-ip-0.0.10]external-ip-0.0.10 (2022-07-20) diff --git a/incubator/external-ip/0.0.10/Chart.lock b/incubator/external-ip/0.0.10/Chart.lock new file mode 100644 index 00000000000..a99d4e6c240 --- /dev/null +++ b/incubator/external-ip/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:04:08.342005437Z" diff --git a/incubator/external-ip/0.0.10/Chart.yaml b/incubator/external-ip/0.0.10/Chart.yaml new file mode 100644 index 00000000000..3c6b6bd6f5f --- /dev/null +++ b/incubator/external-ip/0.0.10/Chart.yaml @@ -0,0 +1,32 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - Network-Management + - Network-Other +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: Gets external IP via DIG command ( OpenDNS , Cloudflare, google ) on + a scheduled basis that can be customized. Also includes the ability to alert you + via pushover if the IP changes. +home: https://github.com/truecharts/apps/tree/master/charts/stable/external-ip +icon: https://truecharts.org/img/chart-icons/external-ip.png +keywords: +- external-ip +- Network-Management +- Network-Other +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: external-ip +sources: +- https://github.com/xavier-hernandez/docker-external-ip +- https://hub.docker.com/repository/docker/xavierh/external-ip +type: application +version: 0.0.10 diff --git a/incubator/external-ip/0.0.10/README.md b/incubator/external-ip/0.0.10/README.md new file mode 100644 index 00000000000..06602dcb7de --- /dev/null +++ b/incubator/external-ip/0.0.10/README.md @@ -0,0 +1,108 @@ +# external-ip + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +Gets external IP via DIG command ( OpenDNS , Cloudflare, google ) on a scheduled basis that can be customized. Also includes the ability to alert you via pushover if the IP changes. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [external-ip](https://truecharts.org/charts/stable/external-ip) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `external-ip` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install external-ip TrueCharts/external-ip +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `external-ip` deployment + +```console +helm uninstall external-ip +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install external-ip \ + --set env.TZ="America/New York" \ + TrueCharts/external-ip +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install external-ip TrueCharts/external-ip -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/external-ip/0.0.10/app-readme.md b/incubator/external-ip/0.0.10/app-readme.md new file mode 100644 index 00000000000..7a094afd2db --- /dev/null +++ b/incubator/external-ip/0.0.10/app-readme.md @@ -0,0 +1,8 @@ +Gets external IP via DIG command ( OpenDNS , Cloudflare, google ) on a scheduled basis that can be customized. Also includes the ability to alert you via pushover if the IP changes. + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/external-ip + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/external-ip/0.0.10/charts/common-10.4.6.tgz b/incubator/external-ip/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/external-ip/0.0.10/ix_values.yaml b/incubator/external-ip/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..ef564d0dc7c --- /dev/null +++ b/incubator/external-ip/0.0.10/ix_values.yaml @@ -0,0 +1,32 @@ +env: + DELAY: 5m + NOTIFICATION_TYPE: '' + PROVIDER: '' + PUSHOVER_TITLE: '' + PUSHOVER_TOKEN: '' + PUSHOVER_USER: '' + RECOVERY_ALERT: '' +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/external-ip + tag: latest +persistence: {} +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: false + ports: + main: + enabled: false diff --git a/incubator/external-ip/0.0.10/questions.yaml b/incubator/external-ip/0.0.10/questions.yaml new file mode 100644 index 00000000000..ed3319a16ba --- /dev/null +++ b/incubator/external-ip/0.0.10/questions.yaml @@ -0,0 +1,1879 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: {} +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: false + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: DELAY + label: 'DELAY' + description: "Container Variable DELAY" + schema: + type: string + default: "5m" + - variable: PROVIDER + label: 'PROVIDER' + description: "Container Variable PROVIDER" + schema: + type: string + default: "" + - variable: NOTIFICATION_TYPE + label: 'NOTIFICATION_TYPE' + description: "Container Variable NOTIFICATIONTYPE" + schema: + type: string + default: "" + - variable: PUSHOVER_TOKEN + label: 'PUSHOVER_TOKEN' + description: "Container Variable PUSHOVERTOKEN" + schema: + type: string + default: "" + - variable: PUSHOVER_USER + label: 'PUSHOVER_USER' + description: "Container Variable PUSHOVERUSER" + schema: + type: string + default: "" + - variable: PUSHOVER_TITLE + label: 'PUSHOVER_TITLE' + description: "Container Variable PUSHOVERTITLE" + schema: + type: string + default: "" + - variable: RECOVERY_ALERT + label: 'RECOVERY_ALERT' + description: "Container Variable RECOVERYALERT" + 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: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/external-ip/0.0.10/templates/common.yaml b/incubator/external-ip/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/external-ip/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/external-ip/0.0.10/values.yaml b/incubator/external-ip/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/external-ip/item.yaml b/incubator/external-ip/item.yaml new file mode 100644 index 00000000000..16d7d69a863 --- /dev/null +++ b/incubator/external-ip/item.yaml @@ -0,0 +1,5 @@ +icon_url: https://truecharts.org/img/chart-icons/external-ip.png +categories: +- Network-Management +- Network-Other + diff --git a/incubator/factorio/0.0.10/CHANGELOG.md b/incubator/factorio/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..a168cf80ad1 --- /dev/null +++ b/incubator/factorio/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [factorio-0.0.10]factorio-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [factorio-0.0.10]factorio-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [factorio-0.0.10]factorio-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [factorio-0.0.10]factorio-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [factorio-0.0.10]factorio-0.0.10 (2022-07-20) diff --git a/incubator/factorio/0.0.10/Chart.lock b/incubator/factorio/0.0.10/Chart.lock new file mode 100644 index 00000000000..9de23ffc814 --- /dev/null +++ b/incubator/factorio/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:04:17.823879957Z" diff --git a/incubator/factorio/0.0.10/Chart.yaml b/incubator/factorio/0.0.10/Chart.yaml new file mode 100644 index 00000000000..bfd065f47c8 --- /dev/null +++ b/incubator/factorio/0.0.10/Chart.yaml @@ -0,0 +1,29 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - GameServers +apiVersion: v2 +appVersion: "stable" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: "This Docker Container will download the latest stable release of the\ + \ game, generate the map and you're ready to play.\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/factorio +icon: https://truecharts.org/img/chart-icons/factorio.png +keywords: +- factorio +- GameServers +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: factorio +sources: +- https://www.factorio.com/ +- https://hub.docker.com/r/factoriotools/factorio/ +type: application +version: 0.0.10 diff --git a/incubator/factorio/0.0.10/README.md b/incubator/factorio/0.0.10/README.md new file mode 100644 index 00000000000..7f82d6d2200 --- /dev/null +++ b/incubator/factorio/0.0.10/README.md @@ -0,0 +1,108 @@ +# factorio + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: stable](https://img.shields.io/badge/AppVersion-stable-informational?style=flat-square) + +This Docker Container will download the latest stable release of the game, generate the map and you're ready to play. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [factorio](https://truecharts.org/charts/stable/factorio) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `factorio` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install factorio TrueCharts/factorio +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `factorio` deployment + +```console +helm uninstall factorio +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install factorio \ + --set env.TZ="America/New York" \ + TrueCharts/factorio +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install factorio TrueCharts/factorio -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/factorio/0.0.10/app-readme.md b/incubator/factorio/0.0.10/app-readme.md new file mode 100644 index 00000000000..2c8bd0028c0 --- /dev/null +++ b/incubator/factorio/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +This Docker Container will download the latest stable release of the game, generate the map and you're ready to play. + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/factorio + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/factorio/0.0.10/charts/common-10.4.6.tgz b/incubator/factorio/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/factorio/0.0.10/ix_values.yaml b/incubator/factorio/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..e088047ecb2 --- /dev/null +++ b/incubator/factorio/0.0.10/ix_values.yaml @@ -0,0 +1,31 @@ +env: {} +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/factorio + tag: vstable +persistence: + path: + enabled: true + mountPath: /factorio +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 34197 + protocol: UDP + targetPort: 34197 diff --git a/incubator/factorio/0.0.10/questions.yaml b/incubator/factorio/0.0.10/questions.yaml new file mode 100644 index 00000000000..c9066881fa9 --- /dev/null +++ b/incubator/factorio/0.0.10/questions.yaml @@ -0,0 +1,2441 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: UDP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 34197 + + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - 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" + description: "Container Path factorio" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/factorio/0.0.10/templates/common.yaml b/incubator/factorio/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/factorio/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/factorio/0.0.10/values.yaml b/incubator/factorio/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/factorio/item.yaml b/incubator/factorio/item.yaml new file mode 100644 index 00000000000..bbcf40e701d --- /dev/null +++ b/incubator/factorio/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/factorio.png +categories: +- GameServers + diff --git a/incubator/factorioservermanager/0.0.10/CHANGELOG.md b/incubator/factorioservermanager/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..c2834bd8626 --- /dev/null +++ b/incubator/factorioservermanager/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [factorioservermanager-0.0.10]factorioservermanager-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [factorioservermanager-0.0.10]factorioservermanager-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [factorioservermanager-0.0.10]factorioservermanager-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [factorioservermanager-0.0.10]factorioservermanager-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [factorioservermanager-0.0.10]factorioservermanager-0.0.10 (2022-07-20) diff --git a/incubator/factorioservermanager/0.0.10/Chart.lock b/incubator/factorioservermanager/0.0.10/Chart.lock new file mode 100644 index 00000000000..e00228fc2ab --- /dev/null +++ b/incubator/factorioservermanager/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:04:22.230738127Z" diff --git a/incubator/factorioservermanager/0.0.10/Chart.yaml b/incubator/factorioservermanager/0.0.10/Chart.yaml new file mode 100644 index 00000000000..71016ebf9e6 --- /dev/null +++ b/incubator/factorioservermanager/0.0.10/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: 10.4.6 +deprecated: false +description: "A tool for managing Factorio servers \r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/factorioservermanager +icon: https://truecharts.org/img/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/OpenFactorioServerManager/factorio-server-manager +- https://hub.docker.com/r/ofsm/ofsm +type: application +version: 0.0.10 diff --git a/incubator/factorioservermanager/0.0.10/README.md b/incubator/factorioservermanager/0.0.10/README.md new file mode 100644 index 00000000000..52ab347312c --- /dev/null +++ b/incubator/factorioservermanager/0.0.10/README.md @@ -0,0 +1,108 @@ +# factorioservermanager + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +A tool for managing Factorio servers + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [factorioservermanager](https://truecharts.org/charts/stable/factorioservermanager) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `factorioservermanager` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install factorioservermanager TrueCharts/factorioservermanager +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `factorioservermanager` deployment + +```console +helm uninstall factorioservermanager +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install factorioservermanager \ + --set env.TZ="America/New York" \ + TrueCharts/factorioservermanager +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install factorioservermanager TrueCharts/factorioservermanager -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/factorioservermanager/0.0.10/app-readme.md b/incubator/factorioservermanager/0.0.10/app-readme.md new file mode 100644 index 00000000000..0659feff382 --- /dev/null +++ b/incubator/factorioservermanager/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +A tool for managing Factorio servers + + +This App is supplied by TrueCharts, for more information visit the manual: 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/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/factorioservermanager/0.0.10/charts/common-10.4.6.tgz b/incubator/factorioservermanager/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/factorioservermanager/0.0.10/ix_values.yaml b/incubator/factorioservermanager/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..4e2bd9325ba --- /dev/null +++ b/incubator/factorioservermanager/0.0.10/ix_values.yaml @@ -0,0 +1,38 @@ +env: {} +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/factorioservermanager + tag: latest +persistence: + config: + enabled: true + mountPath: /opt/factorio/config + fsmmods: + enabled: true + mountPath: /opt/factorio/mods + fsmsaves: + enabled: true + mountPath: /opt/factorio/saves +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + factorioport: + enabled: true + ports: + factorioport: + enabled: true + port: 34197 + protocol: UDP + targetPort: 34197 + main: + enabled: true + ports: + main: + enabled: true + port: 8888 + protocol: HTTP + targetPort: 80 diff --git a/incubator/factorioservermanager/0.0.10/questions.yaml b/incubator/factorioservermanager/0.0.10/questions.yaml new file mode 100644 index 00000000000..ccae5ec4961 --- /dev/null +++ b/incubator/factorioservermanager/0.0.10/questions.yaml @@ -0,0 +1,2924 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: HTTP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 80 + + - 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, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: UDP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 34197 + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/factorioservermanager/0.0.10/templates/common.yaml b/incubator/factorioservermanager/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/factorioservermanager/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/factorioservermanager/0.0.10/values.yaml b/incubator/factorioservermanager/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/factorioservermanager/item.yaml b/incubator/factorioservermanager/item.yaml new file mode 100644 index 00000000000..674c60d41af --- /dev/null +++ b/incubator/factorioservermanager/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/factorioservermanager.png +categories: +- GameServers + diff --git a/incubator/facturascripts/0.0.10/CHANGELOG.md b/incubator/facturascripts/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..eb9d3ba7b94 --- /dev/null +++ b/incubator/facturascripts/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [facturascripts-0.0.10]facturascripts-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [facturascripts-0.0.10]facturascripts-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [facturascripts-0.0.10]facturascripts-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [facturascripts-0.0.10]facturascripts-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [facturascripts-0.0.10]facturascripts-0.0.10 (2022-07-20) diff --git a/incubator/facturascripts/0.0.10/Chart.lock b/incubator/facturascripts/0.0.10/Chart.lock new file mode 100644 index 00000000000..ea18cadae0d --- /dev/null +++ b/incubator/facturascripts/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:04:24.893675973Z" diff --git a/incubator/facturascripts/0.0.10/Chart.yaml b/incubator/facturascripts/0.0.10/Chart.yaml new file mode 100644 index 00000000000..4715c11b4f2 --- /dev/null +++ b/incubator/facturascripts/0.0.10/Chart.yaml @@ -0,0 +1,32 @@ +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: 10.4.6 +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...\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/facturascripts +icon: https://truecharts.org/img/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://facturascripts.com/ +- https://hub.docker.com/r/unraides/facturascripts +type: application +version: 0.0.10 diff --git a/incubator/facturascripts/0.0.10/README.md b/incubator/facturascripts/0.0.10/README.md new file mode 100644 index 00000000000..316cc86477e --- /dev/null +++ b/incubator/facturascripts/0.0.10/README.md @@ -0,0 +1,108 @@ +# facturascripts + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +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... + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [facturascripts](https://truecharts.org/charts/stable/facturascripts) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `facturascripts` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install facturascripts TrueCharts/facturascripts +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `facturascripts` deployment + +```console +helm uninstall facturascripts +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install facturascripts \ + --set env.TZ="America/New York" \ + TrueCharts/facturascripts +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install facturascripts TrueCharts/facturascripts -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/facturascripts/0.0.10/app-readme.md b/incubator/facturascripts/0.0.10/app-readme.md new file mode 100644 index 00000000000..a3f6c479c49 --- /dev/null +++ b/incubator/facturascripts/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +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 + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/facturascripts/0.0.10/charts/common-10.4.6.tgz b/incubator/facturascripts/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/facturascripts/0.0.10/ix_values.yaml b/incubator/facturascripts/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..7466522692d --- /dev/null +++ b/incubator/facturascripts/0.0.10/ix_values.yaml @@ -0,0 +1,24 @@ +env: {} +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/facturascripts + tag: latest +persistence: + appdata: + enabled: true + mountPath: /var/www/html +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 31000 + protocol: TCP + targetPort: 80 diff --git a/incubator/facturascripts/0.0.10/questions.yaml b/incubator/facturascripts/0.0.10/questions.yaml new file mode 100644 index 00000000000..fa71350723d --- /dev/null +++ b/incubator/facturascripts/0.0.10/questions.yaml @@ -0,0 +1,2440 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 80 + + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/facturascripts/0.0.10/templates/common.yaml b/incubator/facturascripts/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/facturascripts/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/facturascripts/0.0.10/values.yaml b/incubator/facturascripts/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/facturascripts/item.yaml b/incubator/facturascripts/item.yaml new file mode 100644 index 00000000000..46084e706cf --- /dev/null +++ b/incubator/facturascripts/item.yaml @@ -0,0 +1,5 @@ +icon_url: https://truecharts.org/img/chart-icons/facturascripts.png +categories: +- Cloud +- Productivity + diff --git a/incubator/farmos/0.0.10/CHANGELOG.md b/incubator/farmos/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..d1a39d8882b --- /dev/null +++ b/incubator/farmos/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [farmos-0.0.10]farmos-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [farmos-0.0.10]farmos-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [farmos-0.0.10]farmos-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [farmos-0.0.10]farmos-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [farmos-0.0.10]farmos-0.0.10 (2022-07-20) diff --git a/incubator/farmos/0.0.10/Chart.lock b/incubator/farmos/0.0.10/Chart.lock new file mode 100644 index 00000000000..d1053f9d6f6 --- /dev/null +++ b/incubator/farmos/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:04:25.098827533Z" diff --git a/incubator/farmos/0.0.10/Chart.yaml b/incubator/farmos/0.0.10/Chart.yaml new file mode 100644 index 00000000000..72b15ba9afb --- /dev/null +++ b/incubator/farmos/0.0.10/Chart.yaml @@ -0,0 +1,32 @@ +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: 10.4.6 +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://github.com/truecharts/apps/tree/master/charts/stable/farmos +icon: https://truecharts.org/img/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/farmOS/farmOS +- https://hub.docker.com/r/farmos/farmos/ +type: application +version: 0.0.10 diff --git a/incubator/farmos/0.0.10/README.md b/incubator/farmos/0.0.10/README.md new file mode 100644 index 00000000000..af7fb33e91f --- /dev/null +++ b/incubator/farmos/0.0.10/README.md @@ -0,0 +1,108 @@ +# farmos + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +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. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [farmos](https://truecharts.org/charts/stable/farmos) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `farmos` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install farmos TrueCharts/farmos +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `farmos` deployment + +```console +helm uninstall farmos +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install farmos \ + --set env.TZ="America/New York" \ + TrueCharts/farmos +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install farmos TrueCharts/farmos -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/farmos/0.0.10/app-readme.md b/incubator/farmos/0.0.10/app-readme.md new file mode 100644 index 00000000000..791488ad764 --- /dev/null +++ b/incubator/farmos/0.0.10/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 + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/farmos/0.0.10/charts/common-10.4.6.tgz b/incubator/farmos/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/farmos/0.0.10/ix_values.yaml b/incubator/farmos/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..0c9658935f1 --- /dev/null +++ b/incubator/farmos/0.0.10/ix_values.yaml @@ -0,0 +1,24 @@ +env: {} +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/farmos + tag: latest +persistence: + sitesdirectory: + enabled: true + mountPath: /var/www/html/sites +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 80 + protocol: TCP + targetPort: 80 diff --git a/incubator/farmos/0.0.10/questions.yaml b/incubator/farmos/0.0.10/questions.yaml new file mode 100644 index 00000000000..7c35fc34853 --- /dev/null +++ b/incubator/farmos/0.0.10/questions.yaml @@ -0,0 +1,2441 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 80 + + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/farmos/0.0.10/templates/common.yaml b/incubator/farmos/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/farmos/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/farmos/0.0.10/values.yaml b/incubator/farmos/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/farmos/item.yaml b/incubator/farmos/item.yaml new file mode 100644 index 00000000000..a414292ba92 --- /dev/null +++ b/incubator/farmos/item.yaml @@ -0,0 +1,5 @@ +icon_url: https://truecharts.org/img/chart-icons/farmos.png +categories: +- Productivity +- Tools-Utilities + diff --git a/incubator/fastcom-mqtt/0.0.10/CHANGELOG.md b/incubator/fastcom-mqtt/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..8a9860c5e87 --- /dev/null +++ b/incubator/fastcom-mqtt/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [fastcom-mqtt-0.0.10]fastcom-mqtt-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [fastcom-mqtt-0.0.10]fastcom-mqtt-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [fastcom-mqtt-0.0.10]fastcom-mqtt-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [fastcom-mqtt-0.0.10]fastcom-mqtt-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [fastcom-mqtt-0.0.10]fastcom-mqtt-0.0.10 (2022-07-20) diff --git a/incubator/fastcom-mqtt/0.0.10/Chart.lock b/incubator/fastcom-mqtt/0.0.10/Chart.lock new file mode 100644 index 00000000000..54350c2f2ac --- /dev/null +++ b/incubator/fastcom-mqtt/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:04:33.641738516Z" diff --git a/incubator/fastcom-mqtt/0.0.10/Chart.yaml b/incubator/fastcom-mqtt/0.0.10/Chart.yaml new file mode 100644 index 00000000000..29c81a8d1ff --- /dev/null +++ b/incubator/fastcom-mqtt/0.0.10/Chart.yaml @@ -0,0 +1,30 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - HomeAutomation +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: 'Docker Container with Fast.com CLI sending data directly to MQTT Broker + + ' +home: https://github.com/truecharts/apps/tree/master/charts/stable/fastcom-mqtt +icon: https://truecharts.org/img/chart-icons/fastcom-mqtt.png +keywords: +- fastcom-mqtt +- HomeAutomation +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: fastcom-mqtt +sources: +- https://github.com/simonjenny/fastcom-mqtt +- https://hub.docker.com/r/simonjenny/fastcom-mqtt/ +type: application +version: 0.0.10 diff --git a/incubator/fastcom-mqtt/0.0.10/README.md b/incubator/fastcom-mqtt/0.0.10/README.md new file mode 100644 index 00000000000..b31eeda0833 --- /dev/null +++ b/incubator/fastcom-mqtt/0.0.10/README.md @@ -0,0 +1,108 @@ +# fastcom-mqtt + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +Docker Container with Fast.com CLI sending data directly to MQTT Broker + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [fastcom-mqtt](https://truecharts.org/charts/stable/fastcom-mqtt) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `fastcom-mqtt` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install fastcom-mqtt TrueCharts/fastcom-mqtt +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `fastcom-mqtt` deployment + +```console +helm uninstall fastcom-mqtt +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install fastcom-mqtt \ + --set env.TZ="America/New York" \ + TrueCharts/fastcom-mqtt +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install fastcom-mqtt TrueCharts/fastcom-mqtt -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/fastcom-mqtt/0.0.10/app-readme.md b/incubator/fastcom-mqtt/0.0.10/app-readme.md new file mode 100644 index 00000000000..8e523d249ee --- /dev/null +++ b/incubator/fastcom-mqtt/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +Docker Container with Fast.com CLI sending data directly to MQTT Broker + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/fastcom-mqtt + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/fastcom-mqtt/0.0.10/charts/common-10.4.6.tgz b/incubator/fastcom-mqtt/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/fastcom-mqtt/0.0.10/ix_values.yaml b/incubator/fastcom-mqtt/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..33430729dbb --- /dev/null +++ b/incubator/fastcom-mqtt/0.0.10/ix_values.yaml @@ -0,0 +1,29 @@ +env: + MQTT_DOWN: '' + MQTT_SERVER: '' + MQTT_UP: '' + SLEEP: '3600' +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/fastcom-mqtt + tag: latest +persistence: {} +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: false + ports: + main: + enabled: false diff --git a/incubator/fastcom-mqtt/0.0.10/questions.yaml b/incubator/fastcom-mqtt/0.0.10/questions.yaml new file mode 100644 index 00000000000..a744625fc80 --- /dev/null +++ b/incubator/fastcom-mqtt/0.0.10/questions.yaml @@ -0,0 +1,1861 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: {} +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: false + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: MQTT_SERVER + label: 'MQTT_SERVER' + description: "Container Variable MQTTSERVER" + schema: + type: string + default: "" + - variable: MQTT_UP + label: 'MQTT_UP' + description: "Container Variable MQTTUP" + schema: + type: string + default: "" + - variable: MQTT_DOWN + label: 'MQTT_DOWN' + description: "Container Variable MQTTDOWN" + schema: + type: string + default: "" + - variable: SLEEP + label: 'SLEEP' + description: "Container Variable sleep" + schema: + type: string + default: "3600" + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/fastcom-mqtt/0.0.10/templates/common.yaml b/incubator/fastcom-mqtt/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/fastcom-mqtt/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/fastcom-mqtt/0.0.10/values.yaml b/incubator/fastcom-mqtt/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/fastcom-mqtt/item.yaml b/incubator/fastcom-mqtt/item.yaml new file mode 100644 index 00000000000..42adec1232b --- /dev/null +++ b/incubator/fastcom-mqtt/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/fastcom-mqtt.png +categories: +- HomeAutomation + diff --git a/incubator/fenrus/0.0.10/CHANGELOG.md b/incubator/fenrus/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..71beb50d459 --- /dev/null +++ b/incubator/fenrus/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [fenrus-0.0.10]fenrus-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [fenrus-0.0.10]fenrus-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [fenrus-0.0.10]fenrus-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [fenrus-0.0.10]fenrus-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [fenrus-0.0.10]fenrus-0.0.10 (2022-07-20) diff --git a/incubator/fenrus/0.0.10/Chart.lock b/incubator/fenrus/0.0.10/Chart.lock new file mode 100644 index 00000000000..63ebc9143fe --- /dev/null +++ b/incubator/fenrus/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:04:39.115713646Z" diff --git a/incubator/fenrus/0.0.10/Chart.yaml b/incubator/fenrus/0.0.10/Chart.yaml new file mode 100644 index 00000000000..5774484a705 --- /dev/null +++ b/incubator/fenrus/0.0.10/Chart.yaml @@ -0,0 +1,28 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - Productivity +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: "Fenrus is a home page / personal dashboard with smart apps. \n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/fenrus +icon: https://truecharts.org/img/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: +- http://fenrus.io +- https://hub.docker.com/r/revenz/fenrus/ +type: application +version: 0.0.10 diff --git a/incubator/fenrus/0.0.10/README.md b/incubator/fenrus/0.0.10/README.md new file mode 100644 index 00000000000..8703b054168 --- /dev/null +++ b/incubator/fenrus/0.0.10/README.md @@ -0,0 +1,108 @@ +# fenrus + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +Fenrus is a home page / personal dashboard with smart apps. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [fenrus](https://truecharts.org/charts/stable/fenrus) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `fenrus` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install fenrus TrueCharts/fenrus +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `fenrus` deployment + +```console +helm uninstall fenrus +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install fenrus \ + --set env.TZ="America/New York" \ + TrueCharts/fenrus +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install fenrus TrueCharts/fenrus -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/fenrus/0.0.10/app-readme.md b/incubator/fenrus/0.0.10/app-readme.md new file mode 100644 index 00000000000..b3e8a9045a4 --- /dev/null +++ b/incubator/fenrus/0.0.10/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 + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/fenrus/0.0.10/charts/common-10.4.6.tgz b/incubator/fenrus/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/fenrus/0.0.10/ix_values.yaml b/incubator/fenrus/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..5ad61459769 --- /dev/null +++ b/incubator/fenrus/0.0.10/ix_values.yaml @@ -0,0 +1,27 @@ +env: {} +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/fenrus + tag: latest +persistence: + data: + enabled: true + mountPath: /app/data + images: + enabled: true + mountPath: /app/wwwroot/images +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 3000 + protocol: TCP + targetPort: 3000 diff --git a/incubator/fenrus/0.0.10/questions.yaml b/incubator/fenrus/0.0.10/questions.yaml new file mode 100644 index 00000000000..e91c950e244 --- /dev/null +++ b/incubator/fenrus/0.0.10/questions.yaml @@ -0,0 +1,2618 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 3000 + + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/fenrus/0.0.10/templates/common.yaml b/incubator/fenrus/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/fenrus/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/fenrus/0.0.10/values.yaml b/incubator/fenrus/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/fenrus/item.yaml b/incubator/fenrus/item.yaml new file mode 100644 index 00000000000..c7bd27bfd5e --- /dev/null +++ b/incubator/fenrus/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/fenrus.png +categories: +- Productivity + diff --git a/incubator/ferdi-client/0.0.10/CHANGELOG.md b/incubator/ferdi-client/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..6033b217046 --- /dev/null +++ b/incubator/ferdi-client/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [ferdi-client-0.0.10]ferdi-client-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [ferdi-client-0.0.10]ferdi-client-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [ferdi-client-0.0.10]ferdi-client-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [ferdi-client-0.0.10]ferdi-client-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [ferdi-client-0.0.10]ferdi-client-0.0.10 (2022-07-20) diff --git a/incubator/ferdi-client/0.0.10/Chart.lock b/incubator/ferdi-client/0.0.10/Chart.lock new file mode 100644 index 00000000000..910851a774e --- /dev/null +++ b/incubator/ferdi-client/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:04:41.51546333Z" diff --git a/incubator/ferdi-client/0.0.10/Chart.yaml b/incubator/ferdi-client/0.0.10/Chart.yaml new file mode 100644 index 00000000000..824adb4946f --- /dev/null +++ b/incubator/ferdi-client/0.0.10/Chart.yaml @@ -0,0 +1,34 @@ +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: 10.4.6 +deprecated: false +description: "Ferdi is a destkop app that helps you organize how you use your favourite\ + \ apps by combining them into one application. It is based on Franz - a software\ + \ already used by thousands of people - with the difference that Ferdi gives you\ + \ many additional features and doesn't restrict its usage! Ferdi is compatible with\ + \ your existing Franz account so you can continue right where you left off.\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/ferdi-client +icon: https://truecharts.org/img/chart-icons/ferdi-client.png +keywords: +- ferdi-client +- Productivity +- Tools-Utilities +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: ferdi-client +sources: +- https://getferdi.com/ +- https://hub.docker.com/r/ich777/ferdi-client/ +type: application +version: 0.0.10 diff --git a/incubator/ferdi-client/0.0.10/README.md b/incubator/ferdi-client/0.0.10/README.md new file mode 100644 index 00000000000..285949c131f --- /dev/null +++ b/incubator/ferdi-client/0.0.10/README.md @@ -0,0 +1,108 @@ +# ferdi-client + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +Ferdi is a destkop app that helps you organize how you use your favourite apps by combining them into one application. It is based on Franz - a software already used by thousands of people - with the difference that Ferdi gives you many additional features and doesn't restrict its usage! Ferdi is compatible with your existing Franz account so you can continue right where you left off. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [ferdi-client](https://truecharts.org/charts/stable/ferdi-client) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `ferdi-client` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install ferdi-client TrueCharts/ferdi-client +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `ferdi-client` deployment + +```console +helm uninstall ferdi-client +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install ferdi-client \ + --set env.TZ="America/New York" \ + TrueCharts/ferdi-client +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install ferdi-client TrueCharts/ferdi-client -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/ferdi-client/0.0.10/app-readme.md b/incubator/ferdi-client/0.0.10/app-readme.md new file mode 100644 index 00000000000..45c6ba252ad --- /dev/null +++ b/incubator/ferdi-client/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +Ferdi is a destkop app that helps you organize how you use your favourite apps by combining them into one application. It is based on Franz - a software already used by thousands of people - with the difference that Ferdi gives you many additional features and doesn't restrict its usage! Ferdi is compatible with your existing Franz account so you can continue right where you left off. + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/ferdi-client + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/ferdi-client/0.0.10/charts/common-10.4.6.tgz b/incubator/ferdi-client/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 zcmV)UK(N0biwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0POv1ciT9UI1bNieF{8GdfT40uD0bwGuda|j??YaiQ{8C>EG_` z90wvH31f<21E3sDI^X?&a3#QtMETa~8FObl76}vzg+f)KP$-0CJ|{`{Xa*_oEa5!< z)BQiaUavRY+mrwHdcESmz2R>EPyM~YaR1<7x8L9UQ?EbRJJ|gb=sf@~r6*$?(m(a? z+*Yx3e~<^J_#>hWlVk)IgBDCv`!j|dG2V(03n@;yeD@|xLh%=f@t8uo1QSBRCC!jz zAl90ZIU0c(=P4U?yHm_(*|-yud6&}+g|bW+rYY-kicohB8Ar6M-z!#Z;ZQVWK)?m$ zkg|>fl`%v^l5mu82{r2;4EK7ygZ=&1HCo;f8nIEU4f4iXZG&lBzG$_9Zss~0Biq&Q z|Lax1(;s$v?cVpTIm8KvI6+hbLvx7Z5x~iW{C5txL+G>xKmtX79RdK5(KtuHP(c;f z81Q9^Mh3ms!r;>Hb@n>L)+3F-p8pFNXNWzJ09ZNy`~AJ%-d=J3AMEZw&Hu-Eo`H57 zyiZZ`@$3|^6oq(#LlBZ=f~OgUVy?HIf&Y%s1ZFW8g)a~SV-%B{7D-XENRyK}oT5<+ z014|t!dL=6LqHb*VT@720Tu;Y08o??hB=|j5tzCOikiX94j}bVToDzOU5fdG1Noc=dihj%>jW(tF z4W?)+D%R6Ihux6m7G?uzE}<9wPOmfQ4f?&8{XIkPK{$S~i=vmqy>NdQ_6E^ze+>6v z?*R4o5PY$_5BK)MefVS!Skau@?Fo3%+UckZb@L&Sb-iu-HKoE7@+uQ3+Uhcv@)Ps9r zZ#Z~~CQ-j1jSr$h|3$dlJBVJs3>&n)5p@&9*^CgrDRoV~dg@xp4XJC&uZLAHEQb3p zU%VVl`omp_29v?y<^I9oAnLt1nCzk6UWmd$)F1SEgYd=Pa2WN&$z-?(_xJn5@p!j4 zp1=le*HiZ}zJW`o=^By-LZc5p_W<701nYISski1TnMi4y~-s|k=EIfSiB04~5 zupjNiy#YFS5$%pAdk5j(aMFu*2Po_hU%Z^`@9(~RF?}crhFg#s_=haQ9$5*q=l%2E)C{LA9pynr=$cc@}ew6TD(_ z%OY)2rYU*y8ddNpiZH97P_NVL^bLXb`u!LCQHWq44JSj`+ue^|^j`KNxYvUy42N*| zGDMT%aQw0#h5g;#0esmDUq*w$i(x<79UiP}xG8<6F&V=+rwif$CV(sur8q)zQKiH( zn&8iXOysXg7RO=%p_d)+b!iWZD2Eb`DUxMCgeHPuf`@?xP+1d3kt_#eps)im9HW?Z zz)vWi1CHjYl$0QZ2^b@gF%)%LK$jYUFJD(fgGoZToK0&%Iz=VimRRyp632*Ilu-i5 zG14>Nd=-_|hiD`hfko2fMS)m-b>#PtFvbxea)rwPq=IT`OqO$$@Es6AG$#o|91sc^ zha63^m?6P~Y5|uQt|5Ta9Y7L^M_#Avfb80~d?LKXjE}(I{;uHbH76r;q`Bc406;F_ z)LZ$di_6_HSTVe6{5JrrD%`bCw`|t!$Z0koBPwQBgcznM0x5}@l0z{LAsd1I3I@v3 zDTNUNj8n+bbSaCzAr!o}$gmyJ2OO!MDBe0pAw`fQu%$K1Hh@V4&Pg2OWcneEAlG~; zU|s0mT%bx|?~~UkMjVwvXiIwVdCZfMFS(Dgg4YLRDvI3w2XSxsh@p|7E4cxf)RcgrWszm?U6^nNT$# z#&fAr%!i-U`?uot2<*06*wbN3(C4bk*IRz6To3v0Yt@7{Mx@pR7br#{CltUqCO1rK z1q9g=q&U3B$rL~k;mHKid<7ceknaFIPYLBP;Z~7c938$r20wl{QJpc6M<9^DgO+aC zXa>#e^EphSEw*jp7$Znb1L+}a=|XZUSHOUD%2w1CpPj0QQKV|%#EKZeiGh^KIR(V< zkCz5or}Ye+Q9Oqf$IFTiqtBeeL%$ut2S)}8aEa&WpCm!8%l{pL50^)+RtkAIJ4pz~ zlciQ9El&)jvcV;gbdIeP^z`sTwcJu4irQ+55~M6jqti72Wo^!3>MF1ajG2{rma1ov z&p^h+_|JqET|kOO1tv?Tkk3Zo`|kIpdZM)%VSGpN(PubMV>A+kRKOqzGsejroSezJ zqU;FtUk*C`;fv02*cn!Wgc;#;$Z-hccnPME&ybL$IGIw!nCzddr(c{A%12;096AJD zttwLzwNertR;a@Y#Zjp?TF;!unzW#-j`iA3*L>@1wB~44D>DzOgUV~f5uM`%F>o_O zg3$R)Qd34$1vE<-xWRk|E-(Mba8swn`O>h|Ex|D!;UotrfBGQh`~^P|ivKAf#o&xY z;4tHag)m06u#Ea^gqei(U#*#~az>)Of|x&Zh!dp;N)to#qoYx-aT3X?1?g03eNn`1 zQ$Ujh7N1n9pK%g7ibk5vdUmP;DDrK*1~46XbDZFLHV1G{vV;rB+PwIl3DL$~uQP4in%`ByUj!FavXCh`|K(3($7JT(rqDRe%GM#LH4C2?Nq=6amN#UaBGe!>F&^ zkWwBFXVyal6lgjDHX~Uai6xn`Rimo;mxFX9rx-&RMMh~C0Lv<+)t!ZNIYZv`E271T zSRy)fObD0OfUthGRV{{yW@raM1qw5xby1`>ox7H{i%uH$wFtmi4g% zMwSip->y#d!1x+;1%#58-vArasUl4MesknpDwW}_M)f?CLsH#gDn1q}y+#wM>yT_{7wx#E<``{p?*OF#)i2uWx0>;?>ZSB! z1wmZ{$k_5R4lz98Y4IV?T^QfD*PFX#W#V z;e4e3*3P~lnuTdlQ+G^ztEw_FnL|?osGlciNA6Aovy}j7gTO4mdY%5D*B$H?DxZ^# zBfm<77{>`z(K?qm*ZOlV zMneqEbv8ycK^zHshZJ!z!Ibe%OZ_@d7S8m22j%)Hf zho6mScGP+X4!40>q(1{cY=g7Ii;G`gkHGg|zJSg-l1$MNateI?`hDveII=}ry7y|O z{SKx-qvbi8*!M>HtMBbOOxt$lCZB7x9Ety!*RM;U<*M!tC36R;B15Sy)0+BRXsO(m zd^#OLljCi>y1e{fuVq7)H!Dh1(+QbTLdinnZ&tCESPu4eWNPcql#052EEwmKVTe{A zRsc*WnM+TW;UZ_BLe@A{E@JJ&Xy=7I5iUg0YbC+8HL3VhKp!K)$SaIn&nAT-&tME9 z$e|EOV+3LXBWa{rJ6FPn3@}b{GJOp>)G&@1U@3t)6TLy(3uwE%qp>YS&;Rx}iY9;m`<4m$ z%vE9slWs&p)(uG#qLj0)sn^!lBu=K{V}e57hN<*}$ZocE!R|8{hKLEaZSxs2ueV!D zTwSQ2Z*g+Xd@eMO>N842ePL!%aPk^#oqafYy)AmyUO>^0R4$Fn<(su~7?ChuRox?!aP*mXLYTrajxon#Kr_y8WEb^6emD_h z?7PdA$T@PV2{a-~QayYya<>@rb%6Bs>(+s8-Yy5ulq2=R$4>5ZWyv8EG%>xDFMgyX zOU;{!|C42D8Y969FqR(-W9f27Ga&`dgnXZz6T;tNHitZ%ZHBdUC+1rutc-n1@dC$a z>Z&U--`*$jQndR9$4JS1y9+M2kj_lKV-~_#+lUr`puj1Sh}&vmVMM$!Sv@K-o}h3U z#;C4iwt%DlE~U}wxS?-w91CuvS+XP4D@*`RFt;Uk00d%oi1~}>2tW>S!Z?g$>GSBc z^e?;H!|u5?B-Sb@!ZJJ{Q@fFx)8)dh)6)CIl^B>f5|}JyOL-x=iWN8rLr92mx&)Y` zIqQI9(WF<}IP7L{fdCfL{3a3hqYzKRfGNNbpHyEXvj?DpT4{vn>fj6?$(o)x`z2xH z4pmiJ)vr}p=CCSpJ)>ldN)cY|b`w#~A-k3WU9oyQB~jbr>%5Qg0wrR#EhZ+Ge=!az z&(gN?>vgwR#hs4Lvaa0*Z#5|85G>$bbd={%05CX|O=C4dU9i3ptf#*h{D7rN^GSUA zB#aVaFx_A_Q*L`T`b&~gIYg00phFJ$ zY-E4gm4l!Qm|zq~hN)F&bqGgsW89;f>2K zq){d8I?e$S^N}{KBqSKWMloDoppYaH8-adLe@zj^QppzH3kgXwZa?hn_Y;WYjH1gK zMNA+pzT|Nl5yZFRbvw=1XQ3x*2-d16t5s(2h!QCdB z+xR_CvntT{G0BRPX`tUfd!}6da|9CxFb6YXr-M2CEW--O1nmELxA&^Q-xI4+QCG6D zz!GFB7^4ZH!j_b?l2y;>`iVR2wOYzzhF*N3zx0v31v$8x;c%w5n{h0C9{C%8G4wqH z4p=ZpjKL|g>yaCZIY&vyG^gy;Rc0zh(peZH=VKeDxO+qBbxdH?rihV@hKO~A3A^Zb zpVOvr1R=$Dh874+DGbphi{s@ZVJ~r) zt)7+iRdK!Uti6nw+-Ogg89$VcfUEKctO0yjfr4Js!6-rz7^`)q4tuprNU@YBh6>$NjL@3kpj(7^crl&IFP}{&__G3UbgLRV%sfK) zCrTFaD1QCbZfsxRc^adww**FG7{eq)bbAMgpFilIJH{P; za<&6bNrcW+7^*QO?AKyIl5;Ad=3GMU$pqbjGfEbs(=|b@N&(E_Qo5PYuNkIF6xPH= zl@3eX60KVunW*oQ2DPF$aaAx(rNq%rY-Ky)WJ2g%305T<)|nKdT23IR$IcNg69I5Z z;beltLez*66gh`!{t!$R!Z?SyUS#u(6N+J+yZXCILbq|+-BtrwiOr}6b)4!TjgC73 zl4*=CI1I0Mz?sw%uQM3y7w2jm>>Cw$k-mX*950Q7+5u4rz{4q+h@#l+wB@>6I@fYE zPR3N$7}p}vtoG_XMJ9VKV-IBTTfWyPzjXZ3{gi|LBt}f1 zN=A`hmN~;8U5iNCw)f zp>xduxjf8q&#^A@gLfKU>tofbmBOz6mZN0!wr2}4mr{4#d9|CY0T# zBgK(os9PzfnsHNKK{QioLzX6aGsw<@sbIiezP%{2O9%WQ6t)U5mJ!=R zJSxr-BarF*+%wS7^NwLwh!$!Aip^d)uXk0`a{*El|JK zu$dGDdxbW9c+GmlB3QNJu(j0zzrqn$zp9sI2CO?C>({Na6eIv!OdUZm32+PY*dCk# z?y&+RxF&>*z!=h1oOWj}YdD5Fg0Cj{Eyu@huf8_h>jhlBcnP`5$~r5?-uP&dw_jlCxV>+E^Y5c1&Y*_VH*( z|M}C|j^KzLfaWP*zQ%M%E4-b2%I!#HC6lfQhLbT8&Q4OgaF%wLYB?w1R2;YcMS3bYQOZh1e2_SsBeP=jH{%U~-6JWVx_=eu zT#?BYpP?&N{l7l#=%V_Vh$#7e`+KcIncLDhX_K_?gpN? zVDnuDSsg_(fUB*7xJ6wP;9io-8#+`}d#n8^7o1QyMc~MuzRIPw2SECdbU@Ij_NN^X zEfYA$p)ku-HYs(o#ZWA&s3uL2_W!=QkU=+2ERg|$XoV9&_p1y~%xON8XRTs}6v!!F zpad}0E7hrT{Vb6lV-$fc2aW9=kPxq`G(u$nlH3RulVwJ%f1(O~)rbp2EuPvgZ|iuZ z8>kXJP?X7&Q2>3$OtNGcLp{R8cmB-xeToGf}X4zOS z8Z=sJHc^tosXnpc$-zT;KIk2Bvql<;$P2vsE_Y=TZOBXOSb_j^5+OTha%cZo2mk5e zQ{x&T`v22FH*&%&7~LGhw!)B^gHCOM1ye3~XuCE7=Lkl>P|VSLVX)@im&Y@0Dj9>L z>4nfVh~--rwX|XQpJ)VLzI^#3F8UIPT)QZiREIccN~&imNx&zWgDXq)F_TYPREdHW zc~X3@pNR|fj zauRmV#L2+m<`2^WdYZ$$rC?%}q+w`*!wgbkT=5%(5&&cOyhqDnj!k&OGK6d|!gPCe zAgn+kDkO-qt4*b(4dzAd)K!%$yhn2s;Y_+(1C?wj$h9s6e4b7i*g8La*B-<0TCkTr zakXtGx&~^)Bo${Gz=AT$!auDiM(J&(`MyJi_*6oWh)N8{fy9{WPo39N1v?(=7Q0S>s#h zi(_T3i0;9B?L60Mo$faB0-UgoSC70X)sE0&&Da~<+~qY6XDWJM`#waO^3t?p_i!|~ zL}=kyd1g0MnrJDabIh3ZLg)h_Gjfxtly$SY&Kk)OKg$c2mbew`e!bvmxazlOL&UIr zGMIm=TCUHRuif5UxS2sr#mi+Xy*y&|6V6b0ZO&D2y42nSA5(*q7$#?XEh3@J>8t&B zgc^s9PvLTYs)7$e5@Q1of(bk*Gpvd&{vG*Nd8Qh$uW@1Bm3>u@@1Kbc+$UE4omg2f zFLMsA<2zNbJvX^eS1_I9|NH|xB%S^~oLf?*TU3riH4+~+NU`1*bi0EC#Yh(AC{e#I z%+g)%_<(1*4|`-^0pp%iUX{H;&-tYG3g*kU$rV(?S7wK;32T|M{;o?se|Z~X<b z@0X*YwhDA+E(S6LN+9>=}4Zf!r4ZF=pJkX+o^gv$WKT^V;q+ z@fo^Me{azK;76=}d7F6Q48gRm-?e4zs;2s>kRWP{Nf10F3F8!EnS*~LgGXhQ#L2Xc z7Am@=3mL=HL}p$}NQAo25_#XDI#0UY62C6I)1{7tVgOF$v6!WUlS-GpaW20msF~K< zFp1hQ;ka$yY`4r`6-aWDl9)`F7pY+CqdQ`1j*H7v;_9flX`szy3+ zbNKn<8r_V*Uva|G6w&{Z>|rYYETsBhRW4NZ=!uCs+(`$3#6u z#0EZ?emK>#MD)w@82<6>!>CYa0gx}_wQ;HMO%pm#<@HyA6vB#IAPQsA|F*mXQ)i!4 z5i2%vU?k&kbga_KKuH)yHedY8mTh?E$Fo!2d8iv+8P39f-AKuW%<6xYwWCYdv*A_vqg0Yw}gO`orbA z!Q308cF`h~a12%Cqs|3v{G6h(3omnslr3$zZD9z5SNmjB$k+{`k=o=T+0-07Fl#64 zcm%d=9$U|RKcSWLs9Wxwc(lh@Nwu#nxh zhKByYgJP{>NK_m<>6-1?X_bJ~q*PMD%f_FaCV=4xh0wVJ&GGZfHJaz()k{FpD|PeY zMBUS9g9IhUdXc&C+;aAo!EYF0FOC=#B8gG5$i0T;TkSw895}xdC6btz!?yM6S+e-p zPGYsJQ>EYF*dE6zZ}L~}>D_8u#M{?fq>1?djzB?wO^960dTrnP?!xB#3#A{A&Di>O`6)NtqJ4(8Brkj1|r!U*y4L zxgveM3*YVpJcOLcyL&rv;naUvso@dNX;oh@EA8C;3RvU35-U?Ic+a?|+R{(hjv$Ba z2vc6%3E({M_m&lQzYaQ zO_+@`&Rwoyb(_~{2{^n)Oz=@Cj5w2D$Z1`*R>a}hM67EEvYwIRO?7Wn5_e_QqtB_l zEe9Kqvt;9hTOo|VCmdZ-20s~L?4hKt(8CLmfm@x5$F$g2Yu&l6-K~I@?+A;YHai5HBLKDfoIPiB#n&(OwnWn z?l+B%*MR#YPiq5qhyC7x;sYl~ONkE>n^R;1M##5R>T)1}O|l>q4ptV9&;xxNn;N># zssr&A$J|Bjsw3-Cpl*6%z4pwyIgGuTQI=9N=Mcw^MV1?7F_|j&7MtM|nCu`ixyBn< zYO4(<)BY-R$>P}5RszjUB@4UKPP(O8WP#qwD6+L5(Ij$6TxAgDc8Yf)qu{U)=Wj)~ z-;!%AKM3w9CzMuMAtdum?a5DN0_a*kY~72Pn1g*b>4Ua%M1}63JEB14l3jP)xrnE? z*~CZ?XEUNsQkscDNhWwezE13YS@K$`8_Z|Y=r|+My-f~-!>Y+)@qCDdgav+|v%>{&~v0%!RqqsoLXkI@OUOtmRcm`G=J!cA7D2&E_yMjJ*i+q_#;RBP5FS@dx`H5ZH>jW_R>uGp+&y6_`+ zjU-cYtFEbv4ZEfaKW^8;7>Cz0A_{NZyS#3*4(8<_w~vg(bo1VcTFv?;Ne`Fcx^i!}dsV(PyTjA?c5U=}z20zdPyXBM^@{)Y4tD#0>hBGP`v(WR{r=vc zdV^lSH~16i-FIiJo{Vuw|J1v4TgA@(L7p#Px_@p-Gs-3slIwaMBr%RNlv13i3{=OO zDS+h)dwa9Gl$Y8Y{acyM2%&fTKb&-0f9`($+WPXv20sQo>?jWG$i4qgne775)^+d% zfX+u{fKOvGhH(dfJ`ziPbA_fZNMSNX;5kkr^mzw7#}d)eD_a?VJ}x!m-NFt8q;|XA zf+^Ok{SgSRU$9P?;7*u?lMW``ML%d=<0KjZy#abCZ>|>>@oSrVxiv=|st`aEVUItz zzkC7Di}!HLml9{uy16Mwr?8SYck7;f{rbJ^CQ2gH~JgS?-*gL`|sPT!Ts zTUL=yW~V&lGx@%oztasDK$&q=efavd1%Ug;9Z<1m_vG-Dc2p?jSL3}kOd(!hrg8p3 ze9}F91-9gk`L@t=u6pO zsD8?W&d{u; z^Nf&d0a0HVA1wL-2#(BQuE1?K$ZG_7zfi*IG9|*$5FNWgW9cwN<*qp;Ew$Y0uPVzG z30W3My4O-dIFQ}R@M={Z(}-rt3i`NnW=o5Ja+p#-mMRe9T;_j}kZz!#9q^cQJ-U!Ozr_0N;f&|FL zsFtEZ#pLy+i-(vyZe{7oW9E0K&=?C=4xSl3m_%T!$fa^Px4~BB*g8y6kh&E>o|i;H z&190&&Y^)8iB*8*w+g_*{PyhcMPFOnR<2ao)(U9L?iWf7K$T9H-viJAzkx)|p@f4y z(XfG+?-L94V8=stN^Lb-wecJHH6vUPy4sDFb;MBn-{cmF{3d$seN)bsFOE?DZZYb1 zzgvvHTYR?&928We3cLce?SfjpG$^hTYV7|IQQo~0|5YBRJ1qp(*#Cq6!EV9+KiKUL zpX~p~cvji}V)#2MNJT9Il&*GikxNsyG`G}|mPr=J;x94B+ODX0FI@&&3Wzp-B5{PM zEM&#v46>imvc7QO=I#u1T`g`L1Yddcscrrjc!la3>9}nOBT0M;>WkZa=V06EjB9N+ zLC?qScCFg^E&lZN(Ull9Ce}Y7a6#H-Ob$9QvfAy=#?%cYf~pgFZ_L83fV_jcW06!X z${ZGj3y5Q}`Us>VQP*N97!rs<@&A(V*#9K~2-@wo)Tfo|MG3qL-6G_+(=X+*v0j{W zq|%)#QrmEq&6JM{nJV4)VU-e(Str!`Weri%Y#ih8XS7sA`3-P#A@K8NH5BaRs|99~Fn`e#w-yIBx1^qwV-932H|BvxV|NlAS z6r%-_v65Z6=O`qvbEyZw%n6lQ@5e97W!HtcUXfW(m%b))^a^YVSvk)be~nOjMAD_> z56e}WE*~gd1T1}9si)n3M$1!anCSBBG0GdWyCjuezS7aS7IZH31WnBkMd6}6bpIBL z%N-ac&1KXv@dl>hP&nG)n(Bj&^xK^(~3#=(}%@dUqw(1_Hp& zXMhucKOf~^Su;xJ)1!in9s5$-{)PnkmV?tE*fO6>1noG4bZnFDwUf;4uDtTd#LcN2 z92#|TP1l}l+$7)Jz6bdNX*H2-b6)#)2V}FlcmnD%wo}-!qpaR>Nm`bKx{#hPaP}oIuZWetNc8~t&G8S`@e%y{6~MV|Fr-6D36N&Fh-5MRgzS;)yWyIa`##Bs8h=BJ{mto z_s`%^UMX5Su9Amg>u~4%Mut4S1CSVMheuwc+TB$|xnnD+6~0g<{{!c-@8EL4dd@3r zF*uzq;}^(A+b*3-06kTwiE^UR=k{VJdnU{ragjN(Jp$-+Y7Ki|0BhWTdB-)l3YVSZ z4(YAvgfp_bUY>b8KeylyqAsy%A3oaDnk&arLtj0R?oCyJYT+8?;RBk51LMC6Y$C4! z1a0wpnTpryFns`mg@c>MV0#tSqVi-gaTN}wR!%b$0O3zJJBIS($K32$2d9Q$1xN)~ zZ%`Bt6#!~nn;LFVXkps}Q^6ndJX$BOUD0foR5rZXaF~#fro&;*%T*4C{@7$VOuIGI z^dYSq4h^CEXYd+vMCT^Sp*mpcU&Z<#>fopDui>LbXf_ud=d#;Om4C9d>9Aek&P8aV zf7bK23h;40NHp8!*p{oEJRHZTla6?4`-B)x5iLp8^$zF3mT;EBL? z#_yuxu;%kYBODY^Z#WXqW#}H=s(&2kMZdE z?}AxSJou+`4d8?!DpTcbV8OfQu$b6tGtD_-FAoZiK=9>@mCX6q6Y;U*B$4>~b+n=& zhg0zNYoK7BWpR8)VjQYnt-3m?EhYo6%Li4xL#q1ckCbGo_>Gdq$c;MJ#~N4b8B@qr z^Dv2QZK=)jUn<3bEZlZBBfY{}0_%g4?q^lo+w3dHDNP`bL2xGbGHnh*0l1szH*oT@ zR2@mJ4N=m6$=qctX;KK_zup1Q7s`KD>icy?hZpO^V01zW1IbJDVEOdSgz((fP*A}> zUZM$=L?-WCJ!nxsZ=dZOY0T0$CY+PC)v`? z!b}O_-40{3uFA}!4#b;$%=%rSlWQhRp5658S1(DboPM0hHL4q4Fu40sk*DWh@M&cK zvAe|puCf36gOdH%+dbHOvi~0AvG$)yZW=lnN!7SBYyGKopPN~KC3j%^5yW`K@x4az zT~)jLuz=w=lNM&Gk5$f+^;?S-V|u z0sx$-bnbe0>Z7?I^j6xz-Dr6X4Y9GIuXN$4iCeyQsgOqxZz57%2>!yo0IyLfenEMC zaZg5h_d5;thb`~ACVg3xvxYGzS_(^;Cs*zt=c$wbCXLsfoxcs_|8Q?ul>hs?y(jtq z7>||z^;zFGcm5h!)vjOjwaW2pzO8Zl`o)?!ef=7~%Xed+F90D-;TXr5W2B`cjG{bA z^y%^C)#2-RC#S6q{KJ-Ne@ySNWuW`=4ZHMsc+ap-tT~dEp1SxyH@)g32mhI-SB3sLvSC%=Uq$lO z`;Gdm(sU0T^OuunWyD`YW4vzun}oyC{!wmvkll8w}Md8? z*P`B~$HOn`*F;@eWE#g@DMi&0I{B5n;@Qec&mIU$QB9^ZrkI9QiWRDd=|>HfKjqio z%NvjGAu_8$EY`{){)4zc{;i+&`ri)cL-~LD2m8CF_@Cj^`tMPmI{%M*@6;pve@xRG zEg!4>KNUAq-LLnv!@x1&w|M0ZCCJL9MP)>-<;9Q58hT)q0JK?43hU_@GY-h4a$VhmNhE8+iql0xhAQXt1UK4TuwuD-$xqBV zrUzQ_>*gPE!EZaf@p_-#J+YJNF1zn!PEWe#n|K<@{|CpNp$^?_Ym-d%VG}v7p`` zbHiA$(0%O{YbreaHgU}+gJ}O6$MMAt=Hbk5?aj&g@h^vO-@2^@?@t4#$ocyZm&aFq zuSEY~(CH65y-u&&9|SGn-;<~AD^?-3WK3@zliys=k4LdydB;!SszI${zBM0re>31 z2T?Z03zQ(n&L|nnhP)R|;~m;-T6vggibnR|!{-0!4F{$D|GoXE`@bLMd6@hk#Z_bb zwh1{Jh@0oGxY;1G`*~et_s6r-tHTeMKb5ZIlgg!u;B6*!?OjQ~=W2M>{I~AtJ9+@u z&i{jQ{O|B7|HGp^b^gC!%-G+H2T+TQwQ|GR0IBxwh5d9;^TJnRO2ypvtL}`+)4{Dld@zxW*4u zDA&XjRH(9vFKB=GqTmfuZ|>|5$`>UU$7hG{INWofH%bs+#_&%lw@w@Cb^t5=mDs5azd-wceV0M& z;~*Y7_RGz*_iy9T+3YFVfAVgJ?$u9(;(rR=9iNftFylmCarYqie+|m{Kl;1-Px(I{ z<$N&W6I73oWN$oqcOaW370chC*5P8c71AGQKfE0m{BFItH${0?j zdci0-4a9g%AziLCBGvsOvlO})hCEki!Z*5iKCdj^ZhU3Et~*PishY!azB?B^n!8_8 zSO^m|_t{rph~l2%_ip?&fSfC2bZf6Hj>X$w+&k1g({9VZGqP}#&$hkY(YyBETh$s$ zyz;Mo5ArW7U^s%S=nFKQgp+A^G0=X&8WB`;GrK`RHg%Vjyu$JnHDzm;lIQG3h=+5U zvhG4{?O7x4RC2@ zC)DZxyJ!8$pLP1bU(EmBAMQQf|MNJ{M*1Jd=Iq@&nAYojp~rA?JEdPp9&``d+akQ7 z4)@P5-dU5Ek3)U~`rM~YS*!csZ>QUvW^pPsX2Gf?26IHGD8DjWX>Ug#ML6W!mCk&3 zzt4F6x3@hzL9Msa7;NRMuI=&$VL?sQA_tR%a4D6WVd#{vM$;*fYuXL*RrIzv8(hWf zysU(2K>85t)}Bw{yMO4XPXC*$MepJG-x~ej@9zzJrSpGJ`JW!=*;xOd=(}PcMElz- zMej-XYj_)Ke)l@uJL~=8-MZg^)_18=*7@$&1{&W%@Oet{9Ma{5zT$WE3QV0HaC7r- zrINz0wEs1r?i-n#u1;E?ex8U=wYVLGD7;XWDyP%6)RLw-| zCsO4&c@t{>)?1JlTjA(*5 zVj+!!+-X?cUvG$xMdhvy=W8T?y;K;+dEE#Whh<(lBJ&LgW8Q2W=BtKaeh2E;w_i*6 z4Vo*{ydY33hF?m{x%a|KtabFN=GZbUOA9e7t0vKk23b{O+ok>%eGk0ce96VQva;2Z*iQk!A8pEUJC^B1zYg^m4|pLR7i(I)^ED z-j0yDNE?9CO=kts>He>z$%7wyrQTtNvAb$Ch%hofBCirupfQ!#nU`v<*FoxkZN}`eX zay=628UyTZSDGi+e1_1ax&X-A3`%bSNV54DQB^&^Cco4V&uS`Qbh^HMmNVAcrivu1 zn}YwszV15zuMR_0;n8>W01rm(LJ5b%$U3dX=j; zgo%3?5NKDgiu+&h;njSVO2GH#=k>UCLvOEF_kMi7Wstdi`CUD~WjdApisdrR_kGox z$zvXGJ*HvfWZJoYA(sJ*e$CRVjK;UR!1`nD1Dj<^N}>xCqmUCiDlZ|NuZ2$5mQZEn z1p*3}S}fYWTR_*ILmtlFHVxeCFx~juia5Suox{oNpq__CqJc5%s@Hh_B?u82MsJ7tc*qQBR#< zsE6dXgFc5S^=wP^rfSK&qEg$tfUD9t^+#*{8y{ii{8Jh_{9+^!LgJyq+gAUYs{C#Ne*ZYlnMdXA2_hf zq+f@gONbJV&c~*Ry6`r~_7<$;3j0P(<5VcKOX;J}C?(HO!W^;{^cJXCHnwXEc?&)> zXmz+Y<)*s&ci^Ly6xxV`RzkXO-YM~tYdGjlO7_BxNhP7rxL&arcFI*>Uwd(Rp zwx!`!(q7`_lm2?rUr+k0vGjS;Ur+k$kF38QQ+<8;T~a{R`G3UJM>g@>^ zTCFaYL(6^2m26i$XH@M;HqE(oBGk4`5r;SdRZiP_r>oONU0;(mn4x&yVY99|^V!y0 z9V2j!P}-_c<&Wn-ZtgIyaB zog*0iLNQ10lMn?mDWkJ-@8#qG^0Fi3gv2mTs7znwMC&m8Pp^TOFJJzMgPK4lTPa1M z`BdG1_YhWTY^ugU?e*O$R+ZQo zm`q4d*FJnZPo4co$MD_^z;*WD{$9!c+uM7x{~qPp$o>;d@gM-CKwH15UIgH8BiD<- zWWxXgNtJtv8?cb_rRnb)E?|jKwh!&6+Z_s*;ss`0W)zYpixUu_kBi3{H^T+BVIkk# z*f+zJk{Ia}M=-@Yy=mmKBv>k{*oX3-zP&aJcm?s(;c_pHnR)7#rG zp8xOlpYDHrlxJiApT6AhK^%VWbrJVq%Q>ennp<5+KacWk ztp82Uj0Z9RB=D8He(sULyX^QCj}~sU+t>Qy96Yg{Ts2zXih$b*r&K3t1Ij?jn z`5HMT{iG4j2hgmwle1t=$qF{B!K*;0*r{mf;J@>buPRk5UJ{(gH^ zh1Eb+9@QmiFRKsa93?(5|B-6 zO~3NrMNVik0``ZE5&e=MHxT-3$H|7_SxVj@idQ;!nTFR^nH6kOgN~coKy8@%Sr0n- zOZT<__pUClHET@xA7wkMBe!d zWQ*BUDj|4nl{mUwj{;u#X)y|c|$(h?7_gym+bCb2!$f#XY94C>= zfz@WtFUAJj*<3-Cb zbl7MGl>zxg`@LoqKYqK);(W<=W0q>`%{Vtbsj;Nt+GjLg11_dLWd5@ zf>Ln|ZV0`O35?`b)f-Z%V=Bv|AA!3mWG|ukY}Y6WM|1*1#FWP=qY{V=Toc${zhIq3 zzY`|76DHxLgGtw1A}o9U4}udA?111Fuy0M2Thb%=9go8PTRyAgzn3Tb4hmqM{NLR@ zD9ZnX-KYGIkMgLA9LMAa{G5%EHopKTV2l7!)>?#;&Z>!AnNR&Xhvw=7<1*+Rxs{xz zI|cHcls}b%ALsdbnW=(c{LJa#G%(}Rf+*cvZEOauPsR!SM4n~CQ5#d zNV~XAe5(Zf+p9^bjcl4#-G}m|JvMk&$$#y7y>kfII{ClXFXsOp?(aUue?Q9O+W$K6 zWnNI9G?1VLQi~9m}{3WeyWKMNxaa^bea{7Dw)Rqm`?onl;hAt%z2d z{x+M^-FT)nwCzfAT0c)MFF6jsa&??A4wI^bKgG`d-m~%XpH=c-k@msw|K9Hnc8l_V z_u$F@^C*v;&Bvcpm_*WWmI8uIl=EJ&!Kz8@&OOH=t|Zy1>+V&TdwI5@@q>RXB%$zp z%N3wrfh`-#Q1Q7SPF<(-c5M!>d{rVPz7!3%6`LsDZKk5>ZSb2gNs|x^cjcdWevwTk z_%jIFWxs}$qpc&kV*;SXV3Ni068xIM7*DW}sA($4q|^EZDd@617j1~~VPK3xm@xzx znIpM|Q-V*8yy$+{hyirpDC5O4Ix%sp{j30#@$ zN<|8sXF9l^`&5jLsa~vC+g`h52;{ff+!C0L$!Pm=0hR+)JH8GrCdO2lRF^3=;8)7; zdy^MK`Y@g+B}gmM>e-p7sx_OBK+i{q(S=~tMxkJG$?SUOs8Z6BSuZ8EwOjBQIDK_Q zkN!KiIw?wH7$Ok-X8?k$U~@rZI#v|%g&kc^L~B~QNC~PxrJVrK7a8etLp(nG$#o|HE`wE3$!s<#vwa zOn!}$21@YPD9LARE)hCHA~c;556Bxg@N&56W;#0l;v-6^RrB%O}BDY-#t~vkN z?-lcZ4SKsz{=dh0#KiCZ8C=c~m_wWZJKUukz8pRF=dKkR75f9ZP!$l53_vAl+F-pi zrxd}3=O)c!MIHGu_ayn1&ayamP7>G+aPh5^+K-?*UO}_~O?-g<;pG6m#z}O-geIdn znFhIY&btM*CL|ryW_#Qq8Rr)_YxzeT7);?Io$7Su`Ylv1RLl~c+LH-hk7Xg>_P!OEb-oI}U(|WYIIiAGz8K#xT7_EKEBa>ZL{<%R-6lPSNQ{w0|HwT`)m$!~s zt7tFA6BI5(bD^mHd7o`?MCUkB>8R$2F)_s|L={an?|NAS^25dP`PKbHy?==B4ljP*5T>lN z7UcSh|iYW4Llq}xpE7VF3;gBMJoJ*m$&M2r8kgDevYs8u{amL||y}wQ41Uk0qX4pvc z&KA%ESCQ*pPi7$2!V^4w2UD*J_ibG(Zkg2$tyzY6r_ifn@$%)mEUFI0aEj+E&c;** z_2q!nMF8(embmcr{B}Ru^YwW{b;G#^bxOvl8h4wUwfpB50Phf;A|@Rgmo!7ChZo@D z=xwjj4$TOK z=Re}9NJU4j5$e%+xp=TDU*MTgJ4#fd&^nJ+hrpBs3arxb?h3{fm4 z3`rtc$tm$;sX)#25;ELwyfwA{DM}$lLEXg$Hs_FX_nD}J6Lyj?4&&H!>2bt(2ip(s zC;c`@PbVYN)^GXq=#_E-mEBeX$z-+McXyn~1I`;J2e6v4q zsC(VD;S5j-a;iOF<%kx~SsBa$#qAx_j1 zy7uF}A`l~*Cvb6o-nNk^cjNE$H1PjXe#b+A>&|~4?3eO??C(CE|9g~2Zi}4BRG`-3 zXO6dc4!>sZKDmM99L`cnMvZE2*KE#JUBw~HMU#lsKP*(8)>P*+U7@jMNl#gq3M&|| zz&vC8Q0rv%PStL2x;?DUilEP;c9)_gLR8Y$#55@2mbxYdE3@uZ-C5a-=Qd?)kwAW6 zt#p{_J;UPi%*_eCRSKBQKRO#y{^^SM8C3_L7>I~8npl=f;)oU_-J=PiPD<(y*s>+S zcWlS`1k`~Hb*!wid6Wm>YFoypQLavK?c~Kabn=r$fARBL*QK|5ZpT zKLf0IGbdTX&k&tsc^v`+{~%+P0~Rwtv!pdf6GF}LNbOBh9?qtE#JD2uEkjcof#}55 ztcX*zmBbq24Dy+ZHL%~$K3=2c2&6H@i5S(& zR?pwRzq~p-ytw$~{rT&MXkLG7Q$lz}4|U!9$t{&-sg<~rGl?+;qdjllhdmY7suzPhwoOfk_9c) zh4!Y_g1hTvucfy5utF4i#{k)#BTJ5ws4s%gzktRBB^bL;lDJ3t0ktZLV z!}v}Wea0U%Sv&yS&gMvS9Hn`E83J#cvRHu#G$LK8b`3Pbyufe3LFaun?Vbq#@N0CM?3MS}nS>?+Y39_SB z6Y31#ADmy#4F`z6sTIrDuaXt?lE2VlVX`tWO8-F^#6xETR6ORPH=j4Cx|*pRm6}2x z&Q21-@nl(KC7gs5K{+N^mrw!KPB*szTe6VHpnU@-tfR|y=J4}X#t^-_5%3XvwLjP! zym$eA`%S|}loBe2mOJ2sZNX#fK$>iV?A3mMuohxdIuORE6tQ39^6g8?GdUIWPE5eU zEgOE0q#y_692v?Ij$=Ej>GTRSieR(^?GNty&p{&p)6vDCJyTaeDO?;zi3ngZLMa%u z%!>py?0Sv;Tf|yXIU09pmK-S^y!C&9u-yJH*bcyN%E$%nw#4oE7uRn73fgVy6dWA% z`UlQOW8R7azh)Tmzf^STFSqDZ^`f%ar}>io8pCLg6VT4Y5)8Cw!SgTfn)7P_+Ntx- zTM>Q@r0EL&&qDl<|F{pJj6-1Hru)#)`etYuq_|*i)4E@C=Hwd1KFF}sG?HENYB?&{Xo^Ls3AOIZC5y?1cGq4K= z4t-T6u^0?vTzC(}{4hAml|Z>bn)mqqc|`%c5>d~#{Tolf-$3x(ARK^KuRw72{`AKH z{9Op4^2fLD4_}|0{s_(mx&SkI@vOO*DS{jd#fB3wM{`1#0r-1CQ36Fz?V>S{nud8( zrBAB4bNM|IY6>Nhl8Bh+fegZaWgJo|Ed9hITWs6YW1dEAjDRqBRTwrH~|vu;oa?f`+81S}$^y1}<-L62mYd*-e z_1B;)WocK?(;East_u=Vu$tqlhoLwS{!qAFU+(p{jeI_DzIZt>#B==qO{?YrUZxvLEYd{5Ez_aA@_P!td3u`d z|B~??vw*LO|Jmye_e%G_?e9MA|31c};(z2A>+7H~NkB}dIBdRKtIl5Aeb+Z;M-v zySurq3Y8+S#MdBjwpe>!K(=iKeElk!$=hnxFvE;-GB0L+R^Q|udcT?d+)|`yF&?I% zVvA$$jkFu&RYXbZRKI{NBCoB_O9h7?F5d^G!fr3*NWAh|&x3rbS}A10UIlR_ww?`M zZFV^w%kT5IO_Z+d_rHh_)o2DY&eI z@#G*Rvb7Lui7orU!}NlL*QsSBI*ebV7%uJEM~8!i0O?c|0;@;VfESCZjH1gKMQldm zs0_PUq9I`INvcKJ|K1R2>K_3u!t_2@Lu?qnTK(tmZL>T*_xG%||J{Z9Emr|+?EgW3 zw~+s1(C-~Q#eY7^BjeLQs0K!eWlP(|0|n?;5Ey4tkYDH$q>C`n4Y~IKRJ8O;7c)?5t|M`x7*+Wk z!V1vkyZg)DBn8fx=UWMKK?Ln!TLpXiE-<-k>+aY}xZZgIMKL#LUZDq`1I%@g74jn#k1Cs*Ph-B$AU!Xl3UN~f71fQ$v>kRyxTp6dL^P441(Ua~j*4t&Op<76tuyf0Yg73?=~$v{fcL~f4*zc`-Q6E+NS zlXtR&>8n*uuDOG)`)BZ;&k()A3;~6PyebfZvyVsW=w6}OVh@w5+v$LxVPQ+Um+C4> z1E%b-bNaVcxHhffz|=OmT~5WE6c3!1JV*D0Q^82BYraV438Bivyb7naHL48OJZY?{ z%s=L)iSp@&;!iI}oNe`a;pn1qq86qa2+%y`%h#Ct)6Kl~4r=+9p9^Y^BAk`n$@x(! z3ocM4g9`h4bqfst6TQWATs-$%*@!J%)sFmW%2s99ws7hXGHHquTAo9Ssy1bCuw7R~ zg~SKj9^KV#%~sOcoa~mZodWW_FH&a#U7;;kbb|K{Q+ti)0BT#-nY*1g&p~PNwzAXq zkg)o#xHS(Ea3EK1DJasYTI%o9b#;AnxXeFV<-8-2t>?U|TADNhD`;(_Amopc!<;J* z#trN3_mvYiUo^`K=BH{mH7kcao4;KiYknyxT>E)tKTRp=+SeroI+k#?lw04SWWsb` zk_j_|P8Wz4I-*|IbVGmC7*voUttUZhyT2Y;wQ=SNOJ91pRg?vGk)m)#(v_-2@Rj!` zmXJ{wC{~zH&0NP%UgU4=sa*d>C`E#4LX24VDi3HpN&X>IC2hDETpRz0B z)e6#OI5&V6Ylib8JXQzVs>q03gUir}!uii2FBpx_AY(d=M7N=mpv8n-XDJ94{Qv|i zA9YZ5*{ai)o5f!PmP<#mChbI!Ll+Z!#xU3hzk%^^FG8Uek>14)IV>?4GJoM|HV6B? zf<(=;9!P5-KP%!r!FP*xjz!>n@sE<&AQM9QPyX4H74Swc`h(qIB|NcEufk8p5{$at zGCUc-T0H7v;AJ!h1$a56(RYjgu7LO5LZDc|Nco@k+>4>U-}=hB&M|0(<3FNtSnhKm zUXQ|Ab)Pkk#Xh&&?G{Y2z8ic57X8*WPNES|EZUkQ4h5?Tqefm$?u6G?#UsfgLDg*# zx$W%CrmtUH26_c6tKynqlBrP=`uCRD!^|V#F7h?suBapU(5)v=A{pMSsfUy42oxS! zPw-%Mos7n%Dzc8?v+62x7^|wtVXvyw@|TfiW>OO(|9xg;1=z~TE5U7BCR+inBajay z83P~9EkpNP0TXqD`vN8g(*x#=?yUhj7~Tz_lt4w=X+GK%SV-n+jJPL!w={!o3QO=< z88OXyIj|}tye-qYuC@R4VYXWue+~Tq`-A=B{{O+?$^ZW-PeuNx-`DyxM<>gsU*j{d z8bog8tv;Fg*c#Q#$D{4Ll%fSDnM#$|(C`dgK-PGzv}m7GLb(50^~m^_9So{WSfHZ= z@?zSYHTi?AEejlD)&XVPZvxCqMpOZ@*r>ERHp9__+KhjdrIrxJHpBA& z&saPs5qhN$Qaw7>1zXlbU5Yb_X}wHa3AYaB=HQe~>p_yQ*srm6l*&a*nFsENN}{c{ zJjq^#g!=FZ2x#C{DCkcQh=lTWzfa+>8LBY`H6%Np&N2ZM)(K#RO<4qUu7!jJiaG5&vjok=PGB_6r*u!p?tuJi?`_n#c$)ZsqCm^z`F|tVjQ_jS(f<7BlRTfF z|0l}<-N*kEAgcYpa2ocHqoG(f+X|0hUzApcJS+v)!qNO!qx6*Ly$wDSLK zG(MjHSH7yT6k9cN0?RI7145Y}$ZH$@9u(6s z?LaXN)8B_;n=hynT{ROP2761#R>}VE{x|2KE#M~3nt+gj>guc+VD9Iv$hdFHB{?L9MkGx^Q z0;w-JU2lg}wr%8n^&?W+R#G57Z_2B-JDc{pedF_Y;AN*1Rx8jS##3wp(dPLYonAdv z9Cvtf0NCLM?`6JIv)pZwdeWS z3IEP~arIEm+#i)Si=+LhQf%*Y{~?|R{y)F(p!@FcPXFKYoT<70I~q>+{{K@vpPm0N zt_!(`>(2pHdi|xFNS@l^*Djd6kI$cj+2QsF^9$~@p62(?_MD#4AN;@iiKT}L4ivA< ztZ?9qAM9|l%h0;G)fFh~+~pnqE{CR@1mcH@H=Px%0j-;N*Z|pp?euUM4<#>0C!-7c z?ptR3u2aiGd>C)77FYxSh_{zuI(kK-Binf~8riMkH}zfagTv;r>>AKch-`jJ3uJp! z@`0ZQ_FqcE_2{IRE7E1%=lxiD{VjXDypY8{qpOE zMSTJiCY@}*3{Gz4v7hR;cM7<2Qz>hvS#kQO(()=?hg@OC72X%ExF*o5%{Yy=N<*%U zG;h+uk~7N%Fj(SFE!~bQUr(JQtqzkI*Kc>XUKk9~c?H`=<9Vk-=CrgkUc_Q*r0xyq zO-+|d40|2_giodZ-%uPL{|pxkexbrWZ-3gI|1otY=KW8ev#3N7#3VPq1z3s98{<9}t%EJ#=@QCKxW!HZ3Tqve&q zLcu1)(eh#$k?iM}ACbS|b;Az;=*w!XDDsi2u(yWPU%mVoCrI1|ewx+a?1LL5i#TDxzlYK)fzOVt9C+^nxp0Y_1g$yhC`oqNl(u2vTD- zS1<|gJDLo}qmQOQ!dj^kd(8)vLAc`gn~~%iC8}m(|Bp1HHDh?c;mbyjt^FQT%WT;^ z);Q`HL&$RavN|b8t5^MOEJp?!Os$xrDqqPbPD{X|Q30@a_nKuKxMYk;pvK~u{X3$# z)7Zo$Fyy39)-j1tM6+>0A87)=XLI_)9m2c| zhNGp5d(dTBP4w{2p}io#=D2@yfgZx~o`q9oJmr6=$FAO%F#Y?f1q|E~w0i)$Tv{Li<9P%UE)($#>H0bL>S zHRvrvGKV48iuKF7h$K^R35rRIDM_}f4DcXBJjh?>4Jce1U$I}bTUphY`E?(sTrn7! zIG|cTfpuZtcVLq;=u58RA2SPeQCS9CU1~2%ip}f;vO>XdTu#7+U^2xivs<+ z9{!0^=OC}lyn^XJ&^7~=w=H8WA}xKXdAt<^nZv0WNbRG?97nknUJ(BVCE$XO>RYtL zDNVL=GYN3j3!VokPLK~N3QoZ$MW8fJ35o)gTyDZpG)w`GQi@=3SU(}+yoIsKGDT@! zXzr2y-S9A9hUz2ncf&PVAnXCV5-}?PQZ|?}rULT~%(T99Vq=(b+ z^-qodm!|il>wjlFGUNY~kvrMz|EG9b=>LCYt^r6Xi~{CUi#bv^#pNtgEwoDhb-U=5 zqC)yilyK=uA`qZBBwKOmwbF6AtH{$8(p$gyMFVOJ?&eN{Gsv%P^#9(YY=3Ijzr4M@ zkE3OR(t8Mk9qZq9r)K>xXTSgVL=Rv8nhxd$DOpH;%qIYl699;7u^-Nklmo{|Pu&284Fy~GUjKQ5G=xfPKV@}jf+p@jhE{A!8wrK?m zpTGhqDXjor1n^Y$%>HTjG?4$v9QyaN0(Z)PXJqDojJ32w<+T}s-^;7;C&?FuE;GStCQ-yg)Y+de*698xgdNm%m4G9 z2J$~e$u0KLBijFF{D0^SC*!^Re~QN@|K*^!Q2}b6)M$Y#@yTvQpwMf&K>cK@1BJG! zM#yM*B&DE{UP4)?8dN)7I~ZO1`zeTwgT0RUb3M)F|C#TTO+-7WfnD-{SgQZ$PTYO` z=SiL&@?Q>m2Q>iYblI&9QzQT7wD~zE3BA`g;4b;^jm-Klj79;@>Eb%Rh zz*WH^7_{>U_zbGi1effCo${a4#H9YMszQ~Ng(Cl|v4|IlTMKrP*5`odA&QEy4)y%L z1;inEuF_225FjXq2?B~h*2T*5|DWDp(*NoGR}ZL;Gwu{u*L=58E~?Lp4A&_V-a=O& zyhDF?r6CC4tBMDH>f}Eq30&SI?xUVv@_%IB|LaaB?mqtWBv1SNPd!!ZN=y-O9>Ua? zcBQ6~&%ViXtz_v46#1w+4OII;O9lnIQmPDeeZ3Zh22y>;DK931KS#fSUcYDm{IDRe zva9m6FW&H)5C7BqpMqpo8R1;qG9*{$XRlxO|M~4z4KmOa+h5WiklA^~T)hGQc)o%O zJ(mXp%%&!VEzmXS&_cSp?0_a@Y9JnqXCuStKT=!N$bTA#($Ko62G}A09VYCJ{a<(L z?B)McJgww^6rdypP~_YKx`Gt=B%%;UdG_t#;9Uxr=+vSO@<}C&dG+#Ln{dhLwaY&OXz z*Kk>L{O2tpbjKR61gM*P{P?GN_Tv*s&=P(87DoZ-^^^bkpWy#|`6*q&;dpY|<6`B< zv$t<9-n=>mZ*$&2fT%d1^8D9dfqv-Zx8F|LFYKG&emgt@F+Xg{a7zJ+DZnX6X+ol9 zxCIGf}qBKrVkB(4EIW z`!I%c9NxDE)DHRYji#;{|8@8Ezn|ve@*i#}Swo6_7=~M}2+q$ge}41w`sZ&h-n{tv z>gC(_7w0c`C4NhbOP@4_SnmRVM8P?X&jNm!ke{*2-};-BlC||U2X1{EY?<)$t?w1; z7YT{$a9iFhQB$#fMUs_mUFbFIhf87BiXd!M zWL<7!zc3%ZZrrW~K7-fdB&fw$$zpbGSAuUZWz>BE3w14J87L#6$r8Dj2OCen26CfA zXN!lB)HeePlO>`Y=^=OyZg3PZ=LSd2SE~A^5bgpgTHm7NoUCJ*Akh2U*T8j#Bj%Z9 zW>X~;4NlJW*MKG)WEqe`1S|s@*Agz@cBeV+Ozo~e4zyh-1<@vyq)_OYQngnN_4q5` zll7d5S=L#138o0ZFa-KqV-}=3Ld}J<#GK1PpF}>SMcG@BEC!VY7)qL%K=|)P*d~nEf^9rKQ!eV)_mUryn1&5QZ_B{ z0{f7Asm(0J!ma_ISLOZdEHa>xP|)kVq>lcJR==7ubCN(Q?N-< z&`{u;Hdl_wsKI74(lp9SzJzL{QPZ`dnpY z?fRD<>V0g#FB+`>(WDgr^PK(u&yzg0_Fr}g?BQ%bl@hwk?kfdHcG!GZ5?-x^_L{)p z8yLdKM~Thy`wz2l>ev4!jzhFY5ryHaglyt&y8t`Z|8QvD|1fk%&Tzl}pW+egKaSb- zR^@-o!!BzsC30;CU@3lXxaLdndU-DJ@mC;)x5$Dt4xx`$Bn(gjZefC%ol=Z-@t~A! zpd#<%$%z@nUKYR5qIBr?mF?X!-jv@ds$;$hj*>o#C`y>kq;Vk8;i!@WodL~)iAiu} z7(NxfQq9=cU7;93M>!P|^vi}bwakX10!Xb@XvC^3%(O%8=jt55!^(kDqYPXJ3>`2W zJs>yCfR*mx$@`2Owu}9qqN2- zE>Aent6K6J9sBhB&*iDr{|}S?xjX;UbIbW(d;kAQ9xh!0f-U>#?0hv};N zb<>={tnC2ijR$Ok6;cE%aj07g_%RWSRH#N^+YG3|GZ06?wc{YAMX$AHxVXu{JFuRZ zI;=I`Ro)2nG-w68qDatT8(X5)`WN-B+bn(l?6m*K#`%xoaDV>eiJr>!pO3S-^krT3 z)~lWuO0Qe*0&vTv9_Dn`uW}7~y9FM?dF}cZ6j)H%S2gIVQumdsIE3?7i})T-gY_?~ zPIpxPP0oLr=l_SEH{RF(dXh(5|JCCxBtZFHLm8k-mRr=mmiCOJ0DU|HUt)^ZRi)n5 z=e*22MeD4_i+b^8naGkn(eW`DRmOrLMJ!NDazqy+90Xm*;<6$GQHkK96~WutuvXE> z`paq>XebWzF4yV&)-QA`TwK+{?C&<73<$z`EA#{>Ez*PS-&#tHe4DXgJ*ae^2sg>)$@kLL5}T?{Ma)E(E+oCfJSx+3bUA zns*xtO@hcZuv?oArh8bTzRE|eA;4})*c?Rz*L`e?{qx6p+R6WJKH%>7pDF*nef^Io zdaC8W=>wKtb&&dv~t0CUsFVx^x_=eS3Tlt4Y1bcbDf2y9A^1o9IV3+(a z*Z&_n?tcIGNgj**&m{jP`%%c>4kF(S1;i-n6bdj&`@F*eip#oiKr_Cz!xB4K7GHkm zOy{$p90SoceFm&94pJx}UetR}wR!$0c$&z65_I4D|Ds9$Pig;uIGRlM^8YCwUH+HG zSsMR^-52$t7hxJ z``+&tjp~1x>)-XJd;kAQp5pp1`Tgpr7OUQp>X(6f*c`ti*oF(eX;xnmc*7*!Dp#DN z{4A}KM(aPJ_t^byu>Vt9|IWnQ>;ETt3hQ5vvs(K}{rSGax=(29y`18O&btD848v~U zaVYT&*=G`1&Q}@Ju!yR;M>%ZZT@81+SHm{`Rn`HThc#>zdo;?&3Q(npV+P+IW#r!& zl8xVaS07v42O2-$r-A&J>-5p`e_Y2k^Z#7e-RJ*3$)m}CZJdP$Py)JLWv2?uuaW4s zYY2<%?kc*UI4)Ktx0{?T{W48%%T}rylX`ibd7tw0g3L~n+t1Pz-9Nv>Qd7x2=P3D$ySv97=R0= z9>NfatJQcdB7VP6xaGGOWryRxGbivtwMsv`CGNAoE-fMKZXk>jtxD-@vw zQY4FzKwh&fW@JSER@E!{>R8tm<%_5!bWxUMpzX!z2oki0nBR6K?z?Ub7RGV7RdD|R z0@l9%86yuP0d}nak>icb`ajNapa1WZev3(A$_2g(n=E9p zCJIYgTqen(p^p?L5ezRPijoENi)*;@N?{*{Xi#p))*bi+B4*}A6gb7jEvp>+BtU&; z7ctot1bq@QvoArvY;eNsy;avLf?8pgY4c?|C&lnk;K42N}g=NMAtCx|u%FFtPwJJ;^J^q~UJOX=il zww@C1tU%u0gbiFR2<@>-k_ ztx1%kCMfey?}IU=kfOyVOX+Vx_=(81oK<<}HhNtG2*cQI5F{z4q%{i~!2nhLWWUqQoSnOvU{Y zf*7Xh9Z7;zcr7R>nd6lvmk8}(zQe3w4RG|o$fqQ!N1mVnr}xLp!8Am<)(^3Nvm%=m-5+xft0D4~gvtHUGAJg(|1bl{s{grYeUkW}JDN^Q z@xQ(Pf0~Ey|FSXXaeRIo0VQIWRxOPBB%p#K<{p~W2iaX3FpHryZ(dF^t`9cUWGgns zUY*2B+``KNp6_#ujW+yvJ<;$jC?kp3A)8>^uNO?CCTq;5(ldmg7p< zhhXvFZP8 zyXyfAfF1hZn@lIB{vS{F_rE;J(?$PhbK}7cfZ~Si4htarcy9viO@JLHK!V~B`!Kb) z6z}!)YnnicmRoV5nCQpeTO?+9w2EWIINh@<7ZI1sP3-EjL3 zd)A!qud`LEtx&Puo}oCbm{#hYP?8J?@1-w`>{RG#z5jH=jU)rv2k4hNPM?zm4AKox zb>Bqr7UB@j!#p9NfZ(*ke$X1__}B2`yZm=C_%)_N5u%_*hjqn%X#l0-L_pr#dt-EO zjD9}GsKx%%(tz%70Pf2F9lPfK|75z4|3A&s!T!6FbK?;rK!xlx`PG-V+0C5lSd)5_ zpb)_ny^&|W25-gRgE#VYR=okK@v*lc_ZH++S&#+8=RRiS577%0qDM3%^@ZNRj@)o` zS1qi`W~SjTb8`^Ggkpa0Xq~Z`ePtcNdZ15i#mP;!H|>Q{z5UnNMyoIs_h#EY%r*e3 z(#KA-xn-P%z7^-CcVBx8K)*D|ni5ky%LC8y2sC3oV^`-60O=m}+v!p}|&;vh&{5l1Z^-!!U$cLe~49OgZJ@92IKm89M8!p-ZGEtmg`zel{ zJof$n?r>=4|4g0n{`}vQJly^lhw)PFeA4$Y&TRYa{M39azTn4zYt8ub$))OZyi7_3 zIZEzyR3F!p(vdYd;#Xw~z`BUce=M39`PbPQp?*P0GJb4Nqma z*@_%65Lt1OFFWU3>}`_T$FBcnrHD&jDdJvMz%KvKbIttE>2$o;|4;Ii{J+AmKY$Nt z6db8D1`3}xH3*9IYGy(4g<%{NC%45!D14+D3Ps3W+{GfNb&g{N4UJvMD*7MEnJl2{ zRibWeEf_Oq?`l5gW0(K&t^Y*vzu~YP|C{dfznnk{!V$XoP^8w=e0M)7F+}Nbtc}QqhG-DY|EIF!{3X_WBi9h>B{kDA8|@?wB-Do z(o4TyRZ|U&xPGM|FMZ!wjF&N)LR`22)s9{pDPG+AF5zt~!9~{=N{jXPLj1FQ?D9XE z!v|6TyXAkm{;#{2|4;Hf>i&^7Fq9yPi*4i#gBUX`-4p?_#|3 zh8CMW4+iGgx6OC#e77j-Ar^UvIkK z|9_IFB>%7Yus?wCSE1W}@#H~%kqvwOGP*5>alg!d&qcM6Kmnw@LT_u)mBo+^(2XUS z5rqD=bc=Ucuc;c`4ON@?ym<8y|HV*ma!pzkoOr9LI0>YSl9SV*E;Oa1YwXMvXnZ7H zWeoWJM*B~$vFhZ%sPgsb`~U9Hy#LdkjQ9D!PxDmBe{sRsLnr`Q8okZ|kRP>>l!Cm9 zdqhjJQp{hgu;i}`(lWn~w5_;QZFjl_1+?8f1I1WV=b*^xqsd%3*hO?Lq^@fJA0c)> zn`fu|m$z};M-A-U{~b@v`=8z6e*gDLo|62R!+s`){o&L=cB@MRZJ?01(+R3oSv9CP z)fz&+wJHi&))5NeJyeAPv0GzQWez`{vUudI<0ALH9AR5ckwe%kjC(v%{ts3tT;pX# z67=vmcF2EcT)O{bICb{*U!UZ81}-6`D2Y-gpTrCRcPkWu`38ppj+P*X{taBBba3zt z@Jb=+CKgx7rz;eOU>TCRI0BEO3TAVvuYafAj3gBMpnUr~~vgJG*<>A_cn^e#U5YA}a42VV{7 zn*Ez3czN*E|99{VyoU)Un-pBUc$ppy;)E~>cQC*Kg2&?Xg#7Qp;5PM1fR6tN;zq9j z^Y6~yyn6ZihgXAj@ZdOV*T3tGUC%Mszc-%l*Z)&I&%pVL8B-xy{%xN8{ovr>Z{j4= z*F7;c`m=#Ma7Vqr|Lqw5{ovWNXW*y8i+?>|Q5vVG$Hz-dSDQIg*2gs2AZ{V1$Gql_ zPu4L^(6Qdq8w>^oNQdD0&>0T)c^Oqr*JC!$$2p%tHClM)|Na<*q^bu#$2)c4tALZqm6} z!zH(yWo`Z~T!(V3nh}$a)v#u)TpP!3XO10%W4DfDx{V3IQFeb&f?^`sY(_!Ordz|N zV`J0l%I3`A(z(}+6fBQt?N}bq4iCG}_L-$mnh{aaB`3u$ndv>^7~}pU#GhSn$x80|_Pv2;3P0}wn08uDAcsvLf#?PCQzcuz!AbB9Oc0YQP~1t3=No4FG5I^+EIBsk zq?syI*qjsR(2(f~T9aD@K9J;taHENGYGJb6h?2~VuSv_vJE@txHjAyh!B!kc-CT3J z2?A%-j$da~!>`p|>&mZbt?B$`p2)WdQa+u+klcYaNf5Yvck$x*-Ng%D=8y+a(rx66 zfW|BK?$yN$!M@kds&TxToqd}f*U^k~%;9!w*`IILF^^8ikoqe*>U{>4qzD8!h4T<) z-IT6if&zeJ*$vI)OWqBhts5LmH#pt8;bh=Wi!$3O_Je1v^Kah1Jp0GRn^!>_$b$U_Qsj%k7wd?IHh0z$u2bC+g6@i*5HC7+h30DtNOgU| z-0bUrf;qy`65J&uT83M>ArvsbMw&Hj(n#@$`Hs>8B`ESy$}7K$&P&i5;)uaHi{n)E zmD5h|IgUl|3C3)F)k#?LmafrPxwstmhbLXcr8{eP=#@f;O9+hNeNc@{hX4zU0 zrLy^JAxoJX$V?N6BP8d+q?L=qzPI+r#5NBmo#(;Cmnz-)_@ zhjs+BUdzGv?1MkC4gRF_;E#3xNI=q=bxU?a5CFKLB*f7T zdn?c5N-svd=*+WM;CZY$GQ+;xDa7NR%vuR__I(Y{7UehYto+7?@*8W)Z`gNR2Ra1L z(^mE``@V)}ixL}mR$^mAu#F2!%;~1YPA094UiN(r&lce|?kv2e8$++dZ8P}~Fi+mh+mX9Mng)NANsqIfq8G!%9IMaqWs>2yjFw zUTmfRB09F6;yD@H70;+LEGJ%c?%1N@8EKKZp=OP@>sYU)K=SMYX=GD8qt1$FWGJ4I zrg+@G=eFiqzMya^6z|EfX0V?)0SHDwv+stpbaR8g*7tBSS@vG!^Ccho&Dc{VcG?DTOyEWxh9# zQVPS6I~<#MnZN*v?WWApNUi)>RK%#Witr2-G162-fgeqBE20?#ikUP~6cL?sV8{6O4Ud zGhr-J-RmsXhowcLOLezWs=s=7!N;puN{utyE;P=*=N=UL$OCIWjNu%Im|~&-7$OeV zX*mHMyLB_PExKXnMK?4S-LSamN_`k7Bt}WNWfOiA1N4z5un&`EmYge@ZaHxr`@|XA z7R#{nVi_8XWmsG+Lqh-r#1|W=bcF!p5r!bYrGwcAE6Dd2Kn#-<@#})v924L04w*De zVpAP5aqZ!@p=~7%JFg_S)FDoFhiEJ5`ue|*z}5AOi#NOrE-t@?Ys@A_VIH(xQ;vN* zp?d#Oyy(cbqh}TgNG98rq&SsXJK{xWQi>L;qb2URU4wsCG258uir51G=}`7TJMlZ2+QqM9Gj5&E z#;s%MZKq(|I$)T&cZt4_C|!DQ5u=TRNc z7Om=Z)~b%7M4WTY6F11=*;ub;Mvo8KB)-6 zWY>YuMa@|zJQEb)RPx(yQ)N7{ZmKZiZ2We#24;hyYw$a)L+W2Z(;yEc=~?QGJyhDqn@CY@u7X_{=o zhUeKqkfK`C<;*IZvjmpj;svX>@~Nuz2+MBnmegv$Ub;%)J7-m z7TxHiZqeC{sD_qr6_bV$*0btU+~UQ(mZCX5N1YgLXC97h zr<*thx~Ww7T_db~Ac?1@!!XSE#`Pq1O2GB``CCD4%Mie5B+j*=DBUEe8a_-ADAvTd zJ@^XvA%f8+7B!bJU$~-(kiSVV-GZ1os1VFCRcA8I$-VW%F)QH0oKxi9}TBu++AUYU zIHwkoyMcAi+swmmr`WT_ZMX=oZX#B!p$D8<57H|(1G3wp_pDb8N5a*ONFHLVCdX#l zb++sb!)|7hQ5>B1;^*;2;sZ(#OQ+im&`$OzYiO9By5;FKuspjW|K#F$O8B%p?y{L zn?$NpL|3%ibROByc+4z2VY99qVY7h|_8RG3VY(I~Wm;Mj$^i^Ml6bR(>rOGXy=_+6YXY}J*!#QEvuQST85Pj$^nrAJ*6apOLQK>G=0Nn=MwP) zmQjEbe#^c(ef&r9gZbF<%I8o@Odthd~8_Ut>(Czi22={mM2#j!mp zj;&jgx+#%o$hprW>J#H=32>BE+g2NMHV&!>@1*PC8Ap9jii1}^0GLtlZ&FIu`95L@ z=P2ZALX|%s$l+@#n5I_2WIOfS`OvR%=66~@d@2>4Pg^}7J-=RR1*0I811ePt?}L`7 z#ytC}G202?&If=e#q6M|Wdda4N%zOg8_>nvHF;Nuex0GJy)3$=<;u1vT1+hV)TFCD zH7VLtlcGIkP7NGMt0_*%ocVMi-0~ivc#X(LY{=gsc!LssOGxwd3+#4tECj}|&+6ynFh^oC?v3+yP?{@V=h}T)| ze^J)u*8i&%IW5oQd-n7Aw&VDnPveh^PWYrCiM4*v#I5pI)b>^gw>GzBY;mc_U0v#N z(WM?2T#=tr)XNglYONQ;r z?6L37*saKn;Cm1J5(6N<6{k_=P0g(MlyLDW%NL>b z93>zoDP1Ng{UrnmAr!RQR!hZJlA?1( z3Zo#!xS+@@Y6)Bk&v=_1EDBH@k}Y$cj|w)mG`0EW**S?Q`Y2L$h9~WW!tkU;IW?F((V1+x;WTWSnmM$mW_q?9C$DpklV{{O zd3uhM&ZJ6F%iS3e1%&dgNSCi}W^4peN@5Wr)sBD;C+*Cl;l%2=dbX@6uX9$EXJkcr zdRCNEb0flB#D9--ljM{aj&M|pTY#4+rL2c0Q*XK$O+;_B+<_bxb1LdjJ`KH=OUkQT zQq?xL*Eu)KGjg*$JvXbatBob)wVY30-F&LHa=rWJW;q6%>!OMPES zSnDFOP_ury_RvxZNd&IW&tAV2J=F5J?a+SQ)~mi!L%irb4TeVVcv|mNS7h%7w)v(dUK~WIZSTLjRIF}6jVj%#b^bH z%JQ@%0x5+QEjD48B5ECtYJ=bFcufdz=^CRk)JMbIi#{ju7T}LOKq3wKL1`b965y|J z7>JVkmN>F!%boH%=1%dJ=E8HUnUS^`Q)ql7`v3g)N-Zj(-%3m|YgLSzEaya5d>bVN zOMHtWv6bYu+(vQj+bEtbi^}VmMa5dqjP7yt?wJ~6{eN##3gU#^;sAj=nDFJrnfF&~ z5`YE7Vml3PD2Y+B#%ap6KktcgJCDX4TRj@jlECG4P2lndh52Pd*ozvN`a}2-E(fm4RCK7xtq*SjLr?XSz7*36&IW;>-sU9Auv&rogO>Rdsx$7yZ zHhGU1?+jrvzkZn)Ny zQEg6kE`H^hgEDDGMztN(xi*tgn#sxSAV!AGo3PbK>R28ro2R29EnYKPY;vT#7%7r5 zY(_@4rs-T-$fzvjd?WJ(+5ChQ+#wK<=&zJ-7(Cx1dI-pd0RVZ=k_6Mv zM$NQn)J#pIro<6zA0mpvt-6S86KzryWZd!ieYWCI#4oEVe6b)2>kk`;RmRe^tFbgK z8Yol4PAah{c_N`Dw_Lw*O|T)qJ5K!s$JO!ism0!zcC~k=MSEvz*gF-2CN?T=%0fn`2pDTPDv~j->ozHSU=$I`j|;uVDHSuEA3qU) zie=2CQJfGTrKzl=EiY;d^fL&vcDIqwY?qNwEjHt{tIaqq+Kf}fW^5Q7oV802n2GFw zVpV1w)gG1>JMp43+vQ`-L^=k?cCn5Va?3NE_`eVcA~CRRiRf45r`w3ak64agt8BlS zE!l5sF}0^%O>NfDFdPbYLpi~POF3QyUIegLo4IzK1?%Wn-<`h&Yn&uKNUU zsVI_A#(Q>r_~s<-L)u>vnJyu^i80=;pvTNs~@3 zmQ50IGuW)%fxj6)@At+2`9nNnCLOTcpJRro3p!}`4)t#wd`S*fwO9X-xuW<+y5JO5)5*-1$ z!fA%%4yItf!68@83F3!3)(}S&MUbKMNlL*S(L019VRs4eJX*y}GpY1xvIWpzVRXw# zToM>E8pXx+FW&z5fXPnqR$M5>gk^eg@Q=+LB@v=1Jp~{B{!ySR2e%WCErq7lL1cM8vOHeHXamFJ|A)7@VlDnMbYAf`$Bx@S3j!Q1`}tfrJ_HM#q;zo52UiGjc7OU2 z-(VYt!-GCJ&q;fMQ=cS3{&gUJ7%Z2^^nH4H{oRk(G+~W?h*1O}_=zj1HmWQ_cgOyU zkQ5yr^!xpTvoHj2@p45|W?G`;76qUWu8UJ#CJFyRG@z9KD-^E#GIa3ZN}yK$yUxfR zPYwC+dBfpe{y)XTWSGb^W|F15D&FN&HXXL+{=7dG7=G1g;PT+0~}t z8n4m6NrV_=&2`Q1J_Vm-sFnfw^*0WI-;%loFxpmnyD3n@lid?fWE32kcXR(I1B|LMfXB1z-~eC=nBg6Og!$CQk-Sm0>LXxL6Y0e z^DQr?APa**rh9lS`ReLBwrcE{2ja-Tkj|Pw<Mf>pmnmxcxLyh)UK=X0BwU zR2wUmz}n0?4SxNc)1Y^oa~URc&gqaJXwGH0TF$wwUCTK);FH3no6WTt(p4%Z$dVuM zWN3u2vjDom6)KT|diVA<1N54IkvF}KqsCL-a7?lZ|Nin#rb|96!#_(r?BB-Gp~3b* z5cn+)QE^80?TyF~}qhD*i+G<>`_G+RMTmcsWi2$%^hCcqpm*qopV|B@1cU92ofR|7sd^Ki7W z2H9$pMNdlPRtuf>f`O;twUY^KZ8Q`IlF|nfVvkQNv+gRyNAB^Uh(VOZ`o_$z1~y=> zawIkmOeuDrF!z9B7^X78BVt%3zYNutGqSVdH{v}9D;Vadd12-xQX@E(RZP&1wTRI1StP$NPTE$5me zT`X{f>9%4Oyg&;aG4D)$;*%)l7ot&+Y&J(2q!fj-M%9eHaCO7*X6;zeph+#yCP3d@5RIm-wW1 za^*k<@g@u}Nr-*JH@;ZBA@owXdZj);6DY)rU=TnoK^V{zeb-BazFheU>mhx2g*U55 zWrC-0S%iDbYb6c;uXF{6?Wr3JzpLN$SH; zaFPw|-_#WTI}>$503i5|B>3N~ZOB|Ga3&i{IJuizJ4y5~kbR;Uz`9Kq-My`zF(#T8 zvql5n0C5$v@*Elsh66`Up_3sR1}DxCjc4=WWHuf-v&nckgU~raC*B;*gQ4S$0yvqB z76{GYeB#es7mXHU_RrBt1FF{nk(TUKb+`8KzCwJn1iw9U5fr84@f0P$Bz)1XMJG@k}}ZhF=B#hLb&`Hz7X z-Bfo7RDum4g%$AfR{R5=xEoPp-$JIa1{R8U`i3dUljqYW#LBB6%H+NlFLrQF6B33f z+0m6uO#}TCY3=4kQjb;5rxelS0HQUCQbcR8R9b1=jnxW|-XEhq!Y6Z$Wv{63&Gy#r zWu)fUaC9L}v~JQ5_rsGQo^#HaU^dAo@WEv`-fVawVzK}MN-^^?V-lq0#E1g zOwzu_YaXJPfIJ==7x1t60U_} z=mB`arzisf@G|1Q>I$c&HCJKQXI%6w%v)`Ht&DTNLP%1WRUAK$BAmk*&T)t-M#iG= z!64|J{`9Y-UXYNO{fmo%^L&?@XEm_-T69_lz7CUYD03>6$N1{q1zXm|EC@!9$fzv} zhoAmc(8pTAVg6l}Qhq1tlEVxmU92$VNL~+xRoO*;H8=)i+sgucqJm9=~0+ zi`SY)*GnUF=Au-vVRSL`TZPS&imsL;**pD7yzHI!c(vBvQIAi)-f7S6{r0b;UW#Di zuTYwei`p&(FWy|K{onK`GhS7CoT&XO(111Ef&`@`yhR{NLqcvgvD%LykvQ_Ag-=pM zH?f?(L6lZlymGC+P#GbVfZlnyNhwOc#Yswg055nv=S{Zx0k}QDmr>!qbj-{a?4vmYlWip&$4z;($yyW&UNl&m-fXNTbWpQqs6^*Q+F z5L}*JUH$mt6#VtqU%}w5yn2A=WB&HrU%`3)0e?_*`)xwj@-F}e12q=>_mX;7FR$aU zf)DkUCk)B<)!%%iD2ZTr5mA&ZppVM_<+~Kgj3_M6BtuGhY7XCE;F%O+-D3r0pt3mG z+P;GcIt4rxYQBv{vGbdgG@As9js%`nxwqUEWiN0pc$6ucZ=x`vIo~P=WdJU-Y%wL$ z1c^*uF?`FA%wafKY{HNUh0O7(QIja5I6?e`1;c}*+-#80a4Lmwd9mo9H9-g?K-4FS z193BMw*4we=aAV_<`vT| zJCnAQfDaZi`5{AD3Wv(EItxQ`r-H#eW{y5GNrY+MOr;JnShy~_Az@aBE^uAIqR>+R zCTnO09||p0T!8;|rEUl;m{0r_x12<@C;JMD9$=Fc!E_5^?B6K&e8CSMtNmZ*t{(xs zj!8mcL@g^*Wn}D(C9tOQW3)4zkbl@Uny`jA`m2I7&`BMzS3A7lY^$l-Gri-RK+JfU zv+?7(|3MX!4JAw=S55u14J9Far*({w&MN4p9Z;;27| zDfUHjAvb}^LQp3g$gOmmK(xR&`WvRhxFn3BkCaqp1GI(|`#j6+oSV!kx0$oi&ih@5 z#*c%>F^U2KS)3H%NOLS{mWz|M6fZS>w^8L2iVlIIFQ0$UQxr364ILH;VbqZg&&DFD zv~kx8FNy-5NLlV_F13Gh{>A@M6dim?_R&YUjzcsEi4Q|ANSKgS%Eb(U$yLhDg{p;+ zq2s&r>K|1}QkQ(&@~&+>p7))AqADMNMY=I>tvci@itP7_2bugs=# zl;t31zFOM+>#Wd&l!iDJ`^qh_@}s$pvGT7QW0im8MZ{~2E&W@O&!!USGbEXil4qq- z-Lc|_q-JFrtg*NX0WH66Dx25UVn!LU3hEzN$dp*#Wyu!y6ND|aSuh)R$B32?iNhb; z3O(~Zv+Q_lVIqs~ltK`j&^QwJyrxHNX|n$z>JJ8k!vVP9#&m)hF>4V`f)Q{PfFsRv znCo^0rO4c|M6O<$Y zN_L+ik(UM5vL%m)YkjJ#uWXo|2~jE!oz3t<^a zX?VD7p=xx-&N%Q!o`Zs^?*=1pfdcm=mRQeqN;}Ndya2iZb=A+?wKJ!N> zbI)l;m0JFVJ+xhmU;p@i7GlFRo$O?VhFNB)*r-(ppG{iJ`P-=t^gx&x-xI@w>AgiT z_%Xp0{Sf&g@OhShnT6!@6Qtrqz(6=8!eJnCg>u(SSTbu8pv?P`S^T2Awq%oJ7b?lq z;K_frTh5~OaZXiVmW)+fVSR=_J+$^keKHhtJ&OrZm+#NB&#FOo5ajx3a(mqdS{^by z4i=uBaC~Q`LIQ|>s@n^F5nXb^!qT$~^9A&#Alz_kX|0=T!QXTqyLyHqbJ7H)Y zg9i>ts8wyjmLM4L%=U`ut;8~3=uDN)bpQsVpF4RKSW^6NV@l0tvsXAfRs_YskVPgx z6f+6>WrI?haa1X>Y*_V+H>*N*5|{X(SZp$beX-!XZEPa+KOBKz8^Ja9g?vjfiR7h$ zD)+e1AiIn3!%-poG;55Kia@sh{6;JVEn*q@p4hUFWsY3MJhP3cmHN?TafQ$P|GLL|Efw@Jl^-AAQC?e zNLL? z{Yd`vyUQaG-}*-Ytz)`mjErF=~mye@-E zXI^J#nQNi`d8DV#l<26kHd}ASxBWGY%YLV(Me}}?eJ+mBDY3Vkg2xuFeA4vgAUBy9 zVwPEEg$C_UF(Gt*o^T`v0sw<*Jt!rnml%!r5+D1XcWf7fSy{bx#A710Wnf~qac(=vI>%9m^Q)B@s+UWT=OSr%O3OxSvz?2E&r29?_&WZe z`1w#xP=Ib5NrS9g1U(Nka5jo;gAkzGhZqDMgC(%_`zo@zrm9V@TPyQ?Z`4g^zoW5+L zN*W$zK~$joyw`j7ko3tp}$iwjFpx z@Lt;#`?Yt2w!PDysshnF>cyh+%6i-9b^DLk+kW=;w|^OixkM}A*86-0DSraD$>7ND zM2in=9cbB+jl5?A?;|^G=?W%1reD2>lpPdP0UU*d62O~gWzq{5Ri*cmZyZ;Eld=IJ zs2!|PfH#%<1S;uJenAQ7eUH{8+4l1J1_52iixfP6d-i>Q4!Mlv8%x`iqV=I3H{)X` zgQE)M3R1vY$*pPkWJACU ztjM|~Te9JM8L7&+0z9nD&+2hNKyoE}v`imGYx@!Z&STD{6?O`V{MuWjub83TI~`9>j?`c0 zy!5z8lIorIe&E;aeUH;Mr2eXR)Z@4B>FxLr?^2Y=zx4~a_;>kP_hS06A`U3()U3G7 z7)U4#Z6zDIsrj3}KviD8Y**g3&4JcsjL3Q`#bf58V>w){5)p@&(q)3uUrGgKmDIb; zzo^Y}&LKTvqH~V4HqlPwvL@Hg0M;$tPD53lYG-0;k!_bZ-Ho;iRYd}Hp}Lkknz(@n z=aZ?k@cofH8+!h1xbQs3pLs*)WVo12#vXD!7okPq`o24KhaL>(?$B8{ez`zfiK;Bi zF2RJa?7DMK=VJFteGB|7i6TEWOPNmQRS0CoQJJnO)Az-Z7TdIFunk6Gdc(D|Sou8V zGgIu^?;*ZL5lYiO^9V8j7cU;ZiTi>EwQt7%7^u%}l)YB(`S(?GwFqaRcK0h>SuS3% zaPdV{5zCw}oUXX(B1deiu9Q_!FFEombUO>Wivtz~CaU0=2NHY7Jz)nx@ZI(GrEIA( zj#P;oJ_p$QWA>k`tV+V6cCt>jslu8X8>i;|Cj9*ZBXK`F8|yTWc$G^B7P@PoGU`NH zBMQI=F*c{Xc*qBNVVZ!xB4Lm!SgKfp6xRmSDn88QlHT?CCF{R5OD*Bu$3Nq>?IS{E z^fue6FO5w$fo(nX76lMDnVcD(0amP+Aj>!K_9ddCcvP#$)EN}#3LsgO0An`wc83MfxHFBQ@Uo|Sq}J=mNq0!_9QYF+xXax|bJ z^m~BK;dM9-(Prp)t#Av8Z~41A;?fOoW;;)iy_S2VWkLo3M}D|bRU+V=+#=p(2}ORgjpYF; zsacOiUIyQ--G z_h(oC=$#G=BXcQhFuY4q0xn*F=d8gYK+$dg7A8Pd*9o@;B-Qago)vPL;9DG`C3>0q zFyzx*#?p>@dI3;2eae+Yk9x6cA7stcKJZ&Y=(kzWTV0C6Rk+a!ecZ}j1thyH_hq$873^P=53>NA= zUt0OrzBt~JokPC3yd52}|4yt(wpE7O6)#kAMWKIFvQls?%`y#-_WcpKD)Jbogc zF>zSSo2`h}wd$Bi)J?C2(X!$Zhr6TPk+s^9B*IqhNX$fQsUtfJgc6?sQJ{&9VN`GF7jhj%Y7KMa8I^w|&6=a1oC1R%IRzbsTe zTq2sUR9>c*t)F*qU-P$oU2B_4bxcv1ED_x`bMu;u+V@6qMFjc_qMmoaA|Y#GKj$@# z`5PWa_>cqqzz-R!Yp7%pL7!hrJjn#PTvuz61!MdBL(Bp5LEy!cqvfxtotqG-k zCR4g;7ng;M30+F+ih3P~=s6Rvb17U8j|#H(2xRb%a+#}b?y?Ckwm|IiIv#mg3xjpT=l;K%~ExgZxx|BENxe$S>yf16C z9|0(U;8Y1M6v!YR)eA#s)h;yxTdu)c8=Zrt0Z)N1b>$0HS}pHOEon&Hs!alrY$8!| zR6;6TeIp?7VIC|K=%Y)NV4gZbqCmfk#QBizc-ATU?6kA?vJYc?%#?jdV9?Jz{NtDe z{ag3=SyoBy@LwgG)+kNk64^4AADN)OTSJnyxb%||MM9}gD{jSA_8k<5BJwZqTfB%v z{ z_{b4e?|c|IT5Nq}EqCIqz*CWLGjIk&XXrXJca+t)nnE;MoH*`@cQQUf!Ni-+=99(A zVmeuzpv7q6&PUVHd^jA=Pn_`-IWu<-o%slj7n9*^Hrq*=*abN_3q$Z0FIO}LZ^iX5 z0qAped!201Ip-H#CWH;-!591I^LoV9(Z?!8I#>q}kHc{sXEGY`|2vLj{@)o*reCO1ClI{e`X2*`^PlFx7&fArakWFeBGnyBR%GS zCn)^7m(p#B(iK9q2af-KaPaIIul?KS;)4D8?AbGL<->@{luby}gM)*EPv8v!-{Z6( z?3pgvM1i`yhsn#+{;uZ}$C&G2g^{Uuo+O~Zs-oui9=83nfA-J*x%cz`2LJ&7|8;EI IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/ferdi-client/0.0.10/ix_values.yaml b/incubator/ferdi-client/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..ae40eaefdd7 --- /dev/null +++ b/incubator/ferdi-client/0.0.10/ix_values.yaml @@ -0,0 +1,28 @@ +env: + CUSTOM_RES_H: '768' + CUSTOM_RES_W: '1280' + FERDI_V: stable + UMASK: '000' +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/ferdi-client + tag: latest +persistence: + datadir: + enabled: true + mountPath: /ferdi +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 8080 + protocol: TCP + targetPort: 8080 diff --git a/incubator/ferdi-client/0.0.10/questions.yaml b/incubator/ferdi-client/0.0.10/questions.yaml new file mode 100644 index 00000000000..a8ba2a740f3 --- /dev/null +++ b/incubator/ferdi-client/0.0.10/questions.yaml @@ -0,0 +1,2473 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: FERDI_V + label: 'FERDI_V' + description: "Define your preferred Ferdi version here (valid options are stable and latest where latest refers to pre-releases)" + schema: + type: string + default: "stable" + - variable: CUSTOM_RES_W + label: 'CUSTOM_RES_W' + description: "Minimum screen width 1000 pixels" + schema: + type: string + default: "1280" + - variable: CUSTOM_RES_H + label: 'CUSTOM_RES_H' + description: "Minimum screen hight 880 pixels" + schema: + type: string + default: "768" + - variable: UMASK + label: 'UMASK' + description: "Container Variable UMASK" + schema: + type: string + default: "000" + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 8080 + + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - variable: persistence + label: "Integrated Persistent Storage" + description: "Integrated Persistent Storage" + group: "Storage and Persistence" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: datadir + label: "datadir 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/ferdi-client/0.0.10/templates/common.yaml b/incubator/ferdi-client/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/ferdi-client/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/ferdi-client/0.0.10/values.yaml b/incubator/ferdi-client/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/ferdi-client/item.yaml b/incubator/ferdi-client/item.yaml new file mode 100644 index 00000000000..6e916bbe917 --- /dev/null +++ b/incubator/ferdi-client/item.yaml @@ -0,0 +1,5 @@ +icon_url: https://truecharts.org/img/chart-icons/ferdi-client.png +categories: +- Productivity +- Tools-Utilities + diff --git a/incubator/ffmpeg-mkvdts2ac3/0.0.10/CHANGELOG.md b/incubator/ffmpeg-mkvdts2ac3/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..996ee326824 --- /dev/null +++ b/incubator/ffmpeg-mkvdts2ac3/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [ffmpeg-mkvdts2ac3-0.0.10]ffmpeg-mkvdts2ac3-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [ffmpeg-mkvdts2ac3-0.0.10]ffmpeg-mkvdts2ac3-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [ffmpeg-mkvdts2ac3-0.0.10]ffmpeg-mkvdts2ac3-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [ffmpeg-mkvdts2ac3-0.0.10]ffmpeg-mkvdts2ac3-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [ffmpeg-mkvdts2ac3-0.0.10]ffmpeg-mkvdts2ac3-0.0.10 (2022-07-20) diff --git a/incubator/ffmpeg-mkvdts2ac3/0.0.10/Chart.lock b/incubator/ffmpeg-mkvdts2ac3/0.0.10/Chart.lock new file mode 100644 index 00000000000..307a78c5f90 --- /dev/null +++ b/incubator/ffmpeg-mkvdts2ac3/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:04:41.854413723Z" diff --git a/incubator/ffmpeg-mkvdts2ac3/0.0.10/Chart.yaml b/incubator/ffmpeg-mkvdts2ac3/0.0.10/Chart.yaml new file mode 100644 index 00000000000..8c2225b3680 --- /dev/null +++ b/incubator/ffmpeg-mkvdts2ac3/0.0.10/Chart.yaml @@ -0,0 +1,29 @@ +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: 10.4.6 +deprecated: false +description: A Docker container designed to watch a directory and encode media files. +home: https://github.com/truecharts/apps/tree/master/charts/stable/ffmpeg-mkvdts2ac3 +icon: https://truecharts.org/img/chart-icons/ffmpeg-mkvdts2ac3.png +keywords: +- ffmpeg-mkvdts2ac3 +- Productivity +- Tools-Utilities +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: ffmpeg-mkvdts2ac3 +sources: +- https://registry.hub.docker.com/r/snoopy86/ffmpeg/ +type: application +version: 0.0.10 diff --git a/incubator/ffmpeg-mkvdts2ac3/0.0.10/README.md b/incubator/ffmpeg-mkvdts2ac3/0.0.10/README.md new file mode 100644 index 00000000000..3bb26fb94a3 --- /dev/null +++ b/incubator/ffmpeg-mkvdts2ac3/0.0.10/README.md @@ -0,0 +1,107 @@ +# ffmpeg-mkvdts2ac3 + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +A Docker container designed to watch a directory and encode media files. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [ffmpeg-mkvdts2ac3](https://truecharts.org/charts/stable/ffmpeg-mkvdts2ac3) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `ffmpeg-mkvdts2ac3` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install ffmpeg-mkvdts2ac3 TrueCharts/ffmpeg-mkvdts2ac3 +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `ffmpeg-mkvdts2ac3` deployment + +```console +helm uninstall ffmpeg-mkvdts2ac3 +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install ffmpeg-mkvdts2ac3 \ + --set env.TZ="America/New York" \ + TrueCharts/ffmpeg-mkvdts2ac3 +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install ffmpeg-mkvdts2ac3 TrueCharts/ffmpeg-mkvdts2ac3 -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/ffmpeg-mkvdts2ac3/0.0.10/app-readme.md b/incubator/ffmpeg-mkvdts2ac3/0.0.10/app-readme.md new file mode 100644 index 00000000000..47086725e15 --- /dev/null +++ b/incubator/ffmpeg-mkvdts2ac3/0.0.10/app-readme.md @@ -0,0 +1,8 @@ +A Docker container designed to watch a directory and encode media files. + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/ffmpeg-mkvdts2ac3 + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/ffmpeg-mkvdts2ac3/0.0.10/charts/common-10.4.6.tgz b/incubator/ffmpeg-mkvdts2ac3/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/ffmpeg-mkvdts2ac3/0.0.10/ix_values.yaml b/incubator/ffmpeg-mkvdts2ac3/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..7a30664b06e --- /dev/null +++ b/incubator/ffmpeg-mkvdts2ac3/0.0.10/ix_values.yaml @@ -0,0 +1,41 @@ +env: + mkvdts2ac3_params: --compress none;-d;-n;-w /output;--new + output_format: mkv + parameters: -map 0;-vcodec copy;-scodec copy;-acodec ac3;-b:a 640k + script: encode.sh +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/ffmpeg-mkvdts2ac3 + tag: latest +persistence: + config: + enabled: true + mountPath: /config + copy: + enabled: true + mountPath: /copy + output: + enabled: true + mountPath: /output + watch: + enabled: true + mountPath: /watch +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: false + ports: + main: + enabled: false diff --git a/incubator/ffmpeg-mkvdts2ac3/0.0.10/questions.yaml b/incubator/ffmpeg-mkvdts2ac3/0.0.10/questions.yaml new file mode 100644 index 00000000000..412218345c3 --- /dev/null +++ b/incubator/ffmpeg-mkvdts2ac3/0.0.10/questions.yaml @@ -0,0 +1,2579 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: {} +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: false + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: script + label: 'script' + description: "encode.sh or mkvdts2ac3.sh" + schema: + type: string + default: "encode.sh" + - variable: parameters + label: 'parameters' + description: "Parameters for FFmpeg" + schema: + type: string + default: "-map 0;-vcodec copy;-scodec copy;-acodec ac3;-b:a 640k" + - variable: output_format + label: 'output_format' + description: "Format of output file." + schema: + type: string + default: "mkv" + - variable: mkvdts2ac3_params + label: 'mkvdts2ac3_params' + description: "Parameters for mkvdts2ac3" + schema: + type: string + default: "--compress none;-d;-n;-w /output;--new" + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - 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" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: watch + label: "watch Storage" + description: "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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: output + label: "output Storage" + description: "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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: copy + label: "copy Storage" + description: "Copy" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/ffmpeg-mkvdts2ac3/0.0.10/templates/common.yaml b/incubator/ffmpeg-mkvdts2ac3/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/ffmpeg-mkvdts2ac3/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/ffmpeg-mkvdts2ac3/0.0.10/values.yaml b/incubator/ffmpeg-mkvdts2ac3/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/ffmpeg-mkvdts2ac3/item.yaml b/incubator/ffmpeg-mkvdts2ac3/item.yaml new file mode 100644 index 00000000000..19dd186d904 --- /dev/null +++ b/incubator/ffmpeg-mkvdts2ac3/item.yaml @@ -0,0 +1,5 @@ +icon_url: https://truecharts.org/img/chart-icons/ffmpeg-mkvdts2ac3.png +categories: +- Productivity +- Tools-Utilities + diff --git a/incubator/fileflows-node/0.0.10/CHANGELOG.md b/incubator/fileflows-node/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..4ab115e46ad --- /dev/null +++ b/incubator/fileflows-node/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [fileflows-node-0.0.10]fileflows-node-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [fileflows-node-0.0.10]fileflows-node-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [fileflows-node-0.0.10]fileflows-node-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [fileflows-node-0.0.10]fileflows-node-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [fileflows-node-0.0.10]fileflows-node-0.0.10 (2022-07-20) diff --git a/incubator/fileflows-node/0.0.10/Chart.lock b/incubator/fileflows-node/0.0.10/Chart.lock new file mode 100644 index 00000000000..9b1a9a3b387 --- /dev/null +++ b/incubator/fileflows-node/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:04:50.289333152Z" diff --git a/incubator/fileflows-node/0.0.10/Chart.yaml b/incubator/fileflows-node/0.0.10/Chart.yaml new file mode 100644 index 00000000000..bdd006f5354 --- /dev/null +++ b/incubator/fileflows-node/0.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: 10.4.6 +deprecated: false +description: Additinal processing node for FileFlows. See http://fileflows.com for + more information +home: https://github.com/truecharts/apps/tree/master/charts/stable/fileflows-node +icon: https://truecharts.org/img/chart-icons/fileflows-node.png +keywords: +- fileflows-node +- Productivity +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: fileflows-node +sources: +- https://fileflows.com/ +- https://hub.docker.com/r/revenz/fileflows/ +type: application +version: 0.0.10 diff --git a/incubator/fileflows-node/0.0.10/README.md b/incubator/fileflows-node/0.0.10/README.md new file mode 100644 index 00000000000..eabb7bcf471 --- /dev/null +++ b/incubator/fileflows-node/0.0.10/README.md @@ -0,0 +1,108 @@ +# fileflows-node + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +Additinal processing node for FileFlows. See http://fileflows.com for more information + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [fileflows-node](https://truecharts.org/charts/stable/fileflows-node) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `fileflows-node` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install fileflows-node TrueCharts/fileflows-node +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `fileflows-node` deployment + +```console +helm uninstall fileflows-node +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install fileflows-node \ + --set env.TZ="America/New York" \ + TrueCharts/fileflows-node +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install fileflows-node TrueCharts/fileflows-node -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/fileflows-node/0.0.10/app-readme.md b/incubator/fileflows-node/0.0.10/app-readme.md new file mode 100644 index 00000000000..e80d6517764 --- /dev/null +++ b/incubator/fileflows-node/0.0.10/app-readme.md @@ -0,0 +1,8 @@ +Additinal processing node for FileFlows. See http://fileflows.com for more information + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/fileflows-node + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/fileflows-node/0.0.10/charts/common-10.4.6.tgz b/incubator/fileflows-node/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/fileflows-node/0.0.10/ix_values.yaml b/incubator/fileflows-node/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..a429757da00 --- /dev/null +++ b/incubator/fileflows-node/0.0.10/ix_values.yaml @@ -0,0 +1,28 @@ +env: + NodeName: '' + ServerUrl: '' + TempPath: '' +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/fileflows-node + tag: latest +persistence: {} +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: false + ports: + main: + enabled: false diff --git a/incubator/fileflows-node/0.0.10/questions.yaml b/incubator/fileflows-node/0.0.10/questions.yaml new file mode 100644 index 00000000000..8adc4ada326 --- /dev/null +++ b/incubator/fileflows-node/0.0.10/questions.yaml @@ -0,0 +1,1855 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: {} +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: false + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: ServerUrl + label: 'ServerUrl' + description: "FileFlows Server URL" + schema: + type: string + default: "" + - variable: NodeName + label: 'NodeName' + description: "A unique name to identify this Node instance" + schema: + type: string + default: "" + - variable: TempPath + label: 'TempPath' + description: "Path for temporary files created" + 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: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/fileflows-node/0.0.10/templates/common.yaml b/incubator/fileflows-node/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/fileflows-node/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/fileflows-node/0.0.10/values.yaml b/incubator/fileflows-node/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/fileflows-node/item.yaml b/incubator/fileflows-node/item.yaml new file mode 100644 index 00000000000..832183fa15d --- /dev/null +++ b/incubator/fileflows-node/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/fileflows-node.png +categories: +- Productivity + diff --git a/incubator/filegator/0.0.10/CHANGELOG.md b/incubator/filegator/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..fc98511b7d3 --- /dev/null +++ b/incubator/filegator/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [filegator-0.0.10]filegator-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [filegator-0.0.10]filegator-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [filegator-0.0.10]filegator-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [filegator-0.0.10]filegator-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [filegator-0.0.10]filegator-0.0.10 (2022-07-20) diff --git a/incubator/filegator/0.0.10/Chart.lock b/incubator/filegator/0.0.10/Chart.lock new file mode 100644 index 00000000000..34d16789db2 --- /dev/null +++ b/incubator/filegator/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:04:55.358017724Z" diff --git a/incubator/filegator/0.0.10/Chart.yaml b/incubator/filegator/0.0.10/Chart.yaml new file mode 100644 index 00000000000..15b777593f4 --- /dev/null +++ b/incubator/filegator/0.0.10/Chart.yaml @@ -0,0 +1,34 @@ +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: 10.4.6 +deprecated: false +description: "DESCRIPTION\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/filegator +icon: https://truecharts.org/img/chart-icons/filegator.png +keywords: +- filegator +- Cloud +- Productivity +- Tools-Utilities +- Network-FTP +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: filegator +sources: +- https://github.com/filegator/filegator +- https://hub.docker.com/r/maxime1907/filegator +type: application +version: 0.0.10 diff --git a/incubator/filegator/0.0.10/README.md b/incubator/filegator/0.0.10/README.md new file mode 100644 index 00000000000..47fba0737ac --- /dev/null +++ b/incubator/filegator/0.0.10/README.md @@ -0,0 +1,108 @@ +# filegator + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +DESCRIPTION + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [filegator](https://truecharts.org/charts/stable/filegator) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `filegator` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install filegator TrueCharts/filegator +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `filegator` deployment + +```console +helm uninstall filegator +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install filegator \ + --set env.TZ="America/New York" \ + TrueCharts/filegator +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install filegator TrueCharts/filegator -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/filegator/0.0.10/app-readme.md b/incubator/filegator/0.0.10/app-readme.md new file mode 100644 index 00000000000..b184e1f0647 --- /dev/null +++ b/incubator/filegator/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +DESCRIPTION + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/filegator + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/filegator/0.0.10/charts/common-10.4.6.tgz b/incubator/filegator/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/filegator/0.0.10/ix_values.yaml b/incubator/filegator/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..a908f885123 --- /dev/null +++ b/incubator/filegator/0.0.10/ix_values.yaml @@ -0,0 +1,39 @@ +env: {} +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/filegator + tag: latest +persistence: + config: + enabled: true + mountPath: /config + data: + enabled: true + mountPath: /data + storageconfigfile: + enabled: true + mountPath: /var/www/localhost/filegator/configuration.php + readOnly: true +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 8048 + protocol: HTTP + targetPort: 80 + webuihttps: + enabled: true + ports: + webuihttps: + enabled: true + port: 8049 + protocol: TCP + targetPort: 443 diff --git a/incubator/filegator/0.0.10/questions.yaml b/incubator/filegator/0.0.10/questions.yaml new file mode 100644 index 00000000000..24fee737585 --- /dev/null +++ b/incubator/filegator/0.0.10/questions.yaml @@ -0,0 +1,2925 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 8048 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: HTTP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 80 + + - variable: webuihttps + label: 'webuihttps 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, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: webuihttps + label: "webuihttps Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 8049 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 443 + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - 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: "This is the location for all the personal information." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: config + label: "config Storage" + description: "This is the location for the 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: storageconfigfile + label: "storageconfigfile Storage" + description: "This is the configuration 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/filegator/0.0.10/templates/common.yaml b/incubator/filegator/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/filegator/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/filegator/0.0.10/values.yaml b/incubator/filegator/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/filegator/item.yaml b/incubator/filegator/item.yaml new file mode 100644 index 00000000000..76642f2dc57 --- /dev/null +++ b/incubator/filegator/item.yaml @@ -0,0 +1,7 @@ +icon_url: https://truecharts.org/img/chart-icons/filegator.png +categories: +- Cloud +- Productivity +- Tools-Utilities +- Network-FTP + diff --git a/incubator/fileshelter/0.0.10/CHANGELOG.md b/incubator/fileshelter/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..918be276c3c --- /dev/null +++ b/incubator/fileshelter/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [fileshelter-0.0.10]fileshelter-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [fileshelter-0.0.10]fileshelter-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [fileshelter-0.0.10]fileshelter-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [fileshelter-0.0.10]fileshelter-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [fileshelter-0.0.10]fileshelter-0.0.10 (2022-07-20) diff --git a/incubator/fileshelter/0.0.10/Chart.lock b/incubator/fileshelter/0.0.10/Chart.lock new file mode 100644 index 00000000000..46e5b5ce73c --- /dev/null +++ b/incubator/fileshelter/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:04:58.138784945Z" diff --git a/incubator/fileshelter/0.0.10/Chart.yaml b/incubator/fileshelter/0.0.10/Chart.yaml new file mode 100644 index 00000000000..5dfc0c058f5 --- /dev/null +++ b/incubator/fileshelter/0.0.10/Chart.yaml @@ -0,0 +1,34 @@ +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: 10.4.6 +deprecated: false +description: "DESCRIPTION\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/fileshelter +icon: https://truecharts.org/img/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/epoupon/fileshelter +- https://hub.docker.com/r/epoupon/fileshelter +type: application +version: 0.0.10 diff --git a/incubator/fileshelter/0.0.10/README.md b/incubator/fileshelter/0.0.10/README.md new file mode 100644 index 00000000000..aafd45e1354 --- /dev/null +++ b/incubator/fileshelter/0.0.10/README.md @@ -0,0 +1,108 @@ +# fileshelter + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +DESCRIPTION + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [fileshelter](https://truecharts.org/charts/stable/fileshelter) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `fileshelter` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install fileshelter TrueCharts/fileshelter +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `fileshelter` deployment + +```console +helm uninstall fileshelter +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install fileshelter \ + --set env.TZ="America/New York" \ + TrueCharts/fileshelter +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install fileshelter TrueCharts/fileshelter -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/fileshelter/0.0.10/app-readme.md b/incubator/fileshelter/0.0.10/app-readme.md new file mode 100644 index 00000000000..3502e8e4e85 --- /dev/null +++ b/incubator/fileshelter/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +DESCRIPTION + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/fileshelter + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/fileshelter/0.0.10/charts/common-10.4.6.tgz b/incubator/fileshelter/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/fileshelter/0.0.10/ix_values.yaml b/incubator/fileshelter/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..fdf5013bfdc --- /dev/null +++ b/incubator/fileshelter/0.0.10/ix_values.yaml @@ -0,0 +1,25 @@ +env: {} +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/fileshelter + tag: latest +persistence: {} +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: false + ports: + main: + enabled: false diff --git a/incubator/fileshelter/0.0.10/questions.yaml b/incubator/fileshelter/0.0.10/questions.yaml new file mode 100644 index 00000000000..c6590a40435 --- /dev/null +++ b/incubator/fileshelter/0.0.10/questions.yaml @@ -0,0 +1,1829 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: {} +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: false + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + 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: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/fileshelter/0.0.10/templates/common.yaml b/incubator/fileshelter/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/fileshelter/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/fileshelter/0.0.10/values.yaml b/incubator/fileshelter/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/fileshelter/item.yaml b/incubator/fileshelter/item.yaml new file mode 100644 index 00000000000..d3236bf6480 --- /dev/null +++ b/incubator/fileshelter/item.yaml @@ -0,0 +1,7 @@ +icon_url: https://truecharts.org/img/chart-icons/fileshelter.png +categories: +- Cloud +- Tools-Utilities +- Network-Web +- Network-FTP + diff --git a/incubator/filestash/0.0.10/CHANGELOG.md b/incubator/filestash/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..19ef5ec2dd6 --- /dev/null +++ b/incubator/filestash/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [filestash-0.0.10]filestash-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [filestash-0.0.10]filestash-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [filestash-0.0.10]filestash-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [filestash-0.0.10]filestash-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [filestash-0.0.10]filestash-0.0.10 (2022-07-20) diff --git a/incubator/filestash/0.0.10/Chart.lock b/incubator/filestash/0.0.10/Chart.lock new file mode 100644 index 00000000000..9b88f268129 --- /dev/null +++ b/incubator/filestash/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:04:58.463762429Z" diff --git a/incubator/filestash/0.0.10/Chart.yaml b/incubator/filestash/0.0.10/Chart.yaml new file mode 100644 index 00000000000..d19056d2db7 --- /dev/null +++ b/incubator/filestash/0.0.10/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: 10.4.6 +deprecated: false +description: A modern web client for SFTP, S3, FTP, WebDAV, Git, Minio, LDAP, CalDAV, + CardDAV, Mysql, Backblaze, ... +home: https://github.com/truecharts/apps/tree/master/charts/stable/filestash +icon: https://truecharts.org/img/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://www.filestash.app/ +- https://hub.docker.com/r/machines/filestash/ +type: application +version: 0.0.10 diff --git a/incubator/filestash/0.0.10/README.md b/incubator/filestash/0.0.10/README.md new file mode 100644 index 00000000000..0be4794bca1 --- /dev/null +++ b/incubator/filestash/0.0.10/README.md @@ -0,0 +1,108 @@ +# filestash + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +A modern web client for SFTP, S3, FTP, WebDAV, Git, Minio, LDAP, CalDAV, CardDAV, Mysql, Backblaze, ... + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [filestash](https://truecharts.org/charts/stable/filestash) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `filestash` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install filestash TrueCharts/filestash +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `filestash` deployment + +```console +helm uninstall filestash +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install filestash \ + --set env.TZ="America/New York" \ + TrueCharts/filestash +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install filestash TrueCharts/filestash -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/filestash/0.0.10/app-readme.md b/incubator/filestash/0.0.10/app-readme.md new file mode 100644 index 00000000000..e0c0b6f451f --- /dev/null +++ b/incubator/filestash/0.0.10/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 + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/filestash/0.0.10/charts/common-10.4.6.tgz b/incubator/filestash/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/filestash/0.0.10/ix_values.yaml b/incubator/filestash/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..344cf27fe89 --- /dev/null +++ b/incubator/filestash/0.0.10/ix_values.yaml @@ -0,0 +1,24 @@ +env: {} +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/filestash + tag: latest +persistence: + appdata: + enabled: true + mountPath: /app/data/state/ +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 8334 + protocol: TCP + targetPort: 8334 diff --git a/incubator/filestash/0.0.10/questions.yaml b/incubator/filestash/0.0.10/questions.yaml new file mode 100644 index 00000000000..a25c270eb0c --- /dev/null +++ b/incubator/filestash/0.0.10/questions.yaml @@ -0,0 +1,2441 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 8334 + + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/filestash/0.0.10/templates/common.yaml b/incubator/filestash/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/filestash/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/filestash/0.0.10/values.yaml b/incubator/filestash/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/filestash/item.yaml b/incubator/filestash/item.yaml new file mode 100644 index 00000000000..5b297dfcb98 --- /dev/null +++ b/incubator/filestash/item.yaml @@ -0,0 +1,6 @@ +icon_url: https://truecharts.org/img/chart-icons/filestash.png +categories: +- Cloud +- Productivity +- Network-Web + diff --git a/incubator/firefox-desktop-g3/0.0.10/CHANGELOG.md b/incubator/firefox-desktop-g3/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..2cef2a45472 --- /dev/null +++ b/incubator/firefox-desktop-g3/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [firefox-desktop-g3-0.0.10]firefox-desktop-g3-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [firefox-desktop-g3-0.0.10]firefox-desktop-g3-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [firefox-desktop-g3-0.0.10]firefox-desktop-g3-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [firefox-desktop-g3-0.0.10]firefox-desktop-g3-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [firefox-desktop-g3-0.0.10]firefox-desktop-g3-0.0.10 (2022-07-20) diff --git a/incubator/firefox-desktop-g3/0.0.10/Chart.lock b/incubator/firefox-desktop-g3/0.0.10/Chart.lock new file mode 100644 index 00000000000..48610034550 --- /dev/null +++ b/incubator/firefox-desktop-g3/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:05:06.732690818Z" diff --git a/incubator/firefox-desktop-g3/0.0.10/Chart.yaml b/incubator/firefox-desktop-g3/0.0.10/Chart.yaml new file mode 100644 index 00000000000..c8b4f04d822 --- /dev/null +++ b/incubator/firefox-desktop-g3/0.0.10/Chart.yaml @@ -0,0 +1,32 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - Productivity + - Tools-Utilities + - Network-Web +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: "DESCRIPTION\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/firefox-desktop-g3 +icon: https://truecharts.org/img/chart-icons/firefox-desktop-g3.png +keywords: +- firefox-desktop-g3 +- Productivity +- Tools-Utilities +- Network-Web +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: firefox-desktop-g3 +sources: +- https://github.com/accetto/headless-drawing-g3/ +- https://hub.docker.com/r/accetto/ubuntu-vnc-xfce-firefox-g3 +type: application +version: 0.0.10 diff --git a/incubator/firefox-desktop-g3/0.0.10/README.md b/incubator/firefox-desktop-g3/0.0.10/README.md new file mode 100644 index 00000000000..d30e3ffa139 --- /dev/null +++ b/incubator/firefox-desktop-g3/0.0.10/README.md @@ -0,0 +1,108 @@ +# firefox-desktop-g3 + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +DESCRIPTION + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [firefox-desktop-g3](https://truecharts.org/charts/stable/firefox-desktop-g3) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `firefox-desktop-g3` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install firefox-desktop-g3 TrueCharts/firefox-desktop-g3 +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `firefox-desktop-g3` deployment + +```console +helm uninstall firefox-desktop-g3 +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install firefox-desktop-g3 \ + --set env.TZ="America/New York" \ + TrueCharts/firefox-desktop-g3 +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install firefox-desktop-g3 TrueCharts/firefox-desktop-g3 -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/firefox-desktop-g3/0.0.10/app-readme.md b/incubator/firefox-desktop-g3/0.0.10/app-readme.md new file mode 100644 index 00000000000..f0838ce52a4 --- /dev/null +++ b/incubator/firefox-desktop-g3/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +DESCRIPTION + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/firefox-desktop-g3 + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/firefox-desktop-g3/0.0.10/charts/common-10.4.6.tgz b/incubator/firefox-desktop-g3/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/firefox-desktop-g3/0.0.10/ix_values.yaml b/incubator/firefox-desktop-g3/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..bed8070fbc4 --- /dev/null +++ b/incubator/firefox-desktop-g3/0.0.10/ix_values.yaml @@ -0,0 +1,34 @@ +env: + VNC_PW: unraid + VNC_RESOLUTION: 1360x768 +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/firefox-desktop-g3 + tag: latest +persistence: + internalshare: + enabled: true + mountPath: /UNRAID_SHARE +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 6901 + protocol: HTTP + targetPort: 6901 + webuivnc: + enabled: true + ports: + webuivnc: + enabled: true + port: 5901 + protocol: TCP + targetPort: 5901 diff --git a/incubator/firefox-desktop-g3/0.0.10/questions.yaml b/incubator/firefox-desktop-g3/0.0.10/questions.yaml new file mode 100644 index 00000000000..7cc2fa877fb --- /dev/null +++ b/incubator/firefox-desktop-g3/0.0.10/questions.yaml @@ -0,0 +1,2591 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: VNC_PW + label: 'VNC_PW' + description: "The VNCnoVNC password." + schema: + type: string + default: "unraid" + - variable: VNC_RESOLUTION + label: 'VNC_RESOLUTION' + description: "The VNCnoVNC resolution." + schema: + type: string + default: "1360x768" + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: HTTP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 6901 + + - variable: webuivnc + label: 'webuivnc 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, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: webuivnc + label: "webuivnc Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 5901 + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - variable: persistence + label: "Integrated Persistent Storage" + description: "Integrated Persistent Storage" + group: "Storage and Persistence" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: internalshare + label: "internalshare Storage" + description: "Path to a share from your host to be able to work within the container." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/firefox-desktop-g3/0.0.10/templates/common.yaml b/incubator/firefox-desktop-g3/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/firefox-desktop-g3/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/firefox-desktop-g3/0.0.10/values.yaml b/incubator/firefox-desktop-g3/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/firefox-desktop-g3/item.yaml b/incubator/firefox-desktop-g3/item.yaml new file mode 100644 index 00000000000..cba8c58c2a2 --- /dev/null +++ b/incubator/firefox-desktop-g3/item.yaml @@ -0,0 +1,6 @@ +icon_url: https://truecharts.org/img/chart-icons/firefox-desktop-g3.png +categories: +- Productivity +- Tools-Utilities +- Network-Web + diff --git a/incubator/fireshare/0.0.10/CHANGELOG.md b/incubator/fireshare/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..f102e28002c --- /dev/null +++ b/incubator/fireshare/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [fireshare-0.0.10]fireshare-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [fireshare-0.0.10]fireshare-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [fireshare-0.0.10]fireshare-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [fireshare-0.0.10]fireshare-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [fireshare-0.0.10]fireshare-0.0.10 (2022-07-20) diff --git a/incubator/fireshare/0.0.10/Chart.lock b/incubator/fireshare/0.0.10/Chart.lock new file mode 100644 index 00000000000..fbb570c732e --- /dev/null +++ b/incubator/fireshare/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:05:12.024136271Z" diff --git a/incubator/fireshare/0.0.10/Chart.yaml b/incubator/fireshare/0.0.10/Chart.yaml new file mode 100644 index 00000000000..d851dcdf2e3 --- /dev/null +++ b/incubator/fireshare/0.0.10/Chart.yaml @@ -0,0 +1,32 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - Other + - MediaServer-Video +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: "Fireshare allows you to easily share your media whether that be game\ + \ clips, screen records, or movies through a unique publically accessible link.\ + \ \r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/fireshare +icon: https://truecharts.org/img/chart-icons/fireshare.png +keywords: +- fireshare +- Other +- MediaServer-Video +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: fireshare +sources: +- https://github.com/ShaneIsrael/fireshare +- https://hub.docker.com/r/shaneisrael/fireshare +type: application +version: 0.0.10 diff --git a/incubator/fireshare/0.0.10/README.md b/incubator/fireshare/0.0.10/README.md new file mode 100644 index 00000000000..efb36794d02 --- /dev/null +++ b/incubator/fireshare/0.0.10/README.md @@ -0,0 +1,108 @@ +# fireshare + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +Fireshare allows you to easily share your media whether that be game clips, screen records, or movies through a unique publically accessible link. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [fireshare](https://truecharts.org/charts/stable/fireshare) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `fireshare` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install fireshare TrueCharts/fireshare +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `fireshare` deployment + +```console +helm uninstall fireshare +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install fireshare \ + --set env.TZ="America/New York" \ + TrueCharts/fireshare +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install fireshare TrueCharts/fireshare -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/fireshare/0.0.10/app-readme.md b/incubator/fireshare/0.0.10/app-readme.md new file mode 100644 index 00000000000..f8725229c4f --- /dev/null +++ b/incubator/fireshare/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +Fireshare allows you to easily share your media whether that be game clips, screen records, or movies through a unique publically accessible link. + + +This App is supplied by TrueCharts, for more information visit the manual: 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/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/fireshare/0.0.10/charts/common-10.4.6.tgz b/incubator/fireshare/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/fireshare/0.0.10/ix_values.yaml b/incubator/fireshare/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..964b3796fb8 --- /dev/null +++ b/incubator/fireshare/0.0.10/ix_values.yaml @@ -0,0 +1,32 @@ +env: + ADMIN_PASSWORD: admin + MINUTES_BETWEEN_VIDEO_SCANS: '5' +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/fireshare + tag: latest +persistence: + data: + enabled: true + mountPath: /data + processeddata: + enabled: true + mountPath: /processed + videos: + enabled: true + mountPath: /videos +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 8080 + protocol: TCP + targetPort: 80 diff --git a/incubator/fireshare/0.0.10/questions.yaml b/incubator/fireshare/0.0.10/questions.yaml new file mode 100644 index 00000000000..de502116929 --- /dev/null +++ b/incubator/fireshare/0.0.10/questions.yaml @@ -0,0 +1,2815 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: ADMIN_PASSWORD + label: 'ADMIN_PASSWORD' + description: "The admin account password" + schema: + type: string + default: "admin" + - variable: MINUTES_BETWEEN_VIDEO_SCANS + label: 'MINUTES_BETWEEN_VIDEO_SCANS' + description: "How often in minutes Fireshare will scan for new videos" + schema: + type: string + default: "5" + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 80 + + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/fireshare/0.0.10/templates/common.yaml b/incubator/fireshare/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/fireshare/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/fireshare/0.0.10/values.yaml b/incubator/fireshare/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/fireshare/item.yaml b/incubator/fireshare/item.yaml new file mode 100644 index 00000000000..baefad3504e --- /dev/null +++ b/incubator/fireshare/item.yaml @@ -0,0 +1,5 @@ +icon_url: https://truecharts.org/img/chart-icons/fireshare.png +categories: +- Other +- MediaServer-Video + diff --git a/incubator/fistfuloffrags/0.0.10/CHANGELOG.md b/incubator/fistfuloffrags/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..8278b0aa4c8 --- /dev/null +++ b/incubator/fistfuloffrags/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [fistfuloffrags-0.0.10]fistfuloffrags-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [fistfuloffrags-0.0.10]fistfuloffrags-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [fistfuloffrags-0.0.10]fistfuloffrags-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [fistfuloffrags-0.0.10]fistfuloffrags-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [fistfuloffrags-0.0.10]fistfuloffrags-0.0.10 (2022-07-20) diff --git a/incubator/fistfuloffrags/0.0.10/Chart.lock b/incubator/fistfuloffrags/0.0.10/Chart.lock new file mode 100644 index 00000000000..f25abc487ec --- /dev/null +++ b/incubator/fistfuloffrags/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:05:14.942587116Z" diff --git a/incubator/fistfuloffrags/0.0.10/Chart.yaml b/incubator/fistfuloffrags/0.0.10/Chart.yaml new file mode 100644 index 00000000000..4ead237178e --- /dev/null +++ b/incubator/fistfuloffrags/0.0.10/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: 10.4.6 +deprecated: false +description: "This Docker will download and install SteamCMD. It will also install\ + \ Fistful of Frags and run it.\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/fistfuloffrags +icon: https://truecharts.org/img/chart-icons/fistfuloffrags.png +keywords: +- fistfuloffrags +- GameServers +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: fistfuloffrags +sources: +- https://www.steampowered.com/ +- https://hub.docker.com/r/ich777/steamcmd/ +type: application +version: 0.0.10 diff --git a/incubator/fistfuloffrags/0.0.10/README.md b/incubator/fistfuloffrags/0.0.10/README.md new file mode 100644 index 00000000000..97ff250276f --- /dev/null +++ b/incubator/fistfuloffrags/0.0.10/README.md @@ -0,0 +1,108 @@ +# fistfuloffrags + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +This Docker will download and install SteamCMD. It will also install Fistful of Frags and run it. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [fistfuloffrags](https://truecharts.org/charts/stable/fistfuloffrags) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `fistfuloffrags` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install fistfuloffrags TrueCharts/fistfuloffrags +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `fistfuloffrags` deployment + +```console +helm uninstall fistfuloffrags +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install fistfuloffrags \ + --set env.TZ="America/New York" \ + TrueCharts/fistfuloffrags +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install fistfuloffrags TrueCharts/fistfuloffrags -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/fistfuloffrags/0.0.10/app-readme.md b/incubator/fistfuloffrags/0.0.10/app-readme.md new file mode 100644 index 00000000000..9b9712aa6ef --- /dev/null +++ b/incubator/fistfuloffrags/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +This Docker will download and install SteamCMD. It will also install Fistful of Frags and run it. + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/fistfuloffrags + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/fistfuloffrags/0.0.10/charts/common-10.4.6.tgz b/incubator/fistfuloffrags/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/fistfuloffrags/0.0.10/ix_values.yaml b/incubator/fistfuloffrags/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..e511e2bc302 --- /dev/null +++ b/incubator/fistfuloffrags/0.0.10/ix_values.yaml @@ -0,0 +1,49 @@ +env: + GAME_ID: '295230' + GAME_NAME: fof + GAME_PARAMS: +maxplayers 20 +map fof_fistful + GAME_PORT: '27015' + PASSWRD: '' + USERNAME: '' + VALIDATE: '' +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/fistfuloffrags + tag: latest +persistence: + serverfiles: + enabled: true + mountPath: /serverdata/serverfiles + steamcmd: + enabled: true + mountPath: /serverdata/steamcmd +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +probes: + liveness: + port: '{{ .Values.service.tcprcon.ports.tcprcon.targetPort }}' + readiness: + port: '{{ .Values.service.tcprcon.ports.tcprcon.targetPort }}' + startup: + port: '{{ .Values.service.tcprcon.ports.tcprcon.targetPort }}' +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 27015 + protocol: UDP + targetPort: 27015 + tcprcon: + enabled: true + ports: + tcprcon: + enabled: true + port: 27015 + protocol: TCP + targetPort: 27015 diff --git a/incubator/fistfuloffrags/0.0.10/questions.yaml b/incubator/fistfuloffrags/0.0.10/questions.yaml new file mode 100644 index 00000000000..3697fa3db91 --- /dev/null +++ b/incubator/fistfuloffrags/0.0.10/questions.yaml @@ -0,0 +1,2799 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: GAME_ID + label: 'GAME_ID' + description: "The GAMEID that the container download at startup.(httpsdeveloper.valvesoftware.comwikiDedicatedServersList)" + schema: + type: string + default: "295230" + - variable: GAME_NAME + label: 'GAME_NAME' + description: "Game name to start (is connected to the GAMEPARAMS)." + schema: + type: string + default: "fof" + - variable: GAME_PARAMS + label: 'GAME_PARAMS' + description: "Enter your start up commands for the server." + schema: + type: string + default: "+maxplayers 20 +map fof_fistful" + - variable: USERNAME + label: 'USERNAME' + description: "Your Steam username goes here if you want to install a game that needs a valid account, otherwise leave it blank (ATTENTION You have to disable Steam Guard)." + schema: + type: string + default: "" + - variable: VALIDATE + label: 'VALIDATE' + description: "Set the Variable to true if you want to validate the installation otherwise leave it blank." + schema: + type: string + default: "" + - variable: PASSWRD + label: 'PASSWRD' + description: "Your Steam password goes here if you want to install a game that needs a valid account, otherwise leave it blank (ATTENTION You have to disable Steam Guard)." + schema: + type: string + default: "" + - variable: GAME_PORT + label: 'GAME_PORT' + description: "Container Variable GAMEPORT" + schema: + type: string + default: "27015" + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 27015 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: UDP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 27015 + + - variable: tcprcon + label: 'tcprcon service' + description: "TCP RCON Port (not required)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: tcprcon + label: "tcprcon Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 27015 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 27015 + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - variable: persistence + label: "Integrated Persistent Storage" + description: "Integrated Persistent Storage" + group: "Storage and Persistence" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: steamcmd + label: "steamcmd Storage" + description: "Container Path serverdatasteamcmd" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: serverfiles + label: "serverfiles Storage" + description: "Container Path serverdataserverfiles" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/fistfuloffrags/0.0.10/templates/common.yaml b/incubator/fistfuloffrags/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/fistfuloffrags/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/fistfuloffrags/0.0.10/values.yaml b/incubator/fistfuloffrags/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/fistfuloffrags/item.yaml b/incubator/fistfuloffrags/item.yaml new file mode 100644 index 00000000000..430ef1ac8a1 --- /dev/null +++ b/incubator/fistfuloffrags/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/fistfuloffrags.png +categories: +- GameServers + diff --git a/incubator/fivem/0.0.10/CHANGELOG.md b/incubator/fivem/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..f4b9f2f333d --- /dev/null +++ b/incubator/fivem/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [fivem-0.0.10]fivem-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [fivem-0.0.10]fivem-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [fivem-0.0.10]fivem-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [fivem-0.0.10]fivem-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [fivem-0.0.10]fivem-0.0.10 (2022-07-20) diff --git a/incubator/fivem/0.0.10/Chart.lock b/incubator/fivem/0.0.10/Chart.lock new file mode 100644 index 00000000000..362d90736ae --- /dev/null +++ b/incubator/fivem/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:05:15.22508874Z" diff --git a/incubator/fivem/0.0.10/Chart.yaml b/incubator/fivem/0.0.10/Chart.yaml new file mode 100644 index 00000000000..49614353150 --- /dev/null +++ b/incubator/fivem/0.0.10/Chart.yaml @@ -0,0 +1,34 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - GameServers +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: "With this Docker you can run FiveM (GTA V MOD SERVER) it will automatically\ + \ download the latest version or if you want to updated it yourself set the \u2018\ + Manual Updates\u2019 (in the 'Show more settings' tab down below) to \u2018true\u2019\ + \ (without quotes). The Docker will automatically extract it and download all other\ + \ required files (resources, server.cfg). You can get fx.tar.xz from here: https://runtime.fivem.net/artifacts/fivem/build_proot_linux/master/\ + \ To run this container you must provide a valid Server Key (you can get them from\ + \ here: https://keymaster.fivem.net/) and your prefered Server Name.\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/fivem +icon: https://truecharts.org/img/chart-icons/fivem.png +keywords: +- fivem +- GameServers +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: fivem +sources: +- https://fivem.net/ +- https://hub.docker.com/r/ich777/fivemserver/ +type: application +version: 0.0.10 diff --git a/incubator/fivem/0.0.10/README.md b/incubator/fivem/0.0.10/README.md new file mode 100644 index 00000000000..ddae7fa303f --- /dev/null +++ b/incubator/fivem/0.0.10/README.md @@ -0,0 +1,108 @@ +# fivem + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +With this Docker you can run FiveM (GTA V MOD SERVER) it will automatically download the latest version or if you want to updated it yourself set the ‘Manual Updates’ (in the 'Show more settings' tab down below) to ‘true’ (without quotes). The Docker will automatically extract it and download all other required files (resources, server.cfg). You can get fx.tar.xz from here: https://runtime.fivem.net/artifacts/fivem/build_proot_linux/master/ To run this container you must provide a valid Server Key (you can get them from here: https://keymaster.fivem.net/) and your prefered Server Name. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [fivem](https://truecharts.org/charts/stable/fivem) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `fivem` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install fivem TrueCharts/fivem +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `fivem` deployment + +```console +helm uninstall fivem +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install fivem \ + --set env.TZ="America/New York" \ + TrueCharts/fivem +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install fivem TrueCharts/fivem -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/fivem/0.0.10/app-readme.md b/incubator/fivem/0.0.10/app-readme.md new file mode 100644 index 00000000000..f9222330e22 --- /dev/null +++ b/incubator/fivem/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +With this Docker you can run FiveM (GTA V MOD SERVER) it will automatically download the latest version or if you want to updated it yourself set the ‘Manual Updates’ (in the 'Show more settings' tab down below) to ‘true’ (without quotes). The Docker will automatically extract it and download all other required files (resources, server.cfg). You can get fx.tar.xz from here: https://runtime.fivem.net/artifacts/fivem/build_proot_linux/master/ To run this container you must provide a valid Server Key (you can get them from here: https://keymaster.fivem.net/) and your prefered Server Name. + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/fivem + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/fivem/0.0.10/charts/common-10.4.6.tgz b/incubator/fivem/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/fivem/0.0.10/ix_values.yaml b/incubator/fivem/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..bfb7b9a1651 --- /dev/null +++ b/incubator/fivem/0.0.10/ix_values.yaml @@ -0,0 +1,62 @@ +env: + GAME_CONFIG: server.cfg + MANUAL_UPDATES: '' + SERVER_KEY: '' + SRV_ADR: https://runtime.fivem.net/artifacts/fivem/build_proot_linux/master/ + SRV_NAME: '' + START_VARS: '' +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/fivem + tag: latest +persistence: + serverfiles: + enabled: true + mountPath: /serverdata/serverfiles +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 9016 + protocol: HTTP + targetPort: 8080 + tcp1: + enabled: true + ports: + tcp1: + enabled: true + port: 30110 + protocol: TCP + targetPort: 30110 + tcp2: + enabled: true + ports: + tcp2: + enabled: true + port: 30120 + protocol: TCP + targetPort: 30120 + udp1: + enabled: true + ports: + udp1: + enabled: true + port: 30110 + protocol: UDP + targetPort: 30110 + udp2: + enabled: true + ports: + udp2: + enabled: true + port: 30120 + protocol: UDP + targetPort: 30120 diff --git a/incubator/fivem/0.0.10/questions.yaml b/incubator/fivem/0.0.10/questions.yaml new file mode 100644 index 00000000000..969dee4b320 --- /dev/null +++ b/incubator/fivem/0.0.10/questions.yaml @@ -0,0 +1,3009 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: GAME_CONFIG + label: 'GAME_CONFIG' + description: "You can edit the server.cfg after the first start (if you dont want to use the server.cfg then leave this field empty. For exampele if you plan to use txAdmin you have to add another port in the template with the host and container port 40120, you then can connect to txAdmin with YOURSERVERIP40120)." + schema: + type: string + default: "server.cfg" + - variable: START_VARS + label: 'START_VARS' + description: "Extra start variables." + schema: + type: string + default: "" + - variable: SRV_NAME + label: 'SRV_NAME' + description: "Your Servername" + schema: + type: string + default: "" + - variable: SERVER_KEY + label: 'SERVER_KEY' + description: "Your Server Key from httpskeymaster.fivem.net" + schema: + type: string + default: "" + - variable: SRV_ADR + label: 'SRV_ADR' + description: "Looks something like this httpsruntime.fivem.netartifactsfivembuildprootlinuxmaster" + schema: + type: string + default: "https://runtime.fivem.net/artifacts/fivem/build_proot_linux/master/" + - variable: MANUAL_UPDATES + label: 'MANUAL_UPDATES' + description: "Set this to true without quotes to update your server manually (otherwise leave blank)" + schema: + type: string + default: "" + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 9016 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: HTTP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 8080 + + - variable: tcp1 + label: 'tcp1 service' + description: "Container Port 30110" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: tcp1 + label: "tcp1 Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 30110 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 30110 + - variable: tcp2 + label: 'tcp2 service' + description: "Container Port 30120" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: tcp2 + label: "tcp2 Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 30120 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 30120 + - variable: udp1 + label: 'udp1 service' + description: "Container Port 30110" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: udp1 + label: "udp1 Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 30110 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: UDP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 30110 + - variable: udp2 + label: 'udp2 service' + description: "Container Port 30120" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: udp2 + label: "udp2 Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 30120 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: UDP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 30120 + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - variable: persistence + label: "Integrated Persistent Storage" + description: "Integrated Persistent Storage" + group: "Storage and Persistence" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: serverfiles + label: "serverfiles Storage" + description: "Container Path serverdataserverfiles" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/fivem/0.0.10/templates/common.yaml b/incubator/fivem/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/fivem/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/fivem/0.0.10/values.yaml b/incubator/fivem/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/fivem/item.yaml b/incubator/fivem/item.yaml new file mode 100644 index 00000000000..32d0d948545 --- /dev/null +++ b/incubator/fivem/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/fivem.png +categories: +- GameServers + diff --git a/incubator/flame/0.0.10/CHANGELOG.md b/incubator/flame/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..d7b5e87bc8e --- /dev/null +++ b/incubator/flame/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [flame-0.0.10]flame-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [flame-0.0.10]flame-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [flame-0.0.10]flame-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [flame-0.0.10]flame-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [flame-0.0.10]flame-0.0.10 (2022-07-20) diff --git a/incubator/flame/0.0.10/Chart.lock b/incubator/flame/0.0.10/Chart.lock new file mode 100644 index 00000000000..b1964a237b4 --- /dev/null +++ b/incubator/flame/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:05:23.503380354Z" diff --git a/incubator/flame/0.0.10/Chart.yaml b/incubator/flame/0.0.10/Chart.yaml new file mode 100644 index 00000000000..e3ea2b61ae2 --- /dev/null +++ b/incubator/flame/0.0.10/Chart.yaml @@ -0,0 +1,31 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - Tools-Utilities + - Network-Web +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: Flame is self-hosted startpage for your server. Easily manage your apps + and bookmarks with built-in editors. +home: https://github.com/truecharts/apps/tree/master/charts/stable/flame +icon: https://truecharts.org/img/chart-icons/flame.png +keywords: +- flame +- Tools-Utilities +- Network-Web +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: flame +sources: +- https://github.com/pawelmalak/flame +- https://hub.docker.com/r/pawelmalak/flame +type: application +version: 0.0.10 diff --git a/incubator/flame/0.0.10/README.md b/incubator/flame/0.0.10/README.md new file mode 100644 index 00000000000..175cbac47bf --- /dev/null +++ b/incubator/flame/0.0.10/README.md @@ -0,0 +1,108 @@ +# flame + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +Flame is self-hosted startpage for your server. Easily manage your apps and bookmarks with built-in editors. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [flame](https://truecharts.org/charts/stable/flame) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `flame` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install flame TrueCharts/flame +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `flame` deployment + +```console +helm uninstall flame +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install flame \ + --set env.TZ="America/New York" \ + TrueCharts/flame +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install flame TrueCharts/flame -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/flame/0.0.10/app-readme.md b/incubator/flame/0.0.10/app-readme.md new file mode 100644 index 00000000000..37dde72db58 --- /dev/null +++ b/incubator/flame/0.0.10/app-readme.md @@ -0,0 +1,8 @@ +Flame is self-hosted startpage 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 + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/flame/0.0.10/charts/common-10.4.6.tgz b/incubator/flame/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/flame/0.0.10/ix_values.yaml b/incubator/flame/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..461c1391f71 --- /dev/null +++ b/incubator/flame/0.0.10/ix_values.yaml @@ -0,0 +1,25 @@ +env: + PASSWORD: flame_password +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/flame + tag: latest +persistence: + data: + enabled: true + mountPath: /app/data +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 5030 + protocol: TCP + targetPort: 5005 diff --git a/incubator/flame/0.0.10/questions.yaml b/incubator/flame/0.0.10/questions.yaml new file mode 100644 index 00000000000..ce9843b0d06 --- /dev/null +++ b/incubator/flame/0.0.10/questions.yaml @@ -0,0 +1,2455 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: PASSWORD + label: 'PASSWORD' + description: "Container Variable PASSWORD" + schema: + type: string + default: "flame_password" + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 5030 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 5005 + + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/flame/0.0.10/templates/common.yaml b/incubator/flame/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/flame/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/flame/0.0.10/values.yaml b/incubator/flame/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/flame/item.yaml b/incubator/flame/item.yaml new file mode 100644 index 00000000000..fa65ad3ef66 --- /dev/null +++ b/incubator/flame/item.yaml @@ -0,0 +1,5 @@ +icon_url: https://truecharts.org/img/chart-icons/flame.png +categories: +- Tools-Utilities +- Network-Web + diff --git a/incubator/flashpaper/0.0.10/CHANGELOG.md b/incubator/flashpaper/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..24172cbd141 --- /dev/null +++ b/incubator/flashpaper/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [flashpaper-0.0.10]flashpaper-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [flashpaper-0.0.10]flashpaper-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [flashpaper-0.0.10]flashpaper-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [flashpaper-0.0.10]flashpaper-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [flashpaper-0.0.10]flashpaper-0.0.10 (2022-07-20) diff --git a/incubator/flashpaper/0.0.10/Chart.lock b/incubator/flashpaper/0.0.10/Chart.lock new file mode 100644 index 00000000000..16f85b7f3b5 --- /dev/null +++ b/incubator/flashpaper/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:05:27.996388567Z" diff --git a/incubator/flashpaper/0.0.10/Chart.yaml b/incubator/flashpaper/0.0.10/Chart.yaml new file mode 100644 index 00000000000..7b19085db3c --- /dev/null +++ b/incubator/flashpaper/0.0.10/Chart.yaml @@ -0,0 +1,36 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - Cloud + - Productivity + - Security + - Tools-Utilities + - Network-Web +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: "DESCRIPTION\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/flashpaper +icon: https://truecharts.org/img/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/AndrewPaglusch/FlashPaper +- https://hub.docker.com/r/andrewpaglusch/flashpaper +type: application +version: 0.0.10 diff --git a/incubator/flashpaper/0.0.10/README.md b/incubator/flashpaper/0.0.10/README.md new file mode 100644 index 00000000000..6493f5168c4 --- /dev/null +++ b/incubator/flashpaper/0.0.10/README.md @@ -0,0 +1,108 @@ +# flashpaper + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +DESCRIPTION + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [flashpaper](https://truecharts.org/charts/stable/flashpaper) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `flashpaper` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install flashpaper TrueCharts/flashpaper +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `flashpaper` deployment + +```console +helm uninstall flashpaper +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install flashpaper \ + --set env.TZ="America/New York" \ + TrueCharts/flashpaper +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install flashpaper TrueCharts/flashpaper -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/flashpaper/0.0.10/app-readme.md b/incubator/flashpaper/0.0.10/app-readme.md new file mode 100644 index 00000000000..781619805af --- /dev/null +++ b/incubator/flashpaper/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +DESCRIPTION + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/flashpaper + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/flashpaper/0.0.10/charts/common-10.4.6.tgz b/incubator/flashpaper/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/flashpaper/0.0.10/ix_values.yaml b/incubator/flashpaper/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..9020d55def4 --- /dev/null +++ b/incubator/flashpaper/0.0.10/ix_values.yaml @@ -0,0 +1,41 @@ +env: + ANNOUNCEMENT: '' + MAX_SECRET_LENGTH: '3000' + MESSAGES_CONFIRM_VIEW_SECRET_BUTTON: View Secret + MESSAGES_CONFIRM_VIEW_SECRET_HEADER: View this secret? + MESSAGES_ERROR_SECRET_TOO_LONG: Input length too long + MESSAGES_SUBMIT_SECRET_BUTTON: Encrypt Message + MESSAGES_SUBMIT_SECRET_HEADER: Create A Self-Destructing Message + MESSAGES_SUBMIT_SECRET_SUBHEADER: '' + MESSAGES_VIEW_CODE_HEADER: Self-Destructing URL + MESSAGES_VIEW_CODE_SUBHEADER: Share this URL via email, chat, or another messaging + service. It will self-destruct after being viewed once. + MESSAGES_VIEW_SECRET_HEADER: This message has been destroyed + PRUNE_ENABLED: 'true' + PRUNE_MAX_DAYS: '730' + PRUNE_MIN_DAYS: '365' + RETURN_FULL_URL: 'true' + SITE_TITLE: FlashPaper - Self-Destructing Message +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/flashpaper + tag: latest +persistence: + data: + enabled: true + mountPath: /var/www/html/data +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 8544 + protocol: TCP + targetPort: 80 diff --git a/incubator/flashpaper/0.0.10/questions.yaml b/incubator/flashpaper/0.0.10/questions.yaml new file mode 100644 index 00000000000..cdd60ec4266 --- /dev/null +++ b/incubator/flashpaper/0.0.10/questions.yaml @@ -0,0 +1,2528 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container 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: string + default: "true" + - variable: MAX_SECRET_LENGTH + label: 'MAX_SECRET_LENGTH' + schema: + type: string + 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: string + default: "true" + - variable: PRUNE_MIN_DAYS + label: 'PRUNE_MIN_DAYS' + schema: + type: string + default: "365" + - variable: PRUNE_MAX_DAYS + label: 'PRUNE_MAX_DAYS' + schema: + type: string + default: "730" + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 80 + + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/flashpaper/0.0.10/templates/common.yaml b/incubator/flashpaper/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/flashpaper/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/flashpaper/0.0.10/values.yaml b/incubator/flashpaper/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/flashpaper/item.yaml b/incubator/flashpaper/item.yaml new file mode 100644 index 00000000000..a0812c6814e --- /dev/null +++ b/incubator/flashpaper/item.yaml @@ -0,0 +1,8 @@ +icon_url: https://truecharts.org/img/chart-icons/flashpaper.png +categories: +- Cloud +- Productivity +- Security +- Tools-Utilities +- Network-Web + diff --git a/incubator/flextv/0.0.10/CHANGELOG.md b/incubator/flextv/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..06e87fffd44 --- /dev/null +++ b/incubator/flextv/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [flextv-0.0.10]flextv-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [flextv-0.0.10]flextv-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [flextv-0.0.10]flextv-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [flextv-0.0.10]flextv-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [flextv-0.0.10]flextv-0.0.10 (2022-07-20) diff --git a/incubator/flextv/0.0.10/Chart.lock b/incubator/flextv/0.0.10/Chart.lock new file mode 100644 index 00000000000..6933e565ee2 --- /dev/null +++ b/incubator/flextv/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:05:30.726370722Z" diff --git a/incubator/flextv/0.0.10/Chart.yaml b/incubator/flextv/0.0.10/Chart.yaml new file mode 100644 index 00000000000..61fe776ba53 --- /dev/null +++ b/incubator/flextv/0.0.10/Chart.yaml @@ -0,0 +1,28 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - MediaApp +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: A super-sexy voice interface for the Plex HTPC. +home: https://github.com/truecharts/apps/tree/master/charts/stable/flextv +icon: https://truecharts.org/img/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/d8ahazard/FlexTV +- https://registry.hub.docker.com/r/jcreynolds/flextv/ +type: application +version: 0.0.10 diff --git a/incubator/flextv/0.0.10/README.md b/incubator/flextv/0.0.10/README.md new file mode 100644 index 00000000000..11bbd195e92 --- /dev/null +++ b/incubator/flextv/0.0.10/README.md @@ -0,0 +1,108 @@ +# flextv + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +A super-sexy voice interface for the Plex HTPC. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [flextv](https://truecharts.org/charts/stable/flextv) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `flextv` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install flextv TrueCharts/flextv +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `flextv` deployment + +```console +helm uninstall flextv +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install flextv \ + --set env.TZ="America/New York" \ + TrueCharts/flextv +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install flextv TrueCharts/flextv -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/flextv/0.0.10/app-readme.md b/incubator/flextv/0.0.10/app-readme.md new file mode 100644 index 00000000000..65b7ee5a183 --- /dev/null +++ b/incubator/flextv/0.0.10/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 + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/flextv/0.0.10/charts/common-10.4.6.tgz b/incubator/flextv/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/flextv/0.0.10/ix_values.yaml b/incubator/flextv/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..6d8af48b438 --- /dev/null +++ b/incubator/flextv/0.0.10/ix_values.yaml @@ -0,0 +1,33 @@ +env: + UMASK: '000' +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/flextv + tag: latest +persistence: + config: + enabled: true + mountPath: /config +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 5666 + protocol: HTTP + targetPort: 80 + tcpport1: + enabled: true + ports: + tcpport1: + enabled: true + port: 5667 + protocol: TCP + targetPort: 443 diff --git a/incubator/flextv/0.0.10/questions.yaml b/incubator/flextv/0.0.10/questions.yaml new file mode 100644 index 00000000000..d45b3bcaafa --- /dev/null +++ b/incubator/flextv/0.0.10/questions.yaml @@ -0,0 +1,2583 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container 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: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: HTTP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 80 + + - 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, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 443 + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/flextv/0.0.10/templates/common.yaml b/incubator/flextv/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/flextv/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/flextv/0.0.10/values.yaml b/incubator/flextv/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/flextv/item.yaml b/incubator/flextv/item.yaml new file mode 100644 index 00000000000..d72f80ce0ff --- /dev/null +++ b/incubator/flextv/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/flextv.png +categories: +- MediaApp + diff --git a/incubator/fluttercoin-wallet/0.0.10/CHANGELOG.md b/incubator/fluttercoin-wallet/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..189b4e8fb8e --- /dev/null +++ b/incubator/fluttercoin-wallet/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [fluttercoin-wallet-0.0.10]fluttercoin-wallet-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [fluttercoin-wallet-0.0.10]fluttercoin-wallet-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [fluttercoin-wallet-0.0.10]fluttercoin-wallet-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [fluttercoin-wallet-0.0.10]fluttercoin-wallet-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [fluttercoin-wallet-0.0.10]fluttercoin-wallet-0.0.10 (2022-07-20) diff --git a/incubator/fluttercoin-wallet/0.0.10/Chart.lock b/incubator/fluttercoin-wallet/0.0.10/Chart.lock new file mode 100644 index 00000000000..b220c403f14 --- /dev/null +++ b/incubator/fluttercoin-wallet/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:05:31.978600234Z" diff --git a/incubator/fluttercoin-wallet/0.0.10/Chart.yaml b/incubator/fluttercoin-wallet/0.0.10/Chart.yaml new file mode 100644 index 00000000000..e31fabffad6 --- /dev/null +++ b/incubator/fluttercoin-wallet/0.0.10/Chart.yaml @@ -0,0 +1,35 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - Network-Other + - Productivity + - Tools-Utilities + - Crypto +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: "FlutterCoin may be a coin with the tried and true algorithm of scrypt,\ + \ but it's definitely anything but ordinary.\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/fluttercoin-wallet +icon: https://truecharts.org/img/chart-icons/fluttercoin-wallet.png +keywords: +- fluttercoin-wallet +- Network-Other +- Productivity +- Tools-Utilities +- Crypto +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: fluttercoin-wallet +sources: +- https://fluttercoin.me/ +- https://hub.docker.com/r/ich777/fluttercoin +type: application +version: 0.0.10 diff --git a/incubator/fluttercoin-wallet/0.0.10/README.md b/incubator/fluttercoin-wallet/0.0.10/README.md new file mode 100644 index 00000000000..1f293eaac42 --- /dev/null +++ b/incubator/fluttercoin-wallet/0.0.10/README.md @@ -0,0 +1,108 @@ +# fluttercoin-wallet + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +FlutterCoin may be a coin with the tried and true algorithm of scrypt, but it's definitely anything but ordinary. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [fluttercoin-wallet](https://truecharts.org/charts/stable/fluttercoin-wallet) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `fluttercoin-wallet` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install fluttercoin-wallet TrueCharts/fluttercoin-wallet +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `fluttercoin-wallet` deployment + +```console +helm uninstall fluttercoin-wallet +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install fluttercoin-wallet \ + --set env.TZ="America/New York" \ + TrueCharts/fluttercoin-wallet +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install fluttercoin-wallet TrueCharts/fluttercoin-wallet -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/fluttercoin-wallet/0.0.10/app-readme.md b/incubator/fluttercoin-wallet/0.0.10/app-readme.md new file mode 100644 index 00000000000..a92b737cb62 --- /dev/null +++ b/incubator/fluttercoin-wallet/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +FlutterCoin may be a coin with the tried and true algorithm of scrypt, but it's definitely anything but ordinary. + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/fluttercoin-wallet + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/fluttercoin-wallet/0.0.10/charts/common-10.4.6.tgz b/incubator/fluttercoin-wallet/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/fluttercoin-wallet/0.0.10/ix_values.yaml b/incubator/fluttercoin-wallet/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..4baab1faf9b --- /dev/null +++ b/incubator/fluttercoin-wallet/0.0.10/ix_values.yaml @@ -0,0 +1,45 @@ +env: + CUSTOM_RES_H: '768' + CUSTOM_RES_W: '1024' + DATA_PERM: '770' + EXTRA_PARAMS: -bind=0.0.0.0 + UMASK: '000' +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/fluttercoin-wallet + tag: latest +persistence: + datapath: + enabled: true + mountPath: /fluttercoin +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + jsonremoteport: + enabled: true + ports: + jsonremoteport: + enabled: true + port: 7474 + protocol: TCP + targetPort: 7474 + main: + enabled: true + ports: + main: + enabled: true + port: 8080 + protocol: HTTP + targetPort: 8080 + peertopeerconn: + enabled: true + ports: + peertopeerconn: + enabled: true + port: 7408 + protocol: TCP + targetPort: 7408 diff --git a/incubator/fluttercoin-wallet/0.0.10/questions.yaml b/incubator/fluttercoin-wallet/0.0.10/questions.yaml new file mode 100644 index 00000000000..98916052f77 --- /dev/null +++ b/incubator/fluttercoin-wallet/0.0.10/questions.yaml @@ -0,0 +1,2741 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: EXTRA_PARAMS + label: 'EXTRA_PARAMS' + description: "Leave empty if not needed (eg -upnp, -dns,... without quotes)" + schema: + type: string + default: "-bind=0.0.0.0" + - variable: CUSTOM_RES_H + label: 'CUSTOM_RES_H' + description: "Minimum screen hight 768 pixels" + schema: + type: string + default: "768" + - variable: UMASK + label: 'UMASK' + description: "Container Variable UMASK" + schema: + type: string + default: "000" + - variable: DATA_PERM + label: 'DATA_PERM' + description: "Container Variable DATAPERM" + schema: + type: string + default: "770" + - variable: CUSTOM_RES_W + label: 'CUSTOM_RES_W' + description: "Minimum screen width 1024 pixels" + schema: + type: string + default: "1024" + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: HTTP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 8080 + + - variable: peertopeerconn + label: 'peertopeerconn service' + description: "TCP Port for Peer to Peer connection" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: peertopeerconn + label: "peertopeerconn Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 7408 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 7408 + - variable: jsonremoteport + label: 'jsonremoteport service' + description: "TCP Port for Remote Connections" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: jsonremoteport + label: "jsonremoteport Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 7474 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 7474 + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - variable: persistence + label: "Integrated Persistent Storage" + description: "Integrated Persistent Storage" + group: "Storage and Persistence" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: datapath + label: "datapath Storage" + description: "Please keep in mind that your wallet is stored there and I strongly recommend you to backup that path (the wallet is stored in your FlutterCoin appdata directory.fluttercoinwallet.dat)." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/fluttercoin-wallet/0.0.10/templates/common.yaml b/incubator/fluttercoin-wallet/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/fluttercoin-wallet/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/fluttercoin-wallet/0.0.10/values.yaml b/incubator/fluttercoin-wallet/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/fluttercoin-wallet/item.yaml b/incubator/fluttercoin-wallet/item.yaml new file mode 100644 index 00000000000..f6a33afeff4 --- /dev/null +++ b/incubator/fluttercoin-wallet/item.yaml @@ -0,0 +1,7 @@ +icon_url: https://truecharts.org/img/chart-icons/fluttercoin-wallet.png +categories: +- Network-Other +- Productivity +- Tools-Utilities +- Crypto + diff --git a/incubator/fmd2-wine/0.0.10/CHANGELOG.md b/incubator/fmd2-wine/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..5f0e7301650 --- /dev/null +++ b/incubator/fmd2-wine/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [fmd2-wine-0.0.10]fmd2-wine-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [fmd2-wine-0.0.10]fmd2-wine-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [fmd2-wine-0.0.10]fmd2-wine-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [fmd2-wine-0.0.10]fmd2-wine-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [fmd2-wine-0.0.10]fmd2-wine-0.0.10 (2022-07-20) diff --git a/incubator/fmd2-wine/0.0.10/Chart.lock b/incubator/fmd2-wine/0.0.10/Chart.lock new file mode 100644 index 00000000000..830ce927bad --- /dev/null +++ b/incubator/fmd2-wine/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:05:39.759550375Z" diff --git a/incubator/fmd2-wine/0.0.10/Chart.yaml b/incubator/fmd2-wine/0.0.10/Chart.yaml new file mode 100644 index 00000000000..5f700e84265 --- /dev/null +++ b/incubator/fmd2-wine/0.0.10/Chart.yaml @@ -0,0 +1,32 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - Downloaders + - MediaApp-Books +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: "**FMD2:** This is an active fork of the Free Manga Downloader which\ + \ is a free open source application written in Object Pascal for managing and downloading\ + \ manga from various websites. \r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/fmd2-wine +icon: https://truecharts.org/img/chart-icons/fmd2-wine.png +keywords: +- fmd2-wine +- Downloaders +- MediaApp-Books +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: fmd2-wine +sources: +- https://github.com/Banh-Canh/docker-FMD2 +- https://hub.docker.com/r/banhcanh/docker-fmd2/ +type: application +version: 0.0.10 diff --git a/incubator/fmd2-wine/0.0.10/README.md b/incubator/fmd2-wine/0.0.10/README.md new file mode 100644 index 00000000000..0922876453d --- /dev/null +++ b/incubator/fmd2-wine/0.0.10/README.md @@ -0,0 +1,108 @@ +# fmd2-wine + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +**FMD2:** This is an active fork of the Free Manga Downloader which is a free open source application written in Object Pascal for managing and downloading manga from various websites. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [fmd2-wine](https://truecharts.org/charts/stable/fmd2-wine) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `fmd2-wine` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install fmd2-wine TrueCharts/fmd2-wine +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `fmd2-wine` deployment + +```console +helm uninstall fmd2-wine +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install fmd2-wine \ + --set env.TZ="America/New York" \ + TrueCharts/fmd2-wine +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install fmd2-wine TrueCharts/fmd2-wine -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/fmd2-wine/0.0.10/app-readme.md b/incubator/fmd2-wine/0.0.10/app-readme.md new file mode 100644 index 00000000000..860f8270c57 --- /dev/null +++ b/incubator/fmd2-wine/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +**FMD2:** This is an active fork of the Free Manga Downloader which is a free open source application written in Object Pascal for managing and downloading manga from various websites. + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/fmd2-wine + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/fmd2-wine/0.0.10/charts/common-10.4.6.tgz b/incubator/fmd2-wine/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/fmd2-wine/0.0.10/ix_values.yaml b/incubator/fmd2-wine/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..8dba074bdd3 --- /dev/null +++ b/incubator/fmd2-wine/0.0.10/ix_values.yaml @@ -0,0 +1,37 @@ +env: + UMASK: '002' +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/fmd2-wine + tag: latest +persistence: + appluamodulespath: + enabled: true + mountPath: /app/FMD2/lua + appuserdata: + enabled: true + mountPath: /app/FMD2/userdata + appwineconfig: + enabled: true + mountPath: /config/.wine + data: + enabled: true + mountPath: /app/FMD2/data + downloaddirectory: + enabled: true + mountPath: /downloads +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 6080 + protocol: TCP + targetPort: 6080 diff --git a/incubator/fmd2-wine/0.0.10/questions.yaml b/incubator/fmd2-wine/0.0.10/questions.yaml new file mode 100644 index 00000000000..db1a58aaa2b --- /dev/null +++ b/incubator/fmd2-wine/0.0.10/questions.yaml @@ -0,0 +1,3163 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: UMASK + label: 'UMASK' + description: "Container Variable UMASK" + schema: + type: string + default: "002" + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 6080 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 6080 + + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - variable: persistence + label: "Integrated Persistent Storage" + description: "Integrated Persistent Storage" + group: "Storage and Persistence" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: downloaddirectory + label: "downloaddirectory Storage" + description: "Container Path 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: appluamodulespath + label: "appluamodulespath Storage" + description: "Container Path appFMD2lua" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: data + label: "data Storage" + description: "Container Path appFMD2data" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: appwineconfig + label: "appwineconfig Storage" + description: "Container Path config.wine" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: appuserdata + label: "appuserdata Storage" + description: "Container Path appFMD2userdata" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/fmd2-wine/0.0.10/templates/common.yaml b/incubator/fmd2-wine/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/fmd2-wine/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/fmd2-wine/0.0.10/values.yaml b/incubator/fmd2-wine/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/fmd2-wine/item.yaml b/incubator/fmd2-wine/item.yaml new file mode 100644 index 00000000000..eb31a548345 --- /dev/null +++ b/incubator/fmd2-wine/item.yaml @@ -0,0 +1,5 @@ +icon_url: https://truecharts.org/img/chart-icons/fmd2-wine.png +categories: +- Downloaders +- MediaApp-Books + diff --git a/incubator/fogproject/0.0.10/CHANGELOG.md b/incubator/fogproject/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..f7da3b04170 --- /dev/null +++ b/incubator/fogproject/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [fogproject-0.0.10]fogproject-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [fogproject-0.0.10]fogproject-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [fogproject-0.0.10]fogproject-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [fogproject-0.0.10]fogproject-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [fogproject-0.0.10]fogproject-0.0.10 (2022-07-20) diff --git a/incubator/fogproject/0.0.10/Chart.lock b/incubator/fogproject/0.0.10/Chart.lock new file mode 100644 index 00000000000..bf8b7065ce3 --- /dev/null +++ b/incubator/fogproject/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:05:44.330945086Z" diff --git a/incubator/fogproject/0.0.10/Chart.yaml b/incubator/fogproject/0.0.10/Chart.yaml new file mode 100644 index 00000000000..cd961916146 --- /dev/null +++ b/incubator/fogproject/0.0.10/Chart.yaml @@ -0,0 +1,30 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - Backup + - Network-DNS +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: "FOG Project can capture, deploy, and manage Windows, Mac OSX, and various\ + \ Linux distributions.\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/fogproject +icon: https://truecharts.org/img/chart-icons/fogproject.png +keywords: +- fogproject +- Backup +- Network-DNS +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: fogproject +sources: +- https://github.com/redvex2460/fogproject +type: application +version: 0.0.10 diff --git a/incubator/fogproject/0.0.10/README.md b/incubator/fogproject/0.0.10/README.md new file mode 100644 index 00000000000..6f8708c8c28 --- /dev/null +++ b/incubator/fogproject/0.0.10/README.md @@ -0,0 +1,107 @@ +# fogproject + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +FOG Project can capture, deploy, and manage Windows, Mac OSX, and various Linux distributions. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [fogproject](https://truecharts.org/charts/stable/fogproject) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `fogproject` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install fogproject TrueCharts/fogproject +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `fogproject` deployment + +```console +helm uninstall fogproject +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install fogproject \ + --set env.TZ="America/New York" \ + TrueCharts/fogproject +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install fogproject TrueCharts/fogproject -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/fogproject/0.0.10/app-readme.md b/incubator/fogproject/0.0.10/app-readme.md new file mode 100644 index 00000000000..6c21d3aa9e7 --- /dev/null +++ b/incubator/fogproject/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +FOG Project can capture, deploy, and manage Windows, Mac OSX, and various Linux distributions. + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/fogproject + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/fogproject/0.0.10/charts/common-10.4.6.tgz b/incubator/fogproject/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/fogproject/0.0.10/ix_values.yaml b/incubator/fogproject/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..4e66615dd19 --- /dev/null +++ b/incubator/fogproject/0.0.10/ix_values.yaml @@ -0,0 +1,31 @@ +env: {} +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/fogproject + tag: latest +persistence: + images: + enabled: true + mountPath: /images + mysql: + enabled: true + mountPath: /var/lib/mysql +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: false + ports: + main: + enabled: false diff --git a/incubator/fogproject/0.0.10/questions.yaml b/incubator/fogproject/0.0.10/questions.yaml new file mode 100644 index 00000000000..b899a51c850 --- /dev/null +++ b/incubator/fogproject/0.0.10/questions.yaml @@ -0,0 +1,2193 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: {} +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: false + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + 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: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - variable: persistence + label: "Integrated Persistent Storage" + description: "Integrated Persistent Storage" + group: "Storage and Persistence" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: images + label: "images Storage" + description: "Container Path 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: mysql + label: "mysql Storage" + description: "Container Path varlibmysql" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/fogproject/0.0.10/templates/common.yaml b/incubator/fogproject/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/fogproject/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/fogproject/0.0.10/values.yaml b/incubator/fogproject/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/fogproject/item.yaml b/incubator/fogproject/item.yaml new file mode 100644 index 00000000000..8eaf1dc41a6 --- /dev/null +++ b/incubator/fogproject/item.yaml @@ -0,0 +1,5 @@ +icon_url: https://truecharts.org/img/chart-icons/fogproject.png +categories: +- Backup +- Network-DNS + diff --git a/incubator/fotosho/0.0.10/CHANGELOG.md b/incubator/fotosho/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..2a4de8026f2 --- /dev/null +++ b/incubator/fotosho/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [fotosho-0.0.10]fotosho-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [fotosho-0.0.10]fotosho-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [fotosho-0.0.10]fotosho-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [fotosho-0.0.10]fotosho-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [fotosho-0.0.10]fotosho-0.0.10 (2022-07-20) diff --git a/incubator/fotosho/0.0.10/Chart.lock b/incubator/fotosho/0.0.10/Chart.lock new file mode 100644 index 00000000000..124006b4a4e --- /dev/null +++ b/incubator/fotosho/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:05:47.029502006Z" diff --git a/incubator/fotosho/0.0.10/Chart.yaml b/incubator/fotosho/0.0.10/Chart.yaml new file mode 100644 index 00000000000..f0d74cdfdfe --- /dev/null +++ b/incubator/fotosho/0.0.10/Chart.yaml @@ -0,0 +1,32 @@ +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: 10.4.6 +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://github.com/truecharts/apps/tree/master/charts/stable/fotosho +icon: https://truecharts.org/img/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/advplyr/fotosho +- https://hub.docker.com/r/advplyr/fotosho/ +type: application +version: 0.0.10 diff --git a/incubator/fotosho/0.0.10/README.md b/incubator/fotosho/0.0.10/README.md new file mode 100644 index 00000000000..8173bfb3995 --- /dev/null +++ b/incubator/fotosho/0.0.10/README.md @@ -0,0 +1,108 @@ +# fotosho + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +*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. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [fotosho](https://truecharts.org/charts/stable/fotosho) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `fotosho` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install fotosho TrueCharts/fotosho +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `fotosho` deployment + +```console +helm uninstall fotosho +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install fotosho \ + --set env.TZ="America/New York" \ + TrueCharts/fotosho +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install fotosho TrueCharts/fotosho -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/fotosho/0.0.10/app-readme.md b/incubator/fotosho/0.0.10/app-readme.md new file mode 100644 index 00000000000..958344ee78d --- /dev/null +++ b/incubator/fotosho/0.0.10/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 + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/fotosho/0.0.10/charts/common-10.4.6.tgz b/incubator/fotosho/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/fotosho/0.0.10/ix_values.yaml b/incubator/fotosho/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..bdfef58ceea --- /dev/null +++ b/incubator/fotosho/0.0.10/ix_values.yaml @@ -0,0 +1,30 @@ +env: {} +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/fotosho + tag: latest +persistence: + config: + enabled: true + mountPath: /config + photos: + enabled: true + mountPath: /photos + thumbs: + enabled: true + mountPath: /thumbnails +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 13377 + protocol: TCP + targetPort: 80 diff --git a/incubator/fotosho/0.0.10/questions.yaml b/incubator/fotosho/0.0.10/questions.yaml new file mode 100644 index 00000000000..ad9cb855ca5 --- /dev/null +++ b/incubator/fotosho/0.0.10/questions.yaml @@ -0,0 +1,2795 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 80 + + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/fotosho/0.0.10/templates/common.yaml b/incubator/fotosho/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/fotosho/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/fotosho/0.0.10/values.yaml b/incubator/fotosho/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/fotosho/item.yaml b/incubator/fotosho/item.yaml new file mode 100644 index 00000000000..c862d11980f --- /dev/null +++ b/incubator/fotosho/item.yaml @@ -0,0 +1,5 @@ +icon_url: https://truecharts.org/img/chart-icons/fotosho.png +categories: +- MediaApp-Photos +- MediaServer-Photos + diff --git a/incubator/freecad-desktop-g3/0.0.10/CHANGELOG.md b/incubator/freecad-desktop-g3/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..8e8a71f11d2 --- /dev/null +++ b/incubator/freecad-desktop-g3/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [freecad-desktop-g3-0.0.10]freecad-desktop-g3-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [freecad-desktop-g3-0.0.10]freecad-desktop-g3-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [freecad-desktop-g3-0.0.10]freecad-desktop-g3-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [freecad-desktop-g3-0.0.10]freecad-desktop-g3-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [freecad-desktop-g3-0.0.10]freecad-desktop-g3-0.0.10 (2022-07-20) diff --git a/incubator/freecad-desktop-g3/0.0.10/Chart.lock b/incubator/freecad-desktop-g3/0.0.10/Chart.lock new file mode 100644 index 00000000000..0e44b6f51eb --- /dev/null +++ b/incubator/freecad-desktop-g3/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:05:48.206373544Z" diff --git a/incubator/freecad-desktop-g3/0.0.10/Chart.yaml b/incubator/freecad-desktop-g3/0.0.10/Chart.yaml new file mode 100644 index 00000000000..47f3a0ee980 --- /dev/null +++ b/incubator/freecad-desktop-g3/0.0.10/Chart.yaml @@ -0,0 +1,32 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - Productivity + - Tools-Utilities + - MediaApp-Photos +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: "DESCRIPTION\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/freecad-desktop-g3 +icon: https://truecharts.org/img/chart-icons/freecad-desktop-g3.png +keywords: +- freecad-desktop-g3 +- Productivity +- Tools-Utilities +- MediaApp-Photos +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: freecad-desktop-g3 +sources: +- https://github.com/accetto/headless-drawing-g3/ +- https://hub.docker.com/r/accetto/ubuntu-vnc-xfce-freecad-g3 +type: application +version: 0.0.10 diff --git a/incubator/freecad-desktop-g3/0.0.10/README.md b/incubator/freecad-desktop-g3/0.0.10/README.md new file mode 100644 index 00000000000..d5e025d7f91 --- /dev/null +++ b/incubator/freecad-desktop-g3/0.0.10/README.md @@ -0,0 +1,108 @@ +# freecad-desktop-g3 + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +DESCRIPTION + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [freecad-desktop-g3](https://truecharts.org/charts/stable/freecad-desktop-g3) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `freecad-desktop-g3` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install freecad-desktop-g3 TrueCharts/freecad-desktop-g3 +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `freecad-desktop-g3` deployment + +```console +helm uninstall freecad-desktop-g3 +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install freecad-desktop-g3 \ + --set env.TZ="America/New York" \ + TrueCharts/freecad-desktop-g3 +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install freecad-desktop-g3 TrueCharts/freecad-desktop-g3 -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/freecad-desktop-g3/0.0.10/app-readme.md b/incubator/freecad-desktop-g3/0.0.10/app-readme.md new file mode 100644 index 00000000000..a57e8988141 --- /dev/null +++ b/incubator/freecad-desktop-g3/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +DESCRIPTION + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/freecad-desktop-g3 + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/freecad-desktop-g3/0.0.10/charts/common-10.4.6.tgz b/incubator/freecad-desktop-g3/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/freecad-desktop-g3/0.0.10/ix_values.yaml b/incubator/freecad-desktop-g3/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..7fec57f0455 --- /dev/null +++ b/incubator/freecad-desktop-g3/0.0.10/ix_values.yaml @@ -0,0 +1,34 @@ +env: + VNC_PW: unraid + VNC_RESOLUTION: 1360x768 +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/freecad-desktop-g3 + tag: latest +persistence: + internalshare: + enabled: true + mountPath: /UNRAID_SHARE +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 6901 + protocol: HTTP + targetPort: 6901 + webuivnc: + enabled: true + ports: + webuivnc: + enabled: true + port: 5901 + protocol: TCP + targetPort: 5901 diff --git a/incubator/freecad-desktop-g3/0.0.10/questions.yaml b/incubator/freecad-desktop-g3/0.0.10/questions.yaml new file mode 100644 index 00000000000..7cc2fa877fb --- /dev/null +++ b/incubator/freecad-desktop-g3/0.0.10/questions.yaml @@ -0,0 +1,2591 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: VNC_PW + label: 'VNC_PW' + description: "The VNCnoVNC password." + schema: + type: string + default: "unraid" + - variable: VNC_RESOLUTION + label: 'VNC_RESOLUTION' + description: "The VNCnoVNC resolution." + schema: + type: string + default: "1360x768" + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: HTTP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 6901 + + - variable: webuivnc + label: 'webuivnc 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, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: webuivnc + label: "webuivnc Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 5901 + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - variable: persistence + label: "Integrated Persistent Storage" + description: "Integrated Persistent Storage" + group: "Storage and Persistence" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: internalshare + label: "internalshare Storage" + description: "Path to a share from your host to be able to work within the container." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/freecad-desktop-g3/0.0.10/templates/common.yaml b/incubator/freecad-desktop-g3/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/freecad-desktop-g3/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/freecad-desktop-g3/0.0.10/values.yaml b/incubator/freecad-desktop-g3/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/freecad-desktop-g3/item.yaml b/incubator/freecad-desktop-g3/item.yaml new file mode 100644 index 00000000000..0eb7bab7ad7 --- /dev/null +++ b/incubator/freecad-desktop-g3/item.yaml @@ -0,0 +1,6 @@ +icon_url: https://truecharts.org/img/chart-icons/freecad-desktop-g3.png +categories: +- Productivity +- Tools-Utilities +- MediaApp-Photos + diff --git a/incubator/fsm/0.0.10/CHANGELOG.md b/incubator/fsm/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..9afa49e5024 --- /dev/null +++ b/incubator/fsm/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [fsm-0.0.10]fsm-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [fsm-0.0.10]fsm-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [fsm-0.0.10]fsm-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [fsm-0.0.10]fsm-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [fsm-0.0.10]fsm-0.0.10 (2022-07-20) diff --git a/incubator/fsm/0.0.10/Chart.lock b/incubator/fsm/0.0.10/Chart.lock new file mode 100644 index 00000000000..65bc4a90e95 --- /dev/null +++ b/incubator/fsm/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:05:56.381256048Z" diff --git a/incubator/fsm/0.0.10/Chart.yaml b/incubator/fsm/0.0.10/Chart.yaml new file mode 100644 index 00000000000..5c61b92797a --- /dev/null +++ b/incubator/fsm/0.0.10/Chart.yaml @@ -0,0 +1,27 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - Other +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: '' +home: https://github.com/truecharts/apps/tree/master/charts/stable/fsm +icon: https://truecharts.org/img/chart-icons/fsm.png +keywords: +- fsm +- Other +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: fsm +sources: +- https://registry.hub.docker.com/r/ofsm/ofsm +type: application +version: 0.0.10 diff --git a/incubator/fsm/0.0.10/README.md b/incubator/fsm/0.0.10/README.md new file mode 100644 index 00000000000..93410ee82a0 --- /dev/null +++ b/incubator/fsm/0.0.10/README.md @@ -0,0 +1,105 @@ +# fsm + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [fsm](https://truecharts.org/charts/stable/fsm) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `fsm` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install fsm TrueCharts/fsm +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `fsm` deployment + +```console +helm uninstall fsm +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install fsm \ + --set env.TZ="America/New York" \ + TrueCharts/fsm +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install fsm TrueCharts/fsm -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/fsm/0.0.10/app-readme.md b/incubator/fsm/0.0.10/app-readme.md new file mode 100644 index 00000000000..34cbe1d78dd --- /dev/null +++ b/incubator/fsm/0.0.10/app-readme.md @@ -0,0 +1,8 @@ + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/fsm + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/fsm/0.0.10/charts/common-10.4.6.tgz b/incubator/fsm/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/fsm/0.0.10/ix_values.yaml b/incubator/fsm/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..b2ea8d13857 --- /dev/null +++ b/incubator/fsm/0.0.10/ix_values.yaml @@ -0,0 +1,25 @@ +env: {} +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/fsm + tag: latest +persistence: {} +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: false + ports: + main: + enabled: false diff --git a/incubator/fsm/0.0.10/questions.yaml b/incubator/fsm/0.0.10/questions.yaml new file mode 100644 index 00000000000..c6590a40435 --- /dev/null +++ b/incubator/fsm/0.0.10/questions.yaml @@ -0,0 +1,1829 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: {} +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: false + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + 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: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/fsm/0.0.10/templates/common.yaml b/incubator/fsm/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/fsm/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/fsm/0.0.10/values.yaml b/incubator/fsm/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/fsm/item.yaml b/incubator/fsm/item.yaml new file mode 100644 index 00000000000..b7d1097b536 --- /dev/null +++ b/incubator/fsm/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/fsm.png +categories: +- Other + diff --git a/incubator/funkwhale-all-in-one/0.0.10/CHANGELOG.md b/incubator/funkwhale-all-in-one/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..a0b863ae8ce --- /dev/null +++ b/incubator/funkwhale-all-in-one/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [funkwhale-all-in-one-0.0.10]funkwhale-all-in-one-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [funkwhale-all-in-one-0.0.10]funkwhale-all-in-one-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [funkwhale-all-in-one-0.0.10]funkwhale-all-in-one-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [funkwhale-all-in-one-0.0.10]funkwhale-all-in-one-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [funkwhale-all-in-one-0.0.10]funkwhale-all-in-one-0.0.10 (2022-07-20) diff --git a/incubator/funkwhale-all-in-one/0.0.10/Chart.lock b/incubator/funkwhale-all-in-one/0.0.10/Chart.lock new file mode 100644 index 00000000000..4655e9eb9d9 --- /dev/null +++ b/incubator/funkwhale-all-in-one/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:06:03.808331736Z" diff --git a/incubator/funkwhale-all-in-one/0.0.10/Chart.yaml b/incubator/funkwhale-all-in-one/0.0.10/Chart.yaml new file mode 100644 index 00000000000..b64a2a0f5e6 --- /dev/null +++ b/incubator/funkwhale-all-in-one/0.0.10/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: 10.4.6 +deprecated: false +description: "Funkwhale is a community-driven project that lets you listen and share\ + \ music and audio within a decentralised, open network.\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/funkwhale-all-in-one +icon: https://truecharts.org/img/chart-icons/funkwhale-all-in-one.png +keywords: +- funkwhale-all-in-one +- MediaServer-Music +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: funkwhale-all-in-one +sources: +- https://funkwhale.audio/ +- https://hub.docker.com/r/funkwhale/all-in-one/ +type: application +version: 0.0.10 diff --git a/incubator/funkwhale-all-in-one/0.0.10/README.md b/incubator/funkwhale-all-in-one/0.0.10/README.md new file mode 100644 index 00000000000..382135aae62 --- /dev/null +++ b/incubator/funkwhale-all-in-one/0.0.10/README.md @@ -0,0 +1,108 @@ +# funkwhale-all-in-one + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +Funkwhale is a community-driven project that lets you listen and share music and audio within a decentralised, open network. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [funkwhale-all-in-one](https://truecharts.org/charts/stable/funkwhale-all-in-one) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `funkwhale-all-in-one` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install funkwhale-all-in-one TrueCharts/funkwhale-all-in-one +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `funkwhale-all-in-one` deployment + +```console +helm uninstall funkwhale-all-in-one +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install funkwhale-all-in-one \ + --set env.TZ="America/New York" \ + TrueCharts/funkwhale-all-in-one +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install funkwhale-all-in-one TrueCharts/funkwhale-all-in-one -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/funkwhale-all-in-one/0.0.10/app-readme.md b/incubator/funkwhale-all-in-one/0.0.10/app-readme.md new file mode 100644 index 00000000000..22f3df9b9f8 --- /dev/null +++ b/incubator/funkwhale-all-in-one/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +Funkwhale is a community-driven project that lets you listen and share music and audio within a decentralised, open network. + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/funkwhale-all-in-one + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/funkwhale-all-in-one/0.0.10/charts/common-10.4.6.tgz b/incubator/funkwhale-all-in-one/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/funkwhale-all-in-one/0.0.10/ix_values.yaml b/incubator/funkwhale-all-in-one/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..33e4caedb9e --- /dev/null +++ b/incubator/funkwhale-all-in-one/0.0.10/ix_values.yaml @@ -0,0 +1,30 @@ +env: + FUNKWHALE_HOSTNAME: '' + NESTED_PROXY: '0' +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/funkwhale-all-in-one + tag: latest +persistence: + data: + enabled: true + mountPath: /data + musicpath: + enabled: true + mountPath: /music + readOnly: true +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 3030 + protocol: TCP + targetPort: 80 diff --git a/incubator/funkwhale-all-in-one/0.0.10/questions.yaml b/incubator/funkwhale-all-in-one/0.0.10/questions.yaml new file mode 100644 index 00000000000..de712816e44 --- /dev/null +++ b/incubator/funkwhale-all-in-one/0.0.10/questions.yaml @@ -0,0 +1,2638 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container 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: "" + - 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: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 80 + + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/funkwhale-all-in-one/0.0.10/templates/common.yaml b/incubator/funkwhale-all-in-one/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/funkwhale-all-in-one/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/funkwhale-all-in-one/0.0.10/values.yaml b/incubator/funkwhale-all-in-one/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/funkwhale-all-in-one/item.yaml b/incubator/funkwhale-all-in-one/item.yaml new file mode 100644 index 00000000000..929b8cdba67 --- /dev/null +++ b/incubator/funkwhale-all-in-one/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/funkwhale-all-in-one.png +categories: +- MediaServer-Music + diff --git a/incubator/funkwhale/0.0.10/CHANGELOG.md b/incubator/funkwhale/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..5fe64e612a1 --- /dev/null +++ b/incubator/funkwhale/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [funkwhale-0.0.10]funkwhale-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [funkwhale-0.0.10]funkwhale-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [funkwhale-0.0.10]funkwhale-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [funkwhale-0.0.10]funkwhale-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [funkwhale-0.0.10]funkwhale-0.0.10 (2022-07-20) diff --git a/incubator/funkwhale/0.0.10/Chart.lock b/incubator/funkwhale/0.0.10/Chart.lock new file mode 100644 index 00000000000..f68d6f157f9 --- /dev/null +++ b/incubator/funkwhale/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:06:01.020611506Z" diff --git a/incubator/funkwhale/0.0.10/Chart.yaml b/incubator/funkwhale/0.0.10/Chart.yaml new file mode 100644 index 00000000000..2f6cc163520 --- /dev/null +++ b/incubator/funkwhale/0.0.10/Chart.yaml @@ -0,0 +1,31 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - MediaApp-Music + - MediaServer-Music +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: Funkwhale is designed to make it easy to listen to music you like, and + to discover new artists. +home: https://github.com/truecharts/apps/tree/master/charts/stable/funkwhale +icon: https://truecharts.org/img/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://funkwhale.audio/ +- https://hub.docker.com/r/thetarkus/funkwhale/ +type: application +version: 0.0.10 diff --git a/incubator/funkwhale/0.0.10/README.md b/incubator/funkwhale/0.0.10/README.md new file mode 100644 index 00000000000..f769708372b --- /dev/null +++ b/incubator/funkwhale/0.0.10/README.md @@ -0,0 +1,108 @@ +# funkwhale + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +Funkwhale is designed to make it easy to listen to music you like, and to discover new artists. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [funkwhale](https://truecharts.org/charts/stable/funkwhale) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `funkwhale` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install funkwhale TrueCharts/funkwhale +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `funkwhale` deployment + +```console +helm uninstall funkwhale +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install funkwhale \ + --set env.TZ="America/New York" \ + TrueCharts/funkwhale +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install funkwhale TrueCharts/funkwhale -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/funkwhale/0.0.10/app-readme.md b/incubator/funkwhale/0.0.10/app-readme.md new file mode 100644 index 00000000000..e0294eb9a40 --- /dev/null +++ b/incubator/funkwhale/0.0.10/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 + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/funkwhale/0.0.10/charts/common-10.4.6.tgz b/incubator/funkwhale/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/funkwhale/0.0.10/ix_values.yaml b/incubator/funkwhale/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..f4a0624eb0e --- /dev/null +++ b/incubator/funkwhale/0.0.10/ix_values.yaml @@ -0,0 +1,30 @@ +env: + FUNKWHALE_HOSTNAME: yourdomain.funkwhale + NESTED_PROXY: '0' +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/funkwhale + tag: latest +persistence: + data: + enabled: true + mountPath: /data + musicpath: + enabled: true + mountPath: /music + readOnly: true +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 3030 + protocol: TCP + targetPort: 80 diff --git a/incubator/funkwhale/0.0.10/questions.yaml b/incubator/funkwhale/0.0.10/questions.yaml new file mode 100644 index 00000000000..370ca78cfbd --- /dev/null +++ b/incubator/funkwhale/0.0.10/questions.yaml @@ -0,0 +1,2638 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container 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: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 80 + + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/funkwhale/0.0.10/templates/common.yaml b/incubator/funkwhale/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/funkwhale/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/funkwhale/0.0.10/values.yaml b/incubator/funkwhale/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/funkwhale/item.yaml b/incubator/funkwhale/item.yaml new file mode 100644 index 00000000000..7788e1aceab --- /dev/null +++ b/incubator/funkwhale/item.yaml @@ -0,0 +1,5 @@ +icon_url: https://truecharts.org/img/chart-icons/funkwhale.png +categories: +- MediaApp-Music +- MediaServer-Music + diff --git a/incubator/garrysmod/0.0.10/CHANGELOG.md b/incubator/garrysmod/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..13d0ead2f84 --- /dev/null +++ b/incubator/garrysmod/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [garrysmod-0.0.10]garrysmod-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [garrysmod-0.0.10]garrysmod-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [garrysmod-0.0.10]garrysmod-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [garrysmod-0.0.10]garrysmod-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [garrysmod-0.0.10]garrysmod-0.0.10 (2022-07-20) diff --git a/incubator/garrysmod/0.0.10/Chart.lock b/incubator/garrysmod/0.0.10/Chart.lock new file mode 100644 index 00000000000..0ece0194b37 --- /dev/null +++ b/incubator/garrysmod/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:06:05.438021185Z" diff --git a/incubator/garrysmod/0.0.10/Chart.yaml b/incubator/garrysmod/0.0.10/Chart.yaml new file mode 100644 index 00000000000..dd17980a96b --- /dev/null +++ b/incubator/garrysmod/0.0.10/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: 10.4.6 +deprecated: false +description: "This Docker will download and install SteamCMD. It will also install\ + \ Garry's Mod and run it.\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/garrysmod +icon: https://truecharts.org/img/chart-icons/garrysmod.png +keywords: +- garrysmod +- GameServers +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: garrysmod +sources: +- https://www.steampowered.com/ +- https://hub.docker.com/r/ich777/steamcmd/ +type: application +version: 0.0.10 diff --git a/incubator/garrysmod/0.0.10/README.md b/incubator/garrysmod/0.0.10/README.md new file mode 100644 index 00000000000..9e00e2ccd0d --- /dev/null +++ b/incubator/garrysmod/0.0.10/README.md @@ -0,0 +1,108 @@ +# garrysmod + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +This Docker will download and install SteamCMD. It will also install Garry's Mod and run it. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [garrysmod](https://truecharts.org/charts/stable/garrysmod) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `garrysmod` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install garrysmod TrueCharts/garrysmod +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `garrysmod` deployment + +```console +helm uninstall garrysmod +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install garrysmod \ + --set env.TZ="America/New York" \ + TrueCharts/garrysmod +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install garrysmod TrueCharts/garrysmod -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/garrysmod/0.0.10/app-readme.md b/incubator/garrysmod/0.0.10/app-readme.md new file mode 100644 index 00000000000..73891b4c01c --- /dev/null +++ b/incubator/garrysmod/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +This Docker will download and install SteamCMD. It will also install Garry's Mod and run it. + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/garrysmod + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/garrysmod/0.0.10/charts/common-10.4.6.tgz b/incubator/garrysmod/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/garrysmod/0.0.10/ix_values.yaml b/incubator/garrysmod/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..18cbf306be4 --- /dev/null +++ b/incubator/garrysmod/0.0.10/ix_values.yaml @@ -0,0 +1,49 @@ +env: + GAME_ID: '4020' + GAME_NAME: garrysmod + GAME_PARAMS: -secure +maxplayers 12 +map gm_flatgrass + GAME_PORT: '27015' + PASSWRD: '' + USERNAME: '' + VALIDATE: '' +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/garrysmod + tag: latest +persistence: + serverfiles: + enabled: true + mountPath: /serverdata/serverfiles + steamcmd: + enabled: true + mountPath: /serverdata/steamcmd +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +probes: + liveness: + port: '{{ .Values.service.tcprcon.ports.tcprcon.targetPort }}' + readiness: + port: '{{ .Values.service.tcprcon.ports.tcprcon.targetPort }}' + startup: + port: '{{ .Values.service.tcprcon.ports.tcprcon.targetPort }}' +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 27015 + protocol: UDP + targetPort: 27015 + tcprcon: + enabled: true + ports: + tcprcon: + enabled: true + port: 27015 + protocol: TCP + targetPort: 27015 diff --git a/incubator/garrysmod/0.0.10/questions.yaml b/incubator/garrysmod/0.0.10/questions.yaml new file mode 100644 index 00000000000..dbb798ad184 --- /dev/null +++ b/incubator/garrysmod/0.0.10/questions.yaml @@ -0,0 +1,2799 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: GAME_ID + label: 'GAME_ID' + description: "The GAMEID that the container download at startup.(httpsdeveloper.valvesoftware.comwikiDedicatedServersList)" + schema: + type: string + default: "4020" + - variable: GAME_NAME + label: 'GAME_NAME' + description: "Game name to start (is connected to the GAMEPARAMS)." + schema: + type: string + default: "garrysmod" + - variable: GAME_PARAMS + label: 'GAME_PARAMS' + description: "Enter your start up commands for the server." + schema: + type: string + default: "-secure +maxplayers 12 +map gm_flatgrass" + - variable: USERNAME + label: 'USERNAME' + description: "Your Steam username goes here if you want to install a game that needs a valid account, otherwise leave it blank (ATTENTION You have to disable Steam Guard)." + schema: + type: string + default: "" + - variable: VALIDATE + label: 'VALIDATE' + description: "Set the Variable to true if you want to validate the installation otherwise leave it blank." + schema: + type: string + default: "" + - variable: PASSWRD + label: 'PASSWRD' + description: "Your Steam password goes here if you want to install a game that needs a valid account, otherwise leave it blank (ATTENTION You have to disable Steam Guard)." + schema: + type: string + default: "" + - variable: GAME_PORT + label: 'GAME_PORT' + description: "Container Variable GAMEPORT" + schema: + type: string + default: "27015" + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 27015 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: UDP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 27015 + + - variable: tcprcon + label: 'tcprcon service' + description: "TCP RCON Port (not required)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: tcprcon + label: "tcprcon Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 27015 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 27015 + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - variable: persistence + label: "Integrated Persistent Storage" + description: "Integrated Persistent Storage" + group: "Storage and Persistence" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: steamcmd + label: "steamcmd Storage" + description: "Container Path serverdatasteamcmd" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: serverfiles + label: "serverfiles Storage" + description: "Container Path serverdataserverfiles" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/garrysmod/0.0.10/templates/common.yaml b/incubator/garrysmod/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/garrysmod/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/garrysmod/0.0.10/values.yaml b/incubator/garrysmod/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/garrysmod/item.yaml b/incubator/garrysmod/item.yaml new file mode 100644 index 00000000000..ff2002d874c --- /dev/null +++ b/incubator/garrysmod/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/garrysmod.png +categories: +- GameServers + diff --git a/incubator/genea/0.0.10/CHANGELOG.md b/incubator/genea/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..4c9019ec610 --- /dev/null +++ b/incubator/genea/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [genea-0.0.10]genea-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [genea-0.0.10]genea-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [genea-0.0.10]genea-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [genea-0.0.10]genea-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [genea-0.0.10]genea-0.0.10 (2022-07-20) diff --git a/incubator/genea/0.0.10/Chart.lock b/incubator/genea/0.0.10/Chart.lock new file mode 100644 index 00000000000..11dc61c5525 --- /dev/null +++ b/incubator/genea/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:06:12.513195776Z" diff --git a/incubator/genea/0.0.10/Chart.yaml b/incubator/genea/0.0.10/Chart.yaml new file mode 100644 index 00000000000..55250ae6781 --- /dev/null +++ b/incubator/genea/0.0.10/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: 10.4.6 +deprecated: false +description: Genea allows visually building and editing a family tree online. It consumes + and saves genealogy data in the GEDCOM format without any server side components. +home: https://github.com/truecharts/apps/tree/master/charts/stable/genea +icon: https://truecharts.org/img/chart-icons/genea.png +keywords: +- genea +- Other +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: genea +sources: +- https://github.com/genea-app/genea-app +- https://hub.docker.com/r/biggiesize/genea-app +type: application +version: 0.0.10 diff --git a/incubator/genea/0.0.10/README.md b/incubator/genea/0.0.10/README.md new file mode 100644 index 00000000000..d7bc152436d --- /dev/null +++ b/incubator/genea/0.0.10/README.md @@ -0,0 +1,108 @@ +# genea + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +Genea allows visually building and editing a family tree online. It consumes and saves genealogy data in the GEDCOM format without any server side components. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [genea](https://truecharts.org/charts/stable/genea) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `genea` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install genea TrueCharts/genea +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `genea` deployment + +```console +helm uninstall genea +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install genea \ + --set env.TZ="America/New York" \ + TrueCharts/genea +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install genea TrueCharts/genea -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/genea/0.0.10/app-readme.md b/incubator/genea/0.0.10/app-readme.md new file mode 100644 index 00000000000..6d3dbb34c08 --- /dev/null +++ b/incubator/genea/0.0.10/app-readme.md @@ -0,0 +1,8 @@ +Genea allows visually building and editing a family tree online. It consumes and saves genealogy data in the GEDCOM format without any server side components. + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/genea + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/genea/0.0.10/charts/common-10.4.6.tgz b/incubator/genea/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/genea/0.0.10/ix_values.yaml b/incubator/genea/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..df89288c90a --- /dev/null +++ b/incubator/genea/0.0.10/ix_values.yaml @@ -0,0 +1,25 @@ +env: {} +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/genea + tag: latest +persistence: {} +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: false + ports: + main: + enabled: false diff --git a/incubator/genea/0.0.10/questions.yaml b/incubator/genea/0.0.10/questions.yaml new file mode 100644 index 00000000000..c6590a40435 --- /dev/null +++ b/incubator/genea/0.0.10/questions.yaml @@ -0,0 +1,1829 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: {} +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: false + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + 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: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/genea/0.0.10/templates/common.yaml b/incubator/genea/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/genea/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/genea/0.0.10/values.yaml b/incubator/genea/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/genea/item.yaml b/incubator/genea/item.yaml new file mode 100644 index 00000000000..9a0fe486a7f --- /dev/null +++ b/incubator/genea/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/genea.png +categories: +- Other + diff --git a/incubator/github-backup/0.0.10/CHANGELOG.md b/incubator/github-backup/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..67a18802a37 --- /dev/null +++ b/incubator/github-backup/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [github-backup-0.0.10]github-backup-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [github-backup-0.0.10]github-backup-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [github-backup-0.0.10]github-backup-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [github-backup-0.0.10]github-backup-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [github-backup-0.0.10]github-backup-0.0.10 (2022-07-20) diff --git a/incubator/github-backup/0.0.10/Chart.lock b/incubator/github-backup/0.0.10/Chart.lock new file mode 100644 index 00000000000..28806a9bf73 --- /dev/null +++ b/incubator/github-backup/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:06:17.71735296Z" diff --git a/incubator/github-backup/0.0.10/Chart.yaml b/incubator/github-backup/0.0.10/Chart.yaml new file mode 100644 index 00000000000..219042b67fe --- /dev/null +++ b/incubator/github-backup/0.0.10/Chart.yaml @@ -0,0 +1,28 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - Backup +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: Like to maintain your own data? Automatically backup your github account + to your Unraid server on a schedule. +home: https://github.com/truecharts/apps/tree/master/charts/stable/github-backup +icon: https://truecharts.org/img/chart-icons/github-backup.png +keywords: +- github-backup +- Backup +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: github-backup +sources: +- https://hub.docker.com/r/lnxd/github-backup +type: application +version: 0.0.10 diff --git a/incubator/github-backup/0.0.10/README.md b/incubator/github-backup/0.0.10/README.md new file mode 100644 index 00000000000..db9805b5ec8 --- /dev/null +++ b/incubator/github-backup/0.0.10/README.md @@ -0,0 +1,107 @@ +# github-backup + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +Like to maintain your own data? Automatically backup your github account to your Unraid server on a schedule. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [github-backup](https://truecharts.org/charts/stable/github-backup) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `github-backup` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install github-backup TrueCharts/github-backup +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `github-backup` deployment + +```console +helm uninstall github-backup +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install github-backup \ + --set env.TZ="America/New York" \ + TrueCharts/github-backup +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install github-backup TrueCharts/github-backup -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/github-backup/0.0.10/app-readme.md b/incubator/github-backup/0.0.10/app-readme.md new file mode 100644 index 00000000000..f7f9d3f7653 --- /dev/null +++ b/incubator/github-backup/0.0.10/app-readme.md @@ -0,0 +1,8 @@ +Like to maintain your own data? Automatically backup your github account to your Unraid server on a schedule. + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/github-backup + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/github-backup/0.0.10/charts/common-10.4.6.tgz b/incubator/github-backup/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/github-backup/0.0.10/ix_values.yaml b/incubator/github-backup/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..131bb5875bc --- /dev/null +++ b/incubator/github-backup/0.0.10/ix_values.yaml @@ -0,0 +1,33 @@ +env: + SCHEDULE: '3600' + TOKEN: 1a2b3c4d5e6f71a2b3c4d5e6f71a2b3c4d5e6f7b +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/github-backup + tag: latest +persistence: + backuplocation: + enabled: true + mountPath: /home/docker/backups + config: + enabled: true + mountPath: /home/docker/github-backup/config/ +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: false + ports: + main: + enabled: false diff --git a/incubator/github-backup/0.0.10/questions.yaml b/incubator/github-backup/0.0.10/questions.yaml new file mode 100644 index 00000000000..e73b6c0aeb4 --- /dev/null +++ b/incubator/github-backup/0.0.10/questions.yaml @@ -0,0 +1,2213 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: {} +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: false + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: TOKEN + label: 'TOKEN' + description: "Get your token from httpsgithub.comsettingstokens, see the support page for more details." + schema: + type: string + default: "1a2b3c4d5e6f71a2b3c4d5e6f71a2b3c4d5e6f7b" + - variable: SCHEDULE + label: 'SCHEDULE' + description: "How often to sync in seconds (eg. 3600 for 1h, 21600 for 6h, 43200 for 12h, 86400 for 24h)" + schema: + type: string + default: "3600" + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - 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: "Set the location of your github backups. Please note that the default will create a backup share if it does not exist and you dont change it." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: config + label: "config Storage" + description: "Persistent storage for config.json" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/github-backup/0.0.10/templates/common.yaml b/incubator/github-backup/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/github-backup/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/github-backup/0.0.10/values.yaml b/incubator/github-backup/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/github-backup/item.yaml b/incubator/github-backup/item.yaml new file mode 100644 index 00000000000..f348240742b --- /dev/null +++ b/incubator/github-backup/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/github-backup.png +categories: +- Backup + diff --git a/incubator/glauth/0.0.10/CHANGELOG.md b/incubator/glauth/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..c3e15b4b49f --- /dev/null +++ b/incubator/glauth/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [glauth-0.0.10]glauth-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [glauth-0.0.10]glauth-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [glauth-0.0.10]glauth-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [glauth-0.0.10]glauth-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [glauth-0.0.10]glauth-0.0.10 (2022-07-20) diff --git a/incubator/glauth/0.0.10/Chart.lock b/incubator/glauth/0.0.10/Chart.lock new file mode 100644 index 00000000000..dc86ed410d3 --- /dev/null +++ b/incubator/glauth/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:06:19.615909525Z" diff --git a/incubator/glauth/0.0.10/Chart.yaml b/incubator/glauth/0.0.10/Chart.yaml new file mode 100644 index 00000000000..4b31814137c --- /dev/null +++ b/incubator/glauth/0.0.10/Chart.yaml @@ -0,0 +1,28 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - Security +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: GLAuth is a secure, easy-to-use, LDAP server with configurable backends. +home: https://github.com/truecharts/apps/tree/master/charts/stable/glauth +icon: https://truecharts.org/img/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://glauth.github.io +- https://hub.docker.com/repository/docker/glauth/glauth +type: application +version: 0.0.10 diff --git a/incubator/glauth/0.0.10/README.md b/incubator/glauth/0.0.10/README.md new file mode 100644 index 00000000000..876ac35e5af --- /dev/null +++ b/incubator/glauth/0.0.10/README.md @@ -0,0 +1,108 @@ +# glauth + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +GLAuth is a secure, easy-to-use, LDAP server with configurable backends. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [glauth](https://truecharts.org/charts/stable/glauth) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `glauth` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install glauth TrueCharts/glauth +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `glauth` deployment + +```console +helm uninstall glauth +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install glauth \ + --set env.TZ="America/New York" \ + TrueCharts/glauth +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install glauth TrueCharts/glauth -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/glauth/0.0.10/app-readme.md b/incubator/glauth/0.0.10/app-readme.md new file mode 100644 index 00000000000..782390f1b00 --- /dev/null +++ b/incubator/glauth/0.0.10/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 + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/glauth/0.0.10/charts/common-10.4.6.tgz b/incubator/glauth/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/glauth/0.0.10/ix_values.yaml b/incubator/glauth/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..041d4dba641 --- /dev/null +++ b/incubator/glauth/0.0.10/ix_values.yaml @@ -0,0 +1,40 @@ +env: {} +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/glauth + tag: latest +persistence: + config: + enabled: true + mountPath: /app/config +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + ldapport: + enabled: true + ports: + ldapport: + enabled: true + port: 389 + protocol: TCP + targetPort: 389 + ldapsport: + enabled: true + ports: + ldapsport: + enabled: true + port: 636 + protocol: TCP + targetPort: 636 + main: + enabled: true + ports: + main: + enabled: true + port: 5555 + protocol: HTTP + targetPort: 5555 diff --git a/incubator/glauth/0.0.10/questions.yaml b/incubator/glauth/0.0.10/questions.yaml new file mode 100644 index 00000000000..cfa4d4e3334 --- /dev/null +++ b/incubator/glauth/0.0.10/questions.yaml @@ -0,0 +1,2703 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: HTTP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 5555 + + - 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, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 389 + - 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, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 636 + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/glauth/0.0.10/templates/common.yaml b/incubator/glauth/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/glauth/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/glauth/0.0.10/values.yaml b/incubator/glauth/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/glauth/item.yaml b/incubator/glauth/item.yaml new file mode 100644 index 00000000000..34e49ea5e53 --- /dev/null +++ b/incubator/glauth/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/glauth.png +categories: +- Security + diff --git a/incubator/go-auto-yt/0.0.10/CHANGELOG.md b/incubator/go-auto-yt/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..d9f25770f93 --- /dev/null +++ b/incubator/go-auto-yt/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [go-auto-yt-0.0.10]go-auto-yt-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [go-auto-yt-0.0.10]go-auto-yt-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [go-auto-yt-0.0.10]go-auto-yt-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [go-auto-yt-0.0.10]go-auto-yt-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [go-auto-yt-0.0.10]go-auto-yt-0.0.10 (2022-07-20) diff --git a/incubator/go-auto-yt/0.0.10/Chart.lock b/incubator/go-auto-yt/0.0.10/Chart.lock new file mode 100644 index 00000000000..2f1b22ab550 --- /dev/null +++ b/incubator/go-auto-yt/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:06:21.957682145Z" diff --git a/incubator/go-auto-yt/0.0.10/Chart.yaml b/incubator/go-auto-yt/0.0.10/Chart.yaml new file mode 100644 index 00000000000..5f5f52f68f3 --- /dev/null +++ b/incubator/go-auto-yt/0.0.10/Chart.yaml @@ -0,0 +1,31 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - Downloaders + - Tools-Utilities +apiVersion: v2 +appVersion: "stable" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: "GoAutoYT makes it easy for you to automatically download videos from\ + \ as many YouTube channels as you'd like.\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/go-auto-yt +icon: https://truecharts.org/img/chart-icons/go-auto-yt.png +keywords: +- go-auto-yt +- Downloaders +- Tools-Utilities +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: go-auto-yt +sources: +- https://github.com/XiovV/go-auto-yt +- https://hub.docker.com/r/xiovv/go-auto-yt +type: application +version: 0.0.10 diff --git a/incubator/go-auto-yt/0.0.10/README.md b/incubator/go-auto-yt/0.0.10/README.md new file mode 100644 index 00000000000..d6b061b4cc1 --- /dev/null +++ b/incubator/go-auto-yt/0.0.10/README.md @@ -0,0 +1,108 @@ +# go-auto-yt + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: stable](https://img.shields.io/badge/AppVersion-stable-informational?style=flat-square) + +GoAutoYT makes it easy for you to automatically download videos from as many YouTube channels as you'd like. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [go-auto-yt](https://truecharts.org/charts/stable/go-auto-yt) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `go-auto-yt` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install go-auto-yt TrueCharts/go-auto-yt +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `go-auto-yt` deployment + +```console +helm uninstall go-auto-yt +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install go-auto-yt \ + --set env.TZ="America/New York" \ + TrueCharts/go-auto-yt +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install go-auto-yt TrueCharts/go-auto-yt -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/go-auto-yt/0.0.10/app-readme.md b/incubator/go-auto-yt/0.0.10/app-readme.md new file mode 100644 index 00000000000..07913fadb10 --- /dev/null +++ b/incubator/go-auto-yt/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +GoAutoYT makes it easy for you to automatically download videos from as many YouTube channels as you'd like. + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/go-auto-yt + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/go-auto-yt/0.0.10/charts/common-10.4.6.tgz b/incubator/go-auto-yt/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/go-auto-yt/0.0.10/ix_values.yaml b/incubator/go-auto-yt/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..7e06984de5d --- /dev/null +++ b/incubator/go-auto-yt/0.0.10/ix_values.yaml @@ -0,0 +1,28 @@ +env: + UMASK_SET: '0022' +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/go-auto-yt + tag: vstable +persistence: + config: + enabled: true + mountPath: /app/config + mounteddownloadsfolder: + enabled: true + mountPath: /app/downloads +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 9000 + protocol: TCP + targetPort: 8080 diff --git a/incubator/go-auto-yt/0.0.10/questions.yaml b/incubator/go-auto-yt/0.0.10/questions.yaml new file mode 100644 index 00000000000..4a15d8d32f0 --- /dev/null +++ b/incubator/go-auto-yt/0.0.10/questions.yaml @@ -0,0 +1,2632 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: UMASK_SET + label: 'UMASK_SET' + description: "Container Variable UMASKSET" + schema: + type: string + default: "0022" + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 8080 + + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - variable: persistence + label: "Integrated Persistent Storage" + description: "Integrated Persistent Storage" + group: "Storage and Persistence" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: mounteddownloadsfolder + label: "mounteddownloadsfolder Storage" + description: "Container Path appdownloads" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: config + label: "config Storage" + description: "Container Path appconfig" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/go-auto-yt/0.0.10/templates/common.yaml b/incubator/go-auto-yt/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/go-auto-yt/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/go-auto-yt/0.0.10/values.yaml b/incubator/go-auto-yt/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/go-auto-yt/item.yaml b/incubator/go-auto-yt/item.yaml new file mode 100644 index 00000000000..81c0ca6f74e --- /dev/null +++ b/incubator/go-auto-yt/item.yaml @@ -0,0 +1,5 @@ +icon_url: https://truecharts.org/img/chart-icons/go-auto-yt.png +categories: +- Downloaders +- Tools-Utilities + diff --git a/incubator/go-playground/0.0.10/CHANGELOG.md b/incubator/go-playground/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..5576e25b8cb --- /dev/null +++ b/incubator/go-playground/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [go-playground-0.0.10]go-playground-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [go-playground-0.0.10]go-playground-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [goaccess-0.0.10]goaccess-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [goaccess-0.0.10]goaccess-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [goaccess-0.0.10]goaccess-0.0.10 (2022-07-20) diff --git a/incubator/go-playground/0.0.10/Chart.lock b/incubator/go-playground/0.0.10/Chart.lock new file mode 100644 index 00000000000..e2291469137 --- /dev/null +++ b/incubator/go-playground/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:06:28.999757816Z" diff --git a/incubator/go-playground/0.0.10/Chart.yaml b/incubator/go-playground/0.0.10/Chart.yaml new file mode 100644 index 00000000000..7a085d2efba --- /dev/null +++ b/incubator/go-playground/0.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: 10.4.6 +deprecated: false +description: mproved Go Playground powered by Monaco Editor and React +home: https://github.com/truecharts/apps/tree/master/charts/stable/go-playground +icon: https://truecharts.org/img/chart-icons/go-playground.png +keywords: +- go-playground +- Tools-Utilities +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: go-playground +sources: +- https://hub.docker.com/r/x1unix/go-playground +- https://hub.docker.com/r/x1unix/go-playground +type: application +version: 0.0.10 diff --git a/incubator/go-playground/0.0.10/README.md b/incubator/go-playground/0.0.10/README.md new file mode 100644 index 00000000000..5c261fba4ee --- /dev/null +++ b/incubator/go-playground/0.0.10/README.md @@ -0,0 +1,108 @@ +# go-playground + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +mproved Go Playground powered by Monaco Editor and React + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [go-playground](https://truecharts.org/charts/stable/go-playground) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `go-playground` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install go-playground TrueCharts/go-playground +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `go-playground` deployment + +```console +helm uninstall go-playground +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install go-playground \ + --set env.TZ="America/New York" \ + TrueCharts/go-playground +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install go-playground TrueCharts/go-playground -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/go-playground/0.0.10/app-readme.md b/incubator/go-playground/0.0.10/app-readme.md new file mode 100644 index 00000000000..3d235b36549 --- /dev/null +++ b/incubator/go-playground/0.0.10/app-readme.md @@ -0,0 +1,8 @@ +mproved Go Playground powered by Monaco Editor and React + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/go-playground + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/go-playground/0.0.10/charts/common-10.4.6.tgz b/incubator/go-playground/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/go-playground/0.0.10/ix_values.yaml b/incubator/go-playground/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..9384509f671 --- /dev/null +++ b/incubator/go-playground/0.0.10/ix_values.yaml @@ -0,0 +1,23 @@ +env: + APP_CLEAN_INTERVAL: 10m + APP_DEBUG: 'false' +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/go-playground + tag: latest +persistence: {} +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 8888 + protocol: TCP + targetPort: 8000 diff --git a/incubator/go-playground/0.0.10/questions.yaml b/incubator/go-playground/0.0.10/questions.yaml new file mode 100644 index 00000000000..83351bfc244 --- /dev/null +++ b/incubator/go-playground/0.0.10/questions.yaml @@ -0,0 +1,2272 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: APP_DEBUG + label: 'APP_DEBUG' + schema: + type: string + default: "false" + - variable: APP_CLEAN_INTERVAL + label: 'APP_CLEAN_INTERVAL' + schema: + type: string + default: "10m" + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 8000 + + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/go-playground/0.0.10/templates/common.yaml b/incubator/go-playground/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/go-playground/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/go-playground/0.0.10/values.yaml b/incubator/go-playground/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/go-playground/item.yaml b/incubator/go-playground/item.yaml new file mode 100644 index 00000000000..0e4dcdb46e3 --- /dev/null +++ b/incubator/go-playground/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/go-playground.png +categories: +- Tools-Utilities + diff --git a/incubator/goaccess-npm-logs/0.0.10/CHANGELOG.md b/incubator/goaccess-npm-logs/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..1eefb3b04db --- /dev/null +++ b/incubator/goaccess-npm-logs/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [goaccess-npm-logs-0.0.10]goaccess-npm-logs-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [goaccess-npm-logs-0.0.10]goaccess-npm-logs-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [goaccess-npm-logs-0.0.10]goaccess-npm-logs-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [goaccess-npm-logs-0.0.10]goaccess-npm-logs-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [goaccess-npm-logs-0.0.10]goaccess-npm-logs-0.0.10 (2022-07-20) diff --git a/incubator/goaccess-npm-logs/0.0.10/Chart.lock b/incubator/goaccess-npm-logs/0.0.10/Chart.lock new file mode 100644 index 00000000000..e4701611862 --- /dev/null +++ b/incubator/goaccess-npm-logs/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:06:36.473700767Z" diff --git a/incubator/goaccess-npm-logs/0.0.10/Chart.yaml b/incubator/goaccess-npm-logs/0.0.10/Chart.yaml new file mode 100644 index 00000000000..1bec572ccfd --- /dev/null +++ b/incubator/goaccess-npm-logs/0.0.10/Chart.yaml @@ -0,0 +1,30 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - Tools-Utilities + - Network-Proxy +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: "GoAccess for Nginx Proxy Manager Logs\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/goaccess-npm-logs +icon: https://truecharts.org/img/chart-icons/goaccess-npm-logs.png +keywords: +- goaccess-npm-logs +- Tools-Utilities +- Network-Proxy +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: goaccess-npm-logs +sources: +- https://github.com/xavier-hernandez/goaccess-for-nginxproxymanager +- https://hub.docker.com/r/xavierh/goaccess-for-nginxproxymanager +type: application +version: 0.0.10 diff --git a/incubator/goaccess-npm-logs/0.0.10/README.md b/incubator/goaccess-npm-logs/0.0.10/README.md new file mode 100644 index 00000000000..405f3cf20fc --- /dev/null +++ b/incubator/goaccess-npm-logs/0.0.10/README.md @@ -0,0 +1,108 @@ +# goaccess-npm-logs + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +GoAccess for Nginx Proxy Manager Logs + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [goaccess-npm-logs](https://truecharts.org/charts/stable/goaccess-npm-logs) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `goaccess-npm-logs` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install goaccess-npm-logs TrueCharts/goaccess-npm-logs +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `goaccess-npm-logs` deployment + +```console +helm uninstall goaccess-npm-logs +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install goaccess-npm-logs \ + --set env.TZ="America/New York" \ + TrueCharts/goaccess-npm-logs +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install goaccess-npm-logs TrueCharts/goaccess-npm-logs -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/goaccess-npm-logs/0.0.10/app-readme.md b/incubator/goaccess-npm-logs/0.0.10/app-readme.md new file mode 100644 index 00000000000..b398d2dd3a9 --- /dev/null +++ b/incubator/goaccess-npm-logs/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +GoAccess for Nginx Proxy Manager Logs + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/goaccess-npm-logs + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/goaccess-npm-logs/0.0.10/charts/common-10.4.6.tgz b/incubator/goaccess-npm-logs/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/goaccess-npm-logs/0.0.10/ix_values.yaml b/incubator/goaccess-npm-logs/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..0c53c11dca2 --- /dev/null +++ b/incubator/goaccess-npm-logs/0.0.10/ix_values.yaml @@ -0,0 +1,31 @@ +env: + BASIC_AUTH: 'True' + BASIC_AUTH_PASSWORD: x + BASIC_AUTH_USERNAME: x + DEBUG: 'False' + EXCLUDE_IPS: '' + SKIP_ARCHIVED_LOGS: 'False' +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/goaccess-npm-logs + tag: latest +persistence: + hostpath1: + enabled: true + mountPath: /opt/log + readOnly: true +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 7880 + protocol: TCP + targetPort: 7880 diff --git a/incubator/goaccess-npm-logs/0.0.10/questions.yaml b/incubator/goaccess-npm-logs/0.0.10/questions.yaml new file mode 100644 index 00000000000..79a5be4cd2d --- /dev/null +++ b/incubator/goaccess-npm-logs/0.0.10/questions.yaml @@ -0,0 +1,2485 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: SKIP_ARCHIVED_LOGS + label: 'SKIP_ARCHIVED_LOGS' + description: "(Optional) Defaults to False. Set to True to skip archived logs, i.e. proxy-host.gz" + schema: + type: string + default: "False" + - variable: DEBUG + label: 'DEBUG' + description: "(Optional) HTML version of the running goaccess.conf wihtin the container" + schema: + type: string + default: "False" + - variable: BASIC_AUTH + label: 'BASIC_AUTH' + description: "(Optional) Defaults to False. Set to True to enable nginx basic authentication. Docker container needs to stopped or restarted each time this flag is modified. This allows for the .htpasswd file to be changed accordingly." + schema: + type: string + default: "True" + - variable: BASIC_AUTH_USERNAME + label: 'BASIC_AUTH_USERNAME' + description: "Optional) Requires BASICAUTH to bet set to True. Username for basic authentication." + schema: + type: string + default: "x" + - variable: BASIC_AUTH_PASSWORD + label: 'BASIC_AUTH_PASSWORD' + description: "(Optional) Requires BASICAUTH to bet set to True. Password for basic authentication." + schema: + type: string + default: "x" + - variable: EXCLUDE_IPS + label: 'EXCLUDE_IPS' + description: "(Optional) IP Addresses or range of IPs delimited by comma refer to httpsgoaccess.ioman. For example 192.168.0.1-192.168.0.100 or 127.0.0.1,192.168.0.1-192.168.0.100" + schema: + type: string + default: "" + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 7880 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 7880 + + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - 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" + description: "Container Path optlog" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/goaccess-npm-logs/0.0.10/templates/common.yaml b/incubator/goaccess-npm-logs/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/goaccess-npm-logs/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/goaccess-npm-logs/0.0.10/values.yaml b/incubator/goaccess-npm-logs/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/goaccess-npm-logs/item.yaml b/incubator/goaccess-npm-logs/item.yaml new file mode 100644 index 00000000000..8865ef03cef --- /dev/null +++ b/incubator/goaccess-npm-logs/item.yaml @@ -0,0 +1,5 @@ +icon_url: https://truecharts.org/img/chart-icons/goaccess-npm-logs.png +categories: +- Tools-Utilities +- Network-Proxy + diff --git a/incubator/goaccess/0.0.10/CHANGELOG.md b/incubator/goaccess/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..fa6bcd1adec --- /dev/null +++ b/incubator/goaccess/0.0.10/CHANGELOG.md @@ -0,0 +1,34 @@ +# Changelog + + +## [goaccess-0.0.10]goaccess-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [goaccess-0.0.10]goaccess-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + + +## [goaccess-0.0.10]goaccess-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [goaccess-0.0.10]goaccess-0.0.10 (2022-07-20) diff --git a/incubator/goaccess/0.0.10/Chart.lock b/incubator/goaccess/0.0.10/Chart.lock new file mode 100644 index 00000000000..eff1f5736ab --- /dev/null +++ b/incubator/goaccess/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:06:34.599225006Z" diff --git a/incubator/goaccess/0.0.10/Chart.yaml b/incubator/goaccess/0.0.10/Chart.yaml new file mode 100644 index 00000000000..51b5f9213f0 --- /dev/null +++ b/incubator/goaccess/0.0.10/Chart.yaml @@ -0,0 +1,30 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - Other +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: GoAccess is an open source real-time web log analyzer and interactive + viewer that runs in a terminal in *nix systems or through your browser. It provides + fast and valuable HTTP statistics for system administrators that require a visual + server report on the fly. +home: https://github.com/truecharts/apps/tree/master/charts/stable/goaccess +icon: https://truecharts.org/img/chart-icons/goaccess.png +keywords: +- goaccess +- Other +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: goaccess +sources: +- https://hub.docker.com/r/gregyankovoy/goaccess/dockerfile +type: application +version: 0.0.10 diff --git a/incubator/goaccess/0.0.10/README.md b/incubator/goaccess/0.0.10/README.md new file mode 100644 index 00000000000..d88ad41ced9 --- /dev/null +++ b/incubator/goaccess/0.0.10/README.md @@ -0,0 +1,107 @@ +# goaccess + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +GoAccess is an open source real-time web log analyzer and interactive viewer that runs in a terminal in *nix systems or through your browser. It provides fast and valuable HTTP statistics for system administrators that require a visual server report on the fly. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [goaccess](https://truecharts.org/charts/stable/goaccess) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `goaccess` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install goaccess TrueCharts/goaccess +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `goaccess` deployment + +```console +helm uninstall goaccess +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install goaccess \ + --set env.TZ="America/New York" \ + TrueCharts/goaccess +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install goaccess TrueCharts/goaccess -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/goaccess/0.0.10/app-readme.md b/incubator/goaccess/0.0.10/app-readme.md new file mode 100644 index 00000000000..3f4dd145885 --- /dev/null +++ b/incubator/goaccess/0.0.10/app-readme.md @@ -0,0 +1,8 @@ +GoAccess is an open source real-time web log analyzer and interactive viewer that runs in a terminal in *nix systems or through your browser. It provides fast and valuable HTTP statistics for system administrators that require a visual server report on the fly. + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/goaccess + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/goaccess/0.0.10/charts/common-10.4.6.tgz b/incubator/goaccess/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/goaccess/0.0.10/ix_values.yaml b/incubator/goaccess/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..6368e664b9b --- /dev/null +++ b/incubator/goaccess/0.0.10/ix_values.yaml @@ -0,0 +1,24 @@ +env: {} +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/goaccess + tag: latest +persistence: + goaccess: + enabled: true + mountPath: /opt/log +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 7889 + protocol: TCP + targetPort: 7889 diff --git a/incubator/goaccess/0.0.10/questions.yaml b/incubator/goaccess/0.0.10/questions.yaml new file mode 100644 index 00000000000..6bf718e562c --- /dev/null +++ b/incubator/goaccess/0.0.10/questions.yaml @@ -0,0 +1,2440 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 7889 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 7889 + + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - variable: persistence + label: "Integrated Persistent Storage" + description: "Integrated Persistent Storage" + group: "Storage and Persistence" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: goaccess + label: "goaccess 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/goaccess/0.0.10/templates/common.yaml b/incubator/goaccess/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/goaccess/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/goaccess/0.0.10/values.yaml b/incubator/goaccess/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/goaccess/item.yaml b/incubator/goaccess/item.yaml new file mode 100644 index 00000000000..e7ae6ac7667 --- /dev/null +++ b/incubator/goaccess/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/goaccess.png +categories: +- Other + diff --git a/incubator/godaddy-ddns/0.0.10/CHANGELOG.md b/incubator/godaddy-ddns/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..a283abd24b4 --- /dev/null +++ b/incubator/godaddy-ddns/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [godaddy-ddns-0.0.10]godaddy-ddns-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [godaddy-ddns-0.0.10]godaddy-ddns-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [godaddy-ddns-0.0.10]godaddy-ddns-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [godaddy-ddns-0.0.10]godaddy-ddns-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [godaddy-ddns-0.0.10]godaddy-ddns-0.0.10 (2022-07-20) diff --git a/incubator/godaddy-ddns/0.0.10/Chart.lock b/incubator/godaddy-ddns/0.0.10/Chart.lock new file mode 100644 index 00000000000..cda5b1986ee --- /dev/null +++ b/incubator/godaddy-ddns/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:06:38.14041321Z" diff --git a/incubator/godaddy-ddns/0.0.10/Chart.yaml b/incubator/godaddy-ddns/0.0.10/Chart.yaml new file mode 100644 index 00000000000..579ccc63c33 --- /dev/null +++ b/incubator/godaddy-ddns/0.0.10/Chart.yaml @@ -0,0 +1,30 @@ +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: 10.4.6 +deprecated: false +description: Docker image to provide a DDNS service for godaddy domains. Uses the + GoDaddy REST API to update the given domain's DNS IP address to the public IP address + of the host it is executing on. Performs a check every 10 minutes, but you can alter + this if you like by modifying /etc/cron.d/godaddy-ddns inside the container. +home: https://github.com/truecharts/apps/tree/master/charts/stable/godaddy-ddns +icon: https://truecharts.org/img/chart-icons/godaddy-ddns.png +keywords: +- godaddy-ddns +- Network-Web +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: godaddy-ddns +sources: +- https://hub.docker.com/r/jwater7/godaddy-publicip-updater/ +type: application +version: 0.0.10 diff --git a/incubator/godaddy-ddns/0.0.10/README.md b/incubator/godaddy-ddns/0.0.10/README.md new file mode 100644 index 00000000000..7670a800e23 --- /dev/null +++ b/incubator/godaddy-ddns/0.0.10/README.md @@ -0,0 +1,107 @@ +# godaddy-ddns + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +Docker image to provide a DDNS service for godaddy domains. Uses the GoDaddy REST API to update the given domain's DNS IP address to the public IP address of the host it is executing on. Performs a check every 10 minutes, but you can alter this if you like by modifying /etc/cron.d/godaddy-ddns inside the container. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [godaddy-ddns](https://truecharts.org/charts/stable/godaddy-ddns) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `godaddy-ddns` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install godaddy-ddns TrueCharts/godaddy-ddns +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `godaddy-ddns` deployment + +```console +helm uninstall godaddy-ddns +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install godaddy-ddns \ + --set env.TZ="America/New York" \ + TrueCharts/godaddy-ddns +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install godaddy-ddns TrueCharts/godaddy-ddns -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/godaddy-ddns/0.0.10/app-readme.md b/incubator/godaddy-ddns/0.0.10/app-readme.md new file mode 100644 index 00000000000..a8bdc0ebb07 --- /dev/null +++ b/incubator/godaddy-ddns/0.0.10/app-readme.md @@ -0,0 +1,8 @@ +Docker image to provide a DDNS service for godaddy domains. Uses the GoDaddy REST API to update the given domain's DNS IP address to the public IP address of the host it is executing on. Performs a check every 10 minutes, but you can alter this if you like by modifying /etc/cron.d/godaddy-ddns inside the container. + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/godaddy-ddns + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/godaddy-ddns/0.0.10/charts/common-10.4.6.tgz b/incubator/godaddy-ddns/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/godaddy-ddns/0.0.10/ix_values.yaml b/incubator/godaddy-ddns/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..b04b02afafd --- /dev/null +++ b/incubator/godaddy-ddns/0.0.10/ix_values.yaml @@ -0,0 +1,28 @@ +env: + GODADDY_API_KEY: '' + GODADDY_API_SECRET: '' + GODADDY_DOMAINS: '' +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/godaddy-ddns + tag: latest +persistence: {} +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: false + ports: + main: + enabled: false diff --git a/incubator/godaddy-ddns/0.0.10/questions.yaml b/incubator/godaddy-ddns/0.0.10/questions.yaml new file mode 100644 index 00000000000..7777a9f082c --- /dev/null +++ b/incubator/godaddy-ddns/0.0.10/questions.yaml @@ -0,0 +1,1855 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: {} +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: false + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: GODADDY_API_KEY + label: 'GODADDY_API_KEY' + description: "Use the key from your godaddy account" + schema: + type: string + default: "" + - variable: GODADDY_API_SECRET + label: 'GODADDY_API_SECRET' + description: "Use the secret from your godaddy account " + schema: + type: string + default: "" + - variable: GODADDY_DOMAINS + label: 'GODADDY_DOMAINS' + description: "A comma-separated list of domains that youd like to update. For example mydomain.com or mydomain.com,anotherdomain.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: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/godaddy-ddns/0.0.10/templates/common.yaml b/incubator/godaddy-ddns/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/godaddy-ddns/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/godaddy-ddns/0.0.10/values.yaml b/incubator/godaddy-ddns/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/godaddy-ddns/item.yaml b/incubator/godaddy-ddns/item.yaml new file mode 100644 index 00000000000..1359c2b3434 --- /dev/null +++ b/incubator/godaddy-ddns/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/godaddy-ddns.png +categories: +- Network-Web + diff --git a/incubator/gokapi/0.0.10/CHANGELOG.md b/incubator/gokapi/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..e41049a8467 --- /dev/null +++ b/incubator/gokapi/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [gokapi-0.0.10]gokapi-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [gokapi-0.0.10]gokapi-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [gokapi-0.0.10]gokapi-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [gokapi-0.0.10]gokapi-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [gokapi-0.0.10]gokapi-0.0.10 (2022-07-20) diff --git a/incubator/gokapi/0.0.10/Chart.lock b/incubator/gokapi/0.0.10/Chart.lock new file mode 100644 index 00000000000..d2c8bced23f --- /dev/null +++ b/incubator/gokapi/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:06:45.438527504Z" diff --git a/incubator/gokapi/0.0.10/Chart.yaml b/incubator/gokapi/0.0.10/Chart.yaml new file mode 100644 index 00000000000..d0d01848252 --- /dev/null +++ b/incubator/gokapi/0.0.10/Chart.yaml @@ -0,0 +1,34 @@ +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: 10.4.6 +deprecated: false +description: "DESCRIPTION\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/gokapi +icon: https://truecharts.org/img/chart-icons/gokapi.png +keywords: +- gokapi +- Cloud +- Tools-Utilities +- Network-Web +- Network-FTP +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: gokapi +sources: +- https://github.com/Forceu/gokapi +- https://hub.docker.com/r/f0rc3/gokapi +type: application +version: 0.0.10 diff --git a/incubator/gokapi/0.0.10/README.md b/incubator/gokapi/0.0.10/README.md new file mode 100644 index 00000000000..309ad91d33a --- /dev/null +++ b/incubator/gokapi/0.0.10/README.md @@ -0,0 +1,108 @@ +# gokapi + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +DESCRIPTION + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [gokapi](https://truecharts.org/charts/stable/gokapi) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `gokapi` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install gokapi TrueCharts/gokapi +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `gokapi` deployment + +```console +helm uninstall gokapi +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install gokapi \ + --set env.TZ="America/New York" \ + TrueCharts/gokapi +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install gokapi TrueCharts/gokapi -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/gokapi/0.0.10/app-readme.md b/incubator/gokapi/0.0.10/app-readme.md new file mode 100644 index 00000000000..5123036d937 --- /dev/null +++ b/incubator/gokapi/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +DESCRIPTION + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/gokapi + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/gokapi/0.0.10/charts/common-10.4.6.tgz b/incubator/gokapi/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/gokapi/0.0.10/ix_values.yaml b/incubator/gokapi/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..2fb857820f3 --- /dev/null +++ b/incubator/gokapi/0.0.10/ix_values.yaml @@ -0,0 +1,31 @@ +env: + GOKAPI_LENGTH_ID: '10' + GOKAPI_MAX_FILESIZE: '5' + GOKAPI_PASSWORD: unraid + GOKAPI_USERNAME: unraid +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/gokapi + tag: latest +persistence: + config: + enabled: true + mountPath: /app/config + data: + enabled: true + mountPath: /app/data +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 53842 + protocol: TCP + targetPort: 53842 diff --git a/incubator/gokapi/0.0.10/questions.yaml b/incubator/gokapi/0.0.10/questions.yaml new file mode 100644 index 00000000000..816b1279409 --- /dev/null +++ b/incubator/gokapi/0.0.10/questions.yaml @@ -0,0 +1,2644 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: GOKAPI_USERNAME + label: 'GOKAPI_USERNAME' + schema: + type: string + default: "unraid" + - variable: GOKAPI_PASSWORD + label: 'GOKAPI_PASSWORD' + schema: + type: string + default: "unraid" + - variable: GOKAPI_LENGTH_ID + label: 'GOKAPI_LENGTH_ID' + schema: + type: string + default: "10" + - variable: GOKAPI_MAX_FILESIZE + label: 'GOKAPI_MAX_FILESIZE' + schema: + type: string + default: "5" + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 53842 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 53842 + + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/gokapi/0.0.10/templates/common.yaml b/incubator/gokapi/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/gokapi/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/gokapi/0.0.10/values.yaml b/incubator/gokapi/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/gokapi/item.yaml b/incubator/gokapi/item.yaml new file mode 100644 index 00000000000..c5f9abe2450 --- /dev/null +++ b/incubator/gokapi/item.yaml @@ -0,0 +1,7 @@ +icon_url: https://truecharts.org/img/chart-icons/gokapi.png +categories: +- Cloud +- Tools-Utilities +- Network-Web +- Network-FTP + diff --git a/incubator/google-cloud-storage-backup/0.0.10/CHANGELOG.md b/incubator/google-cloud-storage-backup/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..e6a314fc075 --- /dev/null +++ b/incubator/google-cloud-storage-backup/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [google-cloud-storage-backup-0.0.10]google-cloud-storage-backup-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [google-cloud-storage-backup-0.0.10]google-cloud-storage-backup-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [google-cloud-storage-backup-0.0.10]google-cloud-storage-backup-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [google-cloud-storage-backup-0.0.10]google-cloud-storage-backup-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [google-cloud-storage-backup-0.0.10]google-cloud-storage-backup-0.0.10 (2022-07-20) diff --git a/incubator/google-cloud-storage-backup/0.0.10/Chart.lock b/incubator/google-cloud-storage-backup/0.0.10/Chart.lock new file mode 100644 index 00000000000..0f0e0961069 --- /dev/null +++ b/incubator/google-cloud-storage-backup/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:06:50.690008115Z" diff --git a/incubator/google-cloud-storage-backup/0.0.10/Chart.yaml b/incubator/google-cloud-storage-backup/0.0.10/Chart.yaml new file mode 100644 index 00000000000..e3096171756 --- /dev/null +++ b/incubator/google-cloud-storage-backup/0.0.10/Chart.yaml @@ -0,0 +1,31 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - Backup + - Cloud +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: 'A simple way to backup important files to Google Cloud Storage. + + ' +home: https://github.com/truecharts/apps/tree/master/charts/stable/google-cloud-storage-backup +icon: https://truecharts.org/img/chart-icons/google-cloud-storage-backup.png +keywords: +- google-cloud-storage-backup +- Backup +- Cloud +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: google-cloud-storage-backup +sources: +- https://hub.docker.com/r/vinid223/gcloud-storage-backup +type: application +version: 0.0.10 diff --git a/incubator/google-cloud-storage-backup/0.0.10/README.md b/incubator/google-cloud-storage-backup/0.0.10/README.md new file mode 100644 index 00000000000..bc047b345d1 --- /dev/null +++ b/incubator/google-cloud-storage-backup/0.0.10/README.md @@ -0,0 +1,107 @@ +# google-cloud-storage-backup + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +A simple way to backup important files to Google Cloud Storage. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [google-cloud-storage-backup](https://truecharts.org/charts/stable/google-cloud-storage-backup) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `google-cloud-storage-backup` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install google-cloud-storage-backup TrueCharts/google-cloud-storage-backup +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `google-cloud-storage-backup` deployment + +```console +helm uninstall google-cloud-storage-backup +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install google-cloud-storage-backup \ + --set env.TZ="America/New York" \ + TrueCharts/google-cloud-storage-backup +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install google-cloud-storage-backup TrueCharts/google-cloud-storage-backup -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/google-cloud-storage-backup/0.0.10/app-readme.md b/incubator/google-cloud-storage-backup/0.0.10/app-readme.md new file mode 100644 index 00000000000..a01a9601c4e --- /dev/null +++ b/incubator/google-cloud-storage-backup/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +A simple way to backup important files to Google Cloud Storage. + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/google-cloud-storage-backup + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/google-cloud-storage-backup/0.0.10/charts/common-10.4.6.tgz b/incubator/google-cloud-storage-backup/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/google-cloud-storage-backup/0.0.10/ix_values.yaml b/incubator/google-cloud-storage-backup/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..3c79ed7857c --- /dev/null +++ b/incubator/google-cloud-storage-backup/0.0.10/ix_values.yaml @@ -0,0 +1,34 @@ +env: + ACCESS_KEY: 'Container Variable: ACCESS_KEY' + CRON_SCHEDULE: 0 * * * * + GCSOPTIONS: '' + GCSPATH: gs://mybucket/ + SECRET_KEY: 'Container Variable: SECRET_KEY' +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/google-cloud-storage-backup + tag: latest +persistence: + google-cloud-storage-backup: + enabled: true + mountPath: /data/backup + readOnly: true +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: false + ports: + main: + enabled: false diff --git a/incubator/google-cloud-storage-backup/0.0.10/questions.yaml b/incubator/google-cloud-storage-backup/0.0.10/questions.yaml new file mode 100644 index 00000000000..4fc57185f61 --- /dev/null +++ b/incubator/google-cloud-storage-backup/0.0.10/questions.yaml @@ -0,0 +1,2048 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: {} +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: false + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: ACCESS_KEY + label: 'ACCESS_KEY' + schema: + type: string + default: "Container Variable: ACCESS_KEY" + - variable: SECRET_KEY + label: 'SECRET_KEY' + schema: + type: string + default: "Container Variable: SECRET_KEY" + - variable: GCSPATH + label: 'GCSPATH' + schema: + type: string + default: "gs://mybucket/" + - variable: GCSOPTIONS + label: 'GCSOPTIONS' + schema: + type: string + default: "" + - variable: CRON_SCHEDULE + label: 'CRON_SCHEDULE' + schema: + type: string + default: "0 * * * *" + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - variable: persistence + label: "Integrated Persistent Storage" + description: "Integrated Persistent Storage" + group: "Storage and Persistence" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: google-cloud-storage-backup + label: "google-cloud-storage-backup 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/google-cloud-storage-backup/0.0.10/templates/common.yaml b/incubator/google-cloud-storage-backup/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/google-cloud-storage-backup/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/google-cloud-storage-backup/0.0.10/values.yaml b/incubator/google-cloud-storage-backup/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/google-cloud-storage-backup/item.yaml b/incubator/google-cloud-storage-backup/item.yaml new file mode 100644 index 00000000000..44ea7b15481 --- /dev/null +++ b/incubator/google-cloud-storage-backup/item.yaml @@ -0,0 +1,5 @@ +icon_url: https://truecharts.org/img/chart-icons/google-cloud-storage-backup.png +categories: +- Backup +- Cloud + diff --git a/incubator/googlephotossync/0.0.10/CHANGELOG.md b/incubator/googlephotossync/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..f56cc7581cc --- /dev/null +++ b/incubator/googlephotossync/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [googlephotossync-0.0.10]googlephotossync-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [googlephotossync-0.0.10]googlephotossync-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [googlephotossync-0.0.10]googlephotossync-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [googlephotossync-0.0.10]googlephotossync-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [googlephotossync-0.0.10]googlephotossync-0.0.10 (2022-07-20) diff --git a/incubator/googlephotossync/0.0.10/Chart.lock b/incubator/googlephotossync/0.0.10/Chart.lock new file mode 100644 index 00000000000..979bdc4db5a --- /dev/null +++ b/incubator/googlephotossync/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:06:52.883276115Z" diff --git a/incubator/googlephotossync/0.0.10/Chart.yaml b/incubator/googlephotossync/0.0.10/Chart.yaml new file mode 100644 index 00000000000..e88b6d0410d --- /dev/null +++ b/incubator/googlephotossync/0.0.10/Chart.yaml @@ -0,0 +1,30 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - Other +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: "Google Photos Sync downloads your Google Photos to the local file system.\ + \ It will backup all the photos the user uploaded to Google Photos, but also the\ + \ album information and additional Google Photos 'Creations' (animations, panoramas,\ + \ movies, effects and collages).\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/googlephotossync +icon: https://truecharts.org/img/chart-icons/googlephotossync.png +keywords: +- googlephotossync +- Other +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: googlephotossync +sources: +- https://hub.docker.com/r/rix1337/docker-gphotos-sync +type: application +version: 0.0.10 diff --git a/incubator/googlephotossync/0.0.10/README.md b/incubator/googlephotossync/0.0.10/README.md new file mode 100644 index 00000000000..708bbf9ec80 --- /dev/null +++ b/incubator/googlephotossync/0.0.10/README.md @@ -0,0 +1,107 @@ +# googlephotossync + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +Google Photos Sync downloads your Google Photos to the local file system. It will backup all the photos the user uploaded to Google Photos, but also the album information and additional Google Photos 'Creations' (animations, panoramas, movies, effects and collages). + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [googlephotossync](https://truecharts.org/charts/stable/googlephotossync) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `googlephotossync` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install googlephotossync TrueCharts/googlephotossync +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `googlephotossync` deployment + +```console +helm uninstall googlephotossync +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install googlephotossync \ + --set env.TZ="America/New York" \ + TrueCharts/googlephotossync +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install googlephotossync TrueCharts/googlephotossync -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/googlephotossync/0.0.10/app-readme.md b/incubator/googlephotossync/0.0.10/app-readme.md new file mode 100644 index 00000000000..65ad96be7e6 --- /dev/null +++ b/incubator/googlephotossync/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +Google Photos Sync downloads your Google Photos to the local file system. It will backup all the photos the user uploaded to Google Photos, but also the album information and additional Google Photos 'Creations' (animations, panoramas, movies, effects and collages). + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/googlephotossync + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/googlephotossync/0.0.10/charts/common-10.4.6.tgz b/incubator/googlephotossync/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/googlephotossync/0.0.10/ix_values.yaml b/incubator/googlephotossync/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..42a51fedd8a --- /dev/null +++ b/incubator/googlephotossync/0.0.10/ix_values.yaml @@ -0,0 +1,31 @@ +env: {} +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/googlephotossync + tag: latest +persistence: + config: + enabled: true + mountPath: /config + hostpath1: + enabled: true + mountPath: /storage +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: false + ports: + main: + enabled: false diff --git a/incubator/googlephotossync/0.0.10/questions.yaml b/incubator/googlephotossync/0.0.10/questions.yaml new file mode 100644 index 00000000000..bd5feb17e0c --- /dev/null +++ b/incubator/googlephotossync/0.0.10/questions.yaml @@ -0,0 +1,2193 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: {} +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: false + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + 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: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - 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" + description: "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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/googlephotossync/0.0.10/templates/common.yaml b/incubator/googlephotossync/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/googlephotossync/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/googlephotossync/0.0.10/values.yaml b/incubator/googlephotossync/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/googlephotossync/item.yaml b/incubator/googlephotossync/item.yaml new file mode 100644 index 00000000000..cb40902672a --- /dev/null +++ b/incubator/googlephotossync/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/googlephotossync.png +categories: +- Other + diff --git a/incubator/gpodder/0.0.10/CHANGELOG.md b/incubator/gpodder/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..0f0ce249c9a --- /dev/null +++ b/incubator/gpodder/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [gpodder-0.0.10]gpodder-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [gpodder-0.0.10]gpodder-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [gpodder-0.0.10]gpodder-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [gpodder-0.0.10]gpodder-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [gpodder-0.0.10]gpodder-0.0.10 (2022-07-20) diff --git a/incubator/gpodder/0.0.10/Chart.lock b/incubator/gpodder/0.0.10/Chart.lock new file mode 100644 index 00000000000..b9e78a57e6a --- /dev/null +++ b/incubator/gpodder/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:06:54.467112295Z" diff --git a/incubator/gpodder/0.0.10/Chart.yaml b/incubator/gpodder/0.0.10/Chart.yaml new file mode 100644 index 00000000000..e1f23a19099 --- /dev/null +++ b/incubator/gpodder/0.0.10/Chart.yaml @@ -0,0 +1,31 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - Downloaders + - MediaApp-Other +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: "gPodder is a simple, open source podcast client written in Python using\ + \ GTK+. In development since 2005 with a proven, mature codebase.&#xD;\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/gpodder +icon: https://truecharts.org/img/chart-icons/gpodder.png +keywords: +- gpodder +- Downloaders +- MediaApp-Other +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: gpodder +sources: +- https://gpodder.github.io/ +- https://hub.docker.com/r/xthursdayx/gpodder-docker/ +type: application +version: 0.0.10 diff --git a/incubator/gpodder/0.0.10/README.md b/incubator/gpodder/0.0.10/README.md new file mode 100644 index 00000000000..6a1dc06d7e0 --- /dev/null +++ b/incubator/gpodder/0.0.10/README.md @@ -0,0 +1,108 @@ +# gpodder + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +gPodder is a simple, open source podcast client written in Python using GTK+. In development since 2005 with a proven, mature codebase.&#xD; + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [gpodder](https://truecharts.org/charts/stable/gpodder) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `gpodder` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install gpodder TrueCharts/gpodder +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `gpodder` deployment + +```console +helm uninstall gpodder +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install gpodder \ + --set env.TZ="America/New York" \ + TrueCharts/gpodder +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install gpodder TrueCharts/gpodder -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/gpodder/0.0.10/app-readme.md b/incubator/gpodder/0.0.10/app-readme.md new file mode 100644 index 00000000000..099383e204d --- /dev/null +++ b/incubator/gpodder/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +gPodder is a simple, open source podcast client written in Python using GTK+. In development since 2005 with a proven, mature codebase.&#xD; + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/gpodder + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/gpodder/0.0.10/charts/common-10.4.6.tgz b/incubator/gpodder/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/gpodder/0.0.10/ix_values.yaml b/incubator/gpodder/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..35943f4e541 --- /dev/null +++ b/incubator/gpodder/0.0.10/ix_values.yaml @@ -0,0 +1,28 @@ +env: + PASSWORD: '' +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/gpodder + tag: latest +persistence: + config: + enabled: true + mountPath: /config + downloadspath: + enabled: true + mountPath: /downloads +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 3000 + protocol: TCP + targetPort: 3000 diff --git a/incubator/gpodder/0.0.10/questions.yaml b/incubator/gpodder/0.0.10/questions.yaml new file mode 100644 index 00000000000..608b02db10f --- /dev/null +++ b/incubator/gpodder/0.0.10/questions.yaml @@ -0,0 +1,2630 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: PASSWORD + label: 'PASSWORD' + description: "Optional - password for Guacamoles web interface" + schema: + type: string + default: "" + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 3000 + + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - variable: persistence + label: "Integrated Persistent Storage" + description: "Integrated Persistent Storage" + group: "Storage and Persistence" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: downloadspath + label: "downloadspath 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/gpodder/0.0.10/templates/common.yaml b/incubator/gpodder/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/gpodder/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/gpodder/0.0.10/values.yaml b/incubator/gpodder/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/gpodder/item.yaml b/incubator/gpodder/item.yaml new file mode 100644 index 00000000000..01e8d4b2a1c --- /dev/null +++ b/incubator/gpodder/item.yaml @@ -0,0 +1,5 @@ +icon_url: https://truecharts.org/img/chart-icons/gpodder.png +categories: +- Downloaders +- MediaApp-Other + diff --git a/incubator/grafana-image-renderer/0.0.10/CHANGELOG.md b/incubator/grafana-image-renderer/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..ce39bc61204 --- /dev/null +++ b/incubator/grafana-image-renderer/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [grafana-image-renderer-0.0.10]grafana-image-renderer-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [grafana-image-renderer-0.0.10]grafana-image-renderer-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [grafana-image-renderer-0.0.10]grafana-image-renderer-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [grafana-image-renderer-0.0.10]grafana-image-renderer-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [grafana-image-renderer-0.0.10]grafana-image-renderer-0.0.10 (2022-07-20) diff --git a/incubator/grafana-image-renderer/0.0.10/Chart.lock b/incubator/grafana-image-renderer/0.0.10/Chart.lock new file mode 100644 index 00000000000..5e37bf9b3f6 --- /dev/null +++ b/incubator/grafana-image-renderer/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:07:01.409434907Z" diff --git a/incubator/grafana-image-renderer/0.0.10/Chart.yaml b/incubator/grafana-image-renderer/0.0.10/Chart.yaml new file mode 100644 index 00000000000..d88ee43d832 --- /dev/null +++ b/incubator/grafana-image-renderer/0.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: 10.4.6 +deprecated: false +description: "A Grafana remote image renderer that handles rendering panels &\ + \ dashboards to PNGs using headless chrome.\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/grafana-image-renderer +icon: https://truecharts.org/img/chart-icons/grafana-image-renderer.png +keywords: +- grafana-image-renderer +- Productivity +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: grafana-image-renderer +sources: +- https://github.com/grafana/grafana-image-renderer/blob/master/docs/remote_rendering_using_docker.md +- https://hub.docker.com/r/grafana/grafana-image-renderer +type: application +version: 0.0.10 diff --git a/incubator/grafana-image-renderer/0.0.10/README.md b/incubator/grafana-image-renderer/0.0.10/README.md new file mode 100644 index 00000000000..c4fa14056ea --- /dev/null +++ b/incubator/grafana-image-renderer/0.0.10/README.md @@ -0,0 +1,108 @@ +# grafana-image-renderer + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +A Grafana remote image renderer that handles rendering panels & dashboards to PNGs using headless chrome. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [grafana-image-renderer](https://truecharts.org/charts/stable/grafana-image-renderer) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `grafana-image-renderer` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install grafana-image-renderer TrueCharts/grafana-image-renderer +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `grafana-image-renderer` deployment + +```console +helm uninstall grafana-image-renderer +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install grafana-image-renderer \ + --set env.TZ="America/New York" \ + TrueCharts/grafana-image-renderer +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install grafana-image-renderer TrueCharts/grafana-image-renderer -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/grafana-image-renderer/0.0.10/app-readme.md b/incubator/grafana-image-renderer/0.0.10/app-readme.md new file mode 100644 index 00000000000..1e748b3882a --- /dev/null +++ b/incubator/grafana-image-renderer/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +A Grafana remote image renderer that handles rendering panels & dashboards to PNGs using headless chrome. + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/grafana-image-renderer + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/grafana-image-renderer/0.0.10/charts/common-10.4.6.tgz b/incubator/grafana-image-renderer/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/grafana-image-renderer/0.0.10/ix_values.yaml b/incubator/grafana-image-renderer/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..e433a4c50f2 --- /dev/null +++ b/incubator/grafana-image-renderer/0.0.10/ix_values.yaml @@ -0,0 +1,25 @@ +env: {} +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/grafana-image-renderer + tag: latest +persistence: {} +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: false + ports: + main: + enabled: false diff --git a/incubator/grafana-image-renderer/0.0.10/questions.yaml b/incubator/grafana-image-renderer/0.0.10/questions.yaml new file mode 100644 index 00000000000..c6590a40435 --- /dev/null +++ b/incubator/grafana-image-renderer/0.0.10/questions.yaml @@ -0,0 +1,1829 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: {} +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: false + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + 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: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/grafana-image-renderer/0.0.10/templates/common.yaml b/incubator/grafana-image-renderer/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/grafana-image-renderer/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/grafana-image-renderer/0.0.10/values.yaml b/incubator/grafana-image-renderer/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/grafana-image-renderer/item.yaml b/incubator/grafana-image-renderer/item.yaml new file mode 100644 index 00000000000..77bde550694 --- /dev/null +++ b/incubator/grafana-image-renderer/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/grafana-image-renderer.png +categories: +- Productivity + diff --git a/incubator/gridcoinwalletgui/0.0.10/CHANGELOG.md b/incubator/gridcoinwalletgui/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..c5c8029d169 --- /dev/null +++ b/incubator/gridcoinwalletgui/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [gridcoinwalletgui-0.0.10]gridcoinwalletgui-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [gridcoinwalletgui-0.0.10]gridcoinwalletgui-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [gridcoinwalletgui-0.0.10]gridcoinwalletgui-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [gridcoinwalletgui-0.0.10]gridcoinwalletgui-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [gridcoinwalletgui-0.0.10]gridcoinwalletgui-0.0.10 (2022-07-20) diff --git a/incubator/gridcoinwalletgui/0.0.10/Chart.lock b/incubator/gridcoinwalletgui/0.0.10/Chart.lock new file mode 100644 index 00000000000..a7121aee45e --- /dev/null +++ b/incubator/gridcoinwalletgui/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:07:07.196480757Z" diff --git a/incubator/gridcoinwalletgui/0.0.10/Chart.yaml b/incubator/gridcoinwalletgui/0.0.10/Chart.yaml new file mode 100644 index 00000000000..50326b5d31e --- /dev/null +++ b/incubator/gridcoinwalletgui/0.0.10/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: 10.4.6 +deprecated: false +description: "Running Boinc? Get some Gridcoins from your Boinc work!\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/gridcoinwalletgui +icon: https://truecharts.org/img/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://gridcoin.us/ +- https://hub.docker.com/repository/docker/sublivion/gridcoinwalletgui +type: application +version: 0.0.10 diff --git a/incubator/gridcoinwalletgui/0.0.10/README.md b/incubator/gridcoinwalletgui/0.0.10/README.md new file mode 100644 index 00000000000..95c97a81e1d --- /dev/null +++ b/incubator/gridcoinwalletgui/0.0.10/README.md @@ -0,0 +1,108 @@ +# gridcoinwalletgui + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +Running Boinc? Get some Gridcoins from your Boinc work! + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [gridcoinwalletgui](https://truecharts.org/charts/stable/gridcoinwalletgui) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `gridcoinwalletgui` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install gridcoinwalletgui TrueCharts/gridcoinwalletgui +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `gridcoinwalletgui` deployment + +```console +helm uninstall gridcoinwalletgui +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install gridcoinwalletgui \ + --set env.TZ="America/New York" \ + TrueCharts/gridcoinwalletgui +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install gridcoinwalletgui TrueCharts/gridcoinwalletgui -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/gridcoinwalletgui/0.0.10/app-readme.md b/incubator/gridcoinwalletgui/0.0.10/app-readme.md new file mode 100644 index 00000000000..a817cc2f811 --- /dev/null +++ b/incubator/gridcoinwalletgui/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +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 + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/gridcoinwalletgui/0.0.10/charts/common-10.4.6.tgz b/incubator/gridcoinwalletgui/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/gridcoinwalletgui/0.0.10/ix_values.yaml b/incubator/gridcoinwalletgui/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..cf416c316bc --- /dev/null +++ b/incubator/gridcoinwalletgui/0.0.10/ix_values.yaml @@ -0,0 +1,37 @@ +env: + VNC_PW: vncpassword + VNC_RESOLUTION: 1920x1080 +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/gridcoinwalletgui + tag: latest +persistence: + appdataconfigpath: + enabled: true + mountPath: /headless/.GridcoinResearch/ + boincdatadir: + enabled: true + mountPath: /var/lib/boinc-client/ +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 6901 + protocol: HTTP + targetPort: 6901 + vncport: + enabled: true + ports: + vncport: + enabled: true + port: 5901 + protocol: TCP + targetPort: 5901 diff --git a/incubator/gridcoinwalletgui/0.0.10/questions.yaml b/incubator/gridcoinwalletgui/0.0.10/questions.yaml new file mode 100644 index 00000000000..f7c34a90978 --- /dev/null +++ b/incubator/gridcoinwalletgui/0.0.10/questions.yaml @@ -0,0 +1,2769 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container 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: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: HTTP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 6901 + + - 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, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 5901 + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/gridcoinwalletgui/0.0.10/templates/common.yaml b/incubator/gridcoinwalletgui/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/gridcoinwalletgui/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/gridcoinwalletgui/0.0.10/values.yaml b/incubator/gridcoinwalletgui/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/gridcoinwalletgui/item.yaml b/incubator/gridcoinwalletgui/item.yaml new file mode 100644 index 00000000000..e85a9fe02a8 --- /dev/null +++ b/incubator/gridcoinwalletgui/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/gridcoinwalletgui.png +categories: +- Crypto + diff --git a/incubator/guide2go/0.0.10/CHANGELOG.md b/incubator/guide2go/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..870b34b7ebb --- /dev/null +++ b/incubator/guide2go/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [guide2go-0.0.10]guide2go-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [guide2go-0.0.10]guide2go-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [guide2go-0.0.10]guide2go-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [guide2go-0.0.10]guide2go-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [guide2go-0.0.10]guide2go-0.0.10 (2022-07-20) diff --git a/incubator/guide2go/0.0.10/Chart.lock b/incubator/guide2go/0.0.10/Chart.lock new file mode 100644 index 00000000000..9d8407ebf54 --- /dev/null +++ b/incubator/guide2go/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:07:09.803079992Z" diff --git a/incubator/guide2go/0.0.10/Chart.yaml b/incubator/guide2go/0.0.10/Chart.yaml new file mode 100644 index 00000000000..2e7eb7385bd --- /dev/null +++ b/incubator/guide2go/0.0.10/Chart.yaml @@ -0,0 +1,28 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - Downloaders +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: "a xml grabber from schedule direct service\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/guide2go +icon: https://truecharts.org/img/chart-icons/guide2go.png +keywords: +- guide2go +- Downloaders +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: guide2go +sources: +- https://github.com/alturismo/guide2go +- https://hub.docker.com/r/alturismo/guide2go +type: application +version: 0.0.10 diff --git a/incubator/guide2go/0.0.10/README.md b/incubator/guide2go/0.0.10/README.md new file mode 100644 index 00000000000..d6e8fe1e270 --- /dev/null +++ b/incubator/guide2go/0.0.10/README.md @@ -0,0 +1,108 @@ +# guide2go + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +a xml grabber from schedule direct service + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [guide2go](https://truecharts.org/charts/stable/guide2go) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `guide2go` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install guide2go TrueCharts/guide2go +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `guide2go` deployment + +```console +helm uninstall guide2go +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install guide2go \ + --set env.TZ="America/New York" \ + TrueCharts/guide2go +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install guide2go TrueCharts/guide2go -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/guide2go/0.0.10/app-readme.md b/incubator/guide2go/0.0.10/app-readme.md new file mode 100644 index 00000000000..96466ee0b50 --- /dev/null +++ b/incubator/guide2go/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +a xml grabber from schedule direct service + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/guide2go + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/guide2go/0.0.10/charts/common-10.4.6.tgz b/incubator/guide2go/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/guide2go/0.0.10/ix_values.yaml b/incubator/guide2go/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..c47624848a0 --- /dev/null +++ b/incubator/guide2go/0.0.10/ix_values.yaml @@ -0,0 +1,34 @@ +env: {} +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/guide2go + tag: latest +persistence: + config: + enabled: true + mountPath: /config + guide2go: + enabled: true + mountPath: /guide2go + tvh: + enabled: true + mountPath: /TVH +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: false + ports: + main: + enabled: false diff --git a/incubator/guide2go/0.0.10/questions.yaml b/incubator/guide2go/0.0.10/questions.yaml new file mode 100644 index 00000000000..ea8c97dee39 --- /dev/null +++ b/incubator/guide2go/0.0.10/questions.yaml @@ -0,0 +1,2370 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: {} +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: false + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + 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: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - 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: "mntuserappdataguide2goconfigconfig and cron setting" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: guide2go + label: "guide2go Storage" + description: "mntuserappdataguide2gooutput folder or where u can place your existing .json 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: tvh + label: "tvh Storage" + description: "mntuserappdatatvheadenddatain case move to TVHeadend is enabled u need to mount this." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/guide2go/0.0.10/templates/common.yaml b/incubator/guide2go/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/guide2go/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/guide2go/0.0.10/values.yaml b/incubator/guide2go/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/guide2go/item.yaml b/incubator/guide2go/item.yaml new file mode 100644 index 00000000000..2c38dd0591e --- /dev/null +++ b/incubator/guide2go/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/guide2go.png +categories: +- Downloaders + diff --git a/incubator/h5ai/0.0.10/CHANGELOG.md b/incubator/h5ai/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..88df9cc172c --- /dev/null +++ b/incubator/h5ai/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [h5ai-0.0.10]h5ai-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [h5ai-0.0.10]h5ai-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [h5ai-0.0.10]h5ai-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [h5ai-0.0.10]h5ai-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [h5ai-0.0.10]h5ai-0.0.10 (2022-07-20) diff --git a/incubator/h5ai/0.0.10/Chart.lock b/incubator/h5ai/0.0.10/Chart.lock new file mode 100644 index 00000000000..d941e8055df --- /dev/null +++ b/incubator/h5ai/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:07:11.158746414Z" diff --git a/incubator/h5ai/0.0.10/Chart.yaml b/incubator/h5ai/0.0.10/Chart.yaml new file mode 100644 index 00000000000..7818c2db6e4 --- /dev/null +++ b/incubator/h5ai/0.0.10/Chart.yaml @@ -0,0 +1,30 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - Cloud + - Network-FTP +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: "DESCRIPTION\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/h5ai +icon: https://truecharts.org/img/chart-icons/h5ai.png +keywords: +- h5ai +- Cloud +- Network-FTP +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: h5ai +sources: +- https://github.com/awesometic/docker-h5ai +- https://hub.docker.com/r/awesometic/h5ai +type: application +version: 0.0.10 diff --git a/incubator/h5ai/0.0.10/README.md b/incubator/h5ai/0.0.10/README.md new file mode 100644 index 00000000000..a55011c30d2 --- /dev/null +++ b/incubator/h5ai/0.0.10/README.md @@ -0,0 +1,108 @@ +# h5ai + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +DESCRIPTION + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [h5ai](https://truecharts.org/charts/stable/h5ai) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `h5ai` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install h5ai TrueCharts/h5ai +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `h5ai` deployment + +```console +helm uninstall h5ai +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install h5ai \ + --set env.TZ="America/New York" \ + TrueCharts/h5ai +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install h5ai TrueCharts/h5ai -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/h5ai/0.0.10/app-readme.md b/incubator/h5ai/0.0.10/app-readme.md new file mode 100644 index 00000000000..fb0d061ceac --- /dev/null +++ b/incubator/h5ai/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +DESCRIPTION + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/h5ai + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/h5ai/0.0.10/charts/common-10.4.6.tgz b/incubator/h5ai/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/h5ai/0.0.10/ix_values.yaml b/incubator/h5ai/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..0fd04aa6fda --- /dev/null +++ b/incubator/h5ai/0.0.10/ix_values.yaml @@ -0,0 +1,28 @@ +env: {} +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/h5ai + tag: latest +persistence: + config: + enabled: true + mountPath: /config + directorystorage: + enabled: true + mountPath: /h5ai + readOnly: true +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 80 + protocol: TCP + targetPort: 80 diff --git a/incubator/h5ai/0.0.10/questions.yaml b/incubator/h5ai/0.0.10/questions.yaml new file mode 100644 index 00000000000..dfc9340784e --- /dev/null +++ b/incubator/h5ai/0.0.10/questions.yaml @@ -0,0 +1,2617 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 80 + + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - variable: persistence + label: "Integrated Persistent Storage" + description: "Integrated Persistent Storage" + group: "Storage and Persistence" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: directorystorage + label: "directorystorage Storage" + description: "This is where the shared files are located." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/h5ai/0.0.10/templates/common.yaml b/incubator/h5ai/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/h5ai/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/h5ai/0.0.10/values.yaml b/incubator/h5ai/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/h5ai/item.yaml b/incubator/h5ai/item.yaml new file mode 100644 index 00000000000..da51c025615 --- /dev/null +++ b/incubator/h5ai/item.yaml @@ -0,0 +1,5 @@ +icon_url: https://truecharts.org/img/chart-icons/h5ai.png +categories: +- Cloud +- Network-FTP + diff --git a/incubator/halflife2deathmatch/0.0.10/CHANGELOG.md b/incubator/halflife2deathmatch/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..70b7cd743a2 --- /dev/null +++ b/incubator/halflife2deathmatch/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [halflife2deathmatch-0.0.10]halflife2deathmatch-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [halflife2deathmatch-0.0.10]halflife2deathmatch-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [halflife2deathmatch-0.0.10]halflife2deathmatch-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [halflife2deathmatch-0.0.10]halflife2deathmatch-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [halflife2deathmatch-0.0.10]halflife2deathmatch-0.0.10 (2022-07-20) diff --git a/incubator/halflife2deathmatch/0.0.10/Chart.lock b/incubator/halflife2deathmatch/0.0.10/Chart.lock new file mode 100644 index 00000000000..a2dbbadd610 --- /dev/null +++ b/incubator/halflife2deathmatch/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:07:18.116661538Z" diff --git a/incubator/halflife2deathmatch/0.0.10/Chart.yaml b/incubator/halflife2deathmatch/0.0.10/Chart.yaml new file mode 100644 index 00000000000..0a2ffba4b58 --- /dev/null +++ b/incubator/halflife2deathmatch/0.0.10/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: 10.4.6 +deprecated: false +description: "This Docker will download and install SteamCMD. It will also install\ + \ HalfLife2 DeathMatch and run it.\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/halflife2deathmatch +icon: https://truecharts.org/img/chart-icons/halflife2deathmatch.png +keywords: +- halflife2deathmatch +- GameServers +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: halflife2deathmatch +sources: +- https://www.steampowered.com/ +- https://hub.docker.com/r/ich777/steamcmd/ +type: application +version: 0.0.10 diff --git a/incubator/halflife2deathmatch/0.0.10/README.md b/incubator/halflife2deathmatch/0.0.10/README.md new file mode 100644 index 00000000000..3e40c55befb --- /dev/null +++ b/incubator/halflife2deathmatch/0.0.10/README.md @@ -0,0 +1,108 @@ +# halflife2deathmatch + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +This Docker will download and install SteamCMD. It will also install HalfLife2 DeathMatch and run it. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [halflife2deathmatch](https://truecharts.org/charts/stable/halflife2deathmatch) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `halflife2deathmatch` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install halflife2deathmatch TrueCharts/halflife2deathmatch +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `halflife2deathmatch` deployment + +```console +helm uninstall halflife2deathmatch +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install halflife2deathmatch \ + --set env.TZ="America/New York" \ + TrueCharts/halflife2deathmatch +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install halflife2deathmatch TrueCharts/halflife2deathmatch -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/halflife2deathmatch/0.0.10/app-readme.md b/incubator/halflife2deathmatch/0.0.10/app-readme.md new file mode 100644 index 00000000000..79fba1df1ed --- /dev/null +++ b/incubator/halflife2deathmatch/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +This Docker will download and install SteamCMD. It will also install HalfLife2 DeathMatch and run it. + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/halflife2deathmatch + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/halflife2deathmatch/0.0.10/charts/common-10.4.6.tgz b/incubator/halflife2deathmatch/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/halflife2deathmatch/0.0.10/ix_values.yaml b/incubator/halflife2deathmatch/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..7be68ee6cbf --- /dev/null +++ b/incubator/halflife2deathmatch/0.0.10/ix_values.yaml @@ -0,0 +1,49 @@ +env: + GAME_ID: '232370' + GAME_NAME: hl2mp + GAME_PARAMS: -secure +maxplayers 16 +map dm_overwatch + GAME_PORT: '27015' + PASSWRD: '' + USERNAME: '' + VALIDATE: '' +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/halflife2deathmatch + tag: latest +persistence: + serverfiles: + enabled: true + mountPath: /serverdata/serverfiles + steamcmd: + enabled: true + mountPath: /serverdata/steamcmd +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +probes: + liveness: + port: '{{ .Values.service.tcprcon.ports.tcprcon.targetPort }}' + readiness: + port: '{{ .Values.service.tcprcon.ports.tcprcon.targetPort }}' + startup: + port: '{{ .Values.service.tcprcon.ports.tcprcon.targetPort }}' +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 27015 + protocol: UDP + targetPort: 27015 + tcprcon: + enabled: true + ports: + tcprcon: + enabled: true + port: 27015 + protocol: TCP + targetPort: 27015 diff --git a/incubator/halflife2deathmatch/0.0.10/questions.yaml b/incubator/halflife2deathmatch/0.0.10/questions.yaml new file mode 100644 index 00000000000..45bcf453d73 --- /dev/null +++ b/incubator/halflife2deathmatch/0.0.10/questions.yaml @@ -0,0 +1,2799 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: GAME_ID + label: 'GAME_ID' + description: "The GAMEID that the container download at startup.(httpsdeveloper.valvesoftware.comwikiDedicatedServersList)" + schema: + type: string + default: "232370" + - variable: GAME_NAME + label: 'GAME_NAME' + description: "Game name to start (is connected to the GAMEPARAMS)." + schema: + type: string + default: "hl2mp" + - variable: GAME_PARAMS + label: 'GAME_PARAMS' + description: "Enter your start up commands for the server." + schema: + type: string + default: "-secure +maxplayers 16 +map dm_overwatch" + - variable: USERNAME + label: 'USERNAME' + description: "Your Steam username goes here if you want to install a game that needs a valid account, otherwise leave it blank (ATTENTION You have to disable Steam Guard)." + schema: + type: string + default: "" + - variable: VALIDATE + label: 'VALIDATE' + description: "Set the Variable to true if you want to validate the installation otherwise leave it blank." + schema: + type: string + default: "" + - variable: PASSWRD + label: 'PASSWRD' + description: "Your Steam password goes here if you want to install a game that needs a valid account, otherwise leave it blank (ATTENTION You have to disable Steam Guard)." + schema: + type: string + default: "" + - variable: GAME_PORT + label: 'GAME_PORT' + description: "Container Variable GAMEPORT" + schema: + type: string + default: "27015" + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 27015 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: UDP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 27015 + + - variable: tcprcon + label: 'tcprcon service' + description: "TCP RCON Port (not required)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: tcprcon + label: "tcprcon Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 27015 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 27015 + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - variable: persistence + label: "Integrated Persistent Storage" + description: "Integrated Persistent Storage" + group: "Storage and Persistence" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: steamcmd + label: "steamcmd Storage" + description: "Container Path serverdatasteamcmd" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: serverfiles + label: "serverfiles Storage" + description: "Container Path serverdataserverfiles" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/halflife2deathmatch/0.0.10/templates/common.yaml b/incubator/halflife2deathmatch/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/halflife2deathmatch/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/halflife2deathmatch/0.0.10/values.yaml b/incubator/halflife2deathmatch/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/halflife2deathmatch/item.yaml b/incubator/halflife2deathmatch/item.yaml new file mode 100644 index 00000000000..360db3a1d36 --- /dev/null +++ b/incubator/halflife2deathmatch/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/halflife2deathmatch.png +categories: +- GameServers + diff --git a/incubator/hassconfigurator/0.0.10/CHANGELOG.md b/incubator/hassconfigurator/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..d66ca420250 --- /dev/null +++ b/incubator/hassconfigurator/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [hassconfigurator-0.0.10]hassconfigurator-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [hassconfigurator-0.0.10]hassconfigurator-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [hassconfigurator-0.0.10]hassconfigurator-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [hassconfigurator-0.0.10]hassconfigurator-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [hassconfigurator-0.0.10]hassconfigurator-0.0.10 (2022-07-20) diff --git a/incubator/hassconfigurator/0.0.10/Chart.lock b/incubator/hassconfigurator/0.0.10/Chart.lock new file mode 100644 index 00000000000..6b098538921 --- /dev/null +++ b/incubator/hassconfigurator/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:07:23.460618462Z" diff --git a/incubator/hassconfigurator/0.0.10/Chart.yaml b/incubator/hassconfigurator/0.0.10/Chart.yaml new file mode 100644 index 00000000000..482c9336b8a --- /dev/null +++ b/incubator/hassconfigurator/0.0.10/Chart.yaml @@ -0,0 +1,28 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - HomeAutomation +apiVersion: v2 +appVersion: "x86_64" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: Home Assistant online configurator container from https://github.com/danielperna84/hass-configurator +home: https://github.com/truecharts/apps/tree/master/charts/stable/hassconfigurator +icon: https://truecharts.org/img/chart-icons/hassconfigurator.png +keywords: +- hassconfigurator +- HomeAutomation +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: hassconfigurator +sources: +- https://github.com/danielperna84/hass-configurator +- https://hub.docker.com/r/causticlab/hass-configurator-docker//Dockerfile/ +type: application +version: 0.0.10 diff --git a/incubator/hassconfigurator/0.0.10/README.md b/incubator/hassconfigurator/0.0.10/README.md new file mode 100644 index 00000000000..90e769b50e5 --- /dev/null +++ b/incubator/hassconfigurator/0.0.10/README.md @@ -0,0 +1,108 @@ +# hassconfigurator + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: x86_64](https://img.shields.io/badge/AppVersion-x86_64-informational?style=flat-square) + +Home Assistant online configurator container from https://github.com/danielperna84/hass-configurator + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [hassconfigurator](https://truecharts.org/charts/stable/hassconfigurator) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `hassconfigurator` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install hassconfigurator TrueCharts/hassconfigurator +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `hassconfigurator` deployment + +```console +helm uninstall hassconfigurator +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install hassconfigurator \ + --set env.TZ="America/New York" \ + TrueCharts/hassconfigurator +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install hassconfigurator TrueCharts/hassconfigurator -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/hassconfigurator/0.0.10/app-readme.md b/incubator/hassconfigurator/0.0.10/app-readme.md new file mode 100644 index 00000000000..32fa38f1b01 --- /dev/null +++ b/incubator/hassconfigurator/0.0.10/app-readme.md @@ -0,0 +1,8 @@ +Home Assistant online configurator container from https://github.com/danielperna84/hass-configurator + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/hassconfigurator + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/hassconfigurator/0.0.10/charts/common-10.4.6.tgz b/incubator/hassconfigurator/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/hassconfigurator/0.0.10/ix_values.yaml b/incubator/hassconfigurator/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..2a6f0b28529 --- /dev/null +++ b/incubator/hassconfigurator/0.0.10/ix_values.yaml @@ -0,0 +1,27 @@ +env: {} +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/hassconfigurator + tag: vx86_64 +persistence: + config: + enabled: true + mountPath: /config + hass-config: + enabled: true + mountPath: /hass-config +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 3218 + protocol: TCP + targetPort: 3218 diff --git a/incubator/hassconfigurator/0.0.10/questions.yaml b/incubator/hassconfigurator/0.0.10/questions.yaml new file mode 100644 index 00000000000..d6488d0ab49 --- /dev/null +++ b/incubator/hassconfigurator/0.0.10/questions.yaml @@ -0,0 +1,2618 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 3218 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 3218 + + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hass-config + label: "hass-config Storage" + description: "Your home assistant configuration folder" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/hassconfigurator/0.0.10/templates/common.yaml b/incubator/hassconfigurator/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/hassconfigurator/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/hassconfigurator/0.0.10/values.yaml b/incubator/hassconfigurator/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/hassconfigurator/item.yaml b/incubator/hassconfigurator/item.yaml new file mode 100644 index 00000000000..d84e2d50e87 --- /dev/null +++ b/incubator/hassconfigurator/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/hassconfigurator.png +categories: +- HomeAutomation + diff --git a/incubator/hastebin/0.0.10/CHANGELOG.md b/incubator/hastebin/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..74f01a2adf7 --- /dev/null +++ b/incubator/hastebin/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [hastebin-0.0.10]hastebin-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [hastebin-0.0.10]hastebin-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [hastebin-0.0.10]hastebin-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [hastebin-0.0.10]hastebin-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [hastebin-0.0.10]hastebin-0.0.10 (2022-07-20) diff --git a/incubator/hastebin/0.0.10/Chart.lock b/incubator/hastebin/0.0.10/Chart.lock new file mode 100644 index 00000000000..ed44e0869f4 --- /dev/null +++ b/incubator/hastebin/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:07:25.953740918Z" diff --git a/incubator/hastebin/0.0.10/Chart.yaml b/incubator/hastebin/0.0.10/Chart.yaml new file mode 100644 index 00000000000..be1ae887d37 --- /dev/null +++ b/incubator/hastebin/0.0.10/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: 10.4.6 +deprecated: false +description: "Alpine-based Docker image for Hastebin, the node.js paste service \r\ + \n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/hastebin +icon: https://truecharts.org/img/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/nzzane/haste-server +- https://hub.docker.com/r/flippinturt/hastebin +type: application +version: 0.0.10 diff --git a/incubator/hastebin/0.0.10/README.md b/incubator/hastebin/0.0.10/README.md new file mode 100644 index 00000000000..aea7c5b6cd6 --- /dev/null +++ b/incubator/hastebin/0.0.10/README.md @@ -0,0 +1,108 @@ +# hastebin + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +Alpine-based Docker image for Hastebin, the node.js paste service + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [hastebin](https://truecharts.org/charts/stable/hastebin) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `hastebin` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install hastebin TrueCharts/hastebin +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `hastebin` deployment + +```console +helm uninstall hastebin +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install hastebin \ + --set env.TZ="America/New York" \ + TrueCharts/hastebin +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install hastebin TrueCharts/hastebin -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/hastebin/0.0.10/app-readme.md b/incubator/hastebin/0.0.10/app-readme.md new file mode 100644 index 00000000000..3a585c1904d --- /dev/null +++ b/incubator/hastebin/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +Alpine-based Docker image 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 + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/hastebin/0.0.10/charts/common-10.4.6.tgz b/incubator/hastebin/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/hastebin/0.0.10/ix_values.yaml b/incubator/hastebin/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..33469d3fb65 --- /dev/null +++ b/incubator/hastebin/0.0.10/ix_values.yaml @@ -0,0 +1,24 @@ +env: {} +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/hastebin + tag: latest +persistence: + data: + enabled: true + mountPath: /app/data +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 7777 + protocol: TCP + targetPort: 7777 diff --git a/incubator/hastebin/0.0.10/questions.yaml b/incubator/hastebin/0.0.10/questions.yaml new file mode 100644 index 00000000000..ccf22248066 --- /dev/null +++ b/incubator/hastebin/0.0.10/questions.yaml @@ -0,0 +1,2441 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 7777 + + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/hastebin/0.0.10/templates/common.yaml b/incubator/hastebin/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/hastebin/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/hastebin/0.0.10/values.yaml b/incubator/hastebin/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/hastebin/item.yaml b/incubator/hastebin/item.yaml new file mode 100644 index 00000000000..7bfb39fd2a7 --- /dev/null +++ b/incubator/hastebin/item.yaml @@ -0,0 +1,7 @@ +icon_url: https://truecharts.org/img/chart-icons/hastebin.png +categories: +- Cloud +- Productivity +- Tools-Utilities +- Network-Other + diff --git a/incubator/healthchecksdashboard/0.0.10/CHANGELOG.md b/incubator/healthchecksdashboard/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..00fc189db2c --- /dev/null +++ b/incubator/healthchecksdashboard/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [healthchecksdashboard-0.0.10]healthchecksdashboard-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [healthchecksdashboard-0.0.10]healthchecksdashboard-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [healthchecksdashboard-0.0.10]healthchecksdashboard-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [healthchecksdashboard-0.0.10]healthchecksdashboard-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [healthchecksdashboard-0.0.10]healthchecksdashboard-0.0.10 (2022-07-20) diff --git a/incubator/healthchecksdashboard/0.0.10/Chart.lock b/incubator/healthchecksdashboard/0.0.10/Chart.lock new file mode 100644 index 00000000000..47d873c821f --- /dev/null +++ b/incubator/healthchecksdashboard/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:07:27.150192973Z" diff --git a/incubator/healthchecksdashboard/0.0.10/Chart.yaml b/incubator/healthchecksdashboard/0.0.10/Chart.yaml new file mode 100644 index 00000000000..9a0d6f8a4a3 --- /dev/null +++ b/incubator/healthchecksdashboard/0.0.10/Chart.yaml @@ -0,0 +1,33 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - Tools-Utilities + - Other + - Network-Other +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: "A standalone dashboard page showing the status of the checks in your\ + \ Healthchecks.io account.\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/healthchecksdashboard +icon: https://truecharts.org/img/chart-icons/healthchecksdashboard.png +keywords: +- healthchecksdashboard +- Tools-Utilities +- Other +- Network-Other +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: healthchecksdashboard +sources: +- https://github.com/healthchecks/dashboard +- https://hub.docker.com/r/healthchecks/dashboard +type: application +version: 0.0.10 diff --git a/incubator/healthchecksdashboard/0.0.10/README.md b/incubator/healthchecksdashboard/0.0.10/README.md new file mode 100644 index 00000000000..ee659e82ba2 --- /dev/null +++ b/incubator/healthchecksdashboard/0.0.10/README.md @@ -0,0 +1,108 @@ +# healthchecksdashboard + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +A standalone dashboard page showing the status of the checks in your Healthchecks.io account. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [healthchecksdashboard](https://truecharts.org/charts/stable/healthchecksdashboard) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `healthchecksdashboard` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install healthchecksdashboard TrueCharts/healthchecksdashboard +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `healthchecksdashboard` deployment + +```console +helm uninstall healthchecksdashboard +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install healthchecksdashboard \ + --set env.TZ="America/New York" \ + TrueCharts/healthchecksdashboard +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install healthchecksdashboard TrueCharts/healthchecksdashboard -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/healthchecksdashboard/0.0.10/app-readme.md b/incubator/healthchecksdashboard/0.0.10/app-readme.md new file mode 100644 index 00000000000..ce173bde5e6 --- /dev/null +++ b/incubator/healthchecksdashboard/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +A standalone dashboard page showing the status of the checks in your Healthchecks.io account. + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/healthchecksdashboard + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/healthchecksdashboard/0.0.10/charts/common-10.4.6.tgz b/incubator/healthchecksdashboard/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/healthchecksdashboard/0.0.10/ix_values.yaml b/incubator/healthchecksdashboard/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..b3969783842 --- /dev/null +++ b/incubator/healthchecksdashboard/0.0.10/ix_values.yaml @@ -0,0 +1,25 @@ +env: {} +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/healthchecksdashboard + tag: latest +persistence: {} +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: false + ports: + main: + enabled: false diff --git a/incubator/healthchecksdashboard/0.0.10/questions.yaml b/incubator/healthchecksdashboard/0.0.10/questions.yaml new file mode 100644 index 00000000000..c6590a40435 --- /dev/null +++ b/incubator/healthchecksdashboard/0.0.10/questions.yaml @@ -0,0 +1,1829 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: {} +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: false + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + 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: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/healthchecksdashboard/0.0.10/templates/common.yaml b/incubator/healthchecksdashboard/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/healthchecksdashboard/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/healthchecksdashboard/0.0.10/values.yaml b/incubator/healthchecksdashboard/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/healthchecksdashboard/item.yaml b/incubator/healthchecksdashboard/item.yaml new file mode 100644 index 00000000000..5846019c255 --- /dev/null +++ b/incubator/healthchecksdashboard/item.yaml @@ -0,0 +1,6 @@ +icon_url: https://truecharts.org/img/chart-icons/healthchecksdashboard.png +categories: +- Tools-Utilities +- Other +- Network-Other + diff --git a/incubator/hetzner-ddns/0.0.10/CHANGELOG.md b/incubator/hetzner-ddns/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..9f7288a7d82 --- /dev/null +++ b/incubator/hetzner-ddns/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [hetzner-ddns-0.0.10]hetzner-ddns-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [hetzner-ddns-0.0.10]hetzner-ddns-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [hetzner-ddns-0.0.10]hetzner-ddns-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [hetzner-ddns-0.0.10]hetzner-ddns-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [hetzner-ddns-0.0.10]hetzner-ddns-0.0.10 (2022-07-20) diff --git a/incubator/hetzner-ddns/0.0.10/Chart.lock b/incubator/hetzner-ddns/0.0.10/Chart.lock new file mode 100644 index 00000000000..1ae1bc7fbbd --- /dev/null +++ b/incubator/hetzner-ddns/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:07:35.147808523Z" diff --git a/incubator/hetzner-ddns/0.0.10/Chart.yaml b/incubator/hetzner-ddns/0.0.10/Chart.yaml new file mode 100644 index 00000000000..260333d11ba --- /dev/null +++ b/incubator/hetzner-ddns/0.0.10/Chart.yaml @@ -0,0 +1,29 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - Network-DNS +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: This Docker image will allow you to use the Hetzner DNS Service (https://www.hetzner.com/dns-console) + as a Dynamic DNS (DDNS) Provider. +home: https://github.com/truecharts/apps/tree/master/charts/stable/hetzner-ddns +icon: https://truecharts.org/img/chart-icons/hetzner-ddns.png +keywords: +- hetzner-ddns +- Network-DNS +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: hetzner-ddns +sources: +- https://github.com/kutzilla/docker-hetzner-ddns +- https://hub.docker.com/r/kutzilla/hetzner-ddns +type: application +version: 0.0.10 diff --git a/incubator/hetzner-ddns/0.0.10/README.md b/incubator/hetzner-ddns/0.0.10/README.md new file mode 100644 index 00000000000..b4b8e8eb050 --- /dev/null +++ b/incubator/hetzner-ddns/0.0.10/README.md @@ -0,0 +1,108 @@ +# hetzner-ddns + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +This Docker image will allow you to use the Hetzner DNS Service (https://www.hetzner.com/dns-console) as a Dynamic DNS (DDNS) Provider. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [hetzner-ddns](https://truecharts.org/charts/stable/hetzner-ddns) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `hetzner-ddns` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install hetzner-ddns TrueCharts/hetzner-ddns +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `hetzner-ddns` deployment + +```console +helm uninstall hetzner-ddns +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install hetzner-ddns \ + --set env.TZ="America/New York" \ + TrueCharts/hetzner-ddns +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install hetzner-ddns TrueCharts/hetzner-ddns -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/hetzner-ddns/0.0.10/app-readme.md b/incubator/hetzner-ddns/0.0.10/app-readme.md new file mode 100644 index 00000000000..63deed2ee9a --- /dev/null +++ b/incubator/hetzner-ddns/0.0.10/app-readme.md @@ -0,0 +1,8 @@ +This Docker image will allow you to use the Hetzner DNS Service (https://www.hetzner.com/dns-console) as a Dynamic DNS (DDNS) Provider. + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/hetzner-ddns + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/hetzner-ddns/0.0.10/charts/common-10.4.6.tgz b/incubator/hetzner-ddns/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/hetzner-ddns/0.0.10/ix_values.yaml b/incubator/hetzner-ddns/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..4b4e5e89741 --- /dev/null +++ b/incubator/hetzner-ddns/0.0.10/ix_values.yaml @@ -0,0 +1,28 @@ +env: + API_TOKEN: my-secret-api-token + RECORD_TYPE: A + ZONE_NAME: example.com +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/hetzner-ddns + tag: latest +persistence: {} +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: false + ports: + main: + enabled: false diff --git a/incubator/hetzner-ddns/0.0.10/questions.yaml b/incubator/hetzner-ddns/0.0.10/questions.yaml new file mode 100644 index 00000000000..77c6a0a2290 --- /dev/null +++ b/incubator/hetzner-ddns/0.0.10/questions.yaml @@ -0,0 +1,1855 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: {} +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: false + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: ZONE_NAME + label: 'ZONE_NAME' + description: "The DNS zone that DDNS updates should be applied to." + schema: + type: string + default: "example.com" + - variable: API_TOKEN + label: 'API_TOKEN' + description: "Your Hetzner API token." + schema: + type: string + default: "my-secret-api-token" + - variable: RECORD_TYPE + label: 'RECORD_TYPE' + description: "The record type of your zone. If your zone uses an IPv4 address use A. Use AAAA if it uses an IPv6 address." + schema: + type: string + default: "A" + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/hetzner-ddns/0.0.10/templates/common.yaml b/incubator/hetzner-ddns/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/hetzner-ddns/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/hetzner-ddns/0.0.10/values.yaml b/incubator/hetzner-ddns/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/hetzner-ddns/item.yaml b/incubator/hetzner-ddns/item.yaml new file mode 100644 index 00000000000..7bcaa91197c --- /dev/null +++ b/incubator/hetzner-ddns/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/hetzner-ddns.png +categories: +- Network-DNS + diff --git a/incubator/hexchat/0.0.10/CHANGELOG.md b/incubator/hexchat/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..9426f646788 --- /dev/null +++ b/incubator/hexchat/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [hexchat-0.0.10]hexchat-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [hexchat-0.0.10]hexchat-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [hexchat-0.0.10]hexchat-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [hexchat-0.0.10]hexchat-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [hexchat-0.0.10]hexchat-0.0.10 (2022-07-20) diff --git a/incubator/hexchat/0.0.10/Chart.lock b/incubator/hexchat/0.0.10/Chart.lock new file mode 100644 index 00000000000..4780f1fea00 --- /dev/null +++ b/incubator/hexchat/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:07:40.437781963Z" diff --git a/incubator/hexchat/0.0.10/Chart.yaml b/incubator/hexchat/0.0.10/Chart.yaml new file mode 100644 index 00000000000..d33f8edf5a0 --- /dev/null +++ b/incubator/hexchat/0.0.10/Chart.yaml @@ -0,0 +1,34 @@ +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: 10.4.6 +deprecated: false +description: "HexChat is an IRC client based on XChat, but unlike XChat it\u2019s\ + \ completely free for both Windows and Unix-like systems. Since XChat is open source,\ + \ it\u2019s perfectly legal. For more info. HexChat was originally called XChat-WDK\ + \ which in turn was a successor of freakschat." +home: https://github.com/truecharts/apps/tree/master/charts/stable/hexchat +icon: https://truecharts.org/img/chart-icons/hexchat.png +keywords: +- hexchat +- Productivity +- Tools-Utilities +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: hexchat +sources: +- https://hexchat.github.io/ +- https://registry.hub.docker.com/r/binhex/arch-hexchat/ +- https://github.com/binhex/documentation +type: application +version: 0.0.10 diff --git a/incubator/hexchat/0.0.10/README.md b/incubator/hexchat/0.0.10/README.md new file mode 100644 index 00000000000..4eafffd2875 --- /dev/null +++ b/incubator/hexchat/0.0.10/README.md @@ -0,0 +1,109 @@ +# hexchat + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +HexChat is an IRC client based on XChat, but unlike XChat it’s completely free for both Windows and Unix-like systems. Since XChat is open source, it’s perfectly legal. For more info. HexChat was originally called XChat-WDK which in turn was a successor of freakschat. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [hexchat](https://truecharts.org/charts/stable/hexchat) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `hexchat` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install hexchat TrueCharts/hexchat +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `hexchat` deployment + +```console +helm uninstall hexchat +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install hexchat \ + --set env.TZ="America/New York" \ + TrueCharts/hexchat +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install hexchat TrueCharts/hexchat -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/hexchat/0.0.10/app-readme.md b/incubator/hexchat/0.0.10/app-readme.md new file mode 100644 index 00000000000..862c3edcef2 --- /dev/null +++ b/incubator/hexchat/0.0.10/app-readme.md @@ -0,0 +1,8 @@ +HexChat is an IRC client based on XChat, but unlike XChat it’s completely free for both Windows and Unix-like systems. Since XChat is open source, it’s perfectly legal. For more info. HexChat was originally called XChat-WDK which in turn was a successor of freakschat. + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/hexchat + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/hexchat/0.0.10/charts/common-10.4.6.tgz b/incubator/hexchat/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/hexchat/0.0.10/ix_values.yaml b/incubator/hexchat/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..b4eac4d9580 --- /dev/null +++ b/incubator/hexchat/0.0.10/ix_values.yaml @@ -0,0 +1,27 @@ +env: + UMASK: '000' + VNC_PASSWORD: '' + WEBPAGE_TITLE: HexChat +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/hexchat + tag: latest +persistence: + config: + enabled: true + mountPath: /config +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 6080 + protocol: TCP + targetPort: 6080 diff --git a/incubator/hexchat/0.0.10/questions.yaml b/incubator/hexchat/0.0.10/questions.yaml new file mode 100644 index 00000000000..f3c2689d576 --- /dev/null +++ b/incubator/hexchat/0.0.10/questions.yaml @@ -0,0 +1,2463 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: WEBPAGE_TITLE + label: 'WEBPAGE_TITLE' + schema: + type: string + default: "HexChat" + - variable: VNC_PASSWORD + label: 'VNC_PASSWORD' + schema: + type: string + default: "" + - variable: UMASK + label: 'UMASK' + schema: + type: string + default: "000" + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 6080 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 6080 + + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/hexchat/0.0.10/templates/common.yaml b/incubator/hexchat/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/hexchat/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/hexchat/0.0.10/values.yaml b/incubator/hexchat/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/hexchat/item.yaml b/incubator/hexchat/item.yaml new file mode 100644 index 00000000000..70c2e1a511a --- /dev/null +++ b/incubator/hexchat/item.yaml @@ -0,0 +1,5 @@ +icon_url: https://truecharts.org/img/chart-icons/hexchat.png +categories: +- Productivity +- Tools-Utilities + diff --git a/incubator/hexo-blog/0.0.10/CHANGELOG.md b/incubator/hexo-blog/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..b36ef05fa2c --- /dev/null +++ b/incubator/hexo-blog/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [hexo-blog-0.0.10]hexo-blog-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [hexo-blog-0.0.10]hexo-blog-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [hexo-blog-0.0.10]hexo-blog-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [hexo-blog-0.0.10]hexo-blog-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [hexo-blog-0.0.10]hexo-blog-0.0.10 (2022-07-20) diff --git a/incubator/hexo-blog/0.0.10/Chart.lock b/incubator/hexo-blog/0.0.10/Chart.lock new file mode 100644 index 00000000000..57638891946 --- /dev/null +++ b/incubator/hexo-blog/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:07:41.878420801Z" diff --git a/incubator/hexo-blog/0.0.10/Chart.yaml b/incubator/hexo-blog/0.0.10/Chart.yaml new file mode 100644 index 00000000000..4aff4b80166 --- /dev/null +++ b/incubator/hexo-blog/0.0.10/Chart.yaml @@ -0,0 +1,28 @@ +annotations: + truecharts.org/SCALE-support: 'true' + truecharts.org/catagories: | + - Productivity +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: A self-hosted blogging platform in which posts are written in markdown +home: https://github.com/truecharts/apps/tree/master/charts/stable/hexo-blog +icon: https://truecharts.org/img/chart-icons/hexo-blog.png +keywords: +- hexo-blog +- Productivity +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: hexo-blog +sources: +- https://github.com/fletchto99/hexo-dev-docker +- https://hub.docker.com/r/fletchto99/hexo-dev-blog/ +type: application +version: 0.0.10 diff --git a/incubator/hexo-blog/0.0.10/README.md b/incubator/hexo-blog/0.0.10/README.md new file mode 100644 index 00000000000..d6db346453e --- /dev/null +++ b/incubator/hexo-blog/0.0.10/README.md @@ -0,0 +1,108 @@ +# hexo-blog + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +A self-hosted blogging platform in which posts are written in markdown + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [hexo-blog](https://truecharts.org/charts/stable/hexo-blog) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `hexo-blog` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install hexo-blog TrueCharts/hexo-blog +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `hexo-blog` deployment + +```console +helm uninstall hexo-blog +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install hexo-blog \ + --set env.TZ="America/New York" \ + TrueCharts/hexo-blog +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install hexo-blog TrueCharts/hexo-blog -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/hexo-blog/0.0.10/app-readme.md b/incubator/hexo-blog/0.0.10/app-readme.md new file mode 100644 index 00000000000..5df221ca987 --- /dev/null +++ b/incubator/hexo-blog/0.0.10/app-readme.md @@ -0,0 +1,8 @@ +A self-hosted blogging platform in which posts are written in markdown + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/hexo-blog + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/hexo-blog/0.0.10/charts/common-10.4.6.tgz b/incubator/hexo-blog/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/hexo-blog/0.0.10/ix_values.yaml b/incubator/hexo-blog/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..bd9ae5ca512 --- /dev/null +++ b/incubator/hexo-blog/0.0.10/ix_values.yaml @@ -0,0 +1,26 @@ +env: + HEXO_PLUGINS: '' +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/hexo-blog + tag: latest +persistence: {} +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: false + ports: + main: + enabled: false diff --git a/incubator/hexo-blog/0.0.10/questions.yaml b/incubator/hexo-blog/0.0.10/questions.yaml new file mode 100644 index 00000000000..fd413ecbfe5 --- /dev/null +++ b/incubator/hexo-blog/0.0.10/questions.yaml @@ -0,0 +1,1843 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: {} +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: false + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: HEXO_PLUGINS + label: 'HEXO_PLUGINS' + description: "A space seperated list of hexo plugins to install" + 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: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/hexo-blog/0.0.10/templates/common.yaml b/incubator/hexo-blog/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/hexo-blog/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/hexo-blog/0.0.10/values.yaml b/incubator/hexo-blog/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/hexo-blog/item.yaml b/incubator/hexo-blog/item.yaml new file mode 100644 index 00000000000..203ee059977 --- /dev/null +++ b/incubator/hexo-blog/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/hexo-blog.png +categories: +- Productivity + diff --git a/incubator/homelablabelmaker/0.0.10/CHANGELOG.md b/incubator/homelablabelmaker/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..8e8a48b3ea3 --- /dev/null +++ b/incubator/homelablabelmaker/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [homelablabelmaker-0.0.10]homelablabelmaker-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [homelablabelmaker-0.0.10]homelablabelmaker-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [homelablabelmaker-0.0.10]homelablabelmaker-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [homelablabelmaker-0.0.10]homelablabelmaker-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [homelablabelmaker-0.0.10]homelablabelmaker-0.0.10 (2022-07-20) diff --git a/incubator/homelablabelmaker/0.0.10/Chart.lock b/incubator/homelablabelmaker/0.0.10/Chart.lock new file mode 100644 index 00000000000..48f664729d9 --- /dev/null +++ b/incubator/homelablabelmaker/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:07:43.501881104Z" diff --git a/incubator/homelablabelmaker/0.0.10/Chart.yaml b/incubator/homelablabelmaker/0.0.10/Chart.yaml new file mode 100644 index 00000000000..b70e1b9166d --- /dev/null +++ b/incubator/homelablabelmaker/0.0.10/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: 10.4.6 +deprecated: false +description: DIY tool to create and print labels for Dell Poweredge and HP Proliant + drive caddies. +home: https://github.com/truecharts/apps/tree/master/charts/stable/homelablabelmaker +icon: https://truecharts.org/img/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/DavidSpek/homelablabelmaker +- https://hub.docker.com/r/davidspek/homelablabelmaker/ +type: application +version: 0.0.10 diff --git a/incubator/homelablabelmaker/0.0.10/README.md b/incubator/homelablabelmaker/0.0.10/README.md new file mode 100644 index 00000000000..9fe407f99b9 --- /dev/null +++ b/incubator/homelablabelmaker/0.0.10/README.md @@ -0,0 +1,108 @@ +# homelablabelmaker + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +DIY tool to create and print labels for Dell Poweredge and HP Proliant drive caddies. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [homelablabelmaker](https://truecharts.org/charts/stable/homelablabelmaker) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `homelablabelmaker` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install homelablabelmaker TrueCharts/homelablabelmaker +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `homelablabelmaker` deployment + +```console +helm uninstall homelablabelmaker +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install homelablabelmaker \ + --set env.TZ="America/New York" \ + TrueCharts/homelablabelmaker +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install homelablabelmaker TrueCharts/homelablabelmaker -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/homelablabelmaker/0.0.10/app-readme.md b/incubator/homelablabelmaker/0.0.10/app-readme.md new file mode 100644 index 00000000000..ca69b896e4f --- /dev/null +++ b/incubator/homelablabelmaker/0.0.10/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/incubator/homelablabelmaker + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/homelablabelmaker/0.0.10/charts/common-10.4.6.tgz b/incubator/homelablabelmaker/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/homelablabelmaker/0.0.10/ix_values.yaml b/incubator/homelablabelmaker/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..d2d2a5c4f51 --- /dev/null +++ b/incubator/homelablabelmaker/0.0.10/ix_values.yaml @@ -0,0 +1,25 @@ +env: {} +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/homelablabelmaker + tag: latest +persistence: {} +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: false + ports: + main: + enabled: false diff --git a/incubator/homelablabelmaker/0.0.10/questions.yaml b/incubator/homelablabelmaker/0.0.10/questions.yaml new file mode 100644 index 00000000000..c6590a40435 --- /dev/null +++ b/incubator/homelablabelmaker/0.0.10/questions.yaml @@ -0,0 +1,1829 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: {} +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: false + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + 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: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/homelablabelmaker/0.0.10/templates/common.yaml b/incubator/homelablabelmaker/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/homelablabelmaker/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/homelablabelmaker/0.0.10/values.yaml b/incubator/homelablabelmaker/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/homelablabelmaker/item.yaml b/incubator/homelablabelmaker/item.yaml new file mode 100644 index 00000000000..dd86220ddf2 --- /dev/null +++ b/incubator/homelablabelmaker/item.yaml @@ -0,0 +1,5 @@ +icon_url: https://truecharts.org/img/chart-icons/homelablabelmaker.png +categories: +- Tools-Utilities +- Other + diff --git a/incubator/hoobs/0.0.10/CHANGELOG.md b/incubator/hoobs/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..0004924e35e --- /dev/null +++ b/incubator/hoobs/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [hoobs-0.0.10]hoobs-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [hoobs-0.0.10]hoobs-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [hoobs-0.0.10]hoobs-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [hoobs-0.0.10]hoobs-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [hoobs-0.0.10]hoobs-0.0.10 (2022-07-20) diff --git a/incubator/hoobs/0.0.10/Chart.lock b/incubator/hoobs/0.0.10/Chart.lock new file mode 100644 index 00000000000..1f0434128e3 --- /dev/null +++ b/incubator/hoobs/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:07:51.943196788Z" diff --git a/incubator/hoobs/0.0.10/Chart.yaml b/incubator/hoobs/0.0.10/Chart.yaml new file mode 100644 index 00000000000..d5a3e32a0d1 --- /dev/null +++ b/incubator/hoobs/0.0.10/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: 10.4.6 +deprecated: false +description: "HOOBS is a Homebridge stack with a interface that simplifies configuration\ + \ and installing plugins. This adds a process wrapper for Homebridge. \r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/hoobs +icon: https://truecharts.org/img/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://hub.docker.com/r/hoobs/hoobs +type: application +version: 0.0.10 diff --git a/incubator/hoobs/0.0.10/README.md b/incubator/hoobs/0.0.10/README.md new file mode 100644 index 00000000000..1a407cbf397 --- /dev/null +++ b/incubator/hoobs/0.0.10/README.md @@ -0,0 +1,107 @@ +# hoobs + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +HOOBS is a Homebridge stack with a interface that simplifies configuration and installing plugins. This adds a process wrapper for Homebridge. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [hoobs](https://truecharts.org/charts/stable/hoobs) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `hoobs` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install hoobs TrueCharts/hoobs +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `hoobs` deployment + +```console +helm uninstall hoobs +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install hoobs \ + --set env.TZ="America/New York" \ + TrueCharts/hoobs +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install hoobs TrueCharts/hoobs -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/hoobs/0.0.10/app-readme.md b/incubator/hoobs/0.0.10/app-readme.md new file mode 100644 index 00000000000..010a9ebda0d --- /dev/null +++ b/incubator/hoobs/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +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 + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/hoobs/0.0.10/charts/common-10.4.6.tgz b/incubator/hoobs/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/hoobs/0.0.10/ix_values.yaml b/incubator/hoobs/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..3deca2487e8 --- /dev/null +++ b/incubator/hoobs/0.0.10/ix_values.yaml @@ -0,0 +1,32 @@ +env: {} +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/hoobs + tag: latest +persistence: + applicationpath: + enabled: true + mountPath: /hoobs +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + homebridgeport: + enabled: true + ports: + homebridgeport: + enabled: true + port: 51826 + protocol: TCP + targetPort: 51826 + main: + enabled: true + ports: + main: + enabled: true + port: 8082 + protocol: HTTP + targetPort: 80 diff --git a/incubator/hoobs/0.0.10/questions.yaml b/incubator/hoobs/0.0.10/questions.yaml new file mode 100644 index 00000000000..6be73cd5e90 --- /dev/null +++ b/incubator/hoobs/0.0.10/questions.yaml @@ -0,0 +1,2570 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: HTTP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 80 + + - 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, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - 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: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 51826 + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/hoobs/0.0.10/templates/common.yaml b/incubator/hoobs/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/hoobs/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/hoobs/0.0.10/values.yaml b/incubator/hoobs/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/hoobs/item.yaml b/incubator/hoobs/item.yaml new file mode 100644 index 00000000000..2a42c8fcb1b --- /dev/null +++ b/incubator/hoobs/item.yaml @@ -0,0 +1,5 @@ +icon_url: https://truecharts.org/img/chart-icons/hoobs.png +categories: +- HomeAutomation +- Tools-Utilities + diff --git a/incubator/humhub/0.0.10/CHANGELOG.md b/incubator/humhub/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..e8147c10626 --- /dev/null +++ b/incubator/humhub/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [humhub-0.0.10]humhub-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [humhub-0.0.10]humhub-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [humhub-0.0.10]humhub-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [humhub-0.0.10]humhub-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [humhub-0.0.10]humhub-0.0.10 (2022-07-20) diff --git a/incubator/humhub/0.0.10/Chart.lock b/incubator/humhub/0.0.10/Chart.lock new file mode 100644 index 00000000000..d87bb99dd00 --- /dev/null +++ b/incubator/humhub/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:07:56.642547722Z" diff --git a/incubator/humhub/0.0.10/Chart.yaml b/incubator/humhub/0.0.10/Chart.yaml new file mode 100644 index 00000000000..be4f1257baf --- /dev/null +++ b/incubator/humhub/0.0.10/Chart.yaml @@ -0,0 +1,30 @@ +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: 10.4.6 +deprecated: false +description: HumHub is a free social network software and framework built to give + you the tools to make communication and collaboration easy and successful. The Database + is at 'localhost', username is 'humhub', the database name is 'humhub', there are + no password (local user) +home: https://github.com/truecharts/apps/tree/master/charts/stable/humhub +icon: https://truecharts.org/img/chart-icons/humhub.png +keywords: +- humhub +- Network-Web +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: humhub +sources: +- https://ghcr.io/siwatinc/humhub +type: application +version: 0.0.10 diff --git a/incubator/humhub/0.0.10/README.md b/incubator/humhub/0.0.10/README.md new file mode 100644 index 00000000000..219d750be63 --- /dev/null +++ b/incubator/humhub/0.0.10/README.md @@ -0,0 +1,107 @@ +# humhub + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +HumHub is a free social network software and framework built to give you the tools to make communication and collaboration easy and successful. The Database is at 'localhost', username is 'humhub', the database name is 'humhub', there are no password (local user) + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [humhub](https://truecharts.org/charts/stable/humhub) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `humhub` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install humhub TrueCharts/humhub +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `humhub` deployment + +```console +helm uninstall humhub +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install humhub \ + --set env.TZ="America/New York" \ + TrueCharts/humhub +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install humhub TrueCharts/humhub -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/humhub/0.0.10/app-readme.md b/incubator/humhub/0.0.10/app-readme.md new file mode 100644 index 00000000000..7c71cba111c --- /dev/null +++ b/incubator/humhub/0.0.10/app-readme.md @@ -0,0 +1,8 @@ +HumHub is a free social network software and framework built to give you the tools to make communication and collaboration easy and successful. The Database is at 'localhost', username is 'humhub', the database name is 'humhub', there are no password (local user) + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/humhub + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/humhub/0.0.10/charts/common-10.4.6.tgz b/incubator/humhub/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/humhub/0.0.10/ix_values.yaml b/incubator/humhub/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..6a92422175d --- /dev/null +++ b/incubator/humhub/0.0.10/ix_values.yaml @@ -0,0 +1,24 @@ +env: {} +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/humhub + tag: latest +persistence: + config: + enabled: true + mountPath: /config +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 85 + protocol: TCP + targetPort: 80 diff --git a/incubator/humhub/0.0.10/questions.yaml b/incubator/humhub/0.0.10/questions.yaml new file mode 100644 index 00000000000..fe4949f87f8 --- /dev/null +++ b/incubator/humhub/0.0.10/questions.yaml @@ -0,0 +1,2441 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 85 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: TCP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 80 + + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/humhub/0.0.10/templates/common.yaml b/incubator/humhub/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/humhub/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/humhub/0.0.10/values.yaml b/incubator/humhub/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/humhub/item.yaml b/incubator/humhub/item.yaml new file mode 100644 index 00000000000..865bfb367cf --- /dev/null +++ b/incubator/humhub/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/humhub.png +categories: +- Network-Web + diff --git a/incubator/hurtworld/0.0.10/CHANGELOG.md b/incubator/hurtworld/0.0.10/CHANGELOG.md new file mode 100644 index 00000000000..16eefc6ce55 --- /dev/null +++ b/incubator/hurtworld/0.0.10/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + +## [hurtworld-0.0.10]hurtworld-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [hurtworld-0.0.10]hurtworld-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [hurtworld-0.0.10]hurtworld-0.0.10 (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + + + +## [hurtworld-0.0.10]hurtworld-0.0.10 (2022-07-20) + +### Chore + +- Auto-update chart README [skip ci] + + + +## [hurtworld-0.0.10]hurtworld-0.0.10 (2022-07-20) diff --git a/incubator/hurtworld/0.0.10/Chart.lock b/incubator/hurtworld/0.0.10/Chart.lock new file mode 100644 index 00000000000..0c6e592b977 --- /dev/null +++ b/incubator/hurtworld/0.0.10/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:07:58.823410583Z" diff --git a/incubator/hurtworld/0.0.10/Chart.yaml b/incubator/hurtworld/0.0.10/Chart.yaml new file mode 100644 index 00000000000..9e467078461 --- /dev/null +++ b/incubator/hurtworld/0.0.10/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: 10.4.6 +deprecated: false +description: "This Docker will download and install SteamCMD. It will also install\ + \ Hurtworld and run it.\r\n" +home: https://github.com/truecharts/apps/tree/master/charts/stable/hurtworld +icon: https://truecharts.org/img/chart-icons/hurtworld.png +keywords: +- hurtworld +- GameServers +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: hurtworld +sources: +- https://www.steampowered.com/ +- https://hub.docker.com/r/ich777/steamcmd/ +type: application +version: 0.0.10 diff --git a/incubator/hurtworld/0.0.10/README.md b/incubator/hurtworld/0.0.10/README.md new file mode 100644 index 00000000000..882bfea565c --- /dev/null +++ b/incubator/hurtworld/0.0.10/README.md @@ -0,0 +1,108 @@ +# hurtworld + +![Version: 0.0.10](https://img.shields.io/badge/Version-0.0.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +This Docker will download and install SteamCMD. It will also install Hurtworld and run it. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [hurtworld](https://truecharts.org/charts/stable/hurtworld) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `hurtworld` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install hurtworld TrueCharts/hurtworld +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `hurtworld` deployment + +```console +helm uninstall hurtworld +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install hurtworld \ + --set env.TZ="America/New York" \ + TrueCharts/hurtworld +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install hurtworld TrueCharts/hurtworld -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/hurtworld/0.0.10/app-readme.md b/incubator/hurtworld/0.0.10/app-readme.md new file mode 100644 index 00000000000..7ccba1cfb1d --- /dev/null +++ b/incubator/hurtworld/0.0.10/app-readme.md @@ -0,0 +1,9 @@ +This Docker will download and install SteamCMD. It will also install Hurtworld and run it. + + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/incubator/hurtworld + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/hurtworld/0.0.10/charts/common-10.4.6.tgz b/incubator/hurtworld/0.0.10/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/incubator/hurtworld/0.0.10/ix_values.yaml b/incubator/hurtworld/0.0.10/ix_values.yaml new file mode 100644 index 00000000000..10ced3bb684 --- /dev/null +++ b/incubator/hurtworld/0.0.10/ix_values.yaml @@ -0,0 +1,51 @@ +env: + GAME_ID: '405100' + GAME_PARAMS: ;autosaveenabled 1;addadmin 76561197963117432 + GAME_PORT: '12871' + PASSWRD: '' + QUERY_PORT: '12881' + SRV_MAXPLAYERS: '50' + SRV_NAME: Hurtworld Docker + USERNAME: '' + VALIDATE: '' +image: + pullPolicy: IfNotPresent + repository: tccr.io/truecharts/hurtworld + tag: latest +persistence: + serverfiles: + enabled: true + mountPath: /serverdata/serverfiles + steamcmd: + enabled: true + mountPath: /serverdata/steamcmd +podSecurityContext: + runAsGroup: 0 + runAsUser: 0 +probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false +service: + main: + enabled: true + ports: + main: + enabled: true + port: 12871 + protocol: UDP + targetPort: 12871 + queryport: + enabled: true + ports: + queryport: + enabled: true + port: 12881 + protocol: UDP + targetPort: 12881 diff --git a/incubator/hurtworld/0.0.10/questions.yaml b/incubator/hurtworld/0.0.10/questions.yaml new file mode 100644 index 00000000000..dc97b5b6693 --- /dev/null +++ b/incubator/hurtworld/0.0.10/questions.yaml @@ -0,0 +1,2811 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: GAME_ID + label: 'GAME_ID' + description: "The GAMEID that the container download at startup.(httpsdeveloper.valvesoftware.comwikiDedicatedServersList)" + schema: + type: string + default: "405100" + - variable: GAME_PARAMS + label: 'GAME_PARAMS' + description: "Enter your extra start up commands for the server starting with a ; (without quotes e.g. ;afkkicktime 900;autosaveenabled 0). Dont forget to change the admin SteamID." + schema: + type: string + default: ";autosaveenabled 1;addadmin 76561197963117432" + - variable: USERNAME + label: 'USERNAME' + description: "Your Steam username goes here if you want to install a game that needs a valid account, otherwise leave it blank (ATTENTION You have to disable Steam Guard)." + schema: + type: string + default: "" + - variable: VALIDATE + label: 'VALIDATE' + description: "Set the Variable to true if you want to validate the installation otherwise leave it blank." + schema: + type: string + default: "" + - variable: PASSWRD + label: 'PASSWRD' + description: "Your Steam password goes here if you want to install a game that needs a valid account, otherwise leave it blank (ATTENTION You have to disable Steam Guard)." + schema: + type: string + default: "" + - variable: SRV_NAME + label: 'SRV_NAME' + description: "Enter your servername." + schema: + type: string + default: "Hurtworld Docker" + - variable: SRV_MAXPLAYERS + label: 'SRV_MAXPLAYERS' + description: "Enter the maximum allowed players" + schema: + type: string + default: "50" + - variable: GAME_PORT + label: 'GAME_PORT' + description: "Container Variable GAMEPORT" + schema: + type: string + default: "12871" + - variable: QUERY_PORT + label: 'QUERY_PORT' + description: "Container Variable QUERYPORT" + schema: + type: string + default: "12881" + + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 12871 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: UDP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 12871 + + - variable: queryport + label: 'queryport service' + description: "UDP Queryport (if you need another port, please delete this entry and create a new UDP Port with the required port number, also dont forget to click an Show more settings ... and change the port number)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: queryport + label: "queryport Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 12881 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: UDP + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 12881 + + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - variable: persistence + label: "Integrated Persistent Storage" + description: "Integrated Persistent Storage" + group: "Storage and Persistence" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: steamcmd + label: "steamcmd Storage" + description: "Container Path serverdatasteamcmd" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: serverfiles + label: "serverfiles Storage" + description: "Container Path serverdataserverfiles" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + 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: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/hurtworld/0.0.10/templates/common.yaml b/incubator/hurtworld/0.0.10/templates/common.yaml new file mode 100644 index 00000000000..cbf66c20818 --- /dev/null +++ b/incubator/hurtworld/0.0.10/templates/common.yaml @@ -0,0 +1,2 @@ +{{/* Render the templates */}} +{{ include "tc.common.loader.all" . }} diff --git a/incubator/hurtworld/0.0.10/values.yaml b/incubator/hurtworld/0.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/hurtworld/item.yaml b/incubator/hurtworld/item.yaml new file mode 100644 index 00000000000..6a85251dd50 --- /dev/null +++ b/incubator/hurtworld/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/hurtworld.png +categories: +- GameServers + diff --git a/incubator/wger/0.0.24/charts/common-10.4.4.tgz b/incubator/wger/0.0.24/charts/common-10.4.4.tgz deleted file mode 100644 index 8604b47288a457e2e334c195e3226036e9560f82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47288 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 diff --git a/incubator/wger/0.0.24/CHANGELOG.md b/incubator/wger/0.0.25/CHANGELOG.md similarity index 67% rename from incubator/wger/0.0.24/CHANGELOG.md rename to incubator/wger/0.0.25/CHANGELOG.md index 0b15865967a..dcb1e315557 100644 --- a/incubator/wger/0.0.24/CHANGELOG.md +++ b/incubator/wger/0.0.25/CHANGELOG.md @@ -1,6 +1,33 @@ # Changelog +## [wger-0.0.25](https://github.com/truecharts/apps/compare/wger-0.0.24...wger-0.0.25) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- update docker general non-major ([#3239](https://github.com/truecharts/apps/issues/3239)) + + + +## [wger-0.0.25](https://github.com/truecharts/apps/compare/wger-0.0.24...wger-0.0.25) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- update docker general non-major ([#3239](https://github.com/truecharts/apps/issues/3239)) + + + +## [wger-0.0.25](https://github.com/truecharts/apps/compare/wger-0.0.24...wger-0.0.25) (2022-07-21) + +### Chore + +- update docker general non-major ([#3239](https://github.com/truecharts/apps/issues/3239)) + + + ## [wger-0.0.24](https://github.com/truecharts/apps/compare/wger-0.0.23...wger-0.0.24) (2022-07-20) ### Chore @@ -70,30 +97,3 @@ ### [wger-0.0.14](https://github.com/truecharts/apps/compare/wger-0.0.13...wger-0.0.14) (2022-07-12) #### Chore - -* update helm general non-major helm releases ([#3147](https://github.com/truecharts/apps/issues/3147)) -* update docker general non-major ([#3150](https://github.com/truecharts/apps/issues/3150)) - - - - -### [wger-0.0.13](https://github.com/truecharts/apps/compare/wger-0.0.12...wger-0.0.13) (2022-07-11) - -#### Chore - -* move icons into the apps folder ([#3139](https://github.com/truecharts/apps/issues/3139)) - - - - -### [wger-0.0.12](https://github.com/truecharts/apps/compare/wger-0.0.11...wger-0.0.12) (2022-07-09) - -#### Chore - -* update helm general non-major helm releases ([#3113](https://github.com/truecharts/apps/issues/3113)) - - - - -### [wger-0.0.11](https://github.com/truecharts/apps/compare/wger-0.0.10...wger-0.0.11) (2022-07-09) - diff --git a/incubator/wger/0.0.24/Chart.lock b/incubator/wger/0.0.25/Chart.lock similarity index 88% rename from incubator/wger/0.0.24/Chart.lock rename to incubator/wger/0.0.25/Chart.lock index f0fa377b077..7179c2e38ad 100644 --- a/incubator/wger/0.0.24/Chart.lock +++ b/incubator/wger/0.0.25/Chart.lock @@ -9,4 +9,4 @@ dependencies: repository: https://charts.truecharts.org version: 3.0.30 digest: sha256:219b167cbd3e6d31f846ea247c9c12c15ece396a62777870f479b331a392bd5d -generated: "2022-07-20T08:28:58.005450523Z" +generated: "2022-07-21T13:08:10.997313761Z" diff --git a/incubator/wger/0.0.24/Chart.yaml b/incubator/wger/0.0.25/Chart.yaml similarity index 98% rename from incubator/wger/0.0.24/Chart.yaml rename to incubator/wger/0.0.25/Chart.yaml index 1fc9fa2d562..fdabbe2dcb4 100644 --- a/incubator/wger/0.0.24/Chart.yaml +++ b/incubator/wger/0.0.25/Chart.yaml @@ -26,7 +26,7 @@ name: wger sources: - https://github.com/wger-project/wger - https://github.com/wger-project/docker -version: 0.0.24 +version: 0.0.25 annotations: truecharts.org/catagories: | - life diff --git a/incubator/wger/0.0.24/README.md b/incubator/wger/0.0.25/README.md similarity index 98% rename from incubator/wger/0.0.24/README.md rename to incubator/wger/0.0.25/README.md index 7817725910c..aea196c3fc0 100644 --- a/incubator/wger/0.0.24/README.md +++ b/incubator/wger/0.0.25/README.md @@ -1,6 +1,6 @@ # wger -![Version: 0.0.24](https://img.shields.io/badge/Version-0.0.24-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) +![Version: 0.0.25](https://img.shields.io/badge/Version-0.0.25-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) 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. diff --git a/incubator/wger/0.0.24/app-readme.md b/incubator/wger/0.0.25/app-readme.md similarity index 100% rename from incubator/wger/0.0.24/app-readme.md rename to incubator/wger/0.0.25/app-readme.md diff --git a/dependency/mongodb/1.0.42/charts/common-10.4.4.tgz b/incubator/wger/0.0.25/charts/common-10.4.4.tgz similarity index 100% rename from dependency/mongodb/1.0.42/charts/common-10.4.4.tgz rename to incubator/wger/0.0.25/charts/common-10.4.4.tgz diff --git a/incubator/wger/0.0.24/charts/postgresql-8.0.30.tgz b/incubator/wger/0.0.25/charts/postgresql-8.0.30.tgz similarity index 100% rename from incubator/wger/0.0.24/charts/postgresql-8.0.30.tgz rename to incubator/wger/0.0.25/charts/postgresql-8.0.30.tgz diff --git a/incubator/wger/0.0.24/charts/redis-3.0.30.tgz b/incubator/wger/0.0.25/charts/redis-3.0.30.tgz similarity index 100% rename from incubator/wger/0.0.24/charts/redis-3.0.30.tgz rename to incubator/wger/0.0.25/charts/redis-3.0.30.tgz diff --git a/incubator/wger/0.0.24/ix_values.yaml b/incubator/wger/0.0.25/ix_values.yaml similarity index 98% rename from incubator/wger/0.0.24/ix_values.yaml rename to incubator/wger/0.0.25/ix_values.yaml index 6a700a42d9f..7258e4622fe 100644 --- a/incubator/wger/0.0.24/ix_values.yaml +++ b/incubator/wger/0.0.25/ix_values.yaml @@ -1,6 +1,6 @@ image: repository: wger/server - tag: latest@sha256:56068d7590105c4c298b7a823d3c47fc53c20b74d786bdd312ff49c1a209007b + tag: latest@sha256:87a4ab781caf596f4f0fc826fbe2a63e2d1e7d30257bfe33cfaf155e61e52219 pullPolicy: IfNotPresent nginxImage: diff --git a/incubator/wger/0.0.24/questions.yaml b/incubator/wger/0.0.25/questions.yaml similarity index 100% rename from incubator/wger/0.0.24/questions.yaml rename to incubator/wger/0.0.25/questions.yaml diff --git a/incubator/wger/0.0.24/templates/_secrets.tpl b/incubator/wger/0.0.25/templates/_secrets.tpl similarity index 100% rename from incubator/wger/0.0.24/templates/_secrets.tpl rename to incubator/wger/0.0.25/templates/_secrets.tpl diff --git a/incubator/wger/0.0.24/templates/common.yaml b/incubator/wger/0.0.25/templates/common.yaml similarity index 100% rename from incubator/wger/0.0.24/templates/common.yaml rename to incubator/wger/0.0.25/templates/common.yaml diff --git a/incubator/wger/0.0.25/values.yaml b/incubator/wger/0.0.25/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/stable/cloudflared/1.0.0/CHANGELOG.md b/stable/cloudflared/1.0.0/CHANGELOG.md new file mode 100644 index 00000000000..c18c4330674 --- /dev/null +++ b/stable/cloudflared/1.0.0/CHANGELOG.md @@ -0,0 +1,99 @@ +# Changelog + + +## [cloudflared-1.0.0](https://github.com/truecharts/apps/compare/cloudflareddns-1.0.4...cloudflared-1.0.0) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] + +### Fix + +- move to stable updated docs ([#3237](https://github.com/truecharts/apps/issues/3237)) + + + +## [cloudflared-1.0.0](https://github.com/truecharts/apps/compare/cloudflareddns-1.0.4...cloudflared-1.0.0) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] + +### Fix + +- move to stable updated docs ([#3237](https://github.com/truecharts/apps/issues/3237)) + + + +## [cloudflared-1.0.0](https://github.com/truecharts/apps/compare/cloudflareddns-1.0.4...cloudflared-1.0.0) (2022-07-21) + +### Fix + +- move to stable updated docs ([#3237](https://github.com/truecharts/apps/issues/3237)) + + + +## [cloudflared-0.0.17](https://github.com/truecharts/apps/compare/cloudflareddns-1.0.2...cloudflared-0.0.17) (2022-07-19) + +### Chore + +- Update Readme and Description on SCALE + + + +## [cloudflared-0.0.16](https://github.com/truecharts/apps/compare/cloudflareddns-0.0.15...cloudflared-0.0.16) (2022-07-17) + +### Chore + +- extend linter and apply lint ([#3200](https://github.com/truecharts/apps/issues/3200)) + +### Feat + +- Add installation_notes for cloudflared ([#3196](https://github.com/truecharts/apps/issues/3196)) + + + +## [cloudflared-0.0.15](https://github.com/truecharts/apps/compare/cloudflareddns-0.0.14...cloudflared-0.0.15) (2022-07-14) + +### Fix + +- regenerate catalog and update template + + + +## [cloudflared-0.0.14](https://github.com/truecharts/apps/compare/cloudflareddns-0.0.12...cloudflared-0.0.14) (2022-07-14) + +### Fix + +- bump to ensure .helmignore is present on all Charts + + + +## [cloudflared-0.0.12](https://github.com/truecharts/apps/compare/cloudflareddns-0.0.10...cloudflared-0.0.12) (2022-07-12) + +### Chore + +- update icons ([#3156](https://github.com/truecharts/apps/issues/3156)) +- bump to cleanup old docs and use correct icon urls + + + +## [cloudflared-0.0.10](https://github.com/truecharts/apps/compare/cloudflareddns-0.0.9...cloudflared-0.0.10) (2022-07-12) + +### Chore + +- bump to regenerate documentation + + + + +### [cloudflared-0.0.9](https://github.com/truecharts/apps/compare/cloudflareddns-0.0.8...cloudflared-0.0.9) (2022-07-12) + +#### Chore + +* update helm general non-major helm releases ([#3147](https://github.com/truecharts/apps/issues/3147)) + + + + diff --git a/dependency/mariadb/3.0.38/Chart.lock b/stable/cloudflared/1.0.0/Chart.lock similarity index 80% rename from dependency/mariadb/3.0.38/Chart.lock rename to stable/cloudflared/1.0.0/Chart.lock index 6574f4eb42a..2a7089894ce 100644 --- a/dependency/mariadb/3.0.38/Chart.lock +++ b/stable/cloudflared/1.0.0/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://library-charts.truecharts.org version: 10.4.4 digest: sha256:e76f58e980866194e06f0e9135c981662f0b1132d3c5848dbf344c48ab657396 -generated: "2022-07-20T08:27:56.324153302Z" +generated: "2022-07-21T13:08:07.824407458Z" diff --git a/stable/cloudflared/1.0.0/Chart.yaml b/stable/cloudflared/1.0.0/Chart.yaml new file mode 100644 index 00000000000..d3f72dd1f4e --- /dev/null +++ b/stable/cloudflared/1.0.0/Chart.yaml @@ -0,0 +1,29 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: cloudflared +version: 1.0.0 +appVersion: "2022.7.1" +description: Client for Cloudflare Tunnel, a daemon that exposes private services through the Cloudflare edge. +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/charts/stable/cloudflared +icon: https://truecharts.org/img/chart-icons/cloudflared.png +keywords: + - cloudflared + - networking +sources: + - https://hub.docker.com/r/cloudflare/cloudflared +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 10.4.4 + # condition: +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +annotations: + truecharts.org/catagories: | + - network + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/cloudflared/1.0.0/README.md b/stable/cloudflared/1.0.0/README.md new file mode 100644 index 00000000000..26415b80687 --- /dev/null +++ b/stable/cloudflared/1.0.0/README.md @@ -0,0 +1,107 @@ +# cloudflared + +![Version: 1.0.0](https://img.shields.io/badge/Version-1.0.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 2022.7.1](https://img.shields.io/badge/AppVersion-2022.7.1-informational?style=flat-square) + +Client for Cloudflare Tunnel, a daemon that exposes private services through the Cloudflare edge. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [cloudflared](https://truecharts.org/charts/stable/cloudflared) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.4 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `cloudflared` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install cloudflared TrueCharts/cloudflared +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `cloudflared` deployment + +```console +helm uninstall cloudflared +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install cloudflared \ + --set env.TZ="America/New York" \ + TrueCharts/cloudflared +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install cloudflared TrueCharts/cloudflared -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/stable/cloudflared/1.0.0/app-readme.md b/stable/cloudflared/1.0.0/app-readme.md new file mode 100644 index 00000000000..780023954f9 --- /dev/null +++ b/stable/cloudflared/1.0.0/app-readme.md @@ -0,0 +1,8 @@ +Client for Cloudflare Tunnel, a daemon that exposes private services through the Cloudflare edge. + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/cloudflared + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/dependency/postgresql/8.0.40/charts/common-10.4.4.tgz b/stable/cloudflared/1.0.0/charts/common-10.4.4.tgz similarity index 100% rename from dependency/postgresql/8.0.40/charts/common-10.4.4.tgz rename to stable/cloudflared/1.0.0/charts/common-10.4.4.tgz diff --git a/stable/cloudflared/1.0.0/ci/test-values.yaml b/stable/cloudflared/1.0.0/ci/test-values.yaml new file mode 100644 index 00000000000..2887e3c1ebf --- /dev/null +++ b/stable/cloudflared/1.0.0/ci/test-values.yaml @@ -0,0 +1,3 @@ +# With the bellow we test both container starts and that tpl is working inside extraArgs list +extraArgs: ["tunnel", "--no-autoupdate", "{{ .Values.testTpl }}"] +testTpl: "--hello-world" diff --git a/stable/cloudflared/1.0.0/ix_values.yaml b/stable/cloudflared/1.0.0/ix_values.yaml new file mode 100644 index 00000000000..075877ae7af --- /dev/null +++ b/stable/cloudflared/1.0.0/ix_values.yaml @@ -0,0 +1,32 @@ +image: + repository: tccr.io/truecharts/cloudflared + pullPolicy: IfNotPresent + tag: v2022.7.1@sha256:eb30a8a7a410e7b6be3fa07112a8295360c153518438cd5a94c8d42f5ccbe233 + +extraArgs: ["tunnel", "--no-autoupdate", "run", "--token", "{{ .Values.env.token }}"] + +env: + token: "" + +securityContext: + runAsNonRoot: false + +podSecurityContext: + runAsUser: 0 + runAsGroup: 0 + +service: + main: + ports: + main: + protocol: HTTP + targetPort: 6969 + port: 6969 + +probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false diff --git a/stable/cloudflared/1.0.0/questions.yaml b/stable/cloudflared/1.0.0/questions.yaml new file mode 100644 index 00000000000..ba3aaa62357 --- /dev/null +++ b/stable/cloudflared/1.0.0/questions.yaml @@ -0,0 +1,2239 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: {} +questions: + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: token + label: "Tunnel Token" + description: "Token for tunnel (Tunnel managed by Cloudflare not locally)" + schema: + type: string + required: true + default: "" + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ipFamilyPolicy + label: "IP Family Policy" + description: "(Advanced) Specify the ip policy" + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: "SingleStack" + enum: + - value: "SingleStack" + description: "SingleStack" + - value: "PreferDualStack" + description: "PreferDualStack" + - value: "RequireDualStack" + description: "RequireDualStack" + - variable: ipFamilies + label: "(advanced) IP families" + description: "(advanced) The ip families that should be used" + schema: + show_if: [["type", "!=", "Simple"]] + type: list + default: [] + items: + - variable: ipFamily + label: "IP family" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 6969 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 6969 + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + - variable: externalInterfaces + description: "Add External Interfaces" + label: "Add external Interfaces" + group: "Networking" + schema: + type: list + items: + - variable: interfaceConfiguration + description: "Interface Configuration" + label: "Interface Configuration" + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: "Please specify host interface" + label: "Host Interface" + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: "Define how IP Address will be managed" + label: "IP Address Management" + schema: + type: dict + required: true + attrs: + - variable: type + description: "Specify type for IPAM" + label: "IPAM Type" + schema: + type: string + required: true + enum: + - value: "dhcp" + description: "Use DHCP" + - value: "static" + description: "Use static IP" + show_subquestions_if: "static" + subquestions: + - variable: staticIPConfigurations + label: "Static IP Addresses" + schema: + type: list + items: + - variable: staticIP + label: "Static IP" + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: "Static Routes" + schema: + type: list + items: + - variable: staticRouteConfiguration + label: "Static Route Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: "Destination" + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: "Gateway" + schema: + type: ipaddr + cidr: false + required: true + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + - 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: 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: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + 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: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/stable/cloudflared/1.0.0/templates/common.yaml b/stable/cloudflared/1.0.0/templates/common.yaml new file mode 100644 index 00000000000..c1a366e1cf0 --- /dev/null +++ b/stable/cloudflared/1.0.0/templates/common.yaml @@ -0,0 +1 @@ +{{ include "tc.common.loader.all" . }} diff --git a/stable/cloudflared/1.0.0/values.yaml b/stable/cloudflared/1.0.0/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/stable/cloudflared/item.yaml b/stable/cloudflared/item.yaml new file mode 100644 index 00000000000..48a353205ee --- /dev/null +++ b/stable/cloudflared/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/chart-icons/cloudflared.png +categories: +- network + diff --git a/stable/grafana/4.0.29/Chart.lock b/stable/grafana/4.0.29/Chart.lock deleted file mode 100644 index 612405b5e53..00000000000 --- a/stable/grafana/4.0.29/Chart.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: common - repository: https://library-charts.truecharts.org - version: 10.4.4 -digest: sha256:e76f58e980866194e06f0e9135c981662f0b1132d3c5848dbf344c48ab657396 -generated: "2022-07-17T10:07:35.518058794Z" diff --git a/stable/grafana/4.0.29/README.md b/stable/grafana/4.0.29/README.md deleted file mode 100644 index e1b1e1af23c..00000000000 --- a/stable/grafana/4.0.29/README.md +++ /dev/null @@ -1,43 +0,0 @@ -# grafana - -Grafana is an open source, feature rich metrics dashboard and graph editor for Graphite, Elasticsearch, OpenTSDB, Prometheus and InfluxDB. - -TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. -**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** - -## Source Code - -* -* - -## Requirements - -Kubernetes: `>=1.16.0-0` - -## Dependencies - -| Repository | Name | Version | -|------------|------|---------| -| https://library-charts.truecharts.org | common | 10.4.4 | - -## Installing the Chart - -To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). - -## Upgrading, Rolling Back and Uninstalling the Chart - -To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). - -##### Connecting to other apps -If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. - -## Support - -- Please check our [quick-start guides](https://truecharts.org/manual/Quick-Start%20Guides/01-Adding-TrueCharts/) first. -- See the [Wiki](https://truecharts.org) -- Check our [Discord](https://discord.gg/tVsPTHWTtr) -- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) - ---- - -All Rights Reserved - The TrueCharts Project diff --git a/stable/grafana/4.0.29/app-readme.md b/stable/grafana/4.0.29/app-readme.md deleted file mode 100644 index e024583cd76..00000000000 --- a/stable/grafana/4.0.29/app-readme.md +++ /dev/null @@ -1,3 +0,0 @@ -Grafana is an open source, feature rich metrics dashboard and graph editor for Graphite, Elasticsearch, OpenTSDB, Prometheus and InfluxDB. - -This App is supplied by TrueCharts, for more information please visit https://truecharts.org diff --git a/stable/grafana/4.0.29/charts/common-10.4.4.tgz b/stable/grafana/4.0.29/charts/common-10.4.4.tgz deleted file mode 100644 index 8604b47288a457e2e334c195e3226036e9560f82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47288 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 diff --git a/stable/grafana/4.0.29/CHANGELOG.md b/stable/grafana/4.0.31/CHANGELOG.md similarity index 61% rename from stable/grafana/4.0.29/CHANGELOG.md rename to stable/grafana/4.0.31/CHANGELOG.md index 0e0d48a5029..244285f1ec2 100644 --- a/stable/grafana/4.0.29/CHANGELOG.md +++ b/stable/grafana/4.0.31/CHANGELOG.md @@ -1,6 +1,41 @@ # Changelog +## [grafana-4.0.31](https://github.com/truecharts/apps/compare/grafana-4.0.30...grafana-4.0.31) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- update docker general non-major ([#3239](https://github.com/truecharts/apps/issues/3239)) + + + +## [grafana-4.0.31](https://github.com/truecharts/apps/compare/grafana-4.0.30...grafana-4.0.31) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- update docker general non-major ([#3239](https://github.com/truecharts/apps/issues/3239)) + + + +## [grafana-4.0.31](https://github.com/truecharts/apps/compare/grafana-4.0.30...grafana-4.0.31) (2022-07-21) + +### Chore + +- update docker general non-major ([#3239](https://github.com/truecharts/apps/issues/3239)) + + + +## [grafana-4.0.30](https://github.com/truecharts/apps/compare/grafana-4.0.29...grafana-4.0.30) (2022-07-19) + +### Chore + +- Update Readme and Description on SCALE + + + ## [grafana-4.0.29](https://github.com/truecharts/apps/compare/grafana-4.0.28...grafana-4.0.29) (2022-07-17) ### Chore @@ -62,38 +97,3 @@ -### [grafana-4.0.20](https://github.com/truecharts/apps/compare/grafana-4.0.19...grafana-4.0.20) (2022-07-09) - -#### Chore - -* combine some ports ([#3096](https://github.com/truecharts/apps/issues/3096)) -* update helm general non-major helm releases ([#3113](https://github.com/truecharts/apps/issues/3113)) - - - - -### [grafana-4.0.19](https://github.com/truecharts/apps/compare/grafana-4.0.18...grafana-4.0.19) (2022-07-09) - -#### Chore - -* update docker general non-major ([#3106](https://github.com/truecharts/apps/issues/3106)) - - - - -### [grafana-4.0.18](https://github.com/truecharts/apps/compare/grafana-4.0.17...grafana-4.0.18) (2022-07-04) - -#### Chore - -* update helm general non-major helm releases ([#3066](https://github.com/truecharts/apps/issues/3066)) - - - - -### [grafana-4.0.17](https://github.com/truecharts/apps/compare/grafana-4.0.16...grafana-4.0.17) (2022-07-04) - -#### Chore - -* update docker general non-major ([#3061](https://github.com/truecharts/apps/issues/3061)) - - diff --git a/dependency/mongodb/1.0.42/Chart.lock b/stable/grafana/4.0.31/Chart.lock similarity index 80% rename from dependency/mongodb/1.0.42/Chart.lock rename to stable/grafana/4.0.31/Chart.lock index 871625978a4..49df1561093 100644 --- a/dependency/mongodb/1.0.42/Chart.lock +++ b/stable/grafana/4.0.31/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://library-charts.truecharts.org version: 10.4.4 digest: sha256:e76f58e980866194e06f0e9135c981662f0b1132d3c5848dbf344c48ab657396 -generated: "2022-07-20T08:27:56.212355127Z" +generated: "2022-07-21T13:08:13.110253278Z" diff --git a/stable/grafana/4.0.29/Chart.yaml b/stable/grafana/4.0.31/Chart.yaml similarity index 98% rename from stable/grafana/4.0.29/Chart.yaml rename to stable/grafana/4.0.31/Chart.yaml index 0fa5656f10e..b42b1ef3354 100644 --- a/stable/grafana/4.0.29/Chart.yaml +++ b/stable/grafana/4.0.31/Chart.yaml @@ -23,7 +23,7 @@ sources: - https://github.com/bitnami/bitnami-docker-grafana - https://grafana.com/ type: application -version: 4.0.29 +version: 4.0.31 annotations: truecharts.org/catagories: | - metrics diff --git a/stable/grafana/4.0.31/README.md b/stable/grafana/4.0.31/README.md new file mode 100644 index 00000000000..cd9040973ed --- /dev/null +++ b/stable/grafana/4.0.31/README.md @@ -0,0 +1,108 @@ +# grafana + +![Version: 4.0.31](https://img.shields.io/badge/Version-4.0.31-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 9.0.3](https://img.shields.io/badge/AppVersion-9.0.3-informational?style=flat-square) + +Grafana is an open source, feature rich metrics dashboard and graph editor for Graphite, Elasticsearch, OpenTSDB, Prometheus and InfluxDB. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [grafana](https://truecharts.org/charts/stable/grafana) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.4.4 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `grafana` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install grafana TrueCharts/grafana +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `grafana` deployment + +```console +helm uninstall grafana +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install grafana \ + --set env.TZ="America/New York" \ + TrueCharts/grafana +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install grafana TrueCharts/grafana -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/Quick-Start%20Guides/06-linking-apps/) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/stable/grafana/4.0.31/app-readme.md b/stable/grafana/4.0.31/app-readme.md new file mode 100644 index 00000000000..f80cc30f9bb --- /dev/null +++ b/stable/grafana/4.0.31/app-readme.md @@ -0,0 +1,8 @@ +Grafana is an open source, feature rich metrics dashboard and graph editor for Graphite, Elasticsearch, OpenTSDB, Prometheus and InfluxDB. + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/grafana + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/dependency/promtail/3.0.31/charts/common-10.4.4.tgz b/stable/grafana/4.0.31/charts/common-10.4.4.tgz similarity index 100% rename from dependency/promtail/3.0.31/charts/common-10.4.4.tgz rename to stable/grafana/4.0.31/charts/common-10.4.4.tgz diff --git a/stable/grafana/4.0.29/ix_values.yaml b/stable/grafana/4.0.31/ix_values.yaml similarity index 95% rename from stable/grafana/4.0.29/ix_values.yaml rename to stable/grafana/4.0.31/ix_values.yaml index aa65738b587..6ae96689288 100644 --- a/stable/grafana/4.0.29/ix_values.yaml +++ b/stable/grafana/4.0.31/ix_values.yaml @@ -1,7 +1,7 @@ image: repository: tccr.io/truecharts/grafana pullPolicy: IfNotPresent - tag: v9.0.3@sha256:2096e83dd9ef607fff909872d1ec57ff48d56d23c0042a81c2a43ef2261b3502 + tag: v9.0.3@sha256:3e952306ee69607d0fd1f7c39ce16967f0e108eae1d266acfc528f925ff98689 securityContext: readOnlyRootFilesystem: false diff --git a/stable/grafana/4.0.29/questions.yaml b/stable/grafana/4.0.31/questions.yaml similarity index 100% rename from stable/grafana/4.0.29/questions.yaml rename to stable/grafana/4.0.31/questions.yaml diff --git a/stable/grafana/4.0.31/templates/common.yaml b/stable/grafana/4.0.31/templates/common.yaml new file mode 100644 index 00000000000..c1a366e1cf0 --- /dev/null +++ b/stable/grafana/4.0.31/templates/common.yaml @@ -0,0 +1 @@ +{{ include "tc.common.loader.all" . }} diff --git a/stable/grafana/4.0.29/templates/prometheusrules.yaml b/stable/grafana/4.0.31/templates/prometheusrules.yaml similarity index 100% rename from stable/grafana/4.0.29/templates/prometheusrules.yaml rename to stable/grafana/4.0.31/templates/prometheusrules.yaml diff --git a/stable/grafana/4.0.29/templates/servicemonitor.yaml b/stable/grafana/4.0.31/templates/servicemonitor.yaml similarity index 100% rename from stable/grafana/4.0.29/templates/servicemonitor.yaml rename to stable/grafana/4.0.31/templates/servicemonitor.yaml diff --git a/stable/grafana/4.0.31/values.yaml b/stable/grafana/4.0.31/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/stable/prometheus/4.0.39/charts/common-10.4.4.tgz b/stable/prometheus/4.0.39/charts/common-10.4.4.tgz deleted file mode 100644 index 8604b47288a457e2e334c195e3226036e9560f82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47288 zcmV)KK)SyliwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0POv1ciT9UI1cw~eF{8GdfT2gb+auyn#nxt*iN@kCytNpq<_0J zeH@5{B#bGN4S;gg>3sM9!Ic0n66IUcGv>~AED|Ub3WY*dp->2t*(`}Whf_#cdjV(B zclZBvyWQ?!XGi?o?RJa*b_d(N?|M7^!FG3huh;K=*X{Lp2Ho#K_W^JzJsD+?eAm5m zTgA@(NgkNu4~S5l#6vLew_uu@pAlq;vQ~&_Kyb>$yVqG9@V`KWM+A}u7$*c=k_-t3 zqOEB%LqjlSETzLvXM))@8?}RE)?p+=fhf~~X-YecAk>*b$`I+O_mUM`IN%Lw5O59| zB(yC-WfYMhi5ZHSfSPso20PvE-tKPe8ZB-T64GJI2YF*HUt{Wv7cC#CX0EdlGF|=Q z?=O4p-k{y}yFavM5XTJS7!d&s%^;430LSCxe{#U>giKlh#E|#bA^-pxiE{J{6=ZRR z0b8VKsL^Z9H7>nwd#AnAdZh7J^M4Mb4ABP?088h8ueZ&=73Tk5fA4AjKgRP6_&#`- zqWHtvDWE9|@E8XmNa8V`WCZfL-g*Z9Cq!eIMT{4|KnRRbl-#tE6vgv2KAFJ@8nyrs zur36Q1z=MIQ~?k~7{v@=Ua$oKL1{uUOUPmfCewhlabn8{Rm+#Pn!*JP@(Ib{L`$y! zp;Or39SldoHrySI`a$o-F5DUI1ZX!H?2Sj=px=El-rnzS4|e-KGzzzSgK*r3d*NVz zwA0@my$E*pN88=T7^GPgfi#J5uxJ7C>rDI@f|K!S!p;byyhAMk?H5eYj~OK4x>Ucx z1WkCwdb;PZ8YyizB^t{*Zw)@?Fulu66qv_obM*G_+d@rjmtPIbp>n@HXm>Svx3~L!xV^s*``d%PF+@B2gYF(D>ZrT3(;dIqhC8SWcY^Mq z{{oG}UN0Q&h5g=su-)AYU%Ut!w7nK}W5nn*N!Ys7)%EJBYalnIt}eeCR=uzo?7rB4 z(I58)+Yt4~{r-#Hz5ZU<-QOGUpzcn9f_~WRcf0*ye`hcVd%<`-*nzvdy}@X--5rf# zgSP9bdl22g1yytnk`Pfu=7_9I*}P^wZFw1Afp17&t4bq?4h!$JcXJjV?C*zr2=#Zv zUAWUnd;8(`XuPu*>+cUn{n6e|FxcK3^>@eNet)nt-m6~eoTi(Sbe2U7;}|cQ+@grj z%QPiVUZV;gK_R9U6zaCS?VcvkPOrDW8wLpW&|o}(-R<3Qzx$#a!ksQeK`?-W7Xca% z2BR0fFz9V>_u-3f@FMK@_XoXjd$6~v;imMNM9Bz7Ib9F~Fb2sS5rRV`j4COX(HMUM z$yodvXHmor2xWG>Q>7g!yc~)dCP(lW)bJ zHZFI^V9D^x@m~Y1tZ>&p-LhG`Bd6JHgb1HqA)=U|5Tr>+r5uWI0O=6)mM~D3P6!MU zpo~Cfep2yYyudE;5>;U98cb-A!Ld#IjjrS zn+sG4>|K0>BE(P`L=Ij8I})VeU;v)P3E@)*Q~pik&!-l#LGTw=_j4K-TAIO6AdBG~ z;)qW@QOo+h4j7t|i3A}2Dpa+Gwoo^PglQ=U@?S<;oXZjAKnR*+ijx>jG384Qi119T zDEh-s^8FkBdI+{#E$pmeQqbp1mAh`arSf&ieP6pwC}l*fn&1LOC}0TzFp82JDpmyq z=>nuUxW@4WKoH{b7?Iop4ROG>0G_1@VK8Q9A-Om_cykPXe19T4qahE0Cw_Y^)v#U} z6tB-_Fb+59rh%iCAU+L*hpeRviK$!x1Cj|{Qk#Fasvd-)tbt=AVgO4tq)f~yz=wad z(9qhgXW)$B86-GbRCE}9Vgw$z?QlLg)JT9!JVU=HF=}1@-w?dNJZ!a6$b#ufoG?6I zsD-5Eh=EizxB!CAk#T~a9$d(lTk=D3wVI$9NsUsk=?Z| z#0j0xBspbxRY0S)sh@EiS__R(o7L=;1yJbfcnx4$@Mbv1vup<7EXiWVAuILb2g*eoP2o*k z0kkLH&2W6Km65xH>~RrHv6PfJ&+Dc`g${a2REjA#$EX zQq#76zrt~d<4G-Rkr50UGZZg;S2p4>>X=8sU!P@;#lTZ;04tF#(QZJNrF_GezJv05 zY=IGFgZ#I>COTl;6?6%N(kj0OHo8+qnCkud$k|jX!&{E(c_xOWy2FHjEL1u|W3kw4 zHl^9Mh}GsYT=8Rkbt;jUA^=aziSv zz{|Je`yHs(E(zv$(Qva$KzWgm`yr_C9 z{8*k>*8tMGe1rpxWKH=_d2kxnQYcua*n6tvV2B9{ShN6;F&Iph_Q{tMWz6B2Au@)6 z7~8W5LCS{|z#B-=5L|K?qeTiSMHF1`Q_WJ8TY!kfFgnoysO5O#W{&wV1Rjd%wx|40 zIEAyJ`dc~syl@(%UQOK*=`O2E`D6}s2_S!-oE_Rb4b)Tuzz3c-zq;*SzuW2W6e^!5 z8AEQB5K)F>D5G_}Zd?3c$KWNN31sL7E`|<#;{!NHafrlxq6i$vbN>S*oU|a#7*p%# zjE@E%n(J(YNQ@Zb^bQDOV2lZ6?Uwv?9M7%k`xXlOVU9@>3w7Ptu5ECs*5TZ~cm^&O zF@vA9XLi_n1`alXHqxJgSDWDM;Ns$!qapa=^JmaLM}jHZTuy;6Uw&vk1Ba$aOZ8q_ z+HYa{Gg_RZv3ai-fBD^?!PGaFn|Q9#V#xoaUmuk~3#;xmNoE#MNrqBex;6Q^&{DZA z@wD5VCdZq`y1e{9r)5o+*Go!N(+TNOLh)SSudP@^EDQTOGWn`ArJ{Bp3(C1*m_#if zMgWXSG83LG%|+Heg{W~VUBt?V;pc@M5za-?k(A&{o0R;?p^p$}QEq!K z96ykOD#o#8ej2dw=K2Pb&<|leK_tnjpCeKS9ev`)9%e#z3I&`ZAyrz>KQhR`$)HIvrE=4ZzHAu>5ivFPu!e6E+)^4+evQxR5TYB;$$%HKt##Aq; z3HYd#nb%yX{es!_Ct3Gn%K}n#tK@6EXIJ+C9y@JgDk}=z*{f-(suowz+bx5r7!13* zcEqO2X?1jZp~+0Q%+9tph2k(_R0&xyg9|_qO`1v1na{G6 za=G-%IAp;M0x%*7h6_FNz>}@K>;Z2Jgc%a1K8Hn65(E;LycMzDiw?@Qkxy;22*_nl ziWUL1G(k5{{;U8lZFdwGE41}NvehqhV~XiZU+coziJ(*=8ZXUCLO64E_Py{D~k^(r-|;Rc=01i zvQ)nryFY1`rV-+-03-21GnOiMIOS4MPsn%id6KZVn9d*zrt4uX+==-X2`yuv5;8o*@7kz%gYoiiFRj z-BQ2IZV$cZ))2Q

4l%Kqhx16{icsuH91m#FZH6I1(5yL`!)gVa0MBxFW>GI9UM9 z(2TahF>lf-tsQn#I7a|;X?_!P{gI0&uD}#v@K3U@q22?KL9HZ2WO;Cgi)2ktto@Rp zafhlZE$i1ZEOS_uxSo+@gh~-!zTZTYGf1z6K$ooUr%C7=e69Bpo}-vs+k9eT@fT%~ zuq^eZU$3*dEberq%{t!)Zxkr$5G>$bbd={%0MIy;Rbx3pZLqEqtfs#c{D6f@^O1l0 z$dwYVFx_A}m2P`E`imqZVvscOGXqz825z{_U-Z^e6gBz}^#R)6!Oy-EXefBO7 z&!qE0TH2R~XL$oBV*tTVmzQU%1x)4ArJXTCJn`=x{+|o8v~S8Tr;tr`ovNlgo(ef& z)1mogEC)^(FvchfHB-yZst}Ii#<)W@%h4-!(+C9&h2W#6q!@`UiKc90nnWSh5LMil zmPVDZ>o^Ap%!f*~5|ChYgd(`OKtU3RbO?G~^)*EVi$%8Zo=eCiW9GxIdOwCZ$_Tog z5=1$|{7W9E5kh<`UN_UMn%T|g2jO-D{fXVzVRx5o_ss9rz`r$yzmRLf+U%~@l4@qB zHqd)!bp`v0(br*gn`rmU=2f8YgUO4`+*j|PJ(I5X8GzI{`iV2>wpvnSg-(2*YkG*Wg$&$GaWIwJ zy*Ls+hy0CejQl`>1s2Q@rEr3bJ#a%XV<>Lx=A@puOid(6IO_sree_|9JKXAz5*Ydf z(Ig`Qq8+Y6&U>9_#vt;0o7}!qSe$VdGy>x!4spPZjA?Syyd(LBeww5i*Op`w`Z9TwOz6A#n2>~g{7Pid5t4d4Q;A7{Oz+s;_2a`2x?<2yMJcU^s#ii~~eA zw*de7O8wl@?&y=VEpVEI=uC!z>V@2VEd~Txrvhru1=OAlP#riU$((n(Ca6>{05iA{ zZXWbohKUq~HE~I$!wR=V>sCh=>bs;sE$K~E6^v3Tag-BTgzAbc2V^D%s}v2ZR0>`# zCr~lYOm0x=9r#NE$7386qBgXk$T>{$2WP4PMmfyYBAaC_As9xvtGy#7w2#xyrX0XZ zY=$+c<5UGnwCxEHPa<@|U~s(!&crHll)*^7IG5vK-pIg*^fjE}XrUd%7KlOs98STQ z7sYy~D_^^Xb1O&V-&-#Qe5kCYpb;}^1vOt3 zRxS*wmM=9c!-~~G&|<~XV8OZN>L4jzyEN1+4-Rt(5V1J7l-EfJ8y3oPdCU93k|2rN z*0+l+6)>zbL?5|*^l?l6d%^#>JUmkh;QOPqk9KuwO7Tz1s7m2Y3?R46@@UOC1QW#a z6-xx}a8`PM{ziNi>s!9nX7yeoJQUCiT`~^ld~FiJz@n=Kt5xomI}4fUwb=U?!Dsni zoA}apNB3h6`Xe7Pbt)Kz$}F>n!K}?VHV4F{@7l7}a7-D3AxOqnJG}JAR5T$*qs>Q{ zNc)IWC{$CAkC6y;l|yH%0m3}YanG?X@`H04U9HEmRU?J%^;?XRUbh`xfZCM0>&~ay zh^2vs#}OyA1UbOn$ZmmjYhUTmSKE%WAb&%~oZa=-GME zyD8cVPQ9Y7qwbn3+L{DlS@>?XEY&A}?x<;-=*4PTs#|$*P1_I`EK#)&GL}R*zP4#6 zLl!saxXf-IxG#Aa%) zV&@dFVR97c`LOfm-0 zr!=7^@=>*p;?U2iT8GC)+A105^VyGMe*`HG+_-7o_P+(yXEs~u;DB$_tka8^yIARI zC*tjfAfDj(Q%zA8Q6B~(6rN8Y?@w+h-m{6R9SDk`A`r2OXnm&bCTho*iL`t#q#)71i7)vim8k!eP;u5%Amzpv=oMOoms=W_JR~btcwdF1 zwj*P+Rw9)`HqDXZ0CN48f66VM9J4dXrftv+C17?fI?g-kJr-+4$n|BeQd&6>!QWqk zUc0yBcT14u@qjati^Tb8Iq*s?>1EP!+{u;BxK(pj;LQ}E$l%S!kcCR#4632+h#yq6e!Z<>G8u683QYL!3VXvKSY>gT+VX&1;fSeQ)yeV#Rvk}u>sDzB z0)Qzdj{xWdv;}!=4z2(@tX~VRagq$d2$E%-c4sbYIEE^Mt|s^_$H#21s+jf?u1>sy z*kq;crC|%{JkTPh0aw_~@t)T)$GvKrB8P#?F=rnR72p3GZWNeKM`m^v`dg>xl?Tb% zEh=p+4>>!g5jy*DxTXI5>1>O0#1=ralr4@h*-{JMRzBsn#9}3qo^XZ}F%s5JQaZQI zs&PUBle;DriII3;EYkmiqe!Se!fuKeCdC?2ZUAY{aX1ynU4Idt3YN&lN=AGnQ8q)` zVskg+HG%CTAs;(`X-&E`Gfz1T0*Ja(kNr@ERpZua*Sky z0yz;iz#*!b)bj2I9@}8^T?SDdg(85;mqFCLt`0CSN#!*iDzd%h{*()r5I8~L(42nC zrL_Y<_>U+OsR2IvAGbibh~W$eTrHE?oaD(8O|h_|novRf|9gEQf^PEdQUd~!3MYc< zR~a6k(`+ivIz<#okP|#dF`%+nvQy>ySu8xpC0Q!WfV96kYc(#>~vI;;l-}y{)Y!YinNf$cg zFht{vBqP26Y2ol*xeS9O{+CWPFI*NM9RMHORu&5gXg2a?I9E(H9~w&_%x9?f!HY<8 zBJ;$GW9DYA@Uio0HWEgILQBpjlB95=PE0s*@Iai;d7Ic-8?{7a1zvrdyD}4{$P4XQ zfB>^3L}t$9&i;`KzEi^|$2COc|EGYi<%E|oIyr{E#E|NPMn1=aN*6pdT^oXP1jAnl zX6PMPSo7|S@J@q!h3N?fm>KIh1%QVI#2A%=*y!Z<5Bsj{~CNF*tWk6&Hrb5C5$ ziBP&;Uk7g*unQ*mwGTD!pueuPh zSvsa*6%s3FLwhRQ_@{w-d5wdq zjNVti4_>Bhnzqdzj^dUO%`GiY?}iE$Ek$I8DHUD_dF&*ZCO5H688@A&tc?`0v%Fx* z#I3OVmBG=_>NjUY_^^D`n18G?*Jq0(yEhkhW)5BPa*+xz54V1TDGILjxe7)W%6s5q zs&V4OWNoj7Ng#6SD*s(Vw8O@wa5+Cz!G|D-v4#gh2Og9eR>l^8MZT4usRrz;U08Qz zU)kgPXJQTaiIu++D=YId=ioZNlLh^m&ON$>=`8=}pV%R3_4nc2k}}<)bR5c&_@F>? zd!N(o4h|G8S)`*x{<_enyV&so&vGC3(7XcLJtw^?JN>TpN$wTQ7QW8aQ^Qw!hph=~ z>9X#wOFe%%8)D_qQOoa_qan8nRAwwSOrpO0aH_hMrwn`I-+KP79C8%~uzI{zuC-=^ zEeo$6X(vzH%3&@-eH!9g5f$bl%0zAoBF$`fvPDowc^tx?zym>kG zZ4Hih%v^bv9|xz&4Dr9cCq7>y%2w>@Sobz5fs}7=f3yOKa2(<}4n+z^Ot1AtC?W|G zWiSp`%U{kWUNA*4_0>CH#I7o;pK=Kzx0pD=gCwSm zKrC|Luch$FjE*>-_-HPpOFEEJJc&i-qc{ms=UFW78$;pl28=Du{aj9 zuyB&;s@Kk?*90})nh)d9hcUyxezV!qe^nsKk~E2u$>JjAOnrDqO!aYbaY|es71s^; zRJ7pd#NbM0UGvmrW}U%L7uV=!2>ym+h9-#oU9g9)_%oO4f0MaL<(Hc&ir>c+GEB!} zzp3zD1bO7c_BSb2|6a)M#RL&p5~-tG^d81cz!c+?!xc0zjTF*Fb6f5p!jK{p&!sec z6f=V5+YVwuM}}!~YNaWcoF`{GzE>8?Glt$n9!D64zCyrfiQqxR0$wbMkE$up6C@x)aIVe^iIgFnV6M$pB7Ko!#Q!enS43VRNWHDc=txTQjvYH4p79kGWAhHE$ z7EF2LZ*h$I@V0f-LztMr2i*^=S{BQ`N-B<%C`xWb{@!OG;^JZp!0=xgW%7Ioq##CI zrbDvW5}j8G(WNO$q6HWcaiRi_86x0^oW?(h3l+tPNChcKvmw~&cDpm>gPw`YG53GO zBIT7FMXPA9P;j^V7Aq#u`8xS@QMY5Ay)R@O5&^?Mp1mIy>Wtwv5+TN%JH#rjcZn#Y zE&g8_DMopN$33(*K1Z?t*HXBw#*gk2?6%?ic?5XB5b8TqJk@oGOOZ|uU!93o_k4>t`AuJ9_KYzis8 zNk}L+d6I0R4<2aS$v7T?DVqlvUgIdbxWO!#TAQcnlejS>RLP&|)ydg>#{`&GeH|3j zFeus2yJF?l)D$dam#v|pJMf@bs~8d$MOM0Gb9P!L0M#j#Wbm@~C#Nx>I79)o?jW=L zyuwCv9K6Z|2s?4apb$xn;(6{hEZ-^zO5woy zog|^ayd1WztY^XEBQuGmStm=s#*sOWQ{LpS+|#?&wurN@H&0{!|80(f`Wh#~nswT~ z_uYl{_ZLb#44htGt736bg12IMux~JzVp*)$GCEKO*MEDFkUQ4-)_S|(cN@OF>XlOuzNT)7)CN7CJ4olyMnGrBP zh?Ce714RU^FP;j7@3iNXx9HU*{88o{5a>@KGXu-j2d)83QS743_ykeF)TMMH;9JH@ z!!*^ow&lFg=cu{dN#WGo?v4qUiiW8y*PVc^@H)ao=A*RLA{o#cEo7Q^EixeZ5i{#@ zVsVEL6qgC8>pcmcLx#Y`#ZO#ttW=;Tm^sSRIlK{dH5?5Cs52|V3t?0qQRNk+Xt3j> zm{Tw;)^5vdIz)jTV5xYeYF81zd^K`Gu_3Wotzoj&;Pkav-Z2 z$=_7>MkZ00T0Q!dirZ?i_Bf~VPJbhW5%`G1D?;H%EsPzM0A}IdGZ>o z9jm~zXAhFbMgS&gJOuZf#>Q#D{*kA(0o#LKcTe(xm7}G^2eHX1vIZmMTPk%q5WqTF z5DEt?3rFaIx(!VZU3=Mq_=;ohymr-*bs`Fc9mTHj!dMl;K)P6*j$Rcr- zLX_(%&V`7a!``32;oW|dTx0QpbB7y&bZN3e2$5|5I+vLzV zESnq#&xbH14DkD$9R}#FW{0W$z;1?T&sr)KIL$X1WhQiSjE<{ivQ3V{SU9U=rn54I zC`B<>+AyLVl)9KDp^UFUzeRb0Md_lJnse)>F6V}lz|#i^js6vm0)j&7X{Ha{Ypq1u zF&F~`=|YKn!B}y^kUCEN{`}2_x|7;k6ZjY$z2e-Pk;vLwJVzm>>vxOrYR!5iiau_q zW}LCZ(fZv|6`OTT6@KKdCGjM=Ro7(2hFz0|AGd2kgoEp8!V9n6yS#3*4(8<_w~sW5 z$ojqGwVL&dmwc=qefNNmT<1IHBCU?t8|++_FHLTPcDvo;zump< z-gmv7{$RViz1QpazU%h8-ND{>pnKn)t$H%bAo;F)=eCNS`;$DMKX?Ap63e(rWFzcK zwMjpUGL#Y=%M3`ziYb8M3Uhm}yp)xg8{J!($w;7fo8OU0;cA4!w;Hx@#3_$yXQ~)PYGJ;VXe>&u*roKW^6(lg8An+W=A^Nlho@0UN@TIAY zKOL8vacf5Bt^LqeE37W? zT&3&PyY0i5B8RxHWUlYPvDosqagFe(oiQBgLTv@g1MSTsc;N_CunSGLrG4A11zt37 zXCuS`1D>?4ydvPuO+&!vIGzyRzMSTUm^x+hHCoWp+dt&ifCWYDpAKIF?|Gbr=nAJ^ z-cQxRotL7S=sDPQA)tsN1EvN>;hU*eUD_q7RV5C~$V;b<14xtf zCD@P~Icd2y-L99{@bZ44n2|-Aa7BZ6>;{d5!wQwV zW|cJ5va7$WELS9CSs6RhtA!71+c^YlK8=U}VQwB>Kx?A#R5S>1@eyR*8Xw7QY1W@LFS zD7~L9FV6}RAQz)bih323*Oe{~V)nR|r6-H1+nqvV)LS}udh}o%f{h}Vis9S@8s;~wN{`2#41pE; zf4{f4UC{scw!7O;`u}4*%k+Of{B0Q|A&mgJR$IBSg(_Q`Tk=T7IEy0w7oTIkEh^p# zmw}Q3yp5ldC`3dQGGcKG>Cb3UU)ZyAM|!HR5;qotFP-`1>;HL9p}I!eb{kwt;-9?w z;wIlV*t9xhYnx5bb8)*}t7d-lKi&1{iVqs)_7CuEkj9M3L3>(O+ud24x}HE#b|UYM zHtY(>Tc}$aNtID%u_&BF9C7Qz6AOvFmO;W0Ks1W~jK8P50yo$Aj z%WbP)(qm)1IOj;F+mxg>;S%dDJ~Cvdbl-$olvqUDfm&Zy5GBn<5e|Mv3rUne081{! zc`xt>7!7t%9JuQb2Q3Z*Hvlaoq?*FE*PB~-sGgpOd{(aickuh`XT|!z-5(4J>;GW8 zzw@;IKgJ{c|L2GijOIwh>UG4P7ni)&r4j&BD^z2(AHOJXuSDO{9?_TPNrvIj;=a}o8LI0MsgD6G}snfM!CYX|@{p8<{m{&bjsrOharPmc;Rw#`eW`)d;9TMkx(U_*Z{5wvX)($Y;f zS57j!yW+|n9k(TK5NOoJ6c*pFGywu_DYnS9v`Ct(3u4`@j8C{70|9^R)l_D36T) z&`OQSvM<7L3nvVcxOJkALg{s;18^)eFHQ41WsH7A!3a_m>QH8R1BQ|w%Ot62tDQ4k zwY#f`a@$mp7Cv7} z{uj<7*TH3hb(~j5W3W0~#?KRt`Zk?P0G*{y5#>ao&&+Q_DxBiY~dQ^ z;RA|=J?+2pOd=@{cs_r&^u(^zCVRxC)C>OQ)F*fN-aq8AI{$ zL$3C$f>T4V0;Gbg*DDH#3IH{(O$FC0w6N)bso)QB9;%(!u4p!kD;r*KICRKI)8WwP zwJL{0eQYuuy4@OTx{y{4hl0@g3phdyk(o}iClC0!SAqVQJb0-3tNCai=*eV6(0q~d?or=k9@6N25!7re^<+wJZY z_5bef;7R{~j7PMaZqgtyw9JFWX`{y z@Q-aPiNTjI!zBe7oPaN1JPGqGi=wk6!hzh?s;iTlVj}Rmd{ELkB&mM>NRlk&zfn9N z+EM4~Sl#kX}1_@b$?*y~lfNNS#rV43V zT3O5vR~m~>u%(>^m?R17v?-l-WM&X~AY11HR__X(TrpYl?3!P`I7vFi^ka#zQSI=8 z{@ss?JU#!0Pb2-0-Yo`jh5py;m-N5x_MrEq|2@WI^go?kGq5sZ%5kSg`;+M=*VFz= z?m+($#CXN=y+-j}RlED;XvQyJd|TM(p~kfa^NN74cPacWL#w^qE=jnuD)t4BR5#>G zvO;rlVHC9sr4xp?hNuRhaXj+V`tx<4M)F@>)%;NMzqeD8|2y3$`~OiMBmdPF#)iH* z9mf+e!7Nv6Hw#VxfMc0XTx}dG4j7Y>)86vUk$6;^{c;DIezuG6>eX*SQDqOTf=qvuI=*$Ab=?x z;RrK~lyrn)m?tSdJ-)m;IC^_>+FHXuY^e6<^bQ*ax-Z|bO^=8746DSBLjkQb!f}UA z#ovA){-F^gTpKf|t z=$|DUmIeM*B>%kMsK2U}?tx?ea`G&V_-m+)*Uf*O@K)%5@}l1d)BkpM`z8B-_euYI zl*j0Qb`t3^o~-Zl)d1RtVU|r`Q`*WKRO_-`mhoW?yH~eaNDr}|$JWXZAv>^uvuFtZ zFxmX`d|t`45HGs>I$QaKq=EZUei0fkRyT|BXN)5xyV_y1v}3;K*D=-U zA_m1MxyD*63L=bRlmA&~ooH8PA_9O01g1#I0L#Z+xruGHH!!+3P>a|HpXB^8X&}e|sq?+y6!kSJ?mh+Y0;NE!M>TcWd0y{$InW zx7N8oqfu|T;=YV}n;s8u)USxTGRQQJxsnT2o3F_)#TCOwPCEL4SBh%VozcYlvz~d8rrp-Ie({)R4$0|j z{(9}ho<$eMy`1_qU70`BQP0AX|KJBc*D_#N%l|tD|1|LbZ&%#^(0j`N^eE5L_#erz z_ZRq6IoEu#`KBCvck}B#>5FSWb@P9o#+|Eq8sEna5UcdRZgKwi2K~X4|L0MjI{oj% z+38nM{pM-xXnnj)h^bm93p$|S&P9sc1seSZyd*`j0JXeEt@B?ZlS2X3+KFlJ1`{;N zAX$myiWY4+6>XMMxK^qg^EB3qMg=nYZT?n*)c+iJ_tR5&mdSrL0XkQbJ0Hyc?{{~L z`d@$hN&kD4r%wLs<3MugfnEfl$y!pdrz1=mNXC_RbqmI!s0k}h7jYRXozG+3Xmi1c zR$l_PcKcc~JI=r^MPw$@CNq3jtcQU7^wdR|68p;0$&i}DD*emA$=Bn6uD*?G-C3Jp49s%_akH{~AZp#SLb`)NSqc$@%dw2XEfkt$FWGJ*&w1 zyZ4vJS3RdhZ?E6(4cgsyx6|u;E#TghC+{nj#H?Y8Pcj})-8f3GPR`~#E@raX&!2_H zr7jfhSJ9n^sOHDOW@o=@>g;DNJY7J z;rg=zI=3eNpn~{=0`+^hp?*D=Cd9hq%R*0!-Haj<%X|BlmP;X}Hwg(PWl%hSO_G_6 zRgfCoIT~xpwzf}Ji+KzGa!7;~_+W?X z!{q-cT8;i~6LK^VH_vTxvqoh1^Sa3H4`-)W2k$R`DqY7X7MCW1x0%p2cO`vIYk1lG zH}2>=dH`3>|Gm=w@9xf1{)b0->imDd=&`>S510}Yrt6-@zv2A9lLu&}|EE{F|6yn6DgW1_JZAmRXVyJ?gKKP ztGqzw;|f1epK0ZBiO2%X6J-L_4?xjDaf9dCwH*YR}Ik`Oi$r)o2DOl@j*%7W5*T?iA zewUqwewUqUze~B3SI7VF@Xh<9Yz$Zcw0I zW2&rX=0AlW2eH7?Uv4Jd{}_+XdQVCJ6L&jwu6{}g{++Mg(OD86WGoR^+&#$sU;T3a zkKXpqQ~r-fd6fQ#X`cI39Ac*cQUJjy%8-y$V)dOGrT}RY0%+I*B;uA23fL4f00{yC zL6D)al~Ei|l)=b34MccEAXzL`BIW%e(-hhlhCG*N!q>WYKCjH*u6<>_syj`guA0NK zzFQYP>bqZ3SO^o;_t{rph+?1NcW(UDfUGNIRBJB{j>X$w>^syQ)o#PRGqP}#&!)NE z(Yf~Cv1&CXUb@%5d-<0oFf74U^aW~8!ttat?<>DxjR>l_nO!3wnz~C$UaooanxeH! z!EH~h)OdY zpQALw0i;e%>%CQ7ZBNbMr|L@id#lp6s)QK9flcXg0nfv;_wN~w@b8e}BtAnVKrw?8 zl;?+#IgroQ`lnc3FNb+<2X$jZnwdAUfrB|BaDuExDyX#zi_dP_i^`t7MYDt~?z1y9 z0r58dX@E;JJ)v&>zkAl7{8_dB_lo)7dxM>)`+pwiS!?}=kv@C(7N+%UK3~Uhe7i-z zkUZ!fR&Rswnrpawe(}yLdHFcxH?W?&v?;IZ?)TfR?M<^d6&f>OWfFrKA`_HfnJrgu zYds2az&0zL`SyOF_WEybI(mY%x6%k~ad4sU9Ow=L=<2YeLDmTN>DqoGJRUlt! z*Th%S+u*Em<*)Oy0;UG(LaehrpTc+l)KA^|udf!phvR=M*8g5_XV5LK|GlUDPmlAg zz5bu5yJ8I?#RZ`ioeKylLN}d#M%vK}21ikyq_nrH&DG($j`Egj zP_r<+A-o4Pg>ssC3VRQ@=};UgcgUr)uoZCpQy;K;+S=|U0hhoc&DcCpiWqtvf6J{LEPCI_j-@gy^73`E z_|~C!{nF}4R(rc5Qqzh>rIg)9qOyp7FqTibDgZv1Ce%*BZ2>Wr+oDW9iFvipp9SgK zf?n46RfsBEUgt2y&f6i<7ij}fy6LPSI_>`zEEtc8sU#Nz4}S^}VP17(&)ern1fR9f z(HwJ0P$|*z7_@VAYEcvqRzp9jAzg#0#W<`Y(EH5H2*O7#l4Y^+nSiH=4LiHcd`;Dvay1h28Ut)^SL!EU`81(Rbpa5!8I;}v5NERyBC>jZO@65#j@DGb z=yY}aG-s@pO%+L2HwFKVecg5bUloQZ!=vx$1zzR<9rO$L|Mm8^_nz|qKFTBfzporG zFPkE8Y7f8i^-5Q70Au?wAW*Je8TY^1!>jlz6@c%}&+BmOn%-Wg?)~_D%OG?4@>M;* zWjdApisdrR_kE?!t8k15zVp0uy`g&8pK)tFXgG`>{>>(8|htj&}(2`^BD0+x_r z*@UpZ7CKp5LY5I12uNINvG85DfT}%%ESSD&8o1Y{s_{1!aeRY1hm+Go&RDrN_1UCz ztSI4`jVVz!|3Zi0AD;3Nc)u2$9W}7f5>Uq)QZrBrEq@tEjolW=p;wMYN#+=fU+!Ru zlJf6rW5h1UXHV(6D3$<68c`vL$I#*e>Bvq;r4PAHfYVn|5?t4QXa_hX?pFcvrMMU) zH&Ddh|yKE2Z+&cU!8*3EZ^SfKg)+O8KDvxj@(jh)B3ohI z0u^SXUt7pA`1GLF;o6j&>gwNtkCswsEe=`=>ArcV#7nl~pf)vCG4W%#Tx}TCstpYn zE**PeJ6WrjE~lg~6tB|i#a}+HUr+1T)B4p|`aG>)PwUs8dHs6K!gavBdweFmCrtkA~9<1%cz8?p#g2ETJ4a-^Nl=OVB5D2O9Eqj6Wm!(Y> z>5%uv#LOkc*%L0bT3sxMmiv?|*{*obsM?dPo3rVZ5Ysk64B{A6Ic@8mu2vUSeMMGp zilSMYPCNR{r?0j;hTs~Zv{kW`Kc4@%xx=`^#ch7v{_gw=H*)0YDtGW_!yrJEzD+`% zhsl?LB8HgeyB)T4j$rr;!3@2N1LTRMjMm1zlam98%Z`v05<^)+MEWW#T8HA_od#aK zc=03lY66)|r4$AFQ+5CCLs+G;sTu=?o0Oy;*Z?vB+Y)nLE@mcCGJ+B3na#?8BAM|e zpG5g@r|(v=s>H@XXF__q_Tk%k>hwP{g7>BXuG0T@cS`!-&i0f3_bAU=`X6VC2TAq9 z0e>60UN|Oe1`r6U+)Lbmfs~u3Uo~975TmRg0M0-$znV|CI}|R&3(T0vC?r%CD284I*9O7{>6zyT@Ckho`Lah!~Y7$ zA&w{C3>Vafg?w{k-wacdL`bDLf+<$%O>2j!rPCeR6SQtXXeL(+nI}-^dlwO!2SJcz zF%!s`$|hA(t=y(g?Nceib75BgtUGLc(Q=DK$9m^yZEAFL)r0(VU1Gk{Ec!F(xpn&A z9j|lpOx;wkY^Z(uM)BTT+@~rLuQPR9YFkwTYe4-RV%uc z9HtIZaTAly0})+rC0bzox3#Nb4Uo#@;-rl+k?QxAE=K+#*UTkKhk#Y9b>yUYe6?fU z+=2zQ;IlcLu;Ea=osxtlK@z!xvkAPPE-%k6%vt>9NAdL_h>1@q4W@`wZOT|mYmS;r zOf;ty8-J6)@D+?;93WzF;KLF{qjnZ!-U@27aR)|Ga^uVN|2|IFxnc6_scd)Jrd0IX zNQm60*Ch0mH|6Ba+XNf(s&@TRH!O1tn}X$ix;F04PFI0MOH;k2lt(Wd{yzPNl{h) zLTn(P!+4@|oz#8R>c8fxmC)8YU$ulVb=}Zoc1hrPjD!59qGU*V=Lm+2gD~W>U$bG|SBJXGK~y!qA(R>uR-e9xGaN1C@Na^R7}d!YE#%xPZYC7x zQ%xwu7}U2>GYASU*8R$V7dfHH2$&xxM)Y%j+<>oNTUIszps z4cc~Q1G!=9W<6-u9 zTppgasv@HE5_#tdcA2)NI zLBF!PpkL*U)o@bPM3a&2OL%>=?lWIlHKD%RM4ED?xiBZ~B188iY}`Hp>{6y);SVVK;FN^dN4mPs7| z>LgDtQue!f*<~}SI@{5c&+#ihEBt>@?xWt#4Y*?euQ%uy{eOGAPw`)m^Q`6nb9e3^ zBofT!yKf^VjIMkAmm7p|UwerqnBU5tV%?o!^e$I|72SF|T%=|lzNgE-Dpei3{f6fQ z*7Od2y>+i7|06u=1XD;@=gR8Yofd#q^1r`RlK+FJ^Iwnihzs@)rIfZ=Tl!=H3`k;K z_OR^YZ`*BJ+;~wkOrA3+Pa#KLE#ALuuEaN+2@oT&T@pLNgY;JKVqM*kEdLY_xZ zWvg`3n&7RLpwNMZGN)7&ft!R}M+pqYRn==!sI4oDqaU8VDP%68_+)I9m?1KT0ix35 zlo0_$1g>#xulH$t-fIUjZU=ENZsVk*FA)|!|5t)z;B5i#7O-zklv~on`-(?l|0ADe z^54mmeTM~LmHgk{-Yd%gz1~y)$47bOM2@252K=0jkW#+@OTY+$L~3gxirdR3a%DdC z>l~WB9%z?A`_QgrHQm-IXkldmDr{R9<c6fZDZw_|pq z_`F}zNb;%@9D42%U5aLNL=KZ#Dw6vDt=I0o@G5sASJSoap669aj1YrPt5qomB*_k^ zD7ZExp-i^7Seq#MH6ng-oA_1<_&1l6QYqOatGW;6Y4up+StkFL>-EkdV5{W+POq5% zcd*-kivNC;$JYN<;LF;ozqY3Ngwx001q&^Y=MY7dm!`U0t?%Dbmk&9V_CcCz8LyD= ziAv%>1fG4~!{qk=^2KYxG%du!%&n_K%CN0t&6Z|dhBAXOoS@JjE!@K<7kSq5I^)Pb zZ?x1Zs#x|K9EPw~O+Bd+_A{d6Y-Y=HpK(j6nwXzNhym;h)n7-vzm0Ka80!eh)OYMP2MX}5ks61phQ zcpH3tC>WstW)uOM%#g6*q~MbyImRdoso0!}@C-8)a?_4YF$Ei=g&5_d(+ge}#}nbn z+HAK@#(+p6DS-q@%pi`bVhHgLGjM~Wh+Byn<#cx7s?fE4|AivG#mcUF*hVRA&7!Hu_xNB%J zF{Z?%x=g77w^DxJo46R#h4DNtL0Xbl&&)(wt=W78YCc+w&IO}V3OSPtW>+&umJ*uG zYALC--Gax!>Z>Js)Ze+*Nl+TW00Hm6J>Xq=>kAs)v7(4C?C7$DcW`xQst#d0{9L^g z+Ljx{&KRyf@onwOZq@;g-96b751aUObBk$1K((F|%h{BYBt;}zfBQsX@y5cW1g3j=QF$zrBSk&p?u%maSI)lK7V#2tLp(nG)rQNYT$~m z7iev;ltG5ZStI~gLB3E0s$kp2#}G$gLr_*1I?JNSI!RzQ!1=d!YCeMMcm>`9)bRo8 zhm!;J8pq)Y;?Ff|q97yk zoDxHym_G32yu5Y9T19&i9;09p=nF;7&--kHAu_|UOh+|Cl=3MK*;LUr|M)ilHY^SP z`b}6uqN0&pzSK3-0szHxotIWhz_a%!M@kL|7yPg+4hjR==2aBcoa<#Z$oCh==U4X+ z_5LBgJ-GOJO_-w2N}yL4$CvjF`0U4~1Q3@MIPMQn zb^h*MVZ6Pb*D4)1`D|rJ&zlWkgnm4GUvA>`!^zRf!PSS8i<4Jxj<1f6Kb#yMUliJz zCpgTTa<1=ipd6i_d^kS8Iy^W#cy;pTIVMRw<14`&5)4O?K7$Zp%0My(Gni6c13=5a ztrJAF-KJ{DneTj-i(AOgV5;F-&dQ=MSrw3(Dm=TJ1xo32SM6$u+Feow_BBan7HIRX zBDI9w1}{=rV)u*V;HsmmA+Lm2b?H-)!eSOyka@ERtwN=9cdIL?EH}KxkLOFV%O_LS zKKQcpY85}!G(z$G4QE#CD2RULYO36*(4{5UnqLkY7SFoHE4opDP*@16)Lr2=^UmZ> z4^2^k#|zP5M}in91XRsSZy8a<-zc8HR#&K%9Kr!X>^PS~zRD=55|GO07B*tdm{{ZR z+T7o!Z~|@9bTe#(dS?o#fvd=MuO>6#w(uBF-on&r!hT!Vid|-TLo3V>=M;KXEM9J| zi=y&S3?q29a>qX6^i?1;ATG zCWs1$#wE$n>A?lKI6QcB3??W>1Tqu?t`gvQoXD>7k|xu)z7ImAk7)tv%U2R8|2TZ9 zZd(vruHyEElFs2~qOtE?umHUTGMA0@s*H-L=-gCchUs~sl(NE_)k1EB(J| z65cfgXodf`+b_lc?DhKnC;#tbJktN$x||}ACZTlaVuq7=iT}6VYU%(^ld$$MnDNib zWU)d-72oCgSC)B>%GtNe`_s#{iOQtnH5OFaLY6I7`qkD&ysABd69GAblq46*l%2|WeO|))+1y>pD{0+U|J?u&OScSTntSTZ56AKE6mhk+ zn!Z?YROYqUm{9f$X49W!$$~OgQ=u{^i52z}#_9-OJ4xk{y7CvntTIVo#aD_T38r$b zH*YJw{N=U;HPnx0yxYiKTaCIXYrPnPfBgCoZQ29@K>xZ!Yu2AKM~Vucd4pqh)-pFY zik};JnBVKZ*?4QJ{S%Zzg1owm4NT4<>F(1}2PgC- zrVK`r`&@#j-E0cX z31FJ?f)(GaHma<4Yhy-xdP*>wEn2nw@jjgp7@{(NWafkYNxiM(kMieR@<$oaUHGF6 z?W^%e8I_zrD$rb;KT0qf^G80JZ1Du#>F<2H_1t%$+->4JpuXa)ckr;Myo=y1=DQ7G z)nEo|E-Qr?kebEC4MGS*VS>P@hDj<5)U%38faZ*G`~C-U>F&ca%=59V{Jj2%R)JZ= z@@VAUD?0Yn+kCS>Z>q8Se-L4)vWr?j@6nculMr24sSEAj_t*@yveD|l?-4vp(j-bI zi;I*X7#=1uWd!0_n$Wc$?-hXvkvxHm_4BrkJh>ac($m2IN7x+?0j@g#y|-J+|FPSD zI{)`5kJuJD6RALr!%rV?aU6cl+Q)gcnM}1Wd~|amhWV3f8Fh2c~%5{;)LGAHHoZ?DW=^WS|^3I7$F0t&b3)p*#hmXoP{;C?(fq4UoHQoTj=5PKlOII{cb7$ z)861o{y)aEH2*7?RBi@X{$`eBF*`$KhQ)OV6#Oe0$sDkl0+Pk85gI2%ACFYtB(VDRStt?11iueDeoj$%T-D|R;DNN2N4>Bg`XS8r4dUQ;WY9b&g zq}Io4v>1Xkf;i@*TG{IPyLXpYX9pJ-zq~s?dWh!LH=iU4^HWIaO+vytAA?0TfS3=ddD!#b%DK!1=ycmZ(*xq~LH6Z0Ii6_Yt27Gt=p_Hr>uHivRM-2%Hz$Wb|Mc$t z#qrhI$?1=`B|zR#H4Sh)X@D+GB2tH_ck%Acxfmqxwn%dDYYdTS@bKMvDV*FI9Dyy*a)*cz^lR@#*Es;lbs}yVC|Bj|CwPGB!mq!+}`ft6MlYdV6wu z_5R}c{Pf`M5>_&x`EsGWskPwlI@xQf%|9#=h0ZZRA9$S+jyrU!@$~#a|M`c4EJ}hzz}vW@ssWY=J*t|vz%A=Ta4;P14)%xVzx+SYnWu3_Q+P>*$t>Hg6S*?9aP18;GYBD-0on%20>Ag7n}U|O=XcWUbbPO-49#f`81sg zCqzL7y)CPJ{wzSYr8ObX@cqg8|vX;~ovS4}=Ck&4lMOMObKoAsTf>j9_P;GT{1JDHxSOokVFs5x)u04aF zt}=?q)eVP_=*!*yPJe$N{PBl^jR;8yA6jOC_cl3?tpcgD3DTFlz5YswP3e$OHX(@q z7L{*blAg&4pLcu$7H-*ab0m2=AnV9b7Bd`~QB5aTm=XlT1@Pb7_Me4B{-?DT1Ai*7 zfReaaj1ne*MhK;#-_kE))UfL{`fm|yN#$_VCRuza*WitRdR%k+r?=^WKctcid|%-9 z{Ijh$e*wNPoPzzmZg0=}sMT9u;I|AT_ScFo{q+`osx~T%eVQ%kZxIYattGi{%VsOc+dG4FUQ?@unqbaePtzX3J$`pyQNUOt^4T-VnEs62r_^SNpt|NgTRbORcD`fD3~FrDBwVB#yZ* zm&DX-NQx?h*|2iG@hSOtfoPd2B>{tsM8NmO#+2{#RhiSQ!q)ua4c!lxkkcQeKpgJB z*x&AOggg3!u&uv%9U)6QoSx1gXmVX75dq6Nu6h`X1K|#Z&GqG8f7{6C^X9XY1A{-u z?_RfRP5~BO^2;p_zviMz0E})rth6#*UKO8dHgZ3z7de1ZiDetWk8GxEO3c$(!Y$LG zZ23I}-#k6d_J5Pn9kYP1i2vCh?3M3-+j)xrd6Y-S|A;YG*FobX22nD>LG#^OdG^}u zyQT!sAX(_k4pc;SG1#Xn$~3~GcE)g|3$+y}bJL9t|4c>xc+UN4#n$a$B&(i^@^%ZW z7@}sFiMTj}--bN#ZQTc5oxpQx4`sd&>J{>#Eo~M9 z%F%DY)6N7hztF===Ygjhvh%=KwDeLH(@<)zqp+gbWceJz642$l+sobr2~MkL8!@s$ zc)qtOgZ*3=h}gBWckBdQCth4q%+8rs=z-$^vE3tuyt*}BK?{=32q_EbU-n7%CQxK| zNRq;d4n1jUmq-4#5r%bwx47tkUVR0FbESa=zAypiffH&fr_Esm@$6Cy;;M1v^@^@6 zXB0Q`a8fm(o5g-}ZH0rW9nbRDTdY-2uB1Q7({TNN$orpndwcz2{{QYy?`i#ij7Ru? zRAZs_OkXZ*a>X57oxgy0 zY>LPYrU*zh#8q(!oP9WyN4E;i7JC?1-A)GF6ZRXzy--(4C@^J*jn%)6!nIiq2d1{k z&2lQ6UGqgUj}sz2jLUFZS))o}&69@e%Irg~nn<5s!2fh|gqc>K z7mluJCt6{u0T0bmwm8DXoo@QAb5O_C{A^G&6ymJpPRx(W7;v5}=~d|0%UhuMck~9& zaPiz{Wh16=RXgIRE?bpd*}$nk$f78kkn$XoR5dAMz0JBJG9=pDbm%T`>otieQZA{D=Gj9|80Y-zJ5Cuj=I*I*rSbQ)<{<_m_26npziJG5!7urC6R=|0@@8^Dw zg=c+nj}n+5gM_f3+_MKu;0^bC{cUe4JZ`90;V1Tzhn-Fto`_#89(B<0G7^CTyd2W- z`}zM=!25pAQLJF3{7-Z4K~vvteQ90m7_7wcU*RYy_u1pGhrzVE&kDz4pMBqN!4#{z zp@(4JYhB|w90JLrtr=pFvl>@w#MRVRcx6>QiYVe$-3E~B&em-D@};GrSFo}yt_UWW z8pVNoZ-qI`Is~?nulROJ9nOb#J#i96^JYyw98ZRz@Q8Yx2dnF3Bq~)AbvU0@R}sTl zRYeSYRh^b=MwXdLPKf;XnU)n`BPXu_w`rJc3Ai>#-VTr@W{-EReq*Y)lT7#~ar zm^He$254b;H-JI{6=|pVXkB1IGD{=G9O1j67;IfwoX5(DDbCA*RVm@VNawjy|5JyV zZmIk=@c-}jcZ>V~d%Y+B|D!w=`G3By_NR}|l~upSXCM`bT+3U2GVifhR3{&c((h7& z<~Ye@s=S7Zr)L8)%4?-Y`Aj18qJary;KKj9v$m~F6*E! z#F@afUZyRDTL*J}a8jprAcw@5ikh0#*xf%~BnZ_5`anX8bHA07b#1-uFc_2~hT zkiPDBDf}%%HOioZWX97n6F|XE084brBA9a}Bn&7^YBUArm>e7HG2|`Ukb3^Zw| zQacSM?JXOt>DawDnA;>9--gIv4}EC{Z9Iawvhb=is=l^TzsA$V{*wth9?t&T=@tF| zy}j-3ll}J?&$nm)sdO-RvHv89YWuI8ZRXMKKRX-ao$Nmg(ATp6BntOr|0!TA?Y}~! zt4y{E9341o*?)C7KAinm)!P;JUv0Or&-Bb{AQF;rOc5*zIngw|pZzYpNDw3_l6Ks*WBk#^BCz+yYrn9u zA;Fdu0{Ih9tW?$r^t_<$HG*=hRz_ge1Z+VlvjcfT*YX+FR8EbMjIvQ*GSoFZr+E}|I9-Fb&VupKS zvsr8RjU!1{En4{ZqEhYi@y{7Y7!!uTsjaj*R+31|yV{<8^e4e~vvn}ys8 zG!uCTuyu6zHVpGItF2<||DNcpef?Bedzgm>Y+e7*ew~bcucU!ACme3pLu%W$vc85f zsT?aQ5T7^Yb;q4;N8Nt#`8)JwuMyVB(C^1mYy;6|`5J>>zf|sTz*-oW1u(s5Jx$Cy zV2KVYXA&Jib+j?f>FI~5t)+QC*lhMDTN9rUrOoL4G-&HB&(Dte_wE-L5A~h!1EPNC(opPG($O1KJDDQ~7} zae7s$d6k~Stx@Aj-^*HD8))@voJL!%B3DIPH0hzqndt%;Eb*q2uE$lMCoYiIyGe}a zm;38X42BrIlE$Rf`_ z{bzst$IO|U@BetyNB_@*6rTV67H>{PT0a~i#*V(;uwe<-=v3tVJm6}=Yectc3?RtJ zl7g6o=u9k;oe=7nViF(x`fHtl)D{zK$T-H5=FjHbpxporzWw2cLGcF8(+Fo248A#g zJz)R+=Rm%K)1XLLkg!%Fv1*FKXWJCVtE*s*!fk}()x|0%`OnWkpkT}Mh93Yhl-XEO z93YipZv$zte*Pgzk$4TdcvpTXUXTCvS1`Ik+FQn~kc25zBs~Qe`um!qr>B)iJVegi zk@#GO#PIMu=_Lcc++0f__#WZanw|o;#7K?VT*EZH>ufR@pL{k264pwk*lRzT48j$E z--@KyC{;NVhkv9QZJ5KmO#WbH6^ns@Ed$xvO zDicJiWaby1E0v-TG|yDsZq76+a$_u~qvTp1fKl-wuUnx*Yr?yA2&%O9XW7Nrvu&=n zBDc@f{xA0Dra&pO^431t#=nm?r9qZsd8pZYt^+EWtMjban}qJPaXU1t=87^*lF`j} zfzlXJl#MVs&KsSI47%8q{;Fza%uR~E6kJa}3c=ge@~8^p zSedIOX3ChH9JLz5wgQ=wghXVu`v>E}yelTt?ne*N1mwM{ zA=(b#r-k&l{~GLnyn(Ab+x}m)@c&OI#{GYHI(8oY{|{2y+5h^Er)va~lo>#PuMi*^ zMBQqZONjq(0G^6x9R~c**Mv|lVh+;vh>{UqBT*X+RuNgih)c!hZCyr^3%C>|B*T=X zJCz1_lp`J$ABzSQu8dmjmygBkGOA|r+{Y;w3bqb(zL|oDpD=9O#V%$=(Vgu+Dw#i?nz=0q9h_a@!qnMak{C< z!xggIpj@K`wIy?NFTpwFmp1x;?^(8&hW#%e4j9j?DT*T!|T}#7!vMMpQ=Kw4l9;)1aPltEW`UvOsF${7d%ax&^9Jp*nl5|$L;Cv( zh`a}nGUCrw+VlUjARybA_7DU6_`g@l|L0C-kN%$rDSP<8ob(=I0LtaEUmD1ot%ZW3 zsVW=P7mJ8cE4ZVi$m#pE0z>PTjer*7LqVyLB4_0p`Q3#{-mOQO^81wr{x6r!&k0HC zosI$b@qd3jGxdMx@%@j7DK`GkCLJtE3LseFTNHz8y7ax2;e|MoF2!9k6_gtFzKP4$#-NEmp z%0B)-HsAksr&H(A|MMWFd;F&!s&yrn2sn>mW(&Jg%P3%VidZX|Is(N3st*IzDrmu= zU|&d;fo`bhg3v&!dYtldAox@C3m6Os_UeZvew9C!r`34Hb3Xjf;D1V-Sw)0%cFT}l zou9pYKK$pmR}IKOTWo*H20%vVm1Ffr_`~@cru1B12r!$P6m~$@Vn9pb>T&?ukg0+A zRDCugjQ%5~MFan*NhB4mJ4%2({NI_nCjXzglgT6he~8kF|HmOpGXO=*Eud>iK|o>( zaa=^-jt<^raD`4S(x6yWBIvac2>j=IQNVxd5?5QrVraaqlNT9dDJhOu18Gv2x2$Lq zsW0j}m9E|wNo&eYo{rSrElU0yZlc5b)}KX&lZO5O9;PvlS9gy9-lzXLW6#w8W{>Z` zJWT1Z|9=$g0l)>>Qh8}5B~ipLufWxwji0Y3+2k6o8m|AmCWP+UFb&p^FH1B?V z1Swjf58vWA1cPDvKmQZ{pD#aVYv@g;rvuJbemr~q>f+UlQ}DXz8we2<_fww!`YX^c zo&5IODf@-h`R%vEBaraRmJGLKkeC9TfsCdkUPU{QB1S%AN+F;Gz*~aD>R4s~^Q)C9 z3AX{oBnBwH#VLt5D5j%>|AXTt0c%Q=?DY6JBtbS>U>d^>W`lDqc`{0~<289dq~v(Z zIX8uIIFwk149iffsb9PKy_wQud9YH;|Ap*4{yBgNT;S-gIiU9Ne}6nP^M5<8`*{EJ zK?>*pa7)PsQXIf2+HpZ}es=lutLN80e{=Eb+0R$cU%$OLf4(p9TWVbTqAB@$m-qt; z&tY;F^2>z$j#cqB*k+V$te-h>>(_9{m|tN1u24TqNz#Pd@?9afd@iupSJ2Z?qF|e1 zx>I&(X@|iuwDkDv9su$b0bNK4SqCf~Z%ITMgpG=P$Zg#(t%t8$x9fn<=xccqG-9mn zV*YGbif=Ea*L?{~c`aocC?lZB;<=X>8&AIm@}NWS7Iz`3IwK0x6`~yJA$SUIa2zt@ z2FJ`+s;g6ScYzFTZc%zpHVI4-82s&P;5y!zS!TJ~R0~CeQ}p_4K+`Rze2Pt~+_u{~n}pPIDGTQT zN^+g2)X{&@^7n9Pq-izBo`;itU+=S*h4dHyqXAJ2at zq;UTKoQK$eV!DCSlGM4y`!$L|h?u?dlBuyc1KSLREg8P4a}|h;9BeivO{1)0OQ<#) zb?wzZ9_WaEZ}xcp z^B|>B|I06d-JkBKLPGcHeHG`(9-Z$>!fVvfUJ@9710xs*D79&R|6v+V^Zwr^NrW~i zrZ9Sul5NuO6kyN(_dN6c2ha7Vv&a4a5Jl|&Bw@>2rT?u?yUe+i%Do+emH4^kp0B_g z6tTd^Ux5tXA`8+af&p5SC`2i^g(+rwO4--Nol>%a^1M%`C#Dm7Rj#3V>Co*9+qYG+ zt$tHfC;Si`r9%``lro)3>w!dvqu)&!sfV|N9C5 z+#mnxyOsE_$N0~ODV)K4kJ1(5as3eqU?g5_%rmRTp?JoTuN3)BstS!7z^zKvhN;EO zmmo{Ge~$z(R#DZC?Am@Zc!@u ztwEKJt^`WAIo_&7^*J>qOoz4@`G;kR&HF!~ceVY$XygAg-~V@KWAE|)&x4dk`~NM8 zwi|RFLA<$EufyJ>FW|NcKHKXUsB83)CqsWS|3K6JXS!*2{BuBJnvy6&=~)~T%4axZ z3Vd6xuy6m*#>V{*Z|qDS?f(ZUeE)N~1g!H6-ebD1|J*hvFmF48MdJ}$V5JbjS{&+? z0)9=z!WHTf*bW04@QlP&aP2xsWz%b|87{6e@BwTlrU`3n>ZLm%aM`#JKi^&myt z|Ml}MI6(DVOCF$7mRrQW7WRze5PdiTUt)?jb*bJ}b)M#(qD`LTMSb|PN@Rtf==d0n zI%UD&A{M9>KBBV`4uWnH@mP_8s6udAi{R~SSnKFx<7HJ1G!%!$kn42*@okvL(!aFl z|2>tzHum4t%>V0olgIpD4^pc9-&FoeKX>H%^=e-ShHvNiB@Vh@dlUfnD2!ETZM4M_ zpO3V6U3Cgeie!n!H!F;iz1OIV1z^*a+{HcBVgL8o`J(LI|Gr;||Mwoxe;%aN?0<9T zcir=*k%!||^UiGM1Du}HDN8J$fqa^024Xmef8p7s1UUW5e}47L;3gc*Z@=m3?D$V# z*L?rA{N{3%Z}1+9_M#&eX2A%m7?f(Db3jd&qpWQ5f}RFri~X-%!RTiL?z8_Y@4t9s z&v~@}9;9gd-#*WR9n^pCap$MW1-yqR*scTF^n-eu_bUo*oX8EZJF5+*d03&o&PHq? zz^+Ny3`GOiU37}a^2aIN_Pkoc-^&NEkN;Qm|9g(}c>en!#lrt{&VR{%6#Tab z%QsyC2}*mp0!-3AZ+C#|Ws^IgUB9)<5_`HVYJTROE>=O+2ck>*99WYdq?ACsEcYJj z@cd6u+VFo8_CNdoqD}ly<^10pPy9#z{}4sz|CM=`%75wiwqk&U&7po}sBHp&YUry~ z*sFlsXzK|H>!bOM?$^O@WK*T;Wlkkf{;u4r-Tv=?_WMPv{2%82cm3(3{r@1Py#Fh9 zzxt`euD68x<)H32#;**vEORc2U{!i&0PJdgR|5WzBGxZ+j z|AUm${+IKt_I}!Yzpu3KQ`-3~r~IJvKF1!zu-|s{Bp#1dlfa68RWW&GRP8NFuZ4Bx z?K7{uF7{PE0Gfs6weme0>0U>W>k)VB#T)fOuMs=OW_o3q?ErdQpBUe*rTT z0;1lPCbu|5q0B1M{C+fFf+HA3x*R$F3cNruN+Cru2?^vm%MwOL9PCuSlCO?+Sy6q6 zNemKCM{Xcg6v6=tJaUSEp zAEfa8e}w`Phir>$On~h!_3F1+6eeHbyRgkh7JH(!mBnL{92)vSQ5wVOBBm%^!l1l| zYo8PjV1!21c5L5)k054hUQB^g-rO?FaX>;eWO@xwP;+Ye%8>++iA@tZzvSLVI7fgFJHAGjtzH+Gfv0AB=t6lMcR{L8wziexE*Op zN;VYYsK?-`rk#dPHEKs)jA*tdg!Z6LHSI*5YP5&CZ?-s6X|&=cUTt8qf0ZZjeT>pk z-h$zUuhJqB)*5F0;maq%yzE2)1@H~}HA!eH?;l>IK0@Wpck_`;X~kI0Pm=Pydn~4s6sOnl^Rm#`3VuB1#u9uq~aYcIyQ8X_gz< z-J9kYc`QQ9F8P@452J1kCDItt_awbZNQ8r34b^`DmG!aQW3lT0%s#p&2f!Zv-y8ep z`|p#f_jv#7K}w_IZl>8bXu8xt0`2V=g0(7t8) zZPgAKYtk`yq1XO=i{U^y+fuSpPLzaXl!>@sB9Oo=dr#6Z6IKffE9!Wy$|YPon4d5! zSR)+&FA6A0n~|p|#M#~Paxg7XZeWUGxVSq~38*bv60gX;pcQ~xq75P(+^oqqLwCnq zz-oy+BT;&HvgTif{jAx?GLmkR$+NSGb}oco^cLjvrz|IGK_+^Ii)JpX-= z!q0!M*Eq{vyFBcN8FLx8kv7DZa)Fd6-dBC}o}@QS_Sg4RtJ$l&S%LyKpDDV< zZ1%sy871lNCEj4l=eMTwb#(>c3`Ja#Ipwb94Wz+Zg!P{``@+S1ja2iOa%y#-=~Q4) zdq-l>RwOI>Xf$K28{rWfj55}fvh$rU3(Iw-ydu~?4+dB*rY&E)C1CxA?8KzWB>$zB zDxo{&724HWYM@$MMF|OOW>^FHdo%2NE;jj}A9vk@0d{-{n@EVB~UVDO_ zx6p%3_=}M-(%=<94l7?s6ybRFCJDu7?KIqe!k#zh=j&{jYCBXMx92DhYnGMzCWIsd z!bj=La(8NEwLX42;YN^w90T-AQ%|3g6pXSh4|U(h@D}0-E}|kJpoHMGMt{&675F#s z!<*uFG5HOuLK&iIsW7QzXvH?{}-3> zGVOlS_b|zI`~3dYVkc_wYru_aeD&s1{XJgBrNROwH#+LCYf0|N8XWPbG6i6rMHWAn zRg9u`en)6n5>iElx4EgIp^(>3MD63Rc!C8s4vP6Ontr%NX^KMxC^1HnCw<^!rHPLv zhzYIW9hD#r4RKU{*tA6NKyNsZi6-epv#;DNype69t!0eC7np*DRc%0pua>jWZW ztNIf7vR0G&({R#1X0h}Cbpjve{)g+1{mT6h|MC6z2PvPF|MNR__sjX$3DkN1nxy#O zB&IOBB;nbX5`IB0H6;LB%NE|hPN2s18TdZ@p0#V@^f{K+Jiego6LEJwIR%>599^_~ zkV(0%V5cZSDe|Y}1694}g|M5VDb2y#UpAeEHQfNq2-*r*5QvAqb9X4B%0|p{bPV!~%c#B7!q_NoLzswYI z$umXVNekF#|M{*N|2dnDALajpl#2aVn)Z9J0gZ$sP0B#2YFmY%Os}REls_2CL3wdo zRD@C`O;IRA?qe>Nd)j0;*3i(}gsh|g6B&~wRD)X7t+fSX#XOptpR(Bbe{vfp!90NBs}&HTTU+3b=3KS=qc=RYDB zW0T6yYP8k#d0mb3^S=$fo-bO9I?ujoteQ9PqrCHm7M;Ct1{T=*c>;M)+PVR?u6-f} zUreQjsI@SVEg!Y`&$8J0zi_=hK>iPR;#BVc`jf}={|6}*{(r@%{T`UVa@`KgHxG)3 zY}n`L@om|S`(^%n!KwuZ3L)hgdONeO+=py{Zq30AC-kqCSG=ooP37QjDcVH!^3zBB z7el_*H!KRBiQa|Q}*(I`5MPv#K7M3-^tW`|JijP z&wn4JRQSJ~_A@c<_a_GOS6y021BJYsOi-<=qCtJBmk{!+RZzgHj8FjYASx7y{Su=t za`@8;i%%SNT<-m#K-g7M6c8Q-#vO{}|D!dEHh2}26x~0LJ^bI9RNnvarnATVuMbk5 zfJ;azO5=?2C$R#+`!$NeVvC~?$19M);0CTxHad6$c&3nSn}{dmvo(q$u!_h+T!F{& z>IkGLf)w8(kU+ZDeur^*@C3wY#qX4Zr%8&I_yY=sTj;+IN8pDz+5r;tmW(8jpcF(n zMx%q#v#X!4C`r-56L2o_iM&0(0wGSbgV74pWBy-3{=sPR@AR1eSN*VF9kc(aKeOBT zxB#?(!Ob=SOB|u>;Hy#gJ~{Ymw177UUybO7{hOqCb@0^zr8ip0|99{NyoD(y+YDSh zd!8MPl9VtGcQC>sg2$qIO8)m?bejbvM8|&wb|d%y`FCfpUOa#K!;8@-ymuUp``>jY zuJ4%p-ye@3_y0qbC*XX|l&OfU{w#Dr!}-V^x#Pj#|8@-je(>bU z6Yx{%!@r)cDNVA|k>+OOG>tmX35!Vp2W1e#-Ae#iH=vZ&*k4B>sq(ku3b3AY8 z_(N}cc))Nm>e!Aw_)2CM0U-%)PzuCDAQ6a3Jlw$lC8@0bE&jkN({#t!*%E&MgAj+@ zU%A9_2+)TF1r&u~FdP6Jhd6+gq~PgKPdslnY1J2;Wm}XTv-*dJ2etw8Z3E`_9x%@s zFkc_AarXhUQ100%_j*(A8kBprl*_q03q$pi&cz0@#=QRsvB;{1V@yTwy=k}JdsF*_pIG{K(zkEZa^FsB z`__+P!!QKfG~&7-*;4RJ#Ek!pY!HA+0z!f^&cq{pgMb<=zvJ%k8+OOkGFa{Aqh_!s z<-wY2gXPXDgS8}SV7!}`BAMRKM)Jf$ayv0rL-M#x@}!yMHoMuKw_9v#iro20o82s7 zciSuOykW1{^qb!5jiKG>%8fheHl|P(DoA8m1@&IFZB9j=vPc;M<15 zu?&OLZx~KS?yStSo$@&N#yrTA~!i0m^vhS21`g+CUsLIA=+ciLr9J$vwxh$UV_9+gSBtmb|5F zj8(xdy`gu~hh4h!Zi0x_Z|HL!zZ4&O_t`P}?CO1<80#Y-X^H~M7KLCBU`;Y=vJT$w zX*-20@Aq`v(C<19AwKl%_p~zCj^6Kag;z!-xT)v&9U>tNb@9ZZdNFfFeG&m51lEMr^y`kw&iN2J`fBRcDMoP6It`BU5EPkT@P zM7NIwB)zk4MNbGr0JoGxIKE-MCJE#Il&G91qR(C@M;5DZ?enD8iV+`r_t`J?d7>FI z-q7vk;&D&roftZ+-_U1^@SF4&eiK9ZO*G->4c*R;4$9}tuP5Z{e zA1A%}<5+ij2}t^Qc0SP&eI9pQL*w~jEhCP(bj2_NI3^S?chY_l1KUmToJ{P3XI$%+ z6CZjHY+3M(HP4)eT{rvXg>f)Q1&wqaQ{O!g0^Q%)Z zxFt9oNRL!Zz>CW_0A~PZ8D23XjgN@iajUs@c0IO~bh;oOXX@^TY3v6&k;SI`|?TzD%!YJYf$2M7|Fht_GDK|7S zYkw>vV%%Fq_=boWYa*i5AB}S>qFD!2XR-tZc!>kvlkwLr0Q3& zO~9M0Z$OCnAc>X&NDWh zSKf4$F-%gDpfuXC1;0%I`an}Sgy|{|&Xt|+xNsc%!trdI#p}IUJY%zX<;~(53?L+d zI6$Rq1Xv$o1d3NWn0~N^{A>XvFwGEuE{Lr$QHKx6v}F*R8jz`Lcei=Ao#gf2Np598 zocaOLcGC6re;t`3Q_z+xNehW94EsWAS=(wjG`*A}3`J?#Iv)hgyStKBt-L56Y zsg2qZA9|Bg)=(WSaL4WI{F|P1bKFc%?2a49rp!9Mm08D7W}T8U+qciNS+_pVW(|F| zD6>v)W!5p2S*N7Tw(fI{Z-M`GD94~1`<>40?ANg=w@z>6)-mL^Q&Mi7dCe(rL{{AD z5>K(QE>1gkaoW^Hi&%Afi&e)Et4>L*I{lmm({aZ>kDK~zk*ZE_sp=R)#3@PDp6qz@byTh|m$hJOEw2 zL@7qX>&VzVD`R71*Nz1H(0e3GvXnv6N1~qrGIcu&FxM);7=gAv_Y~UmkvB2=Jk|T$ zbC)|E=h>OHKFOJMJOQ29Pe57cZR6QfA()T6u`!+#eLVXq1e1IU?x_&W zN1ku=d93xhr`KaL?Y4#{(FF< z(Ys_ljHnz4^Xcm->L*SEn|5s~o!eWba}AZw)m1vjWYaX=fh~`-gCIkRNUxG>x2u$F z6Fz|Ci4IM@N2LL6H=WYgE&-ujwr=xgq@wnO&GW3x6s>9*;{Crz8qrbM;WeCs-C zC{eDiMA^fOj84wFxvj@DtJ`{Be~VjuxYJfNm*==wN4u$qW83W}PJyl}m44RVjO0zrgeyiG*TCCoRj zNFo$$Q%rXtVFoG$3ryAB4AEbH6^W*JwL+;1z*qMPZBx+gP7WRJ-1qouSyxO)|=p)1Cc% zdX{*P+`}^HHU+eo{>d5|s;91bIxRHM{v6HHL7T?eTj4YWdZBK*L*MHCxeqRD>7Y$H z>#ds^s@X*Apl6=yvElw%_rX zTTa5}eGkIsBg5@A)`!A0Ekww))FzYx7~%K^S z?Ke4Mtx8AV-Wwh%SMR;mIb%+5w`d37etB|kIjWlXJ*he|r`M_NpgO0z*d!6+F)!R1 zli^Jg;Ux}u3O#vm_8UxNxWS_99Z#Hn`-$_3Wo}RU&h1HgZcoZ{>sGjKM&uoGZu5xz z#5i679Ov1#)xn&t2lbP8(s%NVtG*}Y$*W!f%&8By86}(I95I3m6mc=3(w~py^mSxR zGb>}V-TLi)>DRdPJ8Pak6^hQ6tsakFJTJ9|aTv)7l_G_YLC0HTzWvsi?FMk~3&7KI zbkNMQ0CM)E+vC*(=yL3ue5*r$&QRrE7Q@nUXWIiUrWSo_+E<^Nmi4J=S)VeO29BlH zl%!Q+) zyc*}*ug2N#-1ok6Z``<_mbkEMPrQ&Js?Ki3@y#uN+ck(F-sHLeMOv5J;IES9bi9x6 z+wbGsuH*Nop&_RePN>Kl+ucbs~^ky^P@@M7~M%(2v0^+eJpEZq{XrP zS(1o;cf1PV+phvlETVMMSCkq_CMG3OY7a{_Cf4b=N}PsO;&n^2$LgEDTM-$-&mQ8~`!8@_~ZEZOwdZ(Beo8#crj)U5{IHoBH zw}JGVpv$-CV*1%%yYDW`1EUXwNarVpqa*jTUl6z5r|x~7+BagE#(T!&EDY83OSc2- zr^tx;lECmA7{NF|DL7-}BD>#B1@!EmQr{NXp*QX35cQ^3 zhp2B0ck+9NJMoq?qmw6kCtDskc^yMDJ$q=TZ;NsAd&fBWMvRlM$2jSoR3U1GIRoO5 zP<|BY^4-mpjWEtgB3z`}6;N;5O)c`KR>Re|MMe3&qoRBxD$3WRqMU{o5f;M#dt9g_ zr#x|lqe9$5yh0geBQ%})v*mayMx)~iq*soqXukR6`5m{E-?XLbb!@+PY?g1tX8C$- zR?|=$Tgvaap8TfuRIlawca6<*jE;`=j+zPSw;9Skw@g~<=So6b7lDPE_RFP*7D`BB zaCLt6^0^qHj@NBH`*mBt{z(n-q4zTIjM4G6(W!~~zZ4Jt44(%PPBH`%m{Q;!0T{xB zpH1+zj?8vve+24b6+Ra3tlNHbXALn-ZpVWHR~!`7dFaJ#g^0@Zv?K-@g%mBfQIsKS zosD{h-|zWM2yf{cv*GEpVV*^wlVk_*2ksz|iu|Z@4oV3K);J19N_~qT*|)_``8{K& zcuRBRx%Hiqx)~E_d?tqf{Ps$1Dk0x0onqRmm^GQsiLUuEN(NT=7RBNy$?bTI;@Xc< zd|MQi-!qDewVWHndzPg3=An zGA{l3NKCp}H15P|(fF1CF28R8mp?KT*ttFoRev?J>~3Moc#2#W!lI!mf}04(2!so; zO`{CJl{KW>w?stweIufbV0>STh?2diC&Q*i_EsVd9dcGXnE94dE(1-PZPQ3z@le-2 z-HsPuUHipX-{J}N`+7o+bXxvMR~YTrckD^=+>Rc9*Y5GRCEe^h>y9&BZD7 zUPjA_m6m$N)#ZTUEKc9E9&*pQBc{a0&-C1w3J2S-Y%oMx!$3jXb+PvHO^W1j)JhO@OS#NPZ zGsOAK6z8txdd7R4qSY3rA%6#qzYVrRRKEXH8!{qL*{JWeeR)gApkCj=l{^sf_D0FcN~iOV^yUZOOmqju=TJ`S(^1#mS$xIWoGC}mF~$tk;oET zuD`e@x*_WwXF-aSdjI&$qVLT5>N~TtzB4oQotjA#2NkzTY)0IH8FH4J)crlpW z;xXnT9D`%K*d!^r^HNh+Oxi@Hfv}o z4kf*z8sNgY98Ur-9N6paLVM1F4fKoe&R>HKPE$FxlTMds=93f4v%cXriEzM{j^adt zj3MM#@eGa5HheaJ>B-Us3BU!x@ym+iiiN82(z zW(0Rk`ct9=W}a+FY_p6h1{n@fz&au3qf>au-1d;w%wprr`r0_NvW+t{Y@F&~@{Hq5 zkTOjO^03NFNY{Cu79n4kI6^$o8NrZW7SE+KAB=9CVB**2#z?pES@w#=uLs(XYi#pTZFX~MB`x4sbpK4F)7{ii_D3Vgv_x$?s%}F+d zbhsumTtW;J>v*?>9&=lkV@YLw&-;d0h^9`d>wejuajZEzWgjWZXc4-EMa1vCTjr6u zE%AsX(Aw+%6FxUPZJF?LhJbA%Z<51^yBA9FT=JO|o&yF3bPJ*rvH3=pR4-UTF#v%?d!iyB9JFdxGr(1L`Bk1;3 zxWfFJ4TuPL2r(t7_$pp?XX01>y(C-{fgr;h9KjSMkW!S!M}V$zmg9I2GqBj=h>PYF z@k<>Wh+~Rk$j}8OqhNvPdxT=4cM0&^Tg6l}DfDT&129-)bjwIw5g0KV#l!W_UjO%q z@lNnsJSfGOWp;4zkL?1bF`_6t1@Hd;waXuV9y;%M)n}UYI5_wSUZaF$n38k{J^~)B z_Yu5BDYFK^$AgbUt$Zx~kNt~7yvVP^@qX}OIyksygMl*u!FMRyfR}Pu#O=_7AJ1OD zx_I^C6kLCIaRtu5J9~W%F0R0^I z`QIGlmADUka4-ay{Ei+7)+o5)hQLq1Y;kZiWLt!S)fR^+D?~xT|3@TU9dBT~h0*c< z!&_Xj7Ju=a7rf1};||Zl5XY-wu@;UG!4jt#9UTn86+*nbKmCYrunoiE!4RAmq&>q~ zK+>?N9f}`DtJN`mn_XUi_v1B9S)(5k6axr;;sUCRD2vhi<6uolh7J#g!{NbM6oJ=x zwWb+UEm3-lLNEl^{E7rR0(u?CzNO7h6!492L)lE6KsWQ7AE71YRl1ph#cyI=1T#@*HEv406K zy3XsXOnz9B0S6z!^*_N!kkOQJ{Ey(>;LY{<;2rn~t`G(J)284WZ_vLUK z1s|oWmI3+oHx7ZnlDY#h-ql*W8Cau~-~VIAF8i470H$b@jlgpltm{qWY)!UN{?uB= zeML8DHxiPm$R!cL7%ar$$w*Pnj82VC#`PD7$^Va>i7I~-pEQ}KAp;p(OfX{Yha}EM ztSW!#kHZ(Plx>Pau#H2MiUq_8Dv*u>5(<8un)r2hX^9G@dgOFKF2Dc;4A@XY6GU;B zN)Vtd14|qswvuTJ0>34xaAV?lNse-{OTkZUb%rF6!j{Q45@aLIROeEQY||lU+){K& zt58xtlmmABL?igHepE*M>A;U5!WmycKMjUMxTWjC(I6%<8vIMGNNpe)Hoix2i~vkm ze0ydiwrDdPqT(&i;c%OwbQnSkhapb+U=`PGDTs*3XC}6y0ACtp1xR=uGfNkQ^DzV; z!GaJrneUb`$`GUcx%5kJK3M$;mqU< zgataj=d9pgiV4W)fe$=WI|_jE@naMUQ15XRv2`ZQbxNe$F`p*s-_yFOlr6R+!rM_YaBSBti}_m0#=^2wq?c(n4=u?07N-nHUT**~5Lw zS6AP$U1P^Q5?B5Och(px=ccdWdk#TCYYFKan4#&o2A=pZL@{d_nxIGE$2E${+DL~^twMFC>A1hTNMGHF-hOt(tf^A9-V+eM!G%86&cm?LnlEG2+G zB>b2Ua|>&M#72y1&a)7Bhr^%K48Ch%t|J_;Qj}#a_9BddtgQLUO}=VFBd@R5pka!< zjwMeO*d57xlHTBW^$e%wK|UVn!j-|4H34UCJU&A1Ns^!#h4QA7&d?~=tS*)yCRE(o z5~~6xiD;}e9J!x2WE;~2uGKE(hLgq#M0CRUtd`!J7}0D^NM%#@5PCVNLgLYsY}vx* zKg)-F^VBYwuKD)8BwtBMz=?Tz;AJc$}4gpcfjD3 zNzUN7ylcH_!Tv5 zVrB7@bD@za6P_)Bx0kO*_U?@GWB9V*E)ma&_;HPcHD6?EZLyZh#9c_aTQ*>AxTHTo z!^cNM(-p*GDb>#F2UuOy#KqI0Gmq+tu16#EcecWR6U3Ddd`q zNcFe^tBi_Pwu}lptf<%w0joX&Z()Q(wbHpwr5YUpH6tX|Vy-#T&#aVL(syQ!fqrY8|9(g!I!D-mDpw37*1L8SX95mE`?j z*&2G2>8UqIp+7!xpo7rZU(Voidg3loI0?tgz;h=PcM2CvHyFDJhG;tXPZr)ZJPGE3 z7tAInels;3JEN#h$Nb?Ir706*+<0R(l%1&zxMEjuAX`eZ07jxG`NaNBE#bd2Ru_f< zg6~L*|IOM)%!C4GvY~`in5m76M0W$(7m5L_-(u0t+xit_qUo?|G~g`|*CDH}q4CHY zIcf==c*qM+91l(A3vW7~jGg&(;>{s+PSAD*O zK50RfT1UzfXN2N}5JxTBZ6lDq_>?jxWx%ugrc7HSeZ+L!cIH2q~YMGY!^=o5p5f?2nrPi-9PWlE zMLg!5b%N<6AHh49;dr&>iHOM(geb$z%1lU@RU6;p43qdfoH0)O5^uPRUIOyDYh1v; z;unNOZLk*AK_u!MFbR)OdBcM#M+rO5J!A1^+8c;Uq-~VNQzcF8{G2J1>0nm!VrPH*|#JG&vM+^5!1bK zsEiS&`My>UkUf>s;gGx5N>mDO!3Ay6S%+;rWhHUegMO8aQf4~js{^$68107 z2F{C9Y97_V)@#{l83j5_vZc(ZR2JilHy3PMm!lvUIU=IA%p89DS4kdg35R*TI-&eV z(j})E#yVSJ$dP;=3ahk>{Aq5ojrj@Co2zf~*j`P(^D};0~lHBhf7aaTXDBvrW`_1c}9!7tMW=A-YZE>J8(pM&p%x^_hwY zp#%)hqise}`Ylc~Iskad{W-7l!w;*NO=>L5UD+(vW|NL+o9lD%%^|ovySn=E*(vzzufKxP zYx(p5kH`G&x4(k(q5>}{zWp{O8~GOiqmh~m{(D8dtB==7RMQXjl?M#T_Vsl>P?W|n zx`-)CmoPw8`|?eOWJDB}cakBcJT!+NFz`qUvG1`0GEz~TY;V7ZDLMr_6l$?cM6&an zlPq5ZijEYX)tR^46lEW9!FZG^S{$MVbF}H$Q%rq;tq@EAx!$ zmig1aOKo1h2Zv&sV)5%SqQNn%nSmkLz$9U0U0kx-DavG1_MP+CyYF2XhC_*dNC|gM zAsP%h1;h84uK7QQP|$sRnDFnBAD$!f`c1no-g^uV|D(^%=IIHHwj58jHzX3s)&rez691( zRz`c>2}Q-e-h>Ur@n033kxuG}ecEIF=0{ESmg#$b2*i|!1)Dz}`ybXJ*;2v;a^2ED z+fov-Z`!~J?yTZZ_|sY>rAHzvi2LUGL;h@)iWh}5y>$%%LiT-&KcMh?9EK5M+&!x? zjdQhtC_NpbyHN72c@k*^sO*0M@y5ndRqA&!R&nBhPK7jhMtECqG4fjmm5 zDMU+rqkmyCjB~;S21s#LHbEOmaloU@&bi8*ah*Az?PA<@X#6^8lAt&gki|_AjYcUzS{p==N+`ik}UG(!o~*3e;z5Jnx@@@OoQNga2i@S-^6ft1ye=3M(H z=U@CEW!AyB^YVjU9-m@rhgZvOr?a7XTV=(Itk;>v6iM`;dX<*TjDYv+j`BsavF zI9Kj~m0!(mjg{AKjaB|pBoS{=w)DCpo=pYN=SXrUCGSdQx?#mHNzJP?SbcFd3|iK0 z%bPd#Y(^=u3hE!2$yB<$Pm?X3CkS0=yJR}-o*Atm5|=-AHFD;ArrGhDb=>$2)SM(69QN7WP~e4=?2GQfs!;t>Ha$;^0C0iZprH*MHLku zl5XQ8{XU0}va{r0Y+7Z)|vt}~jAe08`y^=D&$;W{vw zOufa)a_YlH=!Z+_ji=uHB$!TTC&3ae=4dvV%!BE~n@*M!XFByyCd*(s-9wKuAXUU~ zHFM_cf`r{CKz7vcc4~|bJlYInf)AOFBH~CQR zv9Qb4>%>F_=m;t6y)5mR+Coy5!b(=+bAqK}VSwpw1R9;IfGivfcOy-#q^d12r~*?S zrd@)vkvvbxP7CD%$^XkAhNzI7F$r}~jLBJFk&vn3k$f;oix<21K(UyIu?R|p4^D=- zHE!}2k%u~%ek@qU+656V+)Uc^HzX*IdnJ&D*oloF+F%Hlq zn9i09C-9v4(m!$h>BMuN8#Z1p~K-A^i^SoL;$R3PbpG~f>+d#`phUXE)n>zFJV#(e8?_n%+w(tab zF;ERbz*-&^)~P&N$-lGim0U%d*sCFENzwpSJR3qV@NX)vjwb--&^g*4nQ;({du`kj zQYSsBvX?Cgt==Is!4NzKzIK9?sqo zJpw#+j|vs3>4AOtw+q{bd?TG&0g3-tWy0eAzIP>-_--WEAk$+Z$hM0icg$j*8$sLv zSH9b@*wT51P)swCp3_2MHO4Br4ODPdm6h}AmFTL|;$ie7`Oohzk3e!8909aR=*?IUL>)fZ^oZy3GgQW+*4Q&B73?%(5ypXn%?Yq4(zjXJRA( zFsRmxQet_D*?24QvHE;q`zXvxORg%$JOX8btrzURBN^pPRb)pXIM#9-=P{6s-eU%3 zNg{p=m*nT;B769dDTO4<1vDX}KChxGw$wf;G&*B4Q{*6SJ-7 zwu`I_9QU}tT8p86y9{_Nl7^?UZKO2YyJ`5kgwdAo<9Dh*@9GH((QPYkkPnNX=YA&6 zMv-k2LUel{lb~a;IJSPD`@^-AT9(U0uaY{hs7@sfrpQU?#1eBP8KRfk`%IR&AATCl zHBG+gD)k}r@?vt_nfdQY0cHcS7I+JPJan{bldx{v*+Fg0olWqhA}p$nU|lW8fl zq19UuWq2d$E0B(9d0B2YoAKbvLJiI%Dml!J?wpp`_TUlDd+ku{*TD_i4NeCt3&h}P zkciAHo86G-?LXe^hWXdu{$(iU60LySZ1WkU{0Yn^qepflT2yQ_pyfcevYrjRpV(l_ z)-dHh{rWSc{Gyn0;3y=N0NylDlU{nLD!UVZX1|?wd zJ=&0THz?K{1ay-uGw}5F+4sW*rBHG$A!PJ5(yma{HbM zKr~=4+vnz}wCbLALj!STPjU9{*TFJ-!4&Pm>129xr2abRsmDc-)ZldR1Ak`kdz@_` z4c3FB0e^i@Z^wUllc7}ptv|rU>lJt1%i+U{IH0IgtKu^6KuTd`OWDX(&END5s^aox zyXvWJ0kkP%MCMy5Uo#g2%i(I7h&a5Au2Pi!Qb{PQxZY(^qcO_4fb@WY&IQuOKs&9M z4Y76xuzulo8mjtGI}=NXXuG26ezbL{Y6753*|ps9)D3;On9iJK5RBcq=Ld6d>HAJF z_dVytTTZ7FA345@&@yy`!1Y|uhvCBYoTU>~6SP&R%A@R3O!&@jy61E*POns55adA= z#jRP&WHQe}ATy52a7`J$FRrxMmPLzWFbcC9E}g~B=OLfDVAp<+@GXi_mJOLji21*G z^6+gk6f~%FGyca&Rku<0Qhn$3>(*)+&Pbi^*O;=Ly?6z%duFwMQJulJnnBChNHNn<)<&&&Z$y{wibR|FUS)mfj z{jN_5w6Z!CvQ}#|D|Mg-%7d;;h4h|Rr9M*kwkFF!YdUf7>yf9lZ`MEaMEwogrw*v6 z?pe<3U(q~E7`o`4vf)02RU}o7(;JP8jKJ>9Mb1eWgrOTw182TiF6ZNU;LidyUXEvz z>0*wM{UeRqB`T|(%2{$%RGnyVcKK}y|B7tp$Hl~)JI{5G#iByJLGe}9AH zP-UlKutq`gZNI5rwr_Pbb?_vvJAiGXR(@+V>CdX(fR@nj0JebF<2FQ>spGlAEhN6? z-taJv%%@FgCN-sP6uPhaW;dafpE_aP6sD1@Zh(jfsDr2YP#im6X$z8 z_^sqQQ8-m7e+G_4M%2u5wOf#yn~F9Aw3@go7XXEsndcW%N6D38&XdDY0uqvJBf)QE z{X7YU6p~y93XCK0jm!-ve5{n;nAg&QGRcJEAl)VMf|Qi3Ms7H3$d z8-np}LBgFtu4Yj?)|U?lEO8`ds7khJ%ZvJ^m+tSHq%zMX%i!@F@vIYvjeWBv(YjUx6N|j*jW9Z9 zJmPToq&u=^JCa1$vK@()Xiarw?*gGD;KXapgBj-{F&l%b>WsjZxD2hU0Pk4ccSqv? zSL`3x=a=vJbiaG^?DE|R2uq*+AZ`8xzK;O}*XNg|tcNQ^i=E2T)Uy5a=JiYdmG5iq zP^qa?6s9Xg_pRI_=b~2MaIOePe~H!e0a&JFBlPDYr!oJ+-3adrfbaMvL-h=mbRy{M zOR*;zAXmt0&9h(}f4@sOU_J>vd6Lwx*bs%1;VA8_xW1nAKkmY?t%~w_X*~nfIQbqv zSjEwC$7H34s(R!I+p}vF{FWOhvnTt=g;4HX%Ilg?s&_J_nRanmikQ&3q%Np8Nrav< z=DLu~_3)^~YmYz<@2KFp8X0HGzH9VI)EI;1_PyU_$#=aSv`l1g4UJ@q)B81IbFL>( zl>iHEN?EowC@in1T~{JJ%dmy@IZ}`EW;_-mRGIf>j`kw}1rVGmriDW3#G`s*=seq{ zMqtN1*r=m(ur%Z$@Rgx_rc$dFW2prViC48r2-0mVQjSVUrKfKM1U}89RSE-iiBil% zCrBLXZ;?3f@)OS{L7(4t);5YIBW3K z#M_LVk>_}>Gk3>%eybToCtp7K^nk=W@d_LbxnK%VGIEy0i8n4zg1FyyNFCiFmaeJL^(K+ugxJ(I~$b&B) z%jZ?Z)6vJuMLODq_m9JI9A`Qn^Zz@JWB%V6PiJ4aV{hs^{>=5yGSRTt`xpVpd0{{U3|E{YNKLEl60DXI^D*ylh diff --git a/stable/prometheus/4.0.39/CHANGELOG.md b/stable/prometheus/4.0.40/CHANGELOG.md similarity index 71% rename from stable/prometheus/4.0.39/CHANGELOG.md rename to stable/prometheus/4.0.40/CHANGELOG.md index 4664bf1bb69..6e4bd9a4810 100644 --- a/stable/prometheus/4.0.39/CHANGELOG.md +++ b/stable/prometheus/4.0.40/CHANGELOG.md @@ -1,6 +1,33 @@ # Changelog +## [prometheus-4.0.40](https://github.com/truecharts/apps/compare/prometheus-4.0.39...prometheus-4.0.40) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- update docker general non-major ([#3239](https://github.com/truecharts/apps/issues/3239)) + + + +## [prometheus-4.0.40](https://github.com/truecharts/apps/compare/prometheus-4.0.39...prometheus-4.0.40) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- update docker general non-major ([#3239](https://github.com/truecharts/apps/issues/3239)) + + + +## [prometheus-4.0.40](https://github.com/truecharts/apps/compare/prometheus-4.0.39...prometheus-4.0.40) (2022-07-21) + +### Chore + +- update docker general non-major ([#3239](https://github.com/truecharts/apps/issues/3239)) + + + ## [prometheus-4.0.39](https://github.com/truecharts/apps/compare/uptimerobot-prometheus-4.0.20...prometheus-4.0.39) (2022-07-20) ### Chore @@ -70,30 +97,3 @@ ### Chore - update icons ([#3156](https://github.com/truecharts/apps/issues/3156)) -- bump to cleanup old docs and use correct icon urls - - - -## [prometheus-4.0.28](https://github.com/truecharts/apps/compare/uptimerobot-prometheus-4.0.13...prometheus-4.0.28) (2022-07-12) - -### Chore - -- bump to regenerate documentation - - - - -### [prometheus-4.0.27](https://github.com/truecharts/apps/compare/uptimerobot-prometheus-4.0.12...prometheus-4.0.27) (2022-07-12) - -#### Chore - -* update helm general non-major helm releases ([#3147](https://github.com/truecharts/apps/issues/3147)) -* update docker general non-major ([#3150](https://github.com/truecharts/apps/issues/3150)) - - - - -### [prometheus-4.0.26](https://github.com/truecharts/apps/compare/prometheus-4.0.25...prometheus-4.0.26) (2022-07-11) - -#### Chore - diff --git a/stable/prometheus/4.0.39/Chart.lock b/stable/prometheus/4.0.40/Chart.lock similarity index 89% rename from stable/prometheus/4.0.39/Chart.lock rename to stable/prometheus/4.0.40/Chart.lock index dae83387499..071474f9d18 100644 --- a/stable/prometheus/4.0.39/Chart.lock +++ b/stable/prometheus/4.0.40/Chart.lock @@ -9,4 +9,4 @@ dependencies: repository: https://charts.bitnami.com/bitnami version: 3.1.1 digest: sha256:4eb868a55473152052bfbfa520296385ee855d0630a2823121ceb2cd9b4484f5 -generated: "2022-07-20T08:34:11.718387683Z" +generated: "2022-07-21T13:08:17.907272222Z" diff --git a/stable/prometheus/4.0.39/Chart.yaml b/stable/prometheus/4.0.40/Chart.yaml similarity index 98% rename from stable/prometheus/4.0.39/Chart.yaml rename to stable/prometheus/4.0.40/Chart.yaml index eb9712d1aaf..30537dd2a8d 100644 --- a/stable/prometheus/4.0.39/Chart.yaml +++ b/stable/prometheus/4.0.40/Chart.yaml @@ -28,7 +28,7 @@ sources: - https://github.com/prometheus-community/helm-charts - https://github.com/prometheus-operator/kube-prometheus type: application -version: 4.0.39 +version: 4.0.40 annotations: truecharts.org/catagories: | - metrics diff --git a/stable/prometheus/4.0.39/README.md b/stable/prometheus/4.0.40/README.md similarity index 98% rename from stable/prometheus/4.0.39/README.md rename to stable/prometheus/4.0.40/README.md index 6d1e6c4be33..1482053a79c 100644 --- a/stable/prometheus/4.0.39/README.md +++ b/stable/prometheus/4.0.40/README.md @@ -1,6 +1,6 @@ # prometheus -![Version: 4.0.39](https://img.shields.io/badge/Version-4.0.39-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.57.0](https://img.shields.io/badge/AppVersion-0.57.0-informational?style=flat-square) +![Version: 4.0.40](https://img.shields.io/badge/Version-4.0.40-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.57.0](https://img.shields.io/badge/AppVersion-0.57.0-informational?style=flat-square) 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. diff --git a/stable/prometheus/4.0.39/app-readme.md b/stable/prometheus/4.0.40/app-readme.md similarity index 100% rename from stable/prometheus/4.0.39/app-readme.md rename to stable/prometheus/4.0.40/app-readme.md diff --git a/dependency/redis/3.0.40/charts/common-10.4.4.tgz b/stable/prometheus/4.0.40/charts/common-10.4.4.tgz similarity index 100% rename from dependency/redis/3.0.40/charts/common-10.4.4.tgz rename to stable/prometheus/4.0.40/charts/common-10.4.4.tgz diff --git a/stable/prometheus/4.0.39/charts/kube-state-metrics-3.1.1.tgz b/stable/prometheus/4.0.40/charts/kube-state-metrics-3.1.1.tgz similarity index 100% rename from stable/prometheus/4.0.39/charts/kube-state-metrics-3.1.1.tgz rename to stable/prometheus/4.0.40/charts/kube-state-metrics-3.1.1.tgz diff --git a/stable/prometheus/4.0.39/charts/node-exporter-3.0.4.tgz b/stable/prometheus/4.0.40/charts/node-exporter-3.0.4.tgz similarity index 100% rename from stable/prometheus/4.0.39/charts/node-exporter-3.0.4.tgz rename to stable/prometheus/4.0.40/charts/node-exporter-3.0.4.tgz diff --git a/stable/prometheus/4.0.39/crds/crd-alertmanager-config.yaml b/stable/prometheus/4.0.40/crds/crd-alertmanager-config.yaml similarity index 100% rename from stable/prometheus/4.0.39/crds/crd-alertmanager-config.yaml rename to stable/prometheus/4.0.40/crds/crd-alertmanager-config.yaml diff --git a/stable/prometheus/4.0.39/crds/crd-alertmanager.yaml b/stable/prometheus/4.0.40/crds/crd-alertmanager.yaml similarity index 100% rename from stable/prometheus/4.0.39/crds/crd-alertmanager.yaml rename to stable/prometheus/4.0.40/crds/crd-alertmanager.yaml diff --git a/stable/prometheus/4.0.39/crds/crd-podmonitor.yaml b/stable/prometheus/4.0.40/crds/crd-podmonitor.yaml similarity index 100% rename from stable/prometheus/4.0.39/crds/crd-podmonitor.yaml rename to stable/prometheus/4.0.40/crds/crd-podmonitor.yaml diff --git a/stable/prometheus/4.0.39/crds/crd-probes.yaml b/stable/prometheus/4.0.40/crds/crd-probes.yaml similarity index 100% rename from stable/prometheus/4.0.39/crds/crd-probes.yaml rename to stable/prometheus/4.0.40/crds/crd-probes.yaml diff --git a/stable/prometheus/4.0.39/crds/crd-prometheus.yaml b/stable/prometheus/4.0.40/crds/crd-prometheus.yaml similarity index 100% rename from stable/prometheus/4.0.39/crds/crd-prometheus.yaml rename to stable/prometheus/4.0.40/crds/crd-prometheus.yaml diff --git a/stable/prometheus/4.0.39/crds/crd-prometheusrules.yaml b/stable/prometheus/4.0.40/crds/crd-prometheusrules.yaml similarity index 100% rename from stable/prometheus/4.0.39/crds/crd-prometheusrules.yaml rename to stable/prometheus/4.0.40/crds/crd-prometheusrules.yaml diff --git a/stable/prometheus/4.0.39/crds/crd-servicemonitor.yaml b/stable/prometheus/4.0.40/crds/crd-servicemonitor.yaml similarity index 100% rename from stable/prometheus/4.0.39/crds/crd-servicemonitor.yaml rename to stable/prometheus/4.0.40/crds/crd-servicemonitor.yaml diff --git a/stable/prometheus/4.0.39/crds/crd-thanosrulers.yaml b/stable/prometheus/4.0.40/crds/crd-thanosrulers.yaml similarity index 100% rename from stable/prometheus/4.0.39/crds/crd-thanosrulers.yaml rename to stable/prometheus/4.0.40/crds/crd-thanosrulers.yaml diff --git a/stable/prometheus/4.0.39/ix_values.yaml b/stable/prometheus/4.0.40/ix_values.yaml similarity index 99% rename from stable/prometheus/4.0.39/ix_values.yaml rename to stable/prometheus/4.0.40/ix_values.yaml index c78a3169e6b..df62787851e 100644 --- a/stable/prometheus/4.0.39/ix_values.yaml +++ b/stable/prometheus/4.0.40/ix_values.yaml @@ -4,7 +4,7 @@ image: prometheusImage: repository: tccr.io/truecharts/prometheus - tag: v2.37.0@sha256:ed295d400f16fc24fb2e5bfff6dd19c98905cdc69e26e3dc5e8870de3feefc08 + tag: v2.37.0@sha256:68169a2f6aa0371b9b06f39948bc34e80cb450b6c5a60200e35d47f86ebfccf0 thanosImage: repository: tccr.io/truecharts/thanos diff --git a/stable/prometheus/4.0.39/questions.yaml b/stable/prometheus/4.0.40/questions.yaml similarity index 100% rename from stable/prometheus/4.0.39/questions.yaml rename to stable/prometheus/4.0.40/questions.yaml diff --git a/stable/prometheus/4.0.39/templates/_helpers.tpl b/stable/prometheus/4.0.40/templates/_helpers.tpl similarity index 100% rename from stable/prometheus/4.0.39/templates/_helpers.tpl rename to stable/prometheus/4.0.40/templates/_helpers.tpl diff --git a/stable/prometheus/4.0.39/templates/alertmanager/_alertmanager.tpl b/stable/prometheus/4.0.40/templates/alertmanager/_alertmanager.tpl similarity index 100% rename from stable/prometheus/4.0.39/templates/alertmanager/_alertmanager.tpl rename to stable/prometheus/4.0.40/templates/alertmanager/_alertmanager.tpl diff --git a/stable/prometheus/4.0.39/templates/alertmanager/secrets.yaml b/stable/prometheus/4.0.40/templates/alertmanager/secrets.yaml similarity index 100% rename from stable/prometheus/4.0.39/templates/alertmanager/secrets.yaml rename to stable/prometheus/4.0.40/templates/alertmanager/secrets.yaml diff --git a/stable/prometheus/4.0.39/templates/alertmanager/serviceaccount.yaml b/stable/prometheus/4.0.40/templates/alertmanager/serviceaccount.yaml similarity index 100% rename from stable/prometheus/4.0.39/templates/alertmanager/serviceaccount.yaml rename to stable/prometheus/4.0.40/templates/alertmanager/serviceaccount.yaml diff --git a/stable/prometheus/4.0.39/templates/alertmanager/servicemonitor.yaml b/stable/prometheus/4.0.40/templates/alertmanager/servicemonitor.yaml similarity index 100% rename from stable/prometheus/4.0.39/templates/alertmanager/servicemonitor.yaml rename to stable/prometheus/4.0.40/templates/alertmanager/servicemonitor.yaml diff --git a/stable/prometheus/4.0.39/templates/common.yaml b/stable/prometheus/4.0.40/templates/common.yaml similarity index 100% rename from stable/prometheus/4.0.39/templates/common.yaml rename to stable/prometheus/4.0.40/templates/common.yaml diff --git a/stable/prometheus/4.0.39/templates/exporters/core-dns/service.yaml b/stable/prometheus/4.0.40/templates/exporters/core-dns/service.yaml similarity index 100% rename from stable/prometheus/4.0.39/templates/exporters/core-dns/service.yaml rename to stable/prometheus/4.0.40/templates/exporters/core-dns/service.yaml diff --git a/stable/prometheus/4.0.39/templates/exporters/core-dns/servicemonitor.yaml b/stable/prometheus/4.0.40/templates/exporters/core-dns/servicemonitor.yaml similarity index 100% rename from stable/prometheus/4.0.39/templates/exporters/core-dns/servicemonitor.yaml rename to stable/prometheus/4.0.40/templates/exporters/core-dns/servicemonitor.yaml diff --git a/stable/prometheus/4.0.39/templates/exporters/kube-apiserver/servicemonitor.yaml b/stable/prometheus/4.0.40/templates/exporters/kube-apiserver/servicemonitor.yaml similarity index 100% rename from stable/prometheus/4.0.39/templates/exporters/kube-apiserver/servicemonitor.yaml rename to stable/prometheus/4.0.40/templates/exporters/kube-apiserver/servicemonitor.yaml diff --git a/stable/prometheus/4.0.39/templates/exporters/kube-controller-manager/endpoints.yaml b/stable/prometheus/4.0.40/templates/exporters/kube-controller-manager/endpoints.yaml similarity index 100% rename from stable/prometheus/4.0.39/templates/exporters/kube-controller-manager/endpoints.yaml rename to stable/prometheus/4.0.40/templates/exporters/kube-controller-manager/endpoints.yaml diff --git a/stable/prometheus/4.0.39/templates/exporters/kube-controller-manager/service.yaml b/stable/prometheus/4.0.40/templates/exporters/kube-controller-manager/service.yaml similarity index 100% rename from stable/prometheus/4.0.39/templates/exporters/kube-controller-manager/service.yaml rename to stable/prometheus/4.0.40/templates/exporters/kube-controller-manager/service.yaml diff --git a/stable/prometheus/4.0.39/templates/exporters/kube-controller-manager/servicemonitor.yaml b/stable/prometheus/4.0.40/templates/exporters/kube-controller-manager/servicemonitor.yaml similarity index 100% rename from stable/prometheus/4.0.39/templates/exporters/kube-controller-manager/servicemonitor.yaml rename to stable/prometheus/4.0.40/templates/exporters/kube-controller-manager/servicemonitor.yaml diff --git a/stable/prometheus/4.0.39/templates/exporters/kube-scheduler/endpoints.yaml b/stable/prometheus/4.0.40/templates/exporters/kube-scheduler/endpoints.yaml similarity index 100% rename from stable/prometheus/4.0.39/templates/exporters/kube-scheduler/endpoints.yaml rename to stable/prometheus/4.0.40/templates/exporters/kube-scheduler/endpoints.yaml diff --git a/stable/prometheus/4.0.39/templates/exporters/kube-scheduler/service.yaml b/stable/prometheus/4.0.40/templates/exporters/kube-scheduler/service.yaml similarity index 100% rename from stable/prometheus/4.0.39/templates/exporters/kube-scheduler/service.yaml rename to stable/prometheus/4.0.40/templates/exporters/kube-scheduler/service.yaml diff --git a/stable/prometheus/4.0.39/templates/exporters/kube-scheduler/servicemonitor.yaml b/stable/prometheus/4.0.40/templates/exporters/kube-scheduler/servicemonitor.yaml similarity index 100% rename from stable/prometheus/4.0.39/templates/exporters/kube-scheduler/servicemonitor.yaml rename to stable/prometheus/4.0.40/templates/exporters/kube-scheduler/servicemonitor.yaml diff --git a/stable/prometheus/4.0.39/templates/exporters/kubelet/servicemonitor.yaml b/stable/prometheus/4.0.40/templates/exporters/kubelet/servicemonitor.yaml similarity index 100% rename from stable/prometheus/4.0.39/templates/exporters/kubelet/servicemonitor.yaml rename to stable/prometheus/4.0.40/templates/exporters/kubelet/servicemonitor.yaml diff --git a/stable/prometheus/4.0.39/templates/operator/_args.tpl b/stable/prometheus/4.0.40/templates/operator/_args.tpl similarity index 100% rename from stable/prometheus/4.0.39/templates/operator/_args.tpl rename to stable/prometheus/4.0.40/templates/operator/_args.tpl diff --git a/stable/prometheus/4.0.39/templates/operator/configmap.yaml b/stable/prometheus/4.0.40/templates/operator/configmap.yaml similarity index 100% rename from stable/prometheus/4.0.39/templates/operator/configmap.yaml rename to stable/prometheus/4.0.40/templates/operator/configmap.yaml diff --git a/stable/prometheus/4.0.39/templates/operator/servicemonitor.yaml b/stable/prometheus/4.0.40/templates/operator/servicemonitor.yaml similarity index 100% rename from stable/prometheus/4.0.39/templates/operator/servicemonitor.yaml rename to stable/prometheus/4.0.40/templates/operator/servicemonitor.yaml diff --git a/stable/prometheus/4.0.39/templates/prometheus/_additionalPrometheusRules.tpl b/stable/prometheus/4.0.40/templates/prometheus/_additionalPrometheusRules.tpl similarity index 100% rename from stable/prometheus/4.0.39/templates/prometheus/_additionalPrometheusRules.tpl rename to stable/prometheus/4.0.40/templates/prometheus/_additionalPrometheusRules.tpl diff --git a/stable/prometheus/4.0.39/templates/prometheus/_additionalScrapeJobs.tpl b/stable/prometheus/4.0.40/templates/prometheus/_additionalScrapeJobs.tpl similarity index 100% rename from stable/prometheus/4.0.39/templates/prometheus/_additionalScrapeJobs.tpl rename to stable/prometheus/4.0.40/templates/prometheus/_additionalScrapeJobs.tpl diff --git a/stable/prometheus/4.0.39/templates/prometheus/_prometheus.tpl b/stable/prometheus/4.0.40/templates/prometheus/_prometheus.tpl similarity index 100% rename from stable/prometheus/4.0.39/templates/prometheus/_prometheus.tpl rename to stable/prometheus/4.0.40/templates/prometheus/_prometheus.tpl diff --git a/stable/prometheus/4.0.39/templates/prometheus/_servicemonitor.tpl b/stable/prometheus/4.0.40/templates/prometheus/_servicemonitor.tpl similarity index 100% rename from stable/prometheus/4.0.39/templates/prometheus/_servicemonitor.tpl rename to stable/prometheus/4.0.40/templates/prometheus/_servicemonitor.tpl diff --git a/stable/prometheus/4.0.39/templates/prometheus/clusterrole.yaml b/stable/prometheus/4.0.40/templates/prometheus/clusterrole.yaml similarity index 100% rename from stable/prometheus/4.0.39/templates/prometheus/clusterrole.yaml rename to stable/prometheus/4.0.40/templates/prometheus/clusterrole.yaml diff --git a/stable/prometheus/4.0.39/templates/prometheus/clusterrolebinding.yaml b/stable/prometheus/4.0.40/templates/prometheus/clusterrolebinding.yaml similarity index 100% rename from stable/prometheus/4.0.39/templates/prometheus/clusterrolebinding.yaml rename to stable/prometheus/4.0.40/templates/prometheus/clusterrolebinding.yaml diff --git a/stable/prometheus/4.0.39/templates/prometheus/serviceaccount.yaml b/stable/prometheus/4.0.40/templates/prometheus/serviceaccount.yaml similarity index 100% rename from stable/prometheus/4.0.39/templates/prometheus/serviceaccount.yaml rename to stable/prometheus/4.0.40/templates/prometheus/serviceaccount.yaml diff --git a/stable/prometheus/4.0.40/values.yaml b/stable/prometheus/4.0.40/values.yaml new file mode 100644 index 00000000000..e69de29bb2d

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 diff --git a/dependency/solr/0.0.14/CHANGELOG.md b/dependency/solr/0.0.15/CHANGELOG.md similarity index 61% rename from dependency/solr/0.0.14/CHANGELOG.md rename to dependency/solr/0.0.15/CHANGELOG.md index 09273c5d3b2..420d023f9a3 100644 --- a/dependency/solr/0.0.14/CHANGELOG.md +++ b/dependency/solr/0.0.15/CHANGELOG.md @@ -1,6 +1,44 @@ # Changelog +## [solr-0.0.15](https://github.com/truecharts/apps/compare/solr-0.0.14...solr-0.0.15) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- update helm chart common to v10.4.6 + + + +## [solr-0.0.15](https://github.com/truecharts/apps/compare/solr-0.0.14...solr-0.0.15) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- update helm chart common to v10.4.6 + + + +## [solr-0.0.15](https://github.com/truecharts/apps/compare/solr-0.0.14...solr-0.0.15) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- update helm chart common to v10.4.6 + + + +## [solr-0.0.15](https://github.com/truecharts/apps/compare/solr-0.0.14...solr-0.0.15) (2022-07-20) + +### Chore + +- update helm chart common to v10.4.6 + + + ## [solr-0.0.14](https://github.com/truecharts/apps/compare/solr-0.0.13...solr-0.0.14) (2022-07-20) ### Chore @@ -59,41 +97,3 @@ ## [solr-0.0.5](https://github.com/truecharts/apps/compare/solr-0.0.4...solr-0.0.5) (2022-07-12) - -### Chore - -- bump to regenerate documentation -- update docker general non-major ([#3150](https://github.com/truecharts/apps/issues/3150)) - - - - -### [solr-0.0.4](https://github.com/truecharts/apps/compare/solr-0.0.3...solr-0.0.4) (2022-07-12) - -#### Chore - -* update helm chart common to v10.4.4 ([#3146](https://github.com/truecharts/apps/issues/3146)) - - - - -### [solr-0.0.3](https://github.com/truecharts/apps/compare/solr-0.0.2...solr-0.0.3) (2022-07-11) - - - - -### [solr-0.0.2](https://github.com/truecharts/apps/compare/solr-0.0.1...solr-0.0.2) (2022-07-11) - -#### Chore - -* Auto-update chart README [skip ci] -* move icons into the apps folder ([#3139](https://github.com/truecharts/apps/issues/3139)) -* update helm chart common to v10.4.3 ([#3137](https://github.com/truecharts/apps/issues/3137)) - - - - -### solr-0.0.1 (2022-07-11) - -#### Feat - diff --git a/dependency/solr/0.0.15/Chart.lock b/dependency/solr/0.0.15/Chart.lock new file mode 100644 index 00000000000..6aae1d4b470 --- /dev/null +++ b/dependency/solr/0.0.15/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-21T13:02:27.421697334Z" diff --git a/dependency/solr/0.0.14/Chart.yaml b/dependency/solr/0.0.15/Chart.yaml similarity index 95% rename from dependency/solr/0.0.14/Chart.yaml rename to dependency/solr/0.0.15/Chart.yaml index 7e6eeddc962..208f4c6f57b 100644 --- a/dependency/solr/0.0.14/Chart.yaml +++ b/dependency/solr/0.0.15/Chart.yaml @@ -3,7 +3,7 @@ appVersion: "9.0.0" dependencies: - name: common repository: https://library-charts.truecharts.org - version: 10.4.4 + version: 10.4.6 deprecated: false description: Apache Solr home: https://github.com/truecharts/apps/tree/master/charts/dependency/solr @@ -22,7 +22,7 @@ sources: - https://github.com/apache/solr - https://hub.docker.com/r/bitnami/solr/ type: application -version: 0.0.14 +version: 0.0.15 annotations: truecharts.org/catagories: | - search diff --git a/dependency/solr/0.0.14/README.md b/dependency/solr/0.0.15/README.md similarity index 96% rename from dependency/solr/0.0.14/README.md rename to dependency/solr/0.0.15/README.md index 3e38f1c6889..f62f44251d8 100644 --- a/dependency/solr/0.0.14/README.md +++ b/dependency/solr/0.0.15/README.md @@ -1,6 +1,6 @@ # solr -![Version: 0.0.14](https://img.shields.io/badge/Version-0.0.14-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 9.0.0](https://img.shields.io/badge/AppVersion-9.0.0-informational?style=flat-square) +![Version: 0.0.15](https://img.shields.io/badge/Version-0.0.15-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 9.0.0](https://img.shields.io/badge/AppVersion-9.0.0-informational?style=flat-square) Apache Solr @@ -24,7 +24,7 @@ Kubernetes: `>=1.16.0-0` | Repository | Name | Version | |------------|------|---------| -| https://library-charts.truecharts.org | common | 10.4.4 | +| https://library-charts.truecharts.org | common | 10.4.6 | ## Installing the Chart diff --git a/dependency/solr/0.0.14/app-readme.md b/dependency/solr/0.0.15/app-readme.md similarity index 100% rename from dependency/solr/0.0.14/app-readme.md rename to dependency/solr/0.0.15/app-readme.md diff --git a/dependency/solr/0.0.15/charts/common-10.4.6.tgz b/dependency/solr/0.0.15/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/dependency/solr/0.0.14/ix_values.yaml b/dependency/solr/0.0.15/ix_values.yaml similarity index 100% rename from dependency/solr/0.0.14/ix_values.yaml rename to dependency/solr/0.0.15/ix_values.yaml diff --git a/dependency/solr/0.0.14/questions.yaml b/dependency/solr/0.0.15/questions.yaml similarity index 100% rename from dependency/solr/0.0.14/questions.yaml rename to dependency/solr/0.0.15/questions.yaml diff --git a/dependency/solr/0.0.14/templates/common.yaml b/dependency/solr/0.0.15/templates/common.yaml similarity index 100% rename from dependency/solr/0.0.14/templates/common.yaml rename to dependency/solr/0.0.15/templates/common.yaml diff --git a/incubator/wger/0.0.24/values.yaml b/dependency/solr/0.0.15/values.yaml similarity index 100% rename from incubator/wger/0.0.24/values.yaml rename to dependency/solr/0.0.15/values.yaml diff --git a/incubator/awesome-ttrss/0.0.21/charts/common-10.4.4.tgz b/incubator/awesome-ttrss/0.0.21/charts/common-10.4.4.tgz deleted file mode 100644 index 8604b47288a457e2e334c195e3226036e9560f82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47288 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