######################################### # # Database configuration # ######################################### ## ## Database configuration with separate parameters. ## This setting is MANDATORY, unless 'database_url' is used. ## db: user: kemal password: kemal host: localhost port: 5432 dbname: invidious ## ## Database configuration using a single URI. This is an ## alternative to the 'db' parameter above. If both forms ## are used, then only database_url is used. ## This setting is MANDATORY, unless 'db' is used. ## ## Note: The 'database_url' setting allows the use of UNIX ## sockets. To do so, remove the IP address (or FQDN) and port ## and append the 'host' parameter. E.g: ## postgres://kemal:kemal@/invidious?host=/var/run/postgresql ## ## Accepted values: a postgres:// URI ## Default: postgres://kemal:kemal@localhost:5432/invidious ## #database_url: postgres://kemal:kemal@localhost:5432/invidious ## ## Enable automatic table integrity check. This will create ## the required tables and columns if anything is missing. ## ## Accepted values: true, false ## Default: false ## #check_tables: false ######################################### # # Server config # ######################################### # ----------------------------- # Network (inbound) # ----------------------------- ## ## Port to listen on for incoming connections. ## ## Note: Ports lower than 1024 requires either root privileges ## (not recommended) or the "CAP_NET_BIND_SERVICE" capability ## (See https://stackoverflow.com/a/414258 and `man capabilities`) ## ## Accepted values: 1-65535 ## Default: 3000 ## #port: 3000 ## ## 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. This is used to craft absolute URLs ## to the instance (e.g in the API). ## ## Note: This setting is MANDATORY if invidious is behind a ## reverse proxy. ## ## Accepted values: 1-65535 ## Default: ## #external_port: ## ## Interface address to listen on for incoming connections. ## ## Accepted values: a valid IPv4 or IPv6 address. ## default: 0.0.0.0 (listen on all interfaces) ## #host_binding: 0.0.0.0 ## ## Domain name under which this instance is hosted. This is ## used to craft absolute URLs to the instance (e.g in the API). ## The domain MUST be defined if your instance is accessed from ## a domain name (like 'example.com'). ## ## Accepted values: a fully qualified domain name (FQDN) ## Default: ## domain: ## ## A list of domains where external proxy servers. This is used ## to build the urls used for proxing videos. ## When none is set invidious will be used for proxiying. ## This generally only needs to be set for bigger instances, ## a example proxy url would be like ['proxy.example.com']. ## Using a list urls might look like this: ## ['proxy-eu1.example.com','proxy-eu2.example.com'] ## Invidious would then choose at random which request gets one ## of the proxy servers ## ## Accepted values: a list of fully qualified domain names (FQDN) ## Default: [""] ## proxy_domains: [""] ## ## 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. ## ## Accepted values: true, false ## Default: false ## https_only: false ## ## Enable/Disable 'Strict-Transport-Security'. Make sure that ## the domain specified under 'domain' is served securely. ## ## Accepted values: true, false ## Default: true ## #hsts: true # ----------------------------- # Network (outbound) # ----------------------------- ## ## Disable proxying server-wide. Can be disable as a whole, or ## only for a single function. ## ## Accepted values: true, false, dash, livestreams, downloads, local ## Default: false ## #disable_proxy: false ## ## Size of the HTTP pool used to connect to youtube. Each ## domain ('youtube.com', 'ytimg.com', ...) has its own pool. ## ## Accepted values: a positive integer ## Default: 100 ## #pool_size: 100 ## ## Enable/Disable the use of QUIC (HTTP/3) when connecting ## to the youtube API and websites ('youtube.com', 'ytimg.com'). ## QUIC's main advantages are its lower latency and lower bandwidth ## use, compared to its predecessors. However, the current version ## of QUIC used in invidious is still based on the IETF draft 31, ## meaning that the underlying library may still not be fully ## optimized. You can read more about QUIC at the link below: ## https://datatracker.ietf.org/doc/html/draft-ietf-quic-transport-31 ## ## Note: you should try both options and see what is the best for your ## instance. In general QUIC is recommended for public instances. Your ## mileage may vary. ## ## Note 2: Using QUIC prevents some captcha challenges from appearing. ## See: https://github.com/iv-org/invidious/issues/957#issuecomment-576424042 ## ## Accepted values: true, false ## Default: false ## #use_quic: false ## ## Additional cookies to be sent when requesting the youtube API. ## ## Accepted values: a string in the format "name1=value1; name2=value2..." ## Default: ## #cookies: ## ## Force connection to youtube over a specific IP family. ## ## Note: This may sometimes resolve issues involving rate-limiting. ## See https://github.com/ytdl-org/youtube-dl/issues/21729. ## ## Accepted values: ipv4, ipv6 ## Default: ## #force_resolve: # ----------------------------- # Logging # ----------------------------- ## ## Path to log file. Can be absolute or relative to the invidious ## binary. This is overridden if "-o OUTPUT" or "--output=OUTPUT" ## are passed on the command line. ## ## Accepted values: a filesystem path or 'STDOUT' ## Default: STDOUT ## #output: STDOUT ## ## Logging Verbosity. This is overridden if "-l LEVEL" or ## "--log-level=LEVEL" are passed on the command line. ## ## Accepted values: All, Trace, Debug, Info, Warn, Error, Fatal, Off ## Default: Info ## #log_level: Info # ----------------------------- # Features # ----------------------------- ## ## Enable/Disable the "Popular" tab on the main page. ## ## Accepted values: true, false ## Default: true ## #popular_enabled: true ## ## Enable/Disable statstics (available at /api/v1/stats). ## The following data is available: ## - Software name ("invidious") and version+branch (same data as ## displayed in the footer, e.g: "2021.05.13-75e5b49" / "master") ## - The value of the 'registration_enabled' config (true/false) ## - Number of currently registered users ## - Number of registered users who connected in the last month ## - Number of registered users who connected in the last 6 months ## - Timestamp of the last server restart ## - Timestamp of the last "Channel Refresh" job execution ## ## Warning: This setting MUST be set to true if you plan to run ## a public instance. It is used by api.invidious.io to refresh ## your instance's status. ## ## Accepted values: true, false ## Default: false ## #statistics_enabled: false # ----------------------------- # Users and accounts # ----------------------------- ## ## Allow/Forbid Invidious (local) account creation. Invidious ## accounts allow users to subscribe to channels and to create ## playlists without a Google account. ## ## Accepted values: true, false ## Default: true ## #registration_enabled: true ## ## Allow/Forbid users to log-in. This setting affects the ability ## to connect with BOTH Google and Invidious (local) accounts. ## ## Accepted values: true, false ## Default: true ## #login_enabled: true ## ## Enable/Disable the captcha challenge on the login page. ## ## Note: this is a basic captcha challenge that doesn't ## depend on any third parties. ## ## Accepted values: true, false ## Default: true ## #captcha_enabled: true ## ## List of usernames that will be granted administrator rights. ## A user with administrator rights will be able to change the ## server configuration options listed below in /preferences, ## in addition to the usual user preferences. ## ## Server-wide settings: ## - popular_enabled ## - captcha_enabled ## - login_enabled ## - registration_enabled ## - statistics_enabled ## Default user preferences: ## - default_home ## - feed_menu ## ## Accepted values: an array of strings ## Default: [""] ## #admins: [""] ## ## Enable/Disable the user notifications for all users ## ## Note: On large instances, it is recommended to set this option to 'false' ## in order to reduce the amount of data written to the database, and hence ## improve the overall performance of the instance. ## ## Accepted values: true, false ## Default: true ## #enable_user_notifications: true # ----------------------------- # Background jobs # ----------------------------- ## ## Number of threads to use when crawling channel videos (during ## subscriptions update). ## ## Notes: This setting is overridden if either "-c THREADS" or ## "--channel-threads=THREADS" is passed on the command line. ## ## Accepted values: a positive integer ## Default: 1 ## channel_threads: 1 ## ## Time interval between two executions of the job that crawls ## channel videos (subscriptions update). ## ## Accepted values: a valid time interval (like 1h30m or 90m) ## Default: 30m ## #channel_refresh_interval: 30m ## ## Forcefully dump and re-download the entire list of uploaded ## videos when crawling channel (during subscriptions update). ## ## Accepted values: true, false ## Default: false ## full_refresh: false ## ## Number of threads to use when updating RSS feeds. ## ## Notes: This setting is overridden if either "-f THREADS" or ## "--feed-threads=THREADS" is passed on the command line. ## ## Accepted values: a positive integer ## Default: 1 ## feed_threads: 1 ## ## Enable/Disable the polling job that keeps the decryption ## function (for "secured" videos) up to date. ## ## Note: This part of the code generate a small amount of data every minute. ## This may not be desired if you have bandwidth limits set by your ISP. ## ## Note 2: This part of the code is currently broken, so changing ## this setting has no impact. ## ## Accepted values: true, false ## Default: false ## #decrypt_polling: false jobs: ## Options for the database cleaning job clear_expired_items: ## Enable/Disable job ## ## Accepted values: true, false ## Default: true ## enable: true ## Options for the channels updater job refresh_channels: ## Enable/Disable job ## ## Accepted values: true, false ## Default: true ## enable: true ## Options for the RSS feeds updater job refresh_feeds: ## Enable/Disable job ## ## Accepted values: true, false ## Default: true ## enable: true # ----------------------------- # Captcha API # ----------------------------- ## ## URL of the captcha solving service. ## ## Accepted values: any URL ## Default: https://api.anti-captcha.com ## #captcha_api_url: https://api.anti-captcha.com ## ## API key for the captcha solving service. ## ## Accepted values: a string ## Default: ## #captcha_key: # ----------------------------- # Miscellaneous # ----------------------------- ## ## custom banner displayed at the top of every page. This can ## used for instance announcements, e.g. ## ## Accepted values: any string. HTML is accepted. ## Default: ## #banner: ## ## 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. When PubSubHub is not used, ## Invidious will check for new videos every minute. ## ## Note: This setting is recommended for public instances. ## ## Note 2: ## - Requires a public instance (it uses /feed/webhook/v1) ## - Requires 'domain' and 'hmac_key' to be set. ## - Setting this parameter to any number greater than zero will ## enable channel subscriptions via PubSubHub, but will limit the ## amount of concurrent subscriptions. ## ## Accepted values: true, false, a positive integer ## Default: false ## #use_pubsub_feeds: false ## ## HMAC signing key used for CSRF tokens and pubsub ## subscriptions verification. ## ## Accepted values: a string ## Default: ## #hmac_key: ## ## List of video IDs where the "download" widget must be ## disabled, in order to comply with DMCA requests. ## ## Accepted values: an array of string ## Default: ## #dmca_content: ## ## Cache video annotations in the database. ## ## Warning: empty annotations or annotations that only contain ## cards won't be cached. ## ## Accepted values: true, false ## Default: false ## #cache_annotations: false ## ## Source code URL. If your instance is running a modified source ## code, you MUST publish it somewhere and set this option. ## ## Accepted values: a string ## Default: ## #modified_source_code_url: "" ## ## Maximum custom playlist length limit. ## ## Accepted values: Integer ## Default: 500 ## #playlist_length_limit: 500 ######################################### # # Default user preferences # ######################################### ## ## NOTE: All the settings below define the default user ## preferences. They will apply to ALL users connecting ## without a preferences cookie (so either on the first ## connection to the instance or after clearing the ## browser's cookies). ## default_user_preferences: # ----------------------------- # Internationalization # ----------------------------- ## ## Default user interface language (locale). ## ## Note: When hosting a public instance, overriding the ## default (english) is not recommended, as it may ## people using other languages. ## ## Accepted values: ## ar (Arabic) ## da (Danish) ## de (German) ## en-US (english, US) ## el (Greek) ## eo (Esperanto) ## es (Spanish) ## fa (Persian) ## fi (Finnish) ## fr (French) ## he (Hebrew) ## hr (Hungarian) ## id (Indonesian) ## is (Icelandic) ## it (Italian) ## ja (Japanese) ## nb-NO (Norwegian, Bokmål) ## nl (Dutch) ## pl (Polish) ## pt-BR (Portuguese, Brazil) ## pt-PT (Portuguese, Portugal) ## ro (Romanian) ## ru (Russian) ## sv (Swedish) ## tr (Turkish) ## uk (Ukrainian) ## zh-CN (Chinese, China) (a.k.a "Simplified Chinese") ## zh-TW (Chinese, Taiwan) (a.k.a "Traditional Chinese") ## ## Default: en-US ## #locale: en-US ## ## Default geographical location for content. ## ## Accepted values: ## AE, AR, AT, AU, AZ, BA, BD, BE, BG, BH, BO, BR, BY, CA, CH, CL, CO, CR, ## CY, CZ, DE, DK, DO, DZ, EC, EE, EG, ES, FI, FR, GB, GE, GH, GR, GT, HK, ## HN, HR, HU, ID, IE, IL, IN, IQ, IS, IT, JM, JO, JP, KE, KR, KW, KZ, LB, ## LI, LK, LT, LU, LV, LY, MA, ME, MK, MT, MX, MY, NG, NI, NL, NO, NP, NZ, ## OM, PA, PE, PG, PH, PK, PL, PR, PT, PY, QA, RO, RS, RU, SA, SE, SG, SI, ## SK, SN, SV, TH, TN, TR, TW, TZ, UA, UG, US, UY, VE, VN, YE, ZA, ZW ## ## Default: US ## #region: US ## ## Top 3 preferred languages for video captions. ## ## Note: overriding the default (no preferred ## caption language) is not recommended, in order ## to not penalize people using other languages. ## ## Accepted values: a three-entries array. ## Each entry can be one of: ## "English", "English (auto-generated)", ## "Afrikaans", "Albanian", "Amharic", "Arabic", ## "Armenian", "Azerbaijani", "Bangla", "Basque", ## "Belarusian", "Bosnian", "Bulgarian", "Burmese", ## "Catalan", "Cebuano", "Chinese (Simplified)", ## "Chinese (Traditional)", "Corsican", "Croatian", ## "Czech", "Danish", "Dutch", "Esperanto", "Estonian", ## "Filipino", "Finnish", "French", "Galician", "Georgian", ## "German", "Greek", "Gujarati", "Haitian Creole", "Hausa", ## "Hawaiian", "Hebrew", "Hindi", "Hmong", "Hungarian", ## "Icelandic", "Igbo", "Indonesian", "Irish", "Italian", ## "Japanese", "Javanese", "Kannada", "Kazakh", "Khmer", ## "Korean", "Kurdish", "Kyrgyz", "Lao", "Latin", "Latvian", ## "Lithuanian", "Luxembourgish", "Macedonian", ## "Malagasy", "Malay", "Malayalam", "Maltese", "Maori", ## "Marathi", "Mongolian", "Nepali", "Norwegian Bokmål", ## "Nyanja", "Pashto", "Persian", "Polish", "Portuguese", ## "Punjabi", "Romanian", "Russian", "Samoan", ## "Scottish Gaelic", "Serbian", "Shona", "Sindhi", ## "Sinhala", "Slovak", "Slovenian", "Somali", ## "Southern Sotho", "Spanish", "Spanish (Latin America)", ## "Sundanese", "Swahili", "Swedish", "Tajik", "Tamil", ## "Telugu", "Thai", "Turkish", "Ukrainian", "Urdu", ## "Uzbek", "Vietnamese", "Welsh", "Western Frisian", ## "Xhosa", "Yiddish", "Yoruba", "Zulu" ## ## Default: ["", "", ""] ## #captions: ["", "", ""] # ----------------------------- # Interface # ----------------------------- ## ## Enable/Disable dark mode. ## ## Accepted values: "dark", "light", "auto" ## Default: "auto" ## #dark_mode: "auto" ## ## Enable/Disable thin mode (no video thumbnails). ## ## Accepted values: true, false ## Default: false ## #thin_mode: false ## ## List of feeds available on the home page. ## ## Note: "Subscriptions" and "Playlists" are only visible ## when the user is logged in. ## ## Accepted values: A list of strings ## Each entry can be one of: "Popular", "Trending", ## "Subscriptions", "Playlists" ## ## Default: ["Popular", "Trending", "Subscriptions", "Playlists"] (show all feeds) ## #feed_menu: ["Popular", "Trending", "Subscriptions", "Playlists"] ## ## Default feed to display on the home page. ## ## Note: setting this option to "Popular" has no ## effect when 'popular_enabled' is set to false. ## ## Accepted values: Popular, Trending, Subscriptions, Playlists, ## Default: Popular ## #default_home: Popular ## ## Default number of results to display per page. ## ## Note: this affects invidious-generated pages only, such ## as watch history and subscription feeds. Playlists, search ## results and channel videos depend on the data returned by ## the Youtube API. ## ## Accepted values: any positive integer ## Default: 40 ## #max_results: 40 ## ## Show/hide annotations. ## ## Accepted values: true, false ## Default: false ## #annotations: false ## ## Show/hide annotation. ## ## Accepted values: true, false ## Default: false ## #annotations_subscribed: false ## ## Type of comments to display below video. ## ## Accepted values: a two-entries array. ## Each entry can be one of: "youtube", "reddit", "" ## ## Default: ["youtube", ""] ## #comments: ["youtube", ""] ## ## Default player style. ## ## Accepted values: invidious, youtube ## Default: invidious ## #player_style: invidious ## ## Show/Hide the "related videos" sidebar when ## watching a video. ## ## Accepted values: true, false ## Default: true ## #related_videos: true # ----------------------------- # Video player behavior # ----------------------------- ## ## Automatically play videos on page load. ## ## Accepted values: true, false ## Default: false ## #autoplay: false ## ## Automatically load the "next" video (either next in ## playlist or proposed) when the current video ends. ## ## Accepted values: true, false ## Default: false ## #continue: false ## ## Autoplay next video by default. ## ## Note: Only effective if 'continue' is set to true. ## ## Accepted values: true, false ## Default: true ## #continue_autoplay: true ## ## Play videos in Audio-only mode by default. ## ## Accepted values: true, false ## Default: false ## #listen: false ## ## Loop videos automatically. ## ## Accepted values: true, false ## Default: false ## #video_loop: false # ----------------------------- # Video playback settings # ----------------------------- ## ## Default video quality. ## ## Accepted values: dash, hd720, medium, small ## Default: hd720 ## #quality: hd720 ## ## Default dash video quality. ## ## Note: this setting only takes effet if the ## 'quality' parameter is set to "dash". ## ## Accepted values: ## auto, best, 4320p, 2160p, 1440p, 1080p, ## 720p, 480p, 360p, 240p, 144p, worst ## Default: auto ## #quality_dash: auto ## ## Default video playback speed. ## ## Accepted values: 0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0 ## Default: 1.0 ## #speed: 1.0 ## ## Default volume. ## ## Accepted values: 0-100 ## Default: 100 ## #volume: 100 ## ## Allow 360° videos to be played. ## ## Note: This feature requires a WebGL-enabled browser. ## ## Accepted values: true, false ## Default: true ## #vr_mode: true # ----------------------------- # Subscription feed # ----------------------------- ## ## In the "Subscription" feed, only show the latest video ## of each channel the user is subscribed to. ## ## Note: when combined with 'unseen_only', the latest unseen ## video of each channel will be displayed instead of the ## latest by date. ## ## Accepted values: true, false ## Default: false ## #latest_only: false ## ## Enable/Disable user subscriptions desktop notifications. ## ## Accepted values: true, false ## Default: false ## #notifications_only: false ## ## In the "Subscription" feed, Only show the videos that the ## user haven't watched yet (i.e which are not in their watch ## history). ## ## Accepted values: true, false ## Default: false ## #unseen_only: false ## ## Default sorting parameter for subscription feeds. ## ## Accepted values: ## 'alphabetically' ## 'alphabetically - reverse' ## 'channel name' ## 'channel name - reverse' ## 'published' ## 'published - reverse' ## ## Default: published ## #sort: published # ----------------------------- # Miscellaneous # ----------------------------- ## ## Proxy videos through instance by default. ## ## Warning: As most users won't change this setting in their ## preferences, defaulting to true will significantly ## increase the instance's network usage, so make sure that ## your server's connection can handle it. ## ## Accepted values: true, false ## Default: false ## #local: false ## ## Show the connected user's nick at the top right. ## ## Accepted values: true, false ## Default: true ## #show_nick: true ## ## Automatically redirect to a random instance when the user uses ## any "switch invidious instance" link (For videos, it's the plane ## icon, next to "watch on youtube" and "listen"). When set to false, ## the user is sent to https://redirect.invidious.io instead, where ## they can manually select an instance. ## ## Accepted values: true, false ## Default: false ## #automatic_instance_redirect: false ## ## Show the entire video description by default (when set to 'false', ## only the first few lines of the description are shown and a ## "show more" button allows to expand it). ## ## Accepted values: true, false ## Default: false ## #extend_desc: false