Simple web front-end for managing yt-dlp playlists, archives, and downloaded albums.
cargo runThe server listens on BIND_ADDR (default 0.0.0.0:8090). Files, archives, and per-user settings live under DATA_DIR (default ./data when running locally).
- Install system dependencies:
sudo apt install build-essential pkg-config libssl-dev(adjust the package manager for your distro) plus Rustup for the Rust toolchain. - Clone the repository and build it in release mode:
The binary lands under
git clone https://github.com/stdakov/yt-dlp-ui.git cd yt-dlp-ui cargo build --releasetarget/release/yt-dlp-ui. - Create a data directory and launch the server:
Open
mkdir -p ~/yt-dlp-data DATA_DIR=~/yt-dlp-data BIND_ADDR=0.0.0.0:8090 ./target/release/yt-dlp-ui
http://localhost:8090in your browser, and adjust download/archive folders from Settings → Storage folders as needed.
Build the image:
docker build -t yt-dlp-ui .Run it with host directories mounted wherever you keep music and archive files:
docker run --rm -p 8090:8090 \
-v /mnt/music:/downloads \
-v /mnt/archives:/archives \
-e DOWNLOADS_DIR=/downloads \
-e ARCHIVES_DIR=/archives \
yt-dlp-uiKey environment variables (all optional, but handy when invoking docker run/docker compose):
| Variable | Purpose | Default in image |
|---|---|---|
DATA_DIR |
Root for app state (settings.json) |
/data |
DOWNLOADS_DIR |
Folder where yt-dlp saves media | /data/downloads |
ARCHIVES_DIR |
Folder that stores yt-dlp download archives | /data/archives |
BIND_ADDR |
Listen address/port | 0.0.0.0:8090 |
Inside the UI, Settings → Storage folders lets you adjust the same directories at runtime. Any paths provided via environment variables override defaults immediately, so new containers can set their main download folder directly in the docker run command.
A ready-to-use docker-compose.yml is included. It mounts the repository ./data folder into /data inside the container and exposes port 8090.
Build and start:
docker compose up --buildTo run in the background use docker compose up -d, and stop via docker compose down. Adjust volumes or ports inside the compose file to match your storage layout.
