Skip to main content

Server Settings

Yattee Server has two layers of configuration:

  • Environment variables -- set at startup in docker-compose.yml or a .env file. These control low-level server behavior (bind address, port, data directories, CORS, cookie security). See the Docker Setup page for the full list.
  • Runtime settings -- managed through the admin panel Settings tab. These are stored in the database and can be changed at any time without restarting the server.

This page documents every runtime setting available in the admin panel.

Server Settings

tip

Changes to runtime settings take effect immediately. There is no need to restart the server or the Docker container.

yt-dlp

Settings that control how the server invokes yt-dlp for video extraction.

SettingDefaultRangeDescription
ytdlp_pathyt-dlp--Path to the yt-dlp binary. Only change this if yt-dlp is installed in a non-standard location.
ytdlp_timeout12010--600Maximum time in seconds to wait for a single yt-dlp extraction to complete. Increase this if you frequently see timeout errors on slow connections.

Cache TTLs

Yattee Server caches various data to reduce redundant yt-dlp and Invidious calls. Each TTL (time-to-live) value is specified in seconds.

SettingDefaultRangeDescription
cache_video_ttl3600 (1 hour)60--86400How long video metadata (title, description, thumbnails) is cached.
cache_search_ttl900 (15 min)60--7200How long search results are cached.
cache_channel_ttl1800 (30 min)60--86400How long channel information is cached.
cache_avatar_ttl86400 (24 hours)3600--604800How long avatar images are cached. Avatars change rarely, so a long TTL is appropriate.
cache_extract_ttl900 (15 min)60--7200How long extracted stream URLs are cached. Keep this short since CDN URLs often expire.
Tuning cache TTLs

Lower TTL values mean fresher data but more frequent yt-dlp and Invidious requests. If your server has limited bandwidth or you are hitting rate limits on upstream services, consider increasing these values. Conversely, if you need real-time accuracy (e.g., for live stream URLs), lower cache_extract_ttl.

Controls for search result pagination.

SettingDefaultRangeDescription
default_search_results205--50Number of results returned per search page when the client does not specify a count.
max_search_results5010--100Upper limit on results per page. Client requests exceeding this value are clamped.

Invidious Proxy

Yattee Server can proxy requests through an Invidious instance to provide search, trending, channel browsing, captions, and thumbnails without relying solely on yt-dlp.

General

SettingDefaultRangeDescription
invidious_enabledtrue--Master toggle for the Invidious proxy. When disabled, all Invidious-dependent features fall back to yt-dlp or become unavailable.
invidious_instance(empty)--Full URL of the Invidious instance (e.g., https://invidious.example.com).
invidious_timeout105--60Request timeout in seconds for each call to the Invidious API.
invidious_max_retries31--10How many times to retry a failed Invidious request before giving up.
invidious_retry_delay1.00.5--30.0Delay in seconds between retry attempts.
invidious_author_thumbnailsfalse--Include author (channel) thumbnails in Invidious API responses. Enable this if your client displays channel avatars alongside search results.

Proxy Toggles

These toggles control which categories of data are fetched through Invidious rather than directly via yt-dlp. Disabling a category causes the server to skip Invidious for that data type.

SettingDefaultDescription
invidious_proxy_channelstrueProxy channel metadata through Invidious.
invidious_proxy_channel_tabstrueProxy channel tab data (videos, playlists, shorts) through Invidious.
invidious_proxy_videostrueProxy video metadata through Invidious.
invidious_proxy_playliststrueProxy playlist data through Invidious.
invidious_proxy_captionstrueProxy caption/subtitle data through Invidious.
invidious_proxy_thumbnailstrueProxy thumbnail images through Invidious.
note

Even with all proxy toggles enabled, Invidious is only used when invidious_enabled is true and a valid invidious_instance URL is configured.

Feed

The feed system periodically fetches new videos from channels that users have subscribed to. These settings control that background process.

SettingDefaultRangeDescription
feed_fetch_interval1800 (30 min)300--86400How often the background feed fetch runs, in seconds.
feed_channel_delay21--30Delay in seconds between fetching each channel during a feed update. This throttles requests to avoid rate limiting.
feed_max_videos3010--100Maximum number of videos to store per channel in the feed.
feed_video_max_age301--365Maximum age of videos in days. Videos older than this are pruned from the feed.
feed_ytdlp_use_flat_playlisttrue--Use yt-dlp flat playlist mode for faster channel fetching. Flat mode retrieves video IDs without full metadata extraction, which is significantly faster.
feed_fallback_ytdlp_on_414false--Fall back to yt-dlp when Invidious returns HTTP 414 (URI Too Long) errors. This can happen with channels that have very long metadata.
feed_fallback_ytdlp_on_errortrue--Fall back to yt-dlp when Invidious returns any error. This provides resilience when your Invidious instance is down or rate-limited.
tip

If feed updates are slow, make sure feed_ytdlp_use_flat_playlist is enabled. This avoids full metadata extraction for each video during the channel scan, dramatically reducing fetch time.

Extraction

SettingDefaultDescription
allow_all_sites_for_extractionfalseWhen enabled, the server accepts extraction requests for any URL that yt-dlp supports, regardless of whether a matching site is configured. When disabled (the default), only URLs matching a configured and enabled site in the Sites panel are accepted.
warning

Enabling allow_all_sites_for_extraction means any authenticated user can request the server to extract content from any of the 1000+ sites yt-dlp supports. Only enable this if you trust all users on your server and understand the resource implications.

Security

SettingDefaultRangeDescription
dns_cache_ttl305--3600How long DNS resolution results are cached in seconds. The server caches DNS lookups to reduce latency on repeated requests to the same hosts.

Rate Limiting

These settings protect the server from brute-force authentication attempts.

SettingDefaultRangeDescription
rate_limit_window6010--600Time window in seconds over which failed authentication attempts are counted.
rate_limit_max_failures51--100Maximum number of failed authentication attempts allowed within the window before the source is temporarily blocked.
rate_limit_cleanup_interval30060--3600How often the rate limiter purges expired entries, in seconds.

Proxy Downloads

When proxy streaming is enabled for a site, video streams pass through the server. These settings control that proxy behavior.

SettingDefaultRangeDescription
proxy_download_max_age86400 (24 hours)60--604800Maximum age in seconds for cached proxy download files. Files older than this are cleaned up.
proxy_max_concurrent_downloads31--20Maximum number of simultaneous proxy download streams the server will handle. Increase this if you have multiple users streaming concurrently, but be mindful of bandwidth and disk usage.
info

Proxy download files are stored in the DOWNLOAD_DIR volume (/downloads in Docker). Make sure this volume has sufficient disk space for your expected concurrent streaming load.