From 5b2121418f76b7aefb673015a4d9af52f9a2bca2 Mon Sep 17 00:00:00 2001 From: Xstar97 Date: Sun, 25 Dec 2022 04:13:11 -0500 Subject: [PATCH] WIP feat(invidious) add invidious (#5103) * wip feat(invidious) add invidious * Update charts/incubator/invidious/templates/_config.tpl Co-authored-by: Stavros Kois <47820033+stavros-k@users.noreply.github.com> Signed-off-by: Xstar97 * Update charts/incubator/invidious/templates/_config.tpl Co-authored-by: Stavros Kois <47820033+stavros-k@users.noreply.github.com> Signed-off-by: Xstar97 * INVIDIOUS_CONFIG variable * Update charts/incubator/invidious/templates/_config.tpl Co-authored-by: Stavros Kois <47820033+stavros-k@users.noreply.github.com> Signed-off-by: Xstar97 * Update charts/incubator/invidious/templates/_config.tpl Co-authored-by: Stavros Kois <47820033+stavros-k@users.noreply.github.com> Signed-off-by: Xstar97 * Update charts/incubator/invidious/templates/_config.tpl Co-authored-by: Stavros Kois <47820033+stavros-k@users.noreply.github.com> Signed-off-by: Xstar97 * formatted config * indent * fixes * Update charts/incubator/invidious/values.yaml Signed-off-by: Stavros Kois <47820033+stavros-k@users.noreply.github.com> * Update charts/incubator/invidious/values.yaml Signed-off-by: Stavros Kois <47820033+stavros-k@users.noreply.github.com> * Update charts/incubator/invidious/values.yaml Signed-off-by: Stavros Kois <47820033+stavros-k@users.noreply.github.com> * Update charts/incubator/invidious/values.yaml Signed-off-by: Stavros Kois <47820033+stavros-k@users.noreply.github.com> * Update charts/incubator/invidious/questions.yaml Signed-off-by: Stavros Kois <47820033+stavros-k@users.noreply.github.com> * fixes * add installContainers seeddb * add dbseed * dont run upgrade * fix vars * whops * simplify secret * meh upstream config is a single level everything * user accs * bg jobs * jobs * jobs * misc * moar * more * more * all * remoev todo * fix questions Signed-off-by: Xstar97 Signed-off-by: Stavros Kois <47820033+stavros-k@users.noreply.github.com> Co-authored-by: Stavros Kois <47820033+stavros-k@users.noreply.github.com> Co-authored-by: Stavros kois --- charts/incubator/invidious/.helmignore | 30 + charts/incubator/invidious/CHANGELOG.md | 1 + charts/incubator/invidious/Chart.yaml | 33 + charts/incubator/invidious/README.md | 1 + charts/incubator/invidious/docs/validation.md | 14 + charts/incubator/invidious/icon.png | Bin 0 -> 17142 bytes charts/incubator/invidious/questions.yaml | 1296 +++++++++++++++++ .../incubator/invidious/templates/_config.tpl | 182 +++ .../incubator/invidious/templates/_dbseed.tpl | 42 + .../incubator/invidious/templates/common.yaml | 9 + charts/incubator/invidious/values.yaml | 136 ++ 11 files changed, 1744 insertions(+) create mode 100644 charts/incubator/invidious/.helmignore create mode 100644 charts/incubator/invidious/CHANGELOG.md create mode 100644 charts/incubator/invidious/Chart.yaml create mode 100644 charts/incubator/invidious/README.md create mode 100644 charts/incubator/invidious/docs/validation.md create mode 100644 charts/incubator/invidious/icon.png create mode 100644 charts/incubator/invidious/questions.yaml create mode 100644 charts/incubator/invidious/templates/_config.tpl create mode 100644 charts/incubator/invidious/templates/_dbseed.tpl create mode 100644 charts/incubator/invidious/templates/common.yaml create mode 100644 charts/incubator/invidious/values.yaml diff --git a/charts/incubator/invidious/.helmignore b/charts/incubator/invidious/.helmignore new file mode 100644 index 00000000000..77ca5567b26 --- /dev/null +++ b/charts/incubator/invidious/.helmignore @@ -0,0 +1,30 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ +# OWNERS file for Kubernetes +OWNERS +# helm-docs templates +*.gotmpl +# docs folder +/docs +# icon +icon.png diff --git a/charts/incubator/invidious/CHANGELOG.md b/charts/incubator/invidious/CHANGELOG.md new file mode 100644 index 00000000000..7b60a48ef81 --- /dev/null +++ b/charts/incubator/invidious/CHANGELOG.md @@ -0,0 +1 @@ +# invidious diff --git a/charts/incubator/invidious/Chart.yaml b/charts/incubator/invidious/Chart.yaml new file mode 100644 index 00000000000..15fbefa3074 --- /dev/null +++ b/charts/incubator/invidious/Chart.yaml @@ -0,0 +1,33 @@ +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.0.4 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 11.0.5 +description: Open source alternative front-end to YouTube. +home: https://truecharts.org/docs/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: 1.0.0 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/charts/incubator/invidious/README.md b/charts/incubator/invidious/README.md new file mode 100644 index 00000000000..7b60a48ef81 --- /dev/null +++ b/charts/incubator/invidious/README.md @@ -0,0 +1 @@ +# invidious diff --git a/charts/incubator/invidious/docs/validation.md b/charts/incubator/invidious/docs/validation.md new file mode 100644 index 00000000000..1cb001bd763 --- /dev/null +++ b/charts/incubator/invidious/docs/validation.md @@ -0,0 +1,14 @@ +# Input Validation + +**`Speed`** +Accepted formats are: + +- Integers (eg `1`, `2`) +- Floats (eg `1.25`, `1.50`) + +Regex used to match those: `^[0-9]+(\.[0-9]*)?$` +You can try live [here](https://regex101.com/r/jnZ19W/1) + +--- + +_If you find a field that you think it needs validation, please open an issue on github_ diff --git a/charts/incubator/invidious/icon.png b/charts/incubator/invidious/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9e7fc0e5a64e77809ed2ec4d06ef29dbcd13f07b GIT binary patch literal 17142 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 literal 0 HcmV?d00001 diff --git a/charts/incubator/invidious/questions.yaml b/charts/incubator/invidious/questions.yaml new file mode 100644 index 00000000000..ef6b4e7327a --- /dev/null +++ b/charts/incubator/invidious/questions.yaml @@ -0,0 +1,1296 @@ +# Include{groups} +portals: + open: +# Include{portalLink} +questions: +# Include{global} +# Include{controller} +# Include{replicas} +# Include{replica1} +# Include{controllerExpertExtraArgs} + - 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 + required: true + default: "" + enum: + - value: "" + description: Default + - 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 + required: true + 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]*)?$' + 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 +# Include{containerConfig} +# Include{serviceRoot} + - variable: main + label: Main Service + description: The Primary service on which the healthcheck runs, often the webUI + schema: + additional_attrs: true + type: dict + attrs: +# Include{serviceSelectorLoadBalancer} +# Include{serviceSelectorExtras} + - variable: main + label: Main Service Port Configuration + schema: + 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 +# Include{serviceExpertRoot} + default: false +# Include{serviceExpert} +# Include{serviceList} +# Include{persistenceList} +# Include{ingressRoot} + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: +# Include{ingressDefault} +# Include{ingressTLS} +# Include{ingressTraefik} +# Include{ingressList} +# Include{security} +# Include{securityContextAdvancedRoot} + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: false +# Include{podSecurityContextRoot} + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 0 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + schema: + type: int + default: 0 + - variable: fsGroup + label: fsGroup + description: The group that should own ALL storage. + schema: + type: int + default: 568 +# Include{podSecurityContextAdvanced} +# Include{resources} +# Include{advanced} +# Include{addons} +# Include{codeserver} +# Include{vpn} +# Include{documentation} diff --git a/charts/incubator/invidious/templates/_config.tpl b/charts/incubator/invidious/templates/_config.tpl new file mode 100644 index 00000000000..9631356ecf9 --- /dev/null +++ b/charts/incubator/invidious/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: {{ $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/charts/incubator/invidious/templates/_dbseed.tpl b/charts/incubator/invidious/templates/_dbseed.tpl new file mode 100644 index 00000000000..8c96bc4238c --- /dev/null +++ b/charts/incubator/invidious/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/charts/incubator/invidious/templates/common.yaml b/charts/incubator/invidious/templates/common.yaml new file mode 100644 index 00000000000..83290053c0d --- /dev/null +++ b/charts/incubator/invidious/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/charts/incubator/invidious/values.yaml b/charts/incubator/invidious/values.yaml new file mode 100644 index 00000000000..97e281b3b15 --- /dev/null +++ b/charts/incubator/invidious/values.yaml @@ -0,0 +1,136 @@ +image: + repository: tccr.io/truecharts/invidious + pullPolicy: IfNotPresent + tag: latest@sha256:bb8e2e0eedf9296a1af274e09d898555b0bfbd62aec52a346bddfb9b3b1dc983 + +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.25 + 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