A self-hosted API server powered by yt-dlp that manages data extraction from YouTube and other video sites
Python
108
88 commits
updated Sep 11, 2026
A self-hosted API server powered by yt-dlp that manages data extraction from YouTube and other video sites. Designed for use with Yattee.
/proxy/relay byte-relay for direct playback streams# Clone the repository
git clone https://github.com/yattee/yattee-server.git
cd yattee-server
# Create virtual environment
python3 -m venv .venv
source .venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Run server (default port 8080)
python server.py
Open http://localhost:8080 to access the setup wizard and create your admin account.
# Copy and configure environment
cp .env.example .env
# Start the server (default port 8085)
docker compose up -d
Open http://localhost:8085 to complete setup.
Yattee Server has two layers of configuration: startup environment variables (.env file) and runtime settings (admin panel, stored in database). Network-related env vars include YT_EGRESS_PROXY (HTTP/SOCKS proxy for YouTube-bound traffic) and SSRF_EXTRA_ALLOWED_CIDRS (allow-list extra CIDRs through the SSRF guard, e.g. for a LAN Invidious instance). See docs/configuration.md for the full reference.
API with endpoints for video extractions, search, channels, playlists, comments, feed subscriptions, stream proxy, captions, thumbnails, and more. See docs/api.md for the full reference.
The web-based admin panel is accessible at /admin and provides:
Yattee Server supports multiple authentication mechanisms:
/proxy/fast/), thumbnails, and captions include an HMAC-signed token parameter so authenticated clients can pass URLs to video players without exposing credentials.Authentication is configured during setup and can be managed in the admin panel under Users.
services:
yattee-server:
build: .
container_name: yattee-server
ports:
- "8085:8085"
volumes:
- downloads:/downloads
- data:/app/data
env_file:
- .env
# Optional: auto-provisioning for automated deployments
# environment:
# - ADMIN_USERNAME=admin
# - ADMIN_PASSWORD=changeme
# - INVIDIOUS_INSTANCE_URL=https://invidious.example.com
restart: unless-stopped
volumes:
downloads:
data:
| Volume | Container Path | Purpose |
|---|---|---|
data | /app/data | Database and encryption keys |
downloads | /downloads | Temporary proxied video files |
For automated deployments, set these environment variables to skip the setup wizard:
ADMIN_USERNAME + ADMIN_PASSWORD - Creates or updates an admin account on startupINVIDIOUS_INSTANCE_URL - Configures the Invidious instance and enables the proxyMIT
Python
87.5%
HTML
7.0%
JavaScript
4.9%
A self-hosted API server powered by yt-dlp that manages data extraction from YouTube and other video sites
Python
108
88 commits
updated Sep 11, 2026
A self-hosted API server powered by yt-dlp that manages data extraction from YouTube and other video sites. Designed for use with Yattee.
/proxy/relay byte-relay for direct playback streams# Clone the repository
git clone https://github.com/yattee/yattee-server.git
cd yattee-server
# Create virtual environment
python3 -m venv .venv
source .venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Run server (default port 8080)
python server.py
Open http://localhost:8080 to access the setup wizard and create your admin account.
# Copy and configure environment
cp .env.example .env
# Start the server (default port 8085)
docker compose up -d
Open http://localhost:8085 to complete setup.
Yattee Server has two layers of configuration: startup environment variables (.env file) and runtime settings (admin panel, stored in database). Network-related env vars include YT_EGRESS_PROXY (HTTP/SOCKS proxy for YouTube-bound traffic) and SSRF_EXTRA_ALLOWED_CIDRS (allow-list extra CIDRs through the SSRF guard, e.g. for a LAN Invidious instance). See docs/configuration.md for the full reference.
API with endpoints for video extractions, search, channels, playlists, comments, feed subscriptions, stream proxy, captions, thumbnails, and more. See docs/api.md for the full reference.
The web-based admin panel is accessible at /admin and provides:
Yattee Server supports multiple authentication mechanisms:
/proxy/fast/), thumbnails, and captions include an HMAC-signed token parameter so authenticated clients can pass URLs to video players without exposing credentials.Authentication is configured during setup and can be managed in the admin panel under Users.
services:
yattee-server:
build: .
container_name: yattee-server
ports:
- "8085:8085"
volumes:
- downloads:/downloads
- data:/app/data
env_file:
- .env
# Optional: auto-provisioning for automated deployments
# environment:
# - ADMIN_USERNAME=admin
# - ADMIN_PASSWORD=changeme
# - INVIDIOUS_INSTANCE_URL=https://invidious.example.com
restart: unless-stopped
volumes:
downloads:
data:
| Volume | Container Path | Purpose |
|---|---|---|
data | /app/data | Database and encryption keys |
downloads | /downloads | Temporary proxied video files |
For automated deployments, set these environment variables to skip the setup wizard:
ADMIN_USERNAME + ADMIN_PASSWORD - Creates or updates an admin account on startupINVIDIOUS_INSTANCE_URL - Configures the Invidious instance and enables the proxyMIT
Python
87.5%
HTML
7.0%
JavaScript
4.9%