63 lines
1.8 KiB
Markdown
63 lines
1.8 KiB
Markdown
# yt-dlp Web Downloader
|
|
|
|
A minimal self-hosted web UI for downloading videos and audio via [yt-dlp](https://github.com/yt-dlp/yt-dlp).
|
|
|
|
## Features
|
|
|
|
- Download videos as **MP4** at any quality (best / 1080p / 720p / 480p / 360p)
|
|
- Download audio as **MP3** (192kbps, extracted via ffmpeg)
|
|
- Live progress bar with speed & ETA
|
|
- Direct in-browser file download button
|
|
- Works with YouTube, SoundCloud, Twitter/X, Twitch, and 1000+ other sites
|
|
|
|
## Quick Start
|
|
|
|
```bash
|
|
# Clone / copy this directory, then:
|
|
docker compose up -d --build
|
|
```
|
|
|
|
Open **http://localhost:8080** in your browser.
|
|
|
|
Downloaded files are saved to `./downloads/` on the host.
|
|
|
|
## Usage
|
|
|
|
1. Paste a URL into the input box
|
|
2. Click **Preview** to see the video title & thumbnail (optional)
|
|
3. Choose **Format** (Video or Audio) and **Quality**
|
|
4. Click **Download** — a progress card appears below
|
|
5. When done, click **⬇ Download File** to save it locally
|
|
|
|
## Configuration
|
|
|
|
| Variable | Default | Description |
|
|
|----------|---------|-------------|
|
|
| `TZ` | `Europe/Berlin` | Container timezone |
|
|
|
|
To change the host port, edit `docker-compose.yml`:
|
|
```yaml
|
|
ports:
|
|
- "9090:8080" # → opens on port 9090 instead
|
|
```
|
|
|
|
## Updating yt-dlp
|
|
|
|
yt-dlp releases frequently. Rebuild the image to get the latest version:
|
|
|
|
```bash
|
|
docker compose build --no-cache && docker compose up -d
|
|
```
|
|
|
|
Or, to update inside a running container without rebuilding:
|
|
|
|
```bash
|
|
docker exec ytdlp-web pip install --upgrade yt-dlp
|
|
```
|
|
|
|
## Notes
|
|
|
|
- Files are prefixed with a random job ID internally; the download button strips the prefix for a clean filename.
|
|
- Downloads are kept in `/downloads` inside the container. Mount a host path to persist them across container restarts.
|
|
- No authentication is included by default. If exposed to the internet, put it behind a reverse proxy (e.g. nginx or Caddy) with basic auth.
|