From 644f493e810fad82d3f0483993869fc6e29a70b4 Mon Sep 17 00:00:00 2001 From: TrueCharts-Bot Date: Tue, 1 Nov 2022 09:34:28 +0000 Subject: [PATCH] Commit new Chart releases for TrueCharts Signed-off-by: TrueCharts-Bot --- stable/youtubedl-material/1.1.0/CHANGELOG.md | 99 + stable/youtubedl-material/1.1.0/Chart.lock | 9 + stable/youtubedl-material/1.1.0/Chart.yaml | 31 + stable/youtubedl-material/1.1.0/README.md | 108 + stable/youtubedl-material/1.1.0/app-readme.md | 8 + .../1.1.0/charts/common-10.7.7.tgz | Bin 0 -> 49153 bytes .../1.1.0/charts/mongodb-2.0.40.tgz | Bin 0 -> 55323 bytes .../youtubedl-material/1.1.0/ix_values.yaml | 95 + .../youtubedl-material/1.1.0/questions.yaml | 3548 +++++++++++++++++ .../1.1.0/templates/common.yaml | 1 + stable/youtubedl-material/1.1.0/values.yaml | 0 stable/youtubedl-material/item.yaml | 4 + 12 files changed, 3903 insertions(+) create mode 100644 stable/youtubedl-material/1.1.0/CHANGELOG.md create mode 100644 stable/youtubedl-material/1.1.0/Chart.lock create mode 100644 stable/youtubedl-material/1.1.0/Chart.yaml create mode 100644 stable/youtubedl-material/1.1.0/README.md create mode 100644 stable/youtubedl-material/1.1.0/app-readme.md create mode 100644 stable/youtubedl-material/1.1.0/charts/common-10.7.7.tgz create mode 100644 stable/youtubedl-material/1.1.0/charts/mongodb-2.0.40.tgz create mode 100644 stable/youtubedl-material/1.1.0/ix_values.yaml create mode 100644 stable/youtubedl-material/1.1.0/questions.yaml create mode 100644 stable/youtubedl-material/1.1.0/templates/common.yaml create mode 100644 stable/youtubedl-material/1.1.0/values.yaml create mode 100644 stable/youtubedl-material/item.yaml diff --git a/stable/youtubedl-material/1.1.0/CHANGELOG.md b/stable/youtubedl-material/1.1.0/CHANGELOG.md new file mode 100644 index 00000000000..003a7d6c87d --- /dev/null +++ b/stable/youtubedl-material/1.1.0/CHANGELOG.md @@ -0,0 +1,99 @@ +# Changelog + + + +## [youtubedl-material-1.1.0](https://github.com/truecharts/charts/compare/youtubedl-material-1.0.16...youtubedl-material-1.1.0) (2022-11-01) + +### Feat + +- Move to Stable ([#4263](https://github.com/truecharts/charts/issues/4263)) + + + + +## [youtubedl-material-1.0.16](https://github.com/truecharts/charts/compare/youtubedl-material-1.0.15...youtubedl-material-1.0.16) (2022-10-25) + +### Chore + +- Auto-update chart README [skip ci] + - update helm general non-major ([#4182](https://github.com/truecharts/charts/issues/4182)) + + + + +## [youtubedl-material-1.0.15](https://github.com/truecharts/charts/compare/youtubedl-material-1.0.14...youtubedl-material-1.0.15) (2022-10-19) + +### Chore + +- Auto-update chart README [skip ci] + - update helm general non-major ([#4122](https://github.com/truecharts/charts/issues/4122)) + + + + +## [youtubedl-material-1.0.14](https://github.com/truecharts/charts/compare/youtubedl-material-1.0.13...youtubedl-material-1.0.14) (2022-10-12) + +### Chore + +- Auto-update chart README [skip ci] + - update helm general non-major ([#4071](https://github.com/truecharts/charts/issues/4071)) + + + + +## [youtubedl-material-1.0.13](https://github.com/truecharts/charts/compare/youtubedl-material-1.0.12...youtubedl-material-1.0.13) (2022-10-07) + +### Chore + +- Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - update helm general non-major + + + + +## [youtubedl-material-1.0.13](https://github.com/truecharts/charts/compare/youtubedl-material-1.0.12...youtubedl-material-1.0.13) (2022-10-07) + +### Chore + +- Auto-update chart README [skip ci] + - update helm general non-major + + + + +## [youtubedl-material-1.0.12](https://github.com/truecharts/charts/compare/youtubedl-material-1.0.11...youtubedl-material-1.0.12) (2022-10-05) + +### Chore + +- split addons in smaller templates ([#3979](https://github.com/truecharts/charts/issues/3979)) + - update helm general non-major + + + + +## [youtubedl-material-1.0.10](https://github.com/truecharts/charts/compare/youtubedl-material-1.0.9...youtubedl-material-1.0.10) (2022-09-27) + +### Chore + +- Auto-update chart README [skip ci] + - update helm general non-major ([#3918](https://github.com/truecharts/charts/issues/3918)) + + + + +## [youtubedl-material-1.0.9](https://github.com/truecharts/charts/compare/youtubedl-material-1.0.8...youtubedl-material-1.0.9) (2022-09-25) + +### Chore + +- Auto-update chart README [skip ci] + - update helm general non-major ([#3898](https://github.com/truecharts/charts/issues/3898)) + + + + +## [youtubedl-material-1.0.8](https://github.com/truecharts/charts/compare/youtubedl-material-1.0.7...youtubedl-material-1.0.8) (2022-09-22) + +### Chore + +- Auto-update chart README [skip ci] diff --git a/stable/youtubedl-material/1.1.0/Chart.lock b/stable/youtubedl-material/1.1.0/Chart.lock new file mode 100644 index 00000000000..0ffca497bcb --- /dev/null +++ b/stable/youtubedl-material/1.1.0/Chart.lock @@ -0,0 +1,9 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.7.7 +- name: mongodb + repository: https://charts.truecharts.org + version: 2.0.40 +digest: sha256:b45c263e31c0a5da26788117e6670da4fc9a11b3d73788ff62d9b41d21ce2e83 +generated: "2022-11-01T09:32:43.672369819Z" diff --git a/stable/youtubedl-material/1.1.0/Chart.yaml b/stable/youtubedl-material/1.1.0/Chart.yaml new file mode 100644 index 00000000000..22554e717af --- /dev/null +++ b/stable/youtubedl-material/1.1.0/Chart.yaml @@ -0,0 +1,31 @@ +apiVersion: v2 +appVersion: "4.3" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 10.7.7 + - condition: mongodb.enabled + name: mongodb + repository: https://charts.truecharts.org + version: 2.0.40 +description: YoutubeDL-Material is a Material Design frontend for youtube-dl. +home: https://truecharts.org/docs/charts/stable/youtubedl-material +icon: https://truecharts.org/img/hotlink-ok/chart-icons/youtubedl-material.png +keywords: + - youtube +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: youtubedl-material +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/youtubedl-material + - https://hub.docker.com/r/tzahi12345/youtubedl-material + - https://github.com/Tzahi12345/YoutubeDL-Material +version: 1.1.0 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/youtubedl-material/1.1.0/README.md b/stable/youtubedl-material/1.1.0/README.md new file mode 100644 index 00000000000..a8b661488fe --- /dev/null +++ b/stable/youtubedl-material/1.1.0/README.md @@ -0,0 +1,108 @@ +# youtubedl-material + +YoutubeDL-Material is a Material Design frontend for youtube-dl. + +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: [youtubedl-material](https://truecharts.org/docs/charts/stable/youtubedl-material) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + +## Source Code + +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://charts.truecharts.org | mongodb | 2.0.40 | +| https://library-charts.truecharts.org | common | 10.7.7 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this Chart on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/docs/manual/SCALE%20Apps/Installing-an-App). + +### Helm + +To install the chart with the release name `youtubedl-material` + +```console +helm repo add TrueCharts https://charts.truecharts.org +helm repo update +helm install youtubedl-material TrueCharts/youtubedl-material +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this Chart from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/docs/manual/SCALE%20Apps/Upgrade-rollback-delete-an-App). + +### Helm + +To uninstall the `youtubedl-material` deployment + +```console +helm uninstall youtubedl-material +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the 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/truecharts/library-charts/tree/main/charts/common). + +#### Configure using the command line + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install youtubedl-material \ + --set env.TZ="America/New York" \ + TrueCharts/youtubedl-material +``` + +#### 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 youtubedl-material TrueCharts/youtubedl-material -f values.yaml +``` + +#### Connecting to other charts + +If you need to connect this Chart to other Charts on TrueNAS SCALE, please refer to our [Linking Charts Internally](https://truecharts.org/docs/manual/SCALE%20Apps/linking-apps) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/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/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/stable/youtubedl-material/1.1.0/app-readme.md b/stable/youtubedl-material/1.1.0/app-readme.md new file mode 100644 index 00000000000..b8158fdd787 --- /dev/null +++ b/stable/youtubedl-material/1.1.0/app-readme.md @@ -0,0 +1,8 @@ +YoutubeDL-Material is a Material Design frontend for youtube-dl. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/docs/charts/stable/youtubedl-material](https://truecharts.org/docs/charts/stable/youtubedl-material) + +--- + +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/stable/youtubedl-material/1.1.0/charts/common-10.7.7.tgz b/stable/youtubedl-material/1.1.0/charts/common-10.7.7.tgz new file mode 100644 index 0000000000000000000000000000000000000000..94ac67364b77909f3837193a5ab483c19844e88b GIT binary patch literal 49153 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 z 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 literal 0 HcmV?d00001 diff --git a/stable/youtubedl-material/1.1.0/charts/mongodb-2.0.40.tgz b/stable/youtubedl-material/1.1.0/charts/mongodb-2.0.40.tgz new file mode 100644 index 0000000000000000000000000000000000000000..b701a41dd4a8facc0a6a2e42f735261db3081602 GIT binary patch literal 55323 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 L))YuH0HOr|O&6MA literal 0 HcmV?d00001 diff --git a/stable/youtubedl-material/1.1.0/ix_values.yaml b/stable/youtubedl-material/1.1.0/ix_values.yaml new file mode 100644 index 00000000000..a44f831ac85 --- /dev/null +++ b/stable/youtubedl-material/1.1.0/ix_values.yaml @@ -0,0 +1,95 @@ +image: + repository: tccr.io/truecharts/youtubedl-material + tag: v4.3@sha256:52ea916289823f2d239f1b375f9afbe4a075416c22020fc9e9765422ef58f7c9 + pullPolicy: IfNotPresent + +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false + +podSecurityContext: + runAsUser: 0 + runAsGroup: 0 + fsGroup: 1000 + +security: + PUID: 1000 + +env: + ytdl_mongodb_connection_string: + secretKeyRef: + name: mongodbcreds + key: url + ytdl_port: "{{ .Values.service.main.ports.main.port }}" + ytdl_use_local_db: false + ALLOW_CONFIG_MUTATIONS: true + write_ytdl_config: true + # Used Defined + ytdl_url: "" + ytdl_multi_user_mode: false + ytdl_allow_subscriptions: true + ytdl_subscriptions_check_interval: 86400 + ytdl_subscriptions_redownload_fresh_uploads: false + ytdl_allow_theme_change: true + ytdl_default_theme: default + ytdl_title_top: YoutubeDL-Material + ytdl_file_manager_enabled: true + ytdl_enable_downloads_manager: true + ytdl_allow_quality_select: true + ytdl_download_only_mode: false + ytdl_use_api_key: false + ytdl_api_key: "" + ytdl_youtube_api_key: "" + ytdl_use_twitch_api: false + ytdl_twitch_api_key: "" + ytdl_twitch_auto_download_chat: false + ytdl_use_sponsorblock_api: false + ytdl_generate_nfo_files: false + ytdl_default_file_output: "" + ytdl_custom_args: "" + ytdl_allow_playlist_categorization: true + ytdl_use_youtubedl_archive: false + ytdl_include_thumbnail: true + ytdl_include_metadata: true + ytdl_max_concurrent_downloads: 5 + ytdl_download_rate_limit: "" + ytdl_default_downloader: yt-dlp + ytdl_use_default_downloading_agent: true + ytdl_custom_downloading_agent: "" + ytdl_logger_level: debug + ytdl_jwt_expiration: 86400 + ytdl_allow_advanced_download: false + ytdl_use_cookies: false + +service: + main: + ports: + main: + port: 10253 + +persistence: + appdata: + enabled: true + mountPath: /app/appdata + users: + enabled: true + mountPath: /app/users + subscriptions: + enabled: true + mountPath: /app/subscriptions + audio: + enabled: true + mountPath: /app/audio + video: + enabled: true + mountPath: /app/video + +mongodb: + enabled: true + existingSecret: mongodbcreds + mongodbUsername: ytdl_material + # DB name seems to be harcoded in their app + mongodbDatabase: ytdl_material + +portal: + enabled: true diff --git a/stable/youtubedl-material/1.1.0/questions.yaml b/stable/youtubedl-material/1.1.0/questions.yaml new file mode 100644 index 00000000000..2586ade3e31 --- /dev/null +++ b/stable/youtubedl-material/1.1.0/questions.yaml @@ -0,0 +1,3548 @@ +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 + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +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 + required: true + enum: + - value: deployment + description: Deployment + - value: statefulset + description: Statefulset + - value: daemonset + description: Daemonset + default: deployment + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: strategy + description: Please specify type of workload to deploy + label: (Advanced) Update Strategy + schema: + type: string + 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" + default: Recreate + - variable: expert + label: Show Expert Configuration Options + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - 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: customextraargs + group: Controller + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: Container Configuration + label: Image Environment + schema: + additional_attrs: true + type: dict + attrs: + - variable: mainsettings + label: Main Settings + schema: + type: boolean + default: true + show_subquestions_if: true + subquestions: + - variable: ytdl_url + label: URL + description: URL for the frontend + schema: + type: string + default: "" + - variable: ytdl_multi_user_mode + label: Multi User Mode + description: Allows creation of users (with their own files), roles, and permissions + schema: + type: boolean + default: false + - variable: ytdl_allow_subscriptions + label: Allow Subscriptions + description: Allows subscribing to channels + schema: + type: boolean + default: true + - variable: ytdl_subscriptions_check_interval + label: Subscriptions Check Interval + description: Amount of time between cycling through all subscriptions. + schema: + type: int + default: 86400 + - variable: ytdl_subscriptions_redownload_fresh_uploads + label: Subscriptions Redownload Fresh Uploads + description: Checks day-old or newer videos in a subscription to see if a higher quality one exists. If it does, it's downloaded. + schema: + type: boolean + default: false + - variable: ytdl_allow_theme_change + label: Allow Theme Change + description: Allows the theme to be changed by hitting the 3 dots in the top right corner + schema: + type: boolean + default: true + - variable: ytdl_default_theme + label: Default Theme + description: Sets the default theme. + schema: + type: string + default: default + enum: + - value: default + description: default + - value: dark + description: dark + - variable: extrasettigns + label: Extra Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: ytdl_title_top + label: Title Top + description: Sets the top bar and browser tab title. + schema: + type: string + default: YoutubeDL-Material + - variable: ytdl_file_manager_enabled + label: Enable File Manager + description: Enables file management in the home screen. + schema: + type: boolean + default: true + - variable: ytdl_enable_downloads_manager + label: Enable Download Manager + description: Enables download management page. + schema: + type: boolean + default: true + - variable: ytdl_allow_quality_select + label: Allow Quality Select + description: Allows changing quality of files (resolution/bitrate). Disabling this means it's always the best quality selected. + schema: + type: boolean + default: true + - variable: ytdl_download_only_mode + label: Download Only Mode + description: Playing videos is disabled, they can only be downloaded. + schema: + type: boolean + default: false + - variable: ytdl_use_api_key + label: Enable YTDL-Material API Key + description: Allows YoutubeDL-Material's API to be utilized. + schema: + type: boolean + default: false + - variable: ytdl_api_key + label: YTDL-Material API Key + description: Key used to authenticate YoutubeDL-Material's API users. + schema: + type: string + private: true + default: "" + - variable: ytdl_youtube_api_key + label: Youtube API Key + description: Youtube API Key. + schema: + type: string + private: true + default: "" + - variable: ytdl_use_twitch_api + label: Enable Twitch API Key + description: Enables Twitch API use, currently only used for downloading chats for VODs. + schema: + type: boolean + default: false + - variable: ytdl_twitch_api_key + label: Twitch API Key + description: Twitch API Key. + schema: + type: string + private: true + default: "" + - variable: ytdl_twitch_auto_download_chat + label: Twitch Auto Download Chat + description: Automatically downloads Twitch chats for VODs. + schema: + type: boolean + default: false + - variable: ytdl_use_sponsorblock_api + label: Enable SponsorBlock + description: Enables Skip ads button in the video player if found on SponsorBlock. + schema: + type: boolean + default: false + - variable: ytdl_generate_nfo_files + label: Generate NFO Files + description: Automatically creates NFO files for downloaded videos, primarily used with Kodi. + schema: + type: boolean + default: false + - variable: downloadersettigns + label: Downloader Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: ytdl_default_file_output + label: Default File Output + description: Changes the formatting for file names based on youtube-dl output template. + schema: + type: string + default: "" + - variable: ytdl_custom_args + label: Custom Args + description: Youtube-dl args that get added to every download. + schema: + type: string + default: "" + - variable: ytdl_allow_playlist_categorization + label: Allow Playlist Categorization + description: Allow Playlist Categorization + schema: + type: boolean + default: true + - variable: ytdl_use_youtubedl_archive + label: Use Youtubedl Archive + description: Creates and uses archive text files to avoid redownloading the same file, and helps track/port already downloaded files. + schema: + type: boolean + default: false + - variable: ytdl_include_thumbnail + label: Include Thumbnail + description: Downloads thumbnail along with file. + schema: + type: boolean + default: true + - variable: ytdl_include_metadata + label: Include Metadata + description: Downloads .info.json files along with file (highly recommended). + schema: + type: boolean + default: true + - variable: ytdl_max_concurrent_downloads + label: Max Concurrent Downloads + description: Limits the number of simultaneous downloads. + schema: + type: int + default: 5 + - variable: ytdl_download_rate_limit + label: Rate Limit + description: Limits download speed. + schema: + type: string + default: "" + - variable: advancedsettigns + label: Advanced Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: ytdl_default_downloader + label: Default Downloader + description: youtube-dl fork to use (youtube-dl, youtube-dlc, or yt-dlp) + schema: + type: string + default: yt-dlp + enum: + - value: yt-dlp + description: yt-dlp + - value: youtube-dlc + description: youtube-dlc + - value: youtube-dl + description: youtube-dl + - variable: ytdl_use_default_downloading_agent + label: Use Default Downloading Agent + description: Whether to use youtube-dl's default agent or an alternative. + schema: + type: boolean + default: true + - variable: ytdl_custom_downloading_agent + label: Custom Downloading Agent + description: Preferred download agent, only used if Use default downloading agent is set to false. + schema: + type: string + default: "" + - variable: ytdl_logger_level + label: Logger Level + description: Logger Level. + schema: + type: string + default: info + enum: + - value: info + description: info + - value: info + description: info + - value: debug + description: debug + - value: verbose + description: verbose + - value: warn + description: warn + - value: error + description: error + - variable: ytdl_jwt_expiration + label: JWT Expiration + description: Length of time it takes for logins to expire. + schema: + type: int + default: 86400 + - variable: ytdl_allow_advanced_download + label: JWT Expiration + description: Enables an advanced download tab on the home page for additional download settings and information. + schema: + type: boolean + default: false + - variable: ytdl_use_cookies + label: Use Cookies + description: Enables usage of uploaded cookies to download videos as if you were logged into that website. + schema: + type: boolean + default: false + - variable: TZ + label: Timezone + group: Container Configuration + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + 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 Configuration + 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 and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: The IP Families that should be used + schema: + 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: 10253 + 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 + hidden: true + default: true + - 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: 10253 + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + 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: 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: Name Servers + schema: + default: [] + type: list + items: + - variable: nameserver + label: Name Server + 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 and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: appdata + label: App AppData Storage + description: Stores the Application 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: Host Path (simple) + - value: emptyDir + description: emptyDir + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + 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: false + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPathSimple + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - 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: users + label: App Users Storage + description: Stores the Application Users. + schema: + additional_attrs: true + type: 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: Host Path (simple) + - value: emptyDir + description: emptyDir + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + 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: false + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPathSimple + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - 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: subscriptions + label: App Subscriptions Storage + description: Stores the Application Subscriptions. + schema: + additional_attrs: true + type: 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: Host Path (simple) + - value: emptyDir + description: emptyDir + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + 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: false + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPathSimple + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - 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: audio + label: App Audio Storage + description: Stores the Application Audio. + schema: + additional_attrs: true + type: 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: Host Path (simple) + - value: emptyDir + description: emptyDir + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + 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: false + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPathSimple + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - 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: video + label: App Video Storage + description: Stores the Application Video. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: simplePVC + enum: + - value: simplePVC + description: PVC (simple) + - value: simpleHP + description: Host Path (simple) + - value: emptyDir + description: emptyDir + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + 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: false + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPathSimple + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - 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: Host Path (Simple) + - value: emptyDir + description: emptyDir + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + 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: false + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPathSimple + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: hostPathType + label: (Advanced) Host Path 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: Path Type + schema: + type: string + required: true + default: Prefix + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: scaleCert + label: Select TrueNAS SCALE Certificate + schema: + type: int + $ref: + - "definitions/certificate" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: 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: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: scaleCert + label: Select TrueNAS SCALE Certificate + schema: + type: int + $ref: + - "definitions/certificate" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: false + - variable: 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: 1000 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + + - variable: 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/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[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/docs/manual/SCALE%20Apps/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/docs/manual/SCALE%20Apps/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: horizontalPodAutoscaler + group: Advanced + label: (Advanced) Horizontal Pod Autoscaler + schema: + type: list + default: [] + items: + - variable: hpaEntry + label: HPA Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: target + label: Target + description: Deployment name, Defaults to Main Deployment + schema: + type: string + default: "" + - variable: minReplicas + label: Minimum Replicas + schema: + type: int + default: 1 + - variable: maxReplicas + label: Maximum Replicas + schema: + type: int + default: 5 + - variable: targetCPUUtilizationPercentage + label: Target CPU Utilization Percentage + schema: + type: int + default: 80 + - variable: targetMemoryUtilizationPercentage + label: Target Memory Utilization Percentage + schema: + type: int + default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_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 Command 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 + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: Sock5 Server + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/youtubedl-material/1.1.0/templates/common.yaml b/stable/youtubedl-material/1.1.0/templates/common.yaml new file mode 100644 index 00000000000..c1a366e1cf0 --- /dev/null +++ b/stable/youtubedl-material/1.1.0/templates/common.yaml @@ -0,0 +1 @@ +{{ include "tc.common.loader.all" . }} diff --git a/stable/youtubedl-material/1.1.0/values.yaml b/stable/youtubedl-material/1.1.0/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/stable/youtubedl-material/item.yaml b/stable/youtubedl-material/item.yaml new file mode 100644 index 00000000000..b1e20455667 --- /dev/null +++ b/stable/youtubedl-material/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/hotlink-ok/chart-icons/youtubedl-material.png +categories: +- media +