A terrible web ui and RPC server for yt-dlp. Designed to be self-hosted.
A terrible web ui and RPC server for yt-dlp. Designed to be self-hosted.
[!CAUTION] Unsupervised AI code is prohibited in this repo.
[!NOTE]
Read before updating to v4 Server v4 migration guide https://github.com/marcopiovanello/yt-dlp-web-ui/wiki/Migrate-to-v4
[!NOTE]
A poll is up to decide the future of yt-dlp-web-ui frontend! If you're interested you can take part.
https://github.com/marcopiovanello/yt-dlp-web-ui/discussions/223
A not so terrible web ui for yt-dlp.
High performance extendeable web ui and RPC server for yt-dlp with low impact on resources.
Created for the only purpose of fetching videos from my server/nas and monitor upcoming livestreams.
Docker images are available on Docker Hub or ghcr.io.
docker pull marcobaobao/yt-dlp-webui:v4# latest stable
docker pull ghcr.io/marcopiovanello/yt-dlp-web-ui:v4Keeps the project alive!
Feel free to join :)
The currently avaible settings are:
This feature is disabled by default as this intended to be used to retrieve the best quality automatically.
To enable it just go to the settings page and enable the Enable video/audio formats selection flag!
docker pull marcobaobao/yt-dlp-webui
docker run -d -p 3033:3033 -v <your dir>:/downloads marcobaobao/yt-dlp-webuiOr with docker but building the container manually.
docker build -t yt-dlp-webui .
docker run -d -p 3033:3033 -v <your dir>:/downloads yt-dlp-webui
docker run -d -p 3033:3033 \
-v <your dir>:/downloads \
-v <your dir>:/config \ # optional
yt-dlp-webui
If you opt to add RPC authentication...
docker run -d \
-p 3033:3033 \
-e JWT_SECRET randomsecret
-v /path/to/downloads:/downloads \
-v /path/for/config:/config \ # optional
marcobaobao/yt-dlp-webui \
--auth \
--user your_username \
--pass your_passIf you wish for limiting the download queue size...
e.g. limiting max 2 concurrent download.
docker run -d \
-p 3033:3033 \
-e JWT_SECRET randomsecret
-v /path/to/downloads:/downloads \
marcobaobao/yt-dlp-webui \
--qs 2services:
yt-dlp-webui:
image: marcobaobao/yt-dlp-webui
ports:
- 3033:3033
volumes:
- <your dir>:/downloads # replace <your dir> with a directory on your host system
healthcheck:
test: curl -f http://localhost:3033 || exit 1
restart: unless-stopped| Cloud Provider | Deploy Button |
|---|---|
| AWS | |
| DigitalOcean | |
| Render |
Generated by DeployStack.io
# download the latest release from the releases page
mv yt-dlp-webui_linux-[your_system_arch] /usr/local/bin/yt-dlp-webui
# /home/user/downloads as an example and yt-dlp in $PATH
yt-dlp-webui --out /home/user/downloads
# specifying yt-dlp path
yt-dlp-webui --out /home/user/downloads --driver /opt/soemdir/yt-dlp
# specifying using a config file
yt-dlp-webui --conf /home/user/.config/yt-dlp-webui.conf…By running yt-dlp-webui in standalone mode you have the ability to also specify a config file.
The config file will overwrite what have been passed as cli argument.
With Docker, inside the mounted /conf volume inside there must be a file named config.yml.
…By defining a service file in /etc/systemd/system/yt-dlp-webui.service yt-dlp webui can be launched as in background.
[Unit]
Description=yt-dlp-webui service file
After=network.target
[Service]
User=some_user
ExecStart=/usr/local/bin/yt-dlp-webui --out /mnt/share/downloads --port 8100
[Install]
WantedBy=multi-user.targetsystemctl enable yt-dlp-webui
systemctl start yt-dlp-webuiIt could be that yt-dlp-webui works correctly when started manually from the console, but with systemd, it does not see the yt-dlp executable, or has issues writing to the database file. One way to fix these issues could be as follows:
cd
mkdir yt-dlp-webui-workingdir
# optionally move the already existing database file there:
mv local.db yt-dlp-webui-workingdir
nano yt-dlp-webui-workingdir/my.confThe config file format is described above; make sure to include the downloaderPath setting (the path can possibly be found by running which yt-dlp). For example, one could have:
downloadPath: /stuff/media
downloaderPath: /home/your_user/.local/bin/yt-dlp
log_path: /home/your_user/yt-dlp-webui-workingdir
session_file_path: /home/your_user/yt-dlp-webui-workingdirAdjust the Service section in the /etc/systemd/system/yt-dlp-webui.service file as follows:
[Service]
User=your_user
Group=your_user
WorkingDirectory=/home/your_user/yt-dlp-webui-workingdir
ExecStart=/usr/local/bin/yt-dlp-webui --conf /home/your_user/yt-dlp-webui-workingdir/my.conf# the dependencies are: yt-dlp, ffmpeg, nodejs, go, make.
make allNavigate to /openapi to see the related swagger.
You dont'like the Material feel? Want to build your own frontend? We got you covered
yt-dlp-webui now exposes a nice JSON-RPC 1.0 interface through Websockets and HTTP-POST
It is planned to also expose a gRPC server.
For more information open an issue on GitHub and I will provide more info ASAP.
To load a custom frontend you need to specify its path either in the config file (see config file) or via flags.
The frontend needs to follow this structure:
path/to/my/frontend
├── assets
│ ├── js-chunk-1.js (example)
│ ├── js-chunk-2.js (example)
│ ├── style.css (example)
└── index.htmlassets is where the resources will be loaded.index.html is the entrypoint.
This repo adds support for Nix(OS) in various ways through a flake-parts flake.
For more info, please refer to the official documentation.
yt-dlp-webui isn't your ordinary website where to download stuff from the internet, so don't try asking for links of where this is hosted. It's a self hosted platform for a Linux NAS.
No open issues yet, or sync has not completed.