A web server wrapping ytdlp-nfo with a queue-based job system, real-time progress streaming, and a built-in web UI.
- Web UI for submitting and monitoring downloads
- Bulk import of up to 500 URLs at once
- Configurable concurrent downloads with FIFO queue
- Real-time progress streaming via Server-Sent Events
- Automatic retries with exponential backoff
- Job state persistence across restarts
- Duplicate URL detection
- Optional password protection
The server code lives in the server/ directory. Docker Compose files and the Dockerfile are also located there.
services:
ytdlp-nfo-server:
image: ghcr.io/lna-dev/ytdlp-nfo-server:latest
ports:
- "8080:8080"
volumes:
- ./download:/downloads
- ./data:/data
- pip-cache:/root/.cache/pip
environment:
- PORT=8080
- DOWNLOAD_DIR=/downloads
- DATA_DIR=/data
- PASSWORD=changeme
restart: unless-stopped
volumes:
pip-cache:docker compose up -d| Variable | Default | Description |
|---|---|---|
PORT |
8080 |
Server port |
DOWNLOAD_DIR |
./downloads |
Download destination |
DATA_DIR |
Job state persistence directory | |
MAX_CONCURRENT |
3 |
Max parallel downloads |
MAX_RETRIES |
3 |
Max retry attempts per job |
YTDLP_CHANNEL |
stable |
yt-dlp version channel (stable, master, nightly) |
PASSWORD |
Optional password to protect the web UI |
MIT
