diff --git a/stable/invidious/2.0.0/CHANGELOG.md b/stable/invidious/2.0.0/CHANGELOG.md
new file mode 100644
index 00000000000..a5887a21870
--- /dev/null
+++ b/stable/invidious/2.0.0/CHANGELOG.md
@@ -0,0 +1,8 @@
+**Important:**
+*for the complete changelog, please refer to the website*
+
+
+
+
+## [invidious-2.0.0](https://github.com/truecharts/charts/compare/invidious-1.0.10...invidious-2.0.0) (2023-01-08)
+
diff --git a/stable/invidious/2.0.0/Chart.yaml b/stable/invidious/2.0.0/Chart.yaml
new file mode 100644
index 00000000000..23a5e3e80b0
--- /dev/null
+++ b/stable/invidious/2.0.0/Chart.yaml
@@ -0,0 +1,33 @@
+apiVersion: v2
+appVersion: "latest"
+dependencies:
+ - name: common
+ repository: https://library-charts.truecharts.org
+ version: 11.1.2
+ - condition: postgresql.enabled
+ name: postgresql
+ repository: https://charts.truecharts.org/
+ version: 11.0.18
+description: Open source alternative front-end to YouTube.
+home: https://truecharts.org/charts/incubator/invidious
+icon: https://truecharts.org/img/hotlink-ok/chart-icons/invidious.png
+keywords:
+ - invidious
+ - youtube
+ - media
+kubeVersion: ">=1.16.0-0"
+maintainers:
+ - email: info@truecharts.org
+ name: TrueCharts
+ url: https://truecharts.org
+name: invidious
+sources:
+ - https://github.com/truecharts/charts/tree/master/charts/incubator/invidious
+ - https://github.com/iv-org/invidious
+ - https://docs.invidious.io/installation/#docker
+version: 2.0.0
+annotations:
+ truecharts.org/catagories: |
+ - media
+ truecharts.org/SCALE-support: "true"
+ truecharts.org/grade: U
diff --git a/stable/invidious/2.0.0/README.md b/stable/invidious/2.0.0/README.md
new file mode 100644
index 00000000000..63d5d2c8fdc
--- /dev/null
+++ b/stable/invidious/2.0.0/README.md
@@ -0,0 +1,27 @@
+# README
+
+## General Info
+
+TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE.
+However only installations using the TrueNAS SCALE Apps system are supported.
+
+For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/incubator/)
+
+**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)**
+
+
+## Support
+
+- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE%20Apps/Important-MUST-READ).
+- See the [Website](https://truecharts.org)
+- Check our [Discord](https://discord.gg/tVsPTHWTtr)
+- Open a [issue](https://github.com/truecharts/charts/issues/new/choose)
+
+---
+
+## Sponsor TrueCharts
+
+TrueCharts can only exist due to the incredible effort of our staff.
+Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can!
+
+*All Rights Reserved - The TrueCharts Project*
diff --git a/stable/invidious/2.0.0/app-changelog.md b/stable/invidious/2.0.0/app-changelog.md
new file mode 100644
index 00000000000..387638360f9
--- /dev/null
+++ b/stable/invidious/2.0.0/app-changelog.md
@@ -0,0 +1,4 @@
+
+
+## [invidious-2.0.0](https://github.com/truecharts/charts/compare/invidious-1.0.10...invidious-2.0.0) (2023-01-08)
+
diff --git a/stable/invidious/2.0.0/app-readme.md b/stable/invidious/2.0.0/app-readme.md
new file mode 100644
index 00000000000..c9a7da31c83
--- /dev/null
+++ b/stable/invidious/2.0.0/app-readme.md
@@ -0,0 +1,8 @@
+Open source alternative front-end to YouTube.
+
+This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/invidious](https://truecharts.org/charts/stable/invidious)
+
+---
+
+TrueCharts can only exist due to the incredible effort of our staff.
+Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can!
diff --git a/stable/invidious/2.0.0/charts/common-11.1.2.tgz b/stable/invidious/2.0.0/charts/common-11.1.2.tgz
new file mode 100644
index 00000000000..da62080e8a5
Binary files /dev/null and b/stable/invidious/2.0.0/charts/common-11.1.2.tgz differ
diff --git a/stable/invidious/2.0.0/charts/postgresql-11.0.18.tgz b/stable/invidious/2.0.0/charts/postgresql-11.0.18.tgz
new file mode 100644
index 00000000000..cdad3657e1f
Binary files /dev/null and b/stable/invidious/2.0.0/charts/postgresql-11.0.18.tgz differ
diff --git a/stable/invidious/2.0.0/ix_values.yaml b/stable/invidious/2.0.0/ix_values.yaml
new file mode 100644
index 00000000000..4ff44bd8f99
--- /dev/null
+++ b/stable/invidious/2.0.0/ix_values.yaml
@@ -0,0 +1,136 @@
+image:
+ repository: tccr.io/truecharts/invidious
+ pullPolicy: IfNotPresent
+ tag: latest@sha256:ad84762c8c5c691e303dcb8477d41df204d693a1dfa1a36224bb5ccfa82e5ca2
+
+podSecurityContext:
+ runAsGroup: 0
+ runAsUser: 0
+
+securityContext:
+ readOnlyRootFilesystem: false
+ runAsNonRoot: false
+
+invidious:
+ network:
+ inbound:
+ external_port: 10594
+ https_only: false
+ domain: ""
+ hsts: true
+ outbound:
+ disable_proxy: false
+ pool_size: 100
+ use_quic: false
+ cookies: []
+ force_resolve: "ipv4"
+
+ logging:
+ output: STDOUT
+ log_level: "Info"
+
+ features:
+ popular_enabled: true
+ statistics_enabled: false
+
+ users_accounts:
+ registration_enabled: true
+ login_enabled: true
+ captcha_enabled: true
+ admins: []
+
+ background_jobs:
+ channel_threads: 1
+ channel_refresh_interval: 30m
+ full_refresh: false
+ feed_threads: 1
+ decrypt_polling: false
+
+ jobs:
+ clear_expired_items:
+ enable: true
+ refresh_channels:
+ enable: true
+ refresh_feeds:
+ enable: true
+
+ captcha:
+ captcha_api_url: "https://api.anti-captcha.com"
+ captcha_key: ""
+
+ miscellaneous:
+ banner: ""
+ use_pubsub_feeds: false
+ hmac_key: ""
+ dmca_content: []
+ cache_annotations: false
+ playlist_length_limit: 500
+
+ default_user_preferences:
+ internationalization:
+ locale: en-US
+ region: US
+ captions: []
+ interface:
+ dark_mode: dark
+ thin_mode: false
+ feed_menu: []
+ default_home: Popular
+ max_results: 40
+ annotations: false
+ annotations_subscribed: false
+ comments: []
+ player_style: invidious
+ related_videos: true
+ video_player_behavior:
+ autoplay: false
+ continue: false
+ continue_autoplay: true
+ listen: false
+ video_loop: false
+ video_playback_settings:
+ quality: hd720
+ quality_dash: auto
+ speed: 1.00
+ volume: 100
+ vr_mode: true
+ subscription_feed:
+ latest_only: false
+ notifications_only: false
+ unseen_only: false
+ sort: published
+ miscellaneous:
+ local: false
+ show_nick: true
+ automatic_instance_redirect: false
+ extend_desc: false
+
+envFrom:
+ - secretRef:
+ name: '{{ include "tc.common.names.fullname" . }}-invidious-config'
+
+service:
+ main:
+ ports:
+ main:
+ port: 10594
+ protocol: HTTP
+
+probes:
+ liveness:
+ type: HTTP
+ readiness:
+ type: HTTP
+ startup:
+ type: HTTP
+
+postgresql:
+ enabled: true
+ existingSecret: dbcreds
+ postgresqlDatabase: invidious
+ # DB User cannot be changed
+ # hardcoded from upstream
+ postgresqlUsername: kemal
+
+portal:
+ enabled: true
diff --git a/stable/invidious/2.0.0/questions.yaml b/stable/invidious/2.0.0/questions.yaml
new file mode 100644
index 00000000000..5931365e004
--- /dev/null
+++ b/stable/invidious/2.0.0/questions.yaml
@@ -0,0 +1,2947 @@
+groups:
+ - name: Container Image
+ description: Image to be used for container
+ - name: General Settings
+ description: General Deployment Settings
+ - name: App Configuration
+ description: App Specific Config Options
+ - name: Networking and Services
+ description: Configure Network and Services for Container
+ - name: Storage and Persistence
+ description: Persist and Share Data that is Separate from the Container
+ - name: Ingress
+ description: Ingress Configuration
+ - name: Security and Permissions
+ description: Configure Security Context and Permissions
+ - name: Resources and Devices
+ description: "Specify Resources/Devices to be Allocated to Workload"
+ - name: Middlewares
+ description: Traefik Middlewares
+ - name: Metrics
+ description: Metrics
+ - name: VPN
+ description: VPN
+ - name: Addons
+ description: Addon Configuration
+ - name: Advanced
+ description: Advanced Configuration
+ - name: Documentation
+ description: Documentation
+portals:
+ open:
+ protocols:
+ - "$kubernetes-resource_configmap_portal_protocol"
+ host:
+ - "$kubernetes-resource_configmap_portal_host"
+ ports:
+ - "$kubernetes-resource_configmap_portal_port"
+questions:
+ - variable: global
+ label: Global Settings
+ group: "General Settings"
+ schema:
+ type: dict
+ hidden: true
+ attrs:
+ - variable: isSCALE
+ label: Flag this is SCALE
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: controller
+ group: "General Settings"
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: replicas
+ description: Number of desired pod replicas
+ label: Desired Replicas
+ schema:
+ type: int
+ required: true
+ default: 1
+ - variable: customextraargs
+ group: "General Settings"
+ label: "Extra Args"
+ description: "Do not click this unless you know what you are doing"
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: extraArgs
+ label: Extra Args
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: arg
+ label: Arg
+ schema:
+ type: string
+ - variable: invidious
+ group: App Configuration
+ label: Invidious Configuration
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: network
+ label: Network Configuration
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: inbound
+ label: Inbound
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: external_port
+ label: External Port
+ description: When the invidious instance is behind a proxy, and the proxy listens on a different port than the instance does, this lets invidious know about it.
+ schema:
+ type: int
+ required: true
+ min: 1
+ max: 65535
+ default: 10594
+ - variable: https_only
+ label: HTTPS Only
+ description: Tell Invidious that it is behind a proxy that provides only HTTPS, so all links must use the https:// scheme. This setting MUST be set to true if invidious is behind a reverse proxy serving HTTPs.
+ schema:
+ type: boolean
+ default: false
+ - variable: domain
+ label: Domain
+ description: Domain name under which this instance is hosted. This is used to craft absolute URLs to the instance
+ schema:
+ type: string
+ default: ""
+ - variable: hsts
+ label: HSTS
+ description: Enable/Disable Strict-Transport-Security.
+ schema:
+ type: boolean
+ default: false
+ - variable: outbound
+ label: Outbound
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: disable_proxy
+ label: Disable Proxy
+ description: Disable proxying server-wide. Can be disable as a whole, or only for a single function.
+ schema:
+ type: string
+ required: true
+ default: "false"
+ enum:
+ - value: "false"
+ description: "false"
+ - value: "true"
+ description: "true"
+ - value: dash
+ description: dash
+ - value: livestreams
+ description: livestreams
+ - value: livestreams
+ description: livestreams
+ - value: downloads
+ description: downloads
+ - value: local
+ description: local
+ - variable: pool_size
+ label: Pool Size
+ description: Size of the HTTP pool used to connect to youtube.
+ schema:
+ type: int
+ required: true
+ min: 1
+ default: 100
+ - variable: use_quic
+ label: Use QUIC
+ description: Enable/Disable the use of QUIC (HTTP/3) when connecting to the youtube API and websites
+ schema:
+ type: boolean
+ default: false
+ - variable: cookies
+ label: Cookies
+ description: Additional cookies to be sent when requesting the youtube API.
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: cookie_entry
+ label: Cookie Entry
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: force_resolve
+ label: Force Resolve
+ description: Force connection to youtube over a specific IP family.
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: No Force
+ - value: ipv4
+ description: ipv4
+ - value: ipv6
+ description: ipv6
+ - variable: logging
+ label: Logging Configuration
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: output
+ label: Output
+ description: STDOUT or Path to log file. Can be absolute or relative to the invidious binary.
+ schema:
+ type: string
+ required: true
+ default: STDOUT
+ - variable: log_level
+ label: Log Level
+ description: Logging Verbosity.
+ schema:
+ type: string
+ required: true
+ default: Info
+ enum:
+ - value: Info
+ description: Info
+ - value: Trace
+ description: Trace
+ - value: Debug
+ description: Debug
+ - value: Warn
+ description: Warn
+ - value: Error
+ description: Error
+ - value: Fatal
+ description: Fatal
+ - value: "Off"
+ description: "Off"
+ - value: All
+ description: All
+ - variable: features
+ label: Features Configuration
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: popular_enabled
+ label: Popular Enabled
+ description: Enable/Disable the "Popular" tab on the main page.
+ schema:
+ type: boolean
+ default: true
+ - variable: statistics_enabled
+ label: Statistics Enabled
+ description: Enable/Disable statistics (available at /api/v1/stats).
+ schema:
+ type: boolean
+ default: false
+ - variable: users_accounts
+ label: Users and Accounts
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: registration_enabled
+ label: Registration Enabled
+ description: Allow/Forbid Invidious (local) account creation. Invidious accounts allow users to subscribe to channels and to create playlists without a Google account.
+ schema:
+ type: boolean
+ default: true
+ - variable: login_enabled
+ label: Login Enabled
+ description: Allow/Forbid users to log-in. This setting affects the ability to connect with BOTH Google and Invidious (local) accounts.
+ schema:
+ type: boolean
+ default: true
+ - variable: captcha_enabled
+ label: Captcha Enabled
+ description: Enable/Disable the captcha challenge on the login page.
+ schema:
+ type: boolean
+ default: true
+ - variable: admins
+ label: Admins
+ description: List of usernames that will be granted administrator rights.
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: adminEntry
+ label: Admin Entry
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: background_jobs
+ label: Background Jobs
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: channel_threads
+ label: Channel Threads
+ description: Number of threads to use when crawling channel videos (during subscriptions update).
+ schema:
+ type: int
+ required: true
+ min: 1
+ default: 1
+ - variable: channel_refresh_interval
+ label: Channel Refresh Interval
+ description: Time interval between two executions of the job that crawls channel videos (subscriptions update).
+ schema:
+ type: string
+ required: true
+ default: 30m
+ - variable: full_refresh
+ label: Full Refresh
+ description: Forcefully dump and re-download the entire list of uploaded videos when crawling channel (during subscriptions update).
+ schema:
+ type: boolean
+ default: false
+ - variable: feed_threads
+ label: Feed Threads
+ description: Number of threads to use when updating RSS feeds.
+ schema:
+ type: int
+ required: true
+ min: 1
+ default: 1
+ - variable: decrypt_polling
+ label: Decrypt Polling
+ description: Enable/Disable the polling job that keeps the decryption function (for "secured" videos) up to date.
+ schema:
+ type: boolean
+ default: false
+ - variable: jobs
+ label: Jobs Configuration
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: clear_expired_items
+ label: Clear Expired Items
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enable
+ label: Enable
+ description: Enable the database cleaning job
+ schema:
+ type: boolean
+ default: true
+ - variable: refresh_channels
+ label: Refresh Channels
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enable
+ label: Enable
+ description: Enable the channels updater job
+ schema:
+ type: boolean
+ default: true
+ - variable: refresh_feeds
+ label: Refresh Feeds
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enable
+ label: Enable
+ description: Enable the RSS feeds updater job
+ schema:
+ type: boolean
+ default: true
+ - variable: captcha
+ label: Captcha
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: captcha_api_url
+ label: Captcha API URL
+ description: URL of the captcha solving service.
+ schema:
+ type: string
+ required: true
+ default: https://api.anti-captcha.com
+ - variable: captcha_key
+ label: Captcha API Key
+ description: API key for the captcha solving service.
+ schema:
+ type: string
+ private: true
+ default: ""
+ - variable: miscellaneous
+ label: Miscellaneous
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: banner
+ label: Banner
+ description: Custom banner displayed at the top of every page. This can used for instance announcements, e.g.
+ schema:
+ type: string
+ default: ""
+ - variable: use_pubsub_feeds
+ label: Use PuBSub Feeds
+ description: Subscribe to channels using PubSubHub (Google PubSubHubbub service). PubSubHub allows Invidious to be instantly notified when a new video is published on any subscribed channels
+ schema:
+ type: boolean
+ default: false
+ - variable: hmac_key
+ label: HMAC Key
+ description: HMAC signing key used for CSRF tokens and pubsub subscriptions verification.
+ schema:
+ type: string
+ private: true
+ default: ""
+ - variable: dmca_content
+ label: DMCA Content
+ description: List of video IDs where the "download" widget must be disabled, in order to comply with DMCA requests.
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: dmcaEntry
+ label: DMCA Entry
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: cache_annotations
+ label: Cache Annotations
+ description: Cache video annotations in the database.
+ schema:
+ type: boolean
+ default: false
+ - variable: playlist_length_limit
+ label: Playlist Length Limit
+ description: Maximum custom playlist length limit.
+ schema:
+ type: int
+ required: true
+ default: 500
+ - variable: default_user_preferences
+ label: Default User Preferences
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: internationalization
+ label: Internationalization
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: locale
+ label: Locale
+ description: Default user interface language (locale).
+ schema:
+ type: string
+ required: true
+ default: en-US
+ enum:
+ - value: ar
+ description: Arabic
+ - value: da
+ description: Danish
+ - value: de
+ description: German
+ - value: en-US
+ description: English, US
+ - value: el
+ description: Greek
+ - value: eo
+ description: Esperanto
+ - value: es
+ description: Spanish
+ - value: fa
+ description: Persian
+ - value: fi
+ description: Finnish
+ - value: fr
+ description: French
+ - value: he
+ description: Hebrew
+ - value: hr
+ description: Hungarian
+ - value: id
+ description: Indonesian
+ - value: is
+ description: Icelandic
+ - value: it
+ description: Italian
+ - value: ja
+ description: Japanese
+ - value: nb-NO
+ description: Norwegian, Bomkmal
+ - value: nl
+ description: Dutch
+ - value: pl
+ description: Polish
+ - value: pt-BR
+ description: Portuguese, Brazil
+ - value: pt-PT
+ description: Portuguese, Portugal
+ - value: ro
+ description: Romanian
+ - value: ru
+ description: Russian
+ - value: sv
+ description: Swedish
+ - value: tr
+ description: Turkish
+ - value: uk
+ description: Ukrainian
+ - value: zh-CN
+ description: Chinese, China (Simplified Chinese)
+ - value: zh-TW
+ description: Chinese, Taiwan (Traditional Chinese)
+ - variable: region
+ label: Region
+ description: Default geographical location for content.
+ schema:
+ type: string
+ required: true
+ default: US
+ enum:
+ - value: AE
+ description: AE
+ - value: AR
+ description: AR
+ - value: AT
+ description: AT
+ - value: AU
+ description: AU
+ - value: AZ
+ description: AZ
+ - value: BA
+ description: BA
+ - value: BD
+ description: BD
+ - value: BE
+ description: BE
+ - value: BG
+ description: BG
+ - value: BH
+ description: BH
+ - value: BO
+ description: BO
+ - value: BR
+ description: BR
+ - value: BY
+ description: BY
+ - value: CA
+ description: CA
+ - value: CH
+ description: CH
+ - value: CL
+ description: CL
+ - value: CO
+ description: CO
+ - value: CR
+ description: CR
+ - value: CY
+ description: CY
+ - value: CZ
+ description: CZ
+ - value: DE
+ description: DE
+ - value: DK
+ description: DK
+ - value: DO
+ description: DO
+ - value: DZ
+ description: DZ
+ - value: EC
+ description: EC
+ - value: EE
+ description: EE
+ - value: EG
+ description: EG
+ - value: ES
+ description: ES
+ - value: FI
+ description: FI
+ - value: FR
+ description: FR
+ - value: GB
+ description: GB
+ - value: GE
+ description: GE
+ - value: GH
+ description: GH
+ - value: GR
+ description: GR
+ - value: GT
+ description: GT
+ - value: HK
+ description: HK
+ - value: HN
+ description: HN
+ - value: HR
+ description: HR
+ - value: HU
+ description: HU
+ - value: ID
+ description: ID
+ - value: IE
+ description: IE
+ - value: IL
+ description: IL
+ - value: IN
+ description: IN
+ - value: IQ
+ description: IQ
+ - value: IS
+ description: IS
+ - value: IT
+ description: IT
+ - value: JM
+ description: JM
+ - value: JO
+ description: JO
+ - value: JP
+ description: JP
+ - value: KE
+ description: KE
+ - value: KR
+ description: KR
+ - value: KW
+ description: KW
+ - value: KZ
+ description: KZ
+ - value: LB
+ description: LB
+ - value: LI
+ description: LI
+ - value: LK
+ description: LK
+ - value: LT
+ description: LT
+ - value: LU
+ description: LU
+ - value: LV
+ description: LV
+ - value: LY
+ description: LY
+ - value: MA
+ description: MA
+ - value: ME
+ description: ME
+ - value: MK
+ description: MK
+ - value: MT
+ description: MT
+ - value: MX
+ description: MX
+ - value: MY
+ description: MY
+ - value: NG
+ description: NG
+ - value: NI
+ description: NI
+ - value: NL
+ description: NL
+ - value: "NO"
+ description: "NO"
+ - value: NP
+ description: NP
+ - value: NZ
+ description: NZ
+ - value: OM
+ description: OM
+ - value: PA
+ description: PA
+ - value: PE
+ description: PE
+ - value: PG
+ description: PG
+ - value: PH
+ description: PH
+ - value: PK
+ description: PK
+ - value: PL
+ description: PL
+ - value: PR
+ description: PR
+ - value: PT
+ description: PT
+ - value: PY
+ description: PY
+ - value: QA
+ description: QA
+ - value: RO
+ description: RO
+ - value: RS
+ description: RS
+ - value: RU
+ description: RU
+ - value: SA
+ description: SA
+ - value: SE
+ description: SE
+ - value: SG
+ description: SG
+ - value: SI
+ description: SI
+ - value: SK
+ description: SK
+ - value: SN
+ description: SN
+ - value: SV
+ description: SV
+ - value: TH
+ description: TH
+ - value: TN
+ description: TN
+ - value: TR
+ description: TR
+ - value: TW
+ description: TW
+ - value: TZ
+ description: TZ
+ - value: UA
+ description: UA
+ - value: UG
+ description: UG
+ - value: US
+ description: US
+ - value: UY
+ description: UY
+ - value: VE
+ description: VE
+ - value: VN
+ description: VN
+ - value: YE
+ description: YE
+ - value: ZA
+ description: ZA
+ - value: ZW
+ description: ZW
+ - variable: captions
+ label: Captions
+ description: Top 3 preferred languages for video captions. Exactly 3 Captions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: captionEntry
+ label: Caption Entry
+ schema:
+ type: string
+ required: true
+ default: ""
+ enum:
+ - value: English
+ description: English
+ - value: English (auto-generated)
+ description: English (auto-generated)
+ - value: Afrikaans
+ description: Afrikaans
+ - value: Albanian
+ description: Albanian
+ - value: Amharic
+ description: Amharic
+ - value: Arabic
+ description: Arabic
+ - value: Armenian
+ description: Armenian
+ - value: Azerbaijani
+ description: Azerbaijani
+ - value: Bangla
+ description: Bangla
+ - value: Basque
+ description: Basque
+ - value: Belarusian
+ description: Belarusian
+ - value: Bosnian
+ description: Bosnian
+ - value: Bulgarian
+ description: Bulgarian
+ - value: Burmese
+ description: Burmese
+ - value: Catalan
+ description: Catalan
+ - value: Cebuano
+ description: Cebuano
+ - value: Chinese (Simplified)
+ description: Chinese (Simplified)
+ - value: Chinese (Traditional)
+ description: Chinese (Traditional)
+ - value: Corsican
+ description: Corsican
+ - value: Croatian
+ description: Croatian
+ - value: Czech
+ description: Czech
+ - value: Danish
+ description: Danish
+ - value: Dutch
+ description: Dutch
+ - value: Esperanto
+ description: Esperanto
+ - value: Estonian
+ description: Estonian
+ - value: Filipino
+ description: Filipino
+ - value: Finnish
+ description: Finnish
+ - value: French
+ description: French
+ - value: Galician
+ description: Galician
+ - value: Georgian
+ description: Georgian
+ - value: German
+ description: German
+ - value: Greek
+ description: Greek
+ - value: Gujarati
+ description: Gujarati
+ - value: Haitian Creole
+ description: Haitian Creole
+ - value: Hausa
+ description: Hausa
+ - value: Hawaiian
+ description: Hawaiian
+ - value: Hebrew
+ description: Hebrew
+ - value: Hindi
+ description: Hindi
+ - value: Hmong
+ description: Hmong
+ - value: Hungarian
+ description: Hungarian
+ - value: Icelandic
+ description: Icelandic
+ - value: Igbo
+ description: Igbo
+ - value: Indonesian
+ description: Indonesian
+ - value: Irish
+ description: Irish
+ - value: Italian
+ description: Italian
+ - value: Japanese
+ description: Japanese
+ - value: Javanese
+ description: Javanese
+ - value: Kannada
+ description: Kannada
+ - value: Kazakh
+ description: Kazakh
+ - value: Khmer
+ description: Khmer
+ - value: Korean
+ description: Korean
+ - value: Kurdish
+ description: Kurdish
+ - value: Kyrgyz
+ description: Kyrgyz
+ - value: Lao
+ description: Lao
+ - value: Latin
+ description: Latin
+ - value: Latvian
+ description: Latvian
+ - value: Lithuanian
+ description: Lithuanian
+ - value: Luxembourgish
+ description: Luxembourgish
+ - value: Macedonian
+ description: Macedonian
+ - value: Malagasy
+ description: Malagasy
+ - value: Malay
+ description: Malay
+ - value: Malayalam
+ description: Malayalam
+ - value: Maltese
+ description: Maltese
+ - value: Maori
+ description: Maori
+ - value: Marathi
+ description: Marathi
+ - value: Mongolian
+ description: Mongolian
+ - value: Nepali
+ description: Nepali
+ - value: Norwegian Bokmål
+ description: Norwegian Bokmål
+ - value: Nyanja
+ description: Nyanja
+ - value: Pashto
+ description: Pashto
+ - value: Persian
+ description: Persian
+ - value: Polish
+ description: Polish
+ - value: Portuguese
+ description: Portuguese
+ - value: Punjabi
+ description: Punjabi
+ - value: Romanian
+ description: Romanian
+ - value: Russian
+ description: Russian
+ - value: Samoan
+ description: Samoan
+ - value: Scottish Gaelic
+ description: Scottish Gaelic
+ - value: Serbian
+ description: Serbian
+ - value: Shona
+ description: Shona
+ - value: Sindhi
+ description: Sindhi
+ - value: Sinhala
+ description: Sinhala
+ - value: Slovak
+ description: Slovak
+ - value: Slovenian
+ description: Slovenian
+ - value: Somali
+ description: Somali
+ - value: Southern Sotho
+ description: Southern Sotho
+ - value: Spanish
+ description: Spanish
+ - value: Spanish (Latin America)
+ description: Spanish (Latin America)
+ - value: Sundanese
+ description: Sundanese
+ - value: Swahili
+ description: Swahili
+ - value: Swedish
+ description: Swedish
+ - value: Tajik
+ description: Tajik
+ - value: Tamil
+ description: Tamil
+ - value: Telugu
+ description: Telugu
+ - value: Thai
+ description: Thai
+ - value: Turkish
+ description: Turkish
+ - value: Ukrainian
+ description: Ukrainian
+ - value: Urdu
+ description: Urdu
+ - value: Uzbek
+ description: Uzbek
+ - value: Vietnamese
+ description: Vietnamese
+ - value: Welsh
+ description: Welsh
+ - value: Western Frisian
+ description: Western Frisian
+ - value: Xhosa
+ description: Xhosa
+ - value: Yiddish
+ description: Yiddish
+ - value: Yoruba
+ description: Yoruba
+ - value: Zulu
+ description: Zulu
+ - variable: interface
+ label: Interface
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: dark_mode
+ label: Dark Mode
+ description: Enable/Disable dark mode.
+ schema:
+ type: string
+ required: true
+ default: auto
+ enum:
+ - value: auto
+ description: Auto
+ - value: dark
+ description: Dark
+ - value: light
+ description: Light
+ - variable: thin_mode
+ label: Thin Mode
+ description: Enable/Disable thin mode (no video thumbnails).
+ schema:
+ type: boolean
+ default: false
+ - variable: feed_menu
+ label: Feed Menu
+ description: List of feeds available on the home page. Defaults to all. Max 4 feed items
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: feedEntry
+ label: Feed Entry
+ schema:
+ type: string
+ required: true
+ default: ""
+ enum:
+ - value: Popular
+ description: Popular
+ - value: Trending
+ description: Trending
+ - value: Subscriptions
+ description: Subscriptions
+ - value: Playlists
+ description: Playlists
+ - variable: default_home
+ label: Default Home
+ description: Default feed to display on the home page.
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: None
+ - value: Popular
+ description: Popular
+ - value: Trending
+ description: Trending
+ - value: Subscriptions
+ description: Subscriptions
+ - value: Playlists
+ description: Playlists
+ - variable: max_results
+ label: Max Results
+ description: Default number of results to display per page.
+ schema:
+ type: int
+ required: true
+ default: 40
+ - variable: annotations
+ label: Annotations
+ description: Show/hide annotations.
+ schema:
+ type: boolean
+ default: false
+ - variable: annotations_subscribed
+ label: Annotations Subscribed
+ description: Show/hide subscribed annotations.
+ schema:
+ type: boolean
+ default: false
+ - variable: comments
+ label: Comments
+ description: Type of comments to display below video. Exactly 2 Types
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: commentEntry
+ label: Comment Entry
+ schema:
+ type: string
+ required: true
+ default: ""
+ enum:
+ - value: ""
+ description: None
+ - value: youtube
+ description: Youtube
+ - value: reddit
+ description: Reddit
+ - variable: player_style
+ label: Player Style
+ description: Default player style.
+ schema:
+ type: string
+ required: true
+ default: invidious
+ enum:
+ - value: invidious
+ description: Invidious
+ - value: youtube
+ description: Youtube
+ - variable: related_videos
+ label: Related Videos
+ description: Show/Hide the "related videos" sidebar when watching a video.
+ schema:
+ type: boolean
+ default: true
+ - variable: video_player_behavior
+ label: Video Player Behavior
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: autoplay
+ label: Autoplay
+ description: Automatically play videos on page load.
+ schema:
+ type: boolean
+ default: false
+ - variable: continue
+ label: Continue
+ description: Automatically load the "next" video (either next in playlist or proposed) when the current video ends.
+ schema:
+ type: boolean
+ default: false
+ - variable: continue_autoplay
+ label: Continue Autoplay
+ description: Autoplay next video by default.
+ schema:
+ type: boolean
+ default: true
+ - variable: listen
+ label: Listen
+ description: Play videos in Audio-only mode by default.
+ schema:
+ type: boolean
+ default: false
+ - variable: video_loop
+ label: Video Loop
+ description: Loop videos automatically.
+ schema:
+ type: boolean
+ default: false
+ - variable: video_playback_settings
+ label: Video Playback Settings
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: quality
+ label: Quality
+ description: Default video quality.
+ schema:
+ type: string
+ required: true
+ default: hd720
+ enum:
+ - value: hd720
+ description: HD720
+ - value: dash
+ description: Dash
+ - value: medium
+ description: Medium
+ - value: small
+ description: Small
+ - variable: quality_dash
+ label: Quality Dash
+ description: Default dash video quality.
+ schema:
+ type: string
+ show_if: [["quality", "=", "dash"]]
+ required: true
+ default: auto
+ enum:
+ - value: auto
+ description: Auto
+ - value: best
+ description: Best
+ - value: 4320p
+ description: 4320p
+ - value: 2160p
+ description: 2160p
+ - value: 1440p
+ description: 1440p
+ - value: 1080p
+ description: 1080p
+ - value: 720p
+ description: 720p
+ - value: 480p
+ description: 480p
+ - value: 480p
+ description: 480p
+ - value: 360p
+ description: 360p
+ - value: 240p
+ description: 240p
+ - value: 144p
+ description: 144p
+ - value: worst
+ description: Worst
+ - variable: speed
+ label: Speed
+ description: Default video playback speed.
+ schema:
+ type: string
+ required: true
+ valid_chars: '^[0-9]+(\.[0-9]{1,2})?$'
+ default: "1.00"
+ - variable: volume
+ label: Volume
+ description: Default volume.
+ schema:
+ type: int
+ min: 1
+ max: 100
+ required: true
+ default: 100
+ - variable: vr_mode
+ label: VR Mode
+ description: Allow 360° videos to be played.
+ schema:
+ type: boolean
+ default: false
+ - variable: subscription_feed
+ label: Subscription Feed
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: latest_only
+ label: Latest Only
+ description: In the "Subscription" feed, only show the latest video of each channel the user is subscribed to.
+ schema:
+ type: boolean
+ default: false
+ - variable: notifications_only
+ label: Notifications Only
+ description: Enable/Disable user subscriptions desktop notifications.
+ schema:
+ type: boolean
+ default: false
+ - variable: unseen_only
+ label: Unseen Only
+ description: In the "Subscription" feed, Only show the videos that the user haven't watched yet.
+ schema:
+ type: boolean
+ default: false
+ - variable: sort
+ label: Sort
+ description: Default sorting parameter for subscription feeds.
+ schema:
+ type: string
+ required: true
+ default: published
+ enum:
+ - value: alphabetically
+ description: Alphabetically
+ - value: alphabetically - reverse
+ description: Alphabetically - Reverse
+ - value: channel name
+ description: Channel Name
+ - value: channel name - reverse
+ description: Channel Name - Reverse
+ - value: published
+ description: Published
+ - value: published - reverse
+ description: Published - Reverse
+ - variable: miscellaneous
+ label: Miscellaneous
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: local
+ label: Local
+ description: Proxy videos through instance by default.
+ schema:
+ type: boolean
+ default: false
+ - variable: show_nick
+ label: Show Nick
+ description: Show the connected user's nick at the top right.
+ schema:
+ type: boolean
+ default: true
+ - variable: automatic_instance_redirect
+ label: Automatic Instance Redirect
+ description: Automatically redirect to a random instance when the user uses any "switch invidious instance" link
+ schema:
+ type: boolean
+ default: false
+ - variable: extend_desc
+ label: Extend Description
+ description: Show the entire video description
+ schema:
+ type: boolean
+ default: false
+ - variable: TZ
+ label: Timezone
+ group: "General Settings"
+ schema:
+ type: string
+ default: "Etc/UTC"
+ $ref:
+ - "definitions/timezone"
+ - variable: envList
+ label: Extra Environment Variables
+ description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..."
+ group: "General Settings"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ - variable: service
+ group: Networking and Services
+ label: Configure Service(s)
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: Main Service
+ description: The Primary service on which the healthcheck runs, often the webUI
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable the Service
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: Service Type
+ description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer"
+ schema:
+ type: string
+ default: LoadBalancer
+ enum:
+ - value: LoadBalancer
+ description: LoadBalancer (Expose Ports)
+ - value: ClusterIP
+ description: ClusterIP (Do Not Expose Ports)
+ - value: Simple
+ description: Deprecated CHANGE THIS
+ - variable: loadBalancerIP
+ label: LoadBalancer IP
+ description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB"
+ schema:
+ show_if: [["type", "=", "LoadBalancer"]]
+ type: string
+ default: ""
+ - variable: ports
+ label: "Service's Port(s) Configuration"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: Main Service Port Configuration
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ description: This port exposes the container port on the service
+ schema:
+ type: int
+ default: 10594
+ required: true
+ - variable: serviceexpert
+ group: Networking and Services
+ label: Show Expert Config
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: hostNetwork
+ group: Networking and Services
+ label: Host-Networking (Complicated)
+ schema:
+ type: boolean
+ default: false
+ - variable: externalInterfaces
+ description: Add External Interfaces
+ label: Add external Interfaces
+ group: Networking
+ schema:
+ type: list
+ items:
+ - variable: interfaceConfiguration
+ description: Interface Configuration
+ label: Interface Configuration
+ schema:
+ type: dict
+ $ref:
+ - "normalize/interfaceConfiguration"
+ attrs:
+ - variable: hostInterface
+ description: Please Specify Host Interface
+ label: Host Interface
+ schema:
+ type: string
+ required: true
+ $ref:
+ - "definitions/interface"
+ - variable: ipam
+ description: Define how IP Address will be managed
+ label: IP Address Management
+ schema:
+ type: dict
+ required: true
+ attrs:
+ - variable: type
+ description: Specify type for IPAM
+ label: IPAM Type
+ schema:
+ type: string
+ required: true
+ enum:
+ - value: dhcp
+ description: Use DHCP
+ - value: static
+ description: Use Static IP
+ show_subquestions_if: static
+ subquestions:
+ - variable: staticIPConfigurations
+ label: Static IP Addresses
+ schema:
+ type: list
+ items:
+ - variable: staticIP
+ label: Static IP
+ schema:
+ type: ipaddr
+ cidr: true
+ - variable: staticRoutes
+ label: Static Routes
+ schema:
+ type: list
+ items:
+ - variable: staticRouteConfiguration
+ label: Static Route Configuration
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: destination
+ label: Destination
+ schema:
+ type: ipaddr
+ cidr: true
+ required: true
+ - variable: gateway
+ label: Gateway
+ schema:
+ type: ipaddr
+ cidr: false
+ required: true
+ - variable: serviceList
+ label: Add Manual Custom Services
+ group: Networking and Services
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: serviceListEntry
+ label: Custom Service
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable the service
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ default: ""
+ - variable: type
+ label: Service Type
+ description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer"
+ schema:
+ type: string
+ default: LoadBalancer
+ enum:
+ - value: LoadBalancer
+ description: LoadBalancer (Expose Ports)
+ - value: ClusterIP
+ description: ClusterIP (Do Not Expose Ports)
+ - value: Simple
+ description: Deprecated CHANGE THIS
+ - variable: loadBalancerIP
+ label: LoadBalancer IP
+ description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB"
+ schema:
+ show_if: [["type", "=", "LoadBalancer"]]
+ type: string
+ default: ""
+ - variable: advancedsvcset
+ label: Show Advanced Service Settings
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: externalIPs
+ label: "External IP's"
+ description: "External IP's"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: externalIP
+ label: External IP
+ schema:
+ type: string
+ - variable: ipFamilyPolicy
+ label: IP Family Policy
+ description: Specify the IP Policy
+ schema:
+ type: string
+ default: SingleStack
+ enum:
+ - value: SingleStack
+ description: SingleStack
+ - value: PreferDualStack
+ description: PreferDualStack
+ - value: RequireDualStack
+ description: RequireDualStack
+ - variable: ipFamilies
+ label: IP Families
+ description: (Advanced) The IP Families that should be used
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: ipFamily
+ label: IP Family
+ schema:
+ type: string
+ - variable: portsList
+ label: Additional Service Ports
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: portsListEntry
+ label: Custom ports
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable the Port
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: name
+ label: Port Name
+ schema:
+ type: string
+ default: ""
+ - variable: protocol
+ label: Port Type
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: HTTP
+ description: HTTP
+ - value: HTTPS
+ description: HTTPS
+ - value: TCP
+ description: TCP
+ - value: UDP
+ description: UDP
+ - variable: targetPort
+ label: Target Port
+ description: This port exposes the container port on the service
+ schema:
+ type: int
+ required: true
+ - variable: port
+ label: Container Port
+ schema:
+ type: int
+ required: true
+ - variable: persistenceList
+ label: Additional App Storage
+ group: Storage and Persistence
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: persistenceListEntry
+ label: Custom Storage
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable the storage
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: Type of Storage
+ description: Sets the persistence type, Anything other than PVC could break rollback!
+ schema:
+ type: string
+ default: hostPath
+ enum:
+ - value: pvc
+ description: PVC
+ - value: hostPath
+ description: Host Path
+ - value: emptyDir
+ description: emptyDir
+ - value: nfs
+ description: NFS Share
+ - variable: server
+ label: NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: path
+ label: Path on NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: setPermissions
+ label: Automatic Permissions
+ description: Automatically set permissions on install
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: boolean
+ default: false
+ - variable: readOnly
+ label: Read Only
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPath
+ label: Host Path
+ description: Path inside the container the storage is mounted
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: hostpath
+ - variable: mountPath
+ label: Mount Path
+ description: Path inside the container the storage is mounted
+ schema:
+ type: string
+ default: ""
+ required: true
+ valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$'
+ - variable: medium
+ label: EmptyDir Medium
+ schema:
+ show_if: [["type", "=", "emptyDir"]]
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: Memory
+ description: Memory
+ - variable: size
+ label: Size Quotum of Storage
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: 256Gi
+ - variable: ingress
+ label: ""
+ group: Ingress
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: Main Ingress
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable Ingress
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: hosts
+ label: Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: hostEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: host
+ label: HostName
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: paths
+ label: Paths
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: pathEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: path
+ label: Path
+ schema:
+ type: string
+ required: true
+ default: "/"
+ - variable: pathType
+ label: Path Type
+ schema:
+ type: string
+ required: true
+ default: Prefix
+ - variable: tls
+ label: TLS-Settings
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: tlsEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: hosts
+ label: Certificate Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: Host
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: scaleCert
+ label: Select TrueNAS SCALE Certificate
+ schema:
+ type: int
+ $ref:
+ - "definitions/certificate"
+ - variable: entrypoint
+ label: (Advanced) Traefik Entrypoint
+ description: Entrypoint used by Traefik when using Traefik as Ingress Provider
+ schema:
+ type: string
+ default: websecure
+ required: true
+ - variable: ingressClassName
+ label: (Advanced/Optional) IngressClass Name
+ schema:
+ type: string
+ default: ""
+ - variable: middlewares
+ label: Traefik Middlewares
+ description: Add previously created Traefik Middlewares to this Ingress
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: ingressList
+ label: Add Manual Custom Ingresses
+ group: Ingress
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: ingressListEntry
+ label: Custom Ingress
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable Ingress
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ default: ""
+ - variable: ingressClassName
+ label: IngressClass Name
+ schema:
+ type: string
+ default: ""
+ - variable: hosts
+ label: Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: hostEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: host
+ label: HostName
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: paths
+ label: Paths
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: pathEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: path
+ label: Path
+ schema:
+ type: string
+ required: true
+ default: "/"
+ - variable: pathType
+ label: Path Type
+ schema:
+ type: string
+ required: true
+ default: Prefix
+ - variable: service
+ label: Linked Service
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Service Name
+ schema:
+ type: string
+ default: ""
+ - variable: port
+ label: Service Port
+ schema:
+ type: int
+ - variable: tls
+ label: TLS-Settings
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: tlsEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: hosts
+ label: Certificate Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: Host
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: scaleCert
+ label: Select TrueNAS SCALE Certificate
+ schema:
+ type: int
+ $ref:
+ - "definitions/certificate"
+ - variable: entrypoint
+ label: Traefik Entrypoint
+ description: Entrypoint used by Traefik when using Traefik as Ingress Provider
+ schema:
+ type: string
+ default: websecure
+ required: true
+ - variable: middlewares
+ label: Traefik Middlewares
+ description: Add previously created Traefik Middlewares to this Ingress
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: security
+ label: Container Security Settings
+ group: Security and Permissions
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: editsecurity
+ label: Change PUID / UMASK values
+ description: By enabling this you override default set values.
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: PUID
+ label: Process User ID - PUID
+ description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps
+ schema:
+ type: int
+ default: 568
+ - variable: UMASK
+ label: UMASK
+ description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps
+ schema:
+ type: string
+ default: "002"
+ - variable: advancedSecurity
+ label: Show Advanced Security Settings
+ group: Security and Permissions
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: securityContext
+ label: Security Context
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: privileged
+ label: Privileged mode
+ schema:
+ type: boolean
+ default: false
+ - variable: readOnlyRootFilesystem
+ label: ReadOnly Root Filesystem
+ schema:
+ type: boolean
+ default: false
+ - variable: allowPrivilegeEscalation
+ label: Allow Privilege Escalation
+ schema:
+ type: boolean
+ default: false
+ - variable: runAsNonRoot
+ label: runAsNonRoot
+ schema:
+ type: boolean
+ default: false
+ - variable: podSecurityContext
+ group: Security and Permissions
+ label: Pod Security Context
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: runAsUser
+ label: runAsUser
+ description: The UserID of the user running the application
+ schema:
+ type: int
+ default: 0
+ - variable: runAsGroup
+ label: runAsGroup
+ description: The groupID this App of the user running the application
+ schema:
+ type: int
+ default: 0
+ - variable: fsGroup
+ label: fsGroup
+ description: The group that should own ALL storage.
+ schema:
+ type: int
+ default: 568
+ - variable: fsGroupChangePolicy
+ label: "When should we take ownership?"
+ schema:
+ type: string
+ default: OnRootMismatch
+ enum:
+ - value: OnRootMismatch
+ description: OnRootMismatch
+ - value: Always
+ description: Always
+ - variable: supplementalGroups
+ label: Supplemental Groups
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: supplementalGroupsEntry
+ label: Supplemental Group
+ schema:
+ type: int
+ - variable: resources
+ group: Resources and Devices
+ label: "Resource Limits"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: limits
+ label: Advanced Limit Resource Consumption
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: cpu
+ label: CPU
+ description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation"
+ schema:
+ type: string
+ default: 4000m
+ valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$'
+ - variable: memory
+ label: RAM
+ description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation"
+ schema:
+ type: string
+ default: 8Gi
+ valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$'
+ - variable: requests
+ label: "Minimum Resources Required (request)"
+ schema:
+ additional_attrs: true
+ type: dict
+ hidden: true
+ attrs:
+ - variable: cpu
+ label: CPU
+ description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation"
+ schema:
+ type: string
+ default: 10m
+ hidden: true
+ valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$'
+ - variable: memory
+ label: "RAM"
+ description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation"
+ schema:
+ type: string
+ default: 50Mi
+ hidden: true
+ valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$'
+ - variable: deviceList
+ label: Mount USB Devices
+ group: Resources and Devices
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: deviceListEntry
+ label: Device
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable the Storage
+ schema:
+ type: boolean
+ default: true
+ - variable: type
+ label: (Advanced) Type of Storage
+ description: Sets the persistence type
+ schema:
+ type: string
+ default: hostPath
+ hidden: true
+ - variable: readOnly
+ label: readOnly
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPath
+ label: Host Device Path
+ description: Path to the device on the host system
+ schema:
+ type: path
+ - variable: mountPath
+ label: Container Device Path
+ description: Path inside the container the device is mounted
+ schema:
+ type: string
+ default: "/dev/ttyACM0"
+ # Specify GPU configuration
+ - variable: scaleGPU
+ label: GPU Configuration
+ group: Resources and Devices
+ schema:
+ type: dict
+ $ref:
+ - "definitions/gpuConfiguration"
+ attrs: []
+ - variable: horizontalPodAutoscaler
+ group: Advanced
+ label: (Advanced) Horizontal Pod Autoscaler
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: hpaEntry
+ label: HPA Entry
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: target
+ label: Target
+ description: Deployment name, Defaults to Main Deployment
+ schema:
+ type: string
+ default: ""
+ - variable: minReplicas
+ label: Minimum Replicas
+ schema:
+ type: int
+ default: 1
+ - variable: maxReplicas
+ label: Maximum Replicas
+ schema:
+ type: int
+ default: 5
+ - variable: targetCPUUtilizationPercentage
+ label: Target CPU Utilization Percentage
+ schema:
+ type: int
+ default: 80
+ - variable: targetMemoryUtilizationPercentage
+ label: Target Memory Utilization Percentage
+ schema:
+ type: int
+ default: 80
+ - variable: networkPolicy
+ group: Advanced
+ label: (Advanced) Network Policy
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: netPolicyEntry
+ label: Network Policy Entry
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: policyType
+ label: Policy Type
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: ingress
+ description: Ingress
+ - value: egress
+ description: Egress
+ - value: ingress-egress
+ description: Ingress and Egress
+ - variable: egress
+ label: Egress
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: egressEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: to
+ label: To
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: toEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: ipBlock
+ label: IP Block
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: cidr
+ label: CIDR
+ schema:
+ type: string
+ default: ""
+ - variable: except
+ label: Except
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: exceptint
+ label: ""
+ schema:
+ type: string
+ - variable: namespaceSelector
+ label: Namespace Selector
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: podSelector
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: ports
+ label: Ports
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: portsEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ - variable: endPort
+ label: End Port
+ schema:
+ type: int
+ - variable: protocol
+ label: Protocol
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: TCP
+ description: TCP
+ - value: UDP
+ description: UDP
+ - value: SCTP
+ description: SCTP
+ - variable: ingress
+ label: Ingress
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: ingressEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: from
+ label: From
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: fromEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: ipBlock
+ label: IP Block
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: cidr
+ label: CIDR
+ schema:
+ type: string
+ default: ""
+ - variable: except
+ label: Except
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: exceptint
+ label: ""
+ schema:
+ type: string
+ - variable: namespaceSelector
+ label: Namespace Selector
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: podSelector
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: ports
+ label: Ports
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: portsEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ - variable: endPort
+ label: End Port
+ schema:
+ type: int
+ - variable: protocol
+ label: Protocol
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: TCP
+ description: TCP
+ - value: UDP
+ description: UDP
+ - value: SCTP
+ description: SCTP
+ - variable: addons
+ group: Addons
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: codeserver
+ label: Codeserver
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: git
+ label: Git Settings
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: deployKey
+ description: Raw SSH Private Key
+ label: Deploy Key
+ schema:
+ type: string
+ - variable: deployKeyBase64
+ description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence
+ label: Deploy Key Base64
+ schema:
+ type: string
+ - variable: service
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Service Type
+ description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer"
+ schema:
+ type: string
+ default: LoadBalancer
+ enum:
+ - value: NodePort
+ description: Deprecated CHANGE THIS
+ - value: ClusterIP
+ description: ClusterIP
+ - value: LoadBalancer
+ description: LoadBalancer
+ - variable: loadBalancerIP
+ label: LoadBalancer IP
+ description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB"
+ schema:
+ show_if: [["type", "=", "LoadBalancer"]]
+ type: string
+ default: ""
+ - variable: advancedsvcset
+ label: Show Advanced Service Settings
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: externalIPs
+ label: "External IP's"
+ description: "External IP's"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: externalIP
+ label: External IP
+ schema:
+ type: string
+ - variable: ipFamilyPolicy
+ label: IP Family Policy
+ description: Specify the IP Policy
+ schema:
+ type: string
+ default: SingleStack
+ enum:
+ - value: SingleStack
+ description: SingleStack
+ - value: PreferDualStack
+ description: PreferDualStack
+ - value: RequireDualStack
+ description: RequireDualStack
+ - variable: ipFamilies
+ label: IP Families
+ description: (Advanced) The IP Families that should be used
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: ipFamily
+ label: IP Family
+ schema:
+ type: string
+ - variable: ports
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: codeserver
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ default: 36107
+ - variable: nodePort
+ description: Leave Empty to Disable
+ label: nodePort DEPRECATED
+ schema:
+ type: int
+ default: 36107
+ - variable: envList
+ label: Codeserver Environment Variables
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ required: true
+ - variable: vpn
+ label: VPN
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type
+ schema:
+ type: string
+ default: disabled
+ enum:
+ - value: disabled
+ description: disabled
+ - value: openvpn
+ description: OpenVPN
+ - value: wireguard
+ description: Wireguard
+ - value: tailscale
+ description: Tailscale
+ - variable: openvpn
+ label: OpenVPN Settings
+ schema:
+ type: dict
+ show_if: [["type", "=", "openvpn"]]
+ attrs:
+ - variable: username
+ label: Authentication Username (Optional)
+ description: Authentication Username, Optional
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: Authentication Password
+ description: Authentication Credentials
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: tailscale
+ label: Tailscale Settings
+ schema:
+ type: dict
+ show_if: [["type", "=", "tailscale"]]
+ attrs:
+ - variable: authkey
+ label: Authentication Key
+ description: Provide an auth key to automatically authenticate the node as your user account.
+ schema:
+ type: string
+ private: true
+ default: ""
+ - variable: auth_once
+ label: Auth Once
+ description: Only attempt to log in if not already logged in.
+ schema:
+ type: boolean
+ default: true
+ - variable: accept_dns
+ label: Accept DNS
+ description: Accept DNS configuration from the admin console.
+ schema:
+ type: boolean
+ default: false
+ - variable: userspace
+ label: Userspace
+ description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device.
+ schema:
+ type: boolean
+ default: false
+ - variable: routes
+ label: Routes
+ description: Expose physical subnet routes to your entire Tailscale network.
+ schema:
+ type: string
+ default: ""
+ - variable: dest_ip
+ label: Destination IP
+ description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched.
+ schema:
+ type: string
+ default: ""
+ - variable: sock5_server
+ label: Sock5 Server
+ description: The address on which to listen for SOCKS5 proxying into the tailscale net.
+ schema:
+ type: string
+ default: ""
+ - variable: outbound_http_proxy_listen
+ label: Outbound HTTP Proxy Listen
+ description: The address on which to listen for HTTP proxying into the tailscale net.
+ schema:
+ type: string
+ default: ""
+ - variable: extra_args
+ label: Extra Args
+ description: Extra Args
+ schema:
+ type: string
+ default: ""
+ - variable: daemon_extra_args
+ label: Tailscale Daemon Extra Args
+ description: Tailscale Daemon Extra Args
+ schema:
+ type: string
+ default: ""
+ - variable: killSwitch
+ label: Enable Killswitch
+ schema:
+ type: boolean
+ show_if: [["type", "!=", "disabled"]]
+ default: true
+ - variable: excludedNetworks_IPv4
+ label: Killswitch Excluded IPv4 networks
+ description: List of Killswitch Excluded IPv4 Addresses
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: networkv4
+ label: IPv4 Network
+ schema:
+ type: string
+ required: true
+ - variable: excludedNetworks_IPv6
+ label: Killswitch Excluded IPv6 networks
+ description: "List of Killswitch Excluded IPv6 Addresses"
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: networkv6
+ label: IPv6 Network
+ schema:
+ type: string
+ required: true
+ - variable: configFile
+ label: VPN Config File Location
+ schema:
+ type: dict
+ show_if: [["type", "!=", "disabled"]]
+ attrs:
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: Type
+ schema:
+ type: string
+ default: hostPath
+ hidden: true
+ - variable: hostPathType
+ label: hostPathType
+ schema:
+ type: string
+ default: File
+ hidden: true
+ - variable: noMount
+ label: noMount
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: hostPath
+ label: Full Path to File
+ description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn"
+ schema:
+ type: string
+ default: ""
+ - variable: envList
+ label: VPN Environment Variables
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ required: true
+ - variable: docs
+ group: Documentation
+ label: Please read the documentation at https://truecharts.org
+ description: Please read the documentation at
+
https://truecharts.org
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: confirmDocs
+ label: I have checked the documentation
+ schema:
+ type: boolean
+ default: true
+ - variable: donateNag
+ group: Documentation
+ label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor
+ description: Please consider supporting TrueCharts, see
+
https://truecharts.org/sponsor
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: confirmDonate
+ label: I have considered donating
+ schema:
+ type: boolean
+ default: true
+ hidden: true
diff --git a/stable/invidious/2.0.0/templates/_config.tpl b/stable/invidious/2.0.0/templates/_config.tpl
new file mode 100644
index 00000000000..f93f15a0249
--- /dev/null
+++ b/stable/invidious/2.0.0/templates/_config.tpl
@@ -0,0 +1,182 @@
+{{/* Define the configmap */}}
+{{- define "invidious.config" -}}
+
+{{- $configName := printf "%s-invidious-config" (include "tc.common.names.fullname" .) }}
+{{- $vNet := .Values.invidious.network }}
+{{- $vLog := .Values.invidious.logging }}
+{{- $vFeat := .Values.invidious.features }}
+{{- $vUserAcc := .Values.invidious.users_accounts }}
+{{- $vBgJobs := .Values.invidious.background_jobs }}
+{{- $vJobs := .Values.invidious.jobs }}
+{{- $vCaptca := .Values.invidious.captcha }}
+{{- $vMisc := .Values.invidious.miscellaneous }}
+{{- $vLoc := .Values.invidious.default_user_preferences.internationalization }}
+{{- $vUI := .Values.invidious.default_user_preferences.interface }}
+{{- $vVidBeh := .Values.invidious.default_user_preferences.video_player_behavior }}
+{{- $vVidPlay := .Values.invidious.default_user_preferences.video_playback_settings }}
+{{- $vSubFeed := .Values.invidious.default_user_preferences.subscription_feed }}
+{{- $vUserMisc := .Values.invidious.default_user_preferences.miscellaneous }}
+---
+apiVersion: v1
+kind: Secret
+metadata:
+ name: {{ $configName }}
+ labels:
+ {{- include "tc.common.labels" . | nindent 4 }}
+stringData:
+ INVIDIOUS_CONFIG: |
+ # Database
+ check_tables: true
+ db:
+ user: {{ .Values.postgresql.postgresqlUsername }}
+ dbname: {{ .Values.postgresql.postgresqlDatabase }}
+ password: {{ .Values.postgresql.postgresqlPassword | trimAll "\"" }}
+ host: {{ .Values.postgresql.url.plain | trimAll "\"" }}
+ port: 5432
+
+ # Network
+ host_binding: 0.0.0.0
+ port: {{ .Values.service.main.ports.main.port }}
+ external_port: {{ $vNet.inbound.external_port }}
+ https_only: {{ $vNet.inbound.https_only }}
+ domain: {{ $vNet.inbound.domain }}
+ hsts: {{ $vNet.inbound.hsts }}
+ disable_proxy: {{ $vNet.outbound.disable_proxy }}
+ pool_size: {{ $vNet.outbound.pool_size }}
+ use_quic: {{ $vNet.outbound.use_quic }}
+ cookies: {{ join "; " $vNet.outbound.cookies }}
+ force_resolve: {{ $vNet.outbound.force_resolve }}
+
+ # Logging
+ output: {{ $vLog.output }}
+ log_level: {{ $vLog.log_level }}
+
+ # Features
+ popular_enabled: {{ $vFeat.popular_enabled }}
+ statistics_enabled: {{ $vFeat.statistics_enabled }}
+
+ # Users and Accounts
+ registration_enabled: {{ $vUserAcc.registration_enabled }}
+ login_enabled: {{ $vUserAcc.login_enabled }}
+ captcha_enabled: {{ $vUserAcc.captcha_enabled }}
+ {{- if $vUserAcc.admins }}
+ admins:
+ {{- range $vUserAcc.admins }}
+ - {{ . }}
+ {{- end }}
+ {{- else }}
+ admins: [""]
+ {{- end }}
+
+ # Background Jobs
+ channel_threads: {{ $vBgJobs.channel_threads }}
+ channel_refresh_interval: {{ $vBgJobs.channel_refresh_interval }}
+ full_refresh: {{ $vBgJobs.full_refresh }}
+ feed_threads: {{ $vBgJobs.feed_threads }}
+ decrypt_polling: {{ $vBgJobs.decrypt_polling }}
+
+ # Jobs
+ jobs:
+ clear_expired_items:
+ enable: {{ $vJobs.clear_expired_items.enable }}
+ refresh_channels:
+ enable: {{ $vJobs.refresh_channels.enable }}
+ refresh_feeds:
+ enable: {{ $vJobs.refresh_feeds.enable }}
+
+ # Captcha
+ captcha_api_url: {{ $vCaptca.captca_api_url }}
+ captcha_key: {{ $vCaptca.captca_key }}
+
+ # Miscellaneaous
+ banner: {{ $vMisc.banner }}
+ use_pubsub_feeds: {{ $vMisc.use_pubsub_feeds }}
+ hmac_key: {{ $vMisc.hmac_key }}
+ {{- if $vMisc.dmca_content }}
+ dmca_content:
+ {{- range $vMisc.dmca_content }}
+ - {{ . }}
+ {{- end }}
+ {{- else }}
+ dmca_content: [""]
+ {{- end }}
+ cache_annotations: {{ $vMisc.cache_annotations }}
+ playlist_length_limit: {{ $vMisc.playlist_length_limit }}
+ modified_source_code_url: ""
+
+ # Default User Preferences
+ default_user_preferences:
+
+ # Internationalization
+ locale: {{ $vLoc.locale }}
+ region: {{ $vLoc.region }}
+ {{- with $vLoc.captions -}}
+ {{- if ne (len .) 3 -}}
+ {{- fail "Exactly 3 entries are required for Captions" -}}
+ {{- end }}
+ captions:
+ {{- range $c := . }}
+ - {{ $c }}
+ {{- end -}}
+ {{- else }}
+ captions: ["","",""]
+ {{- end }}
+
+ # Interface
+ dark_mode: {{ $vUI.dark_mode }}
+ thin_mode: {{ $vUI.thin_mode }}
+ {{- with $vUI.feed_menu }}
+ {{- if gt (len . ) 4 -}}
+ {{- fail "Max 4 Feed menu items are accepted" -}}
+ {{- end }}
+ feed_menu:
+ {{- range $f := . }}
+ - {{ $f }}
+ {{- end -}}
+ {{- else }}
+ feed_menu: ["Popular", "Trending", "Subscriptions", "Playlists"]
+ {{- end }}
+ default_home: {{ $vUI.default_home }}
+ max_results: {{ $vUI.max_results }}
+ annotations: {{ $vUI.annotations }}
+ annotations_subscribed: {{ $vUI.annotations_subscribed }}
+ {{- with $vUI.comments }}
+ {{- if ne (len .) 2 -}}
+ {{- fail "Exactly 2 entries are required for comments" -}}
+ {{- end }}
+ comments:
+ {{- range $c := . }}
+ - {{ $c }}
+ {{- end }}
+ {{- else }}
+ comments: ["youtube", ""]
+ {{- end }}
+ player_style: {{ $vUI.player_style }}
+ related_videos: {{ $vUI.related_videos }}
+
+ # Video Player Behaviour
+ autoplay: {{ $vVidBeh.autoplay }}
+ continue: {{ $vVidBeh.continue }}
+ continue_autoplay: {{ $vVidBeh.continue_autoplay }}
+ listen: {{ $vVidBeh.listen }}
+ video_loop: {{ $vVidBeh.video_loop }}
+
+ # Video Playback Settigns
+ quality: {{ $vVidPlay.quality }}
+ quality_dash: {{ $vVidPlay.quality_dash }}
+ speed: {{ printf "%.2f" ($vVidPlay.speed | float64) }}
+ volume: {{ $vVidPlay.volume }}
+ vr_mode: {{ $vVidPlay.vr_mode }}
+
+ # Subscription Feed
+ latest_only: {{ $vSubFeed.latest_only }}
+ notifications_only: {{ $vSubFeed.notifications_only }}
+ unseen_only: {{ $vSubFeed.unseen_only }}
+ sort: {{ $vSubFeed.sort }}
+
+ # Miscellaneous
+ local: {{ $vUserMisc.local }}
+ show_nick: {{ $vUserMisc.show_nick }}
+ automatic_instance_redirect: {{ $vUserMisc.automatic_instance_redirect }}
+ extend_desc: {{ $vUserMisc.extend_desc }}
+{{- end -}}
diff --git a/stable/invidious/2.0.0/templates/_dbseed.tpl b/stable/invidious/2.0.0/templates/_dbseed.tpl
new file mode 100644
index 00000000000..8c96bc4238c
--- /dev/null
+++ b/stable/invidious/2.0.0/templates/_dbseed.tpl
@@ -0,0 +1,42 @@
+{{- define "invidious.dbseed" -}}
+image: "{{ .Values.ubuntuImage.repository }}:{{ .Values.ubuntuImage.tag }}"
+env:
+ - name: POSTGRES_DB
+ value: {{ .Values.postgresql.postgresqlDatabase }}
+ - name: POSTGRES_USER
+ value: {{ .Values.postgresql.postgresqlUsername }}
+{{/* PG* variables are for the psql client */}}
+ - name: PGPORT
+ value: "5432"
+ - name: PGHOST
+ valueFrom:
+ secretKeyRef:
+ name: dbcreds
+ key: plainhost
+ - name: PGPASSWORD
+ valueFrom:
+ secretKeyRef:
+ name: dbcreds
+ key: postgresql-password
+command:
+ - /bin/sh
+ - -c
+ - |
+ echo "Starting DB Seed..."
+ mkdir -p invidious && cd invidious
+
+ echo "Fetching seed files..."
+ git init && \
+ git remote add invidious https://github.com/iv-org/invidious.git && \
+ git fetch invidious && \
+ # Fetch config and docker dirs
+ git checkout invidious/master -- docker config
+
+ # Move config into docker dir
+ echo "Preparing directory structure..."
+ mv -fv config docker
+
+ echo "Performing the seed..."
+ cd docker
+ ./init-invidious-db.sh
+{{- end -}}
diff --git a/stable/invidious/2.0.0/templates/common.yaml b/stable/invidious/2.0.0/templates/common.yaml
new file mode 100644
index 00000000000..83290053c0d
--- /dev/null
+++ b/stable/invidious/2.0.0/templates/common.yaml
@@ -0,0 +1,9 @@
+{{/* Make sure all variables are set properly */}}
+{{- include "tc.common.loader.init" . }}
+
+{{- include "invidious.config" . }}
+
+{{- $_ := set .Values.installContainers "dbseed" (include "invidious.dbseed" . | fromYaml) -}}
+
+{{/* Render the templates */}}
+{{ include "tc.common.loader.apply" . }}
diff --git a/stable/invidious/2.0.0/values.yaml b/stable/invidious/2.0.0/values.yaml
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/stable/invidious/item.yaml b/stable/invidious/item.yaml
new file mode 100644
index 00000000000..16f09a264c1
--- /dev/null
+++ b/stable/invidious/item.yaml
@@ -0,0 +1,4 @@
+icon_url: https://truecharts.org/img/hotlink-ok/chart-icons/invidious.png
+categories:
+- media
+