All apps · 0 apps
youtube-dl-server
Docker app from runraid's Repository
Overview
Enter a video url to download the video to the server. Url can be to YouTube or any other supported site. The server will automatically download the highest quality version available. Just navigate to http://{{address}}:{{port}}/youtube-dl and enter the requested {{url}}. curl -X POST --data-urlencode "url={{url}}" http://{{address}}:{{port}}/youtube-dl/q
/youtube-dl : Downloads go there
Readme
View on GitHubyoutube-dl-server
Very spartan Web and REST interface for downloading youtube videos onto a server. starlette + yt-dlp.

Running
Docker CLI
This example uses the docker run command to create the container to run the app. Here we also use host networking for simplicity. Also note the -v argument. This directory will be used to output the resulting videos
docker run -d --net="host" --name youtube-dl -v /home/core/youtube-dl:/youtube-dl kmb32123/youtube-dl-server
To provide custom yt-dlp configuration (e.g., authentication, custom options), mount a config directory:
docker run -d --net="host" --name youtube-dl \
-v /home/core/youtube-dl:/youtube-dl \
-v /home/core/yt-dlp-config:/root/.config/yt-dlp \
kmb32123/youtube-dl-server
Place your config file in /home/core/yt-dlp-config/ with yt-dlp options (one per line). See yt-dlp configuration documentation for details.
Docker Compose
This is an example service definition that could be put in docker-compose.yml. This service uses a VPN client container for its networking.
youtube-dl:
image: "kmb32123/youtube-dl-server"
network_mode: "service:vpn"
volumes:
- /home/core/youtube-dl:/youtube-dl
- /home/core/yt-dlp-config:/root/.config/yt-dlp # optional: custom yt-dlp config
restart: always
Python
If you have python ^3.6.0 installed in your PATH you can simply run like this, providing optional environment variable overrides inline.
YDL_UPDATE_TIME=False python3 -m uvicorn youtube-dl-server:app --port 8123
In this example, YDL_UPDATE_TIME=False is the same as the command line option --no-mtime.
Usage
Start a download remotely
Downloads can be triggered by supplying the {{url}} of the requested video through the Web UI or through the REST interface via curl, etc.
HTML
Just navigate to http://{{host}}:8080/youtube-dl and enter the requested {{url}}.
Curl
curl -X POST --data-urlencode "url={{url}}" http://{{host}}:8080/youtube-dl/q
Fetch
fetch(`http://${host}:8080/youtube-dl/q`, {
method: "POST",
body: new URLSearchParams({
url: url,
format: "bestvideo"
}),
});
Bookmarklet
Add the following bookmarklet to your bookmark bar so you can conviently send the current page url to your youtube-dl-server instance.
javascript:!function(){fetch("http://${host}:8080/youtube-dl/q",{body:new URLSearchParams({url:window.location.href,format:"bestvideo"}),method:"POST"})}();
Implementation
The server uses starlette for the web framework and yt-dlp to handle the downloading. The integration with yt-dlp makes use of their python api.
This docker image is based on python:alpine and consequently alpine:3.8.
Install youtube-dl-server on Unraid in a few clicks.
Find youtube-dl-server in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.
Categories
Download Statistics
Total Downloads Over Time
Related apps
Explore more like this
Explore allDetails
kmb32123/youtube-dl-serverRuntime arguments
- Web UI
http://[IP]:[PORT:8080]/youtube-dl- Network
bridge- Privileged
- false
Template configuration
Container Port: 8080
- Target
- 8080
- Value
- 8080
Container Path: /youtube-dl
- Target
- /youtube-dl