$docker.recipes

MeTube (yt-dlp Web UI)

beginner

Web GUI for yt-dlp to download videos from YouTube and other sites

[i]Overview

MeTube is a modern web-based frontend for yt-dlp, the most powerful and actively maintained YouTube video downloader available today. Built as a successor to the original youtube-dl project, yt-dlp supports over 1,000 video platforms including YouTube, Vimeo, TikTok, Twitter, and countless others. MeTube wraps this command-line tool in an intuitive web interface, making video downloading accessible to users who prefer GUI interactions over terminal commands. This Docker deployment creates a self-hosted video downloading service that operates entirely within your network, giving you complete control over your media acquisition workflow. The containerized approach ensures yt-dlp stays updated with the latest site compatibility fixes while maintaining a consistent user experience across different host systems. MeTube is perfect for content creators, researchers, educators, and media enthusiasts who need reliable video downloading capabilities without depending on third-party online services or browser extensions that may compromise privacy or functionality.

[*]Key Features

  • [+]Clean web interface for yt-dlp with real-time download progress monitoring
  • [+]Support for over 1,000 video platforms including YouTube, Vimeo, TikTok, and Twitch
  • [+]Flexible download queue management with ability to add multiple URLs simultaneously
  • [+]Advanced yt-dlp options passthrough via YTDL_OPTIONS environment variable
  • [+]Automatic video format selection with manual quality override capabilities
  • [+]Playlist and channel downloading with individual video selection options
  • [+]Download history tracking and management through persistent state storage
  • [+]Subtitle and metadata extraction with configurable filename templates

[#]Common Use Cases

  • [1]Content creators archiving their own videos from multiple platforms for backup purposes
  • [2]Educational institutions downloading lecture videos and course materials for offline access
  • [3]Researchers collecting video data from social media platforms for academic analysis
  • [4]Media professionals creating local libraries of reference materials and inspiration content
  • [5]Home media server operators building collections of legally downloadable content
  • [6]Corporate training departments archiving webinars and instructional videos
  • [7]Digital preservationists maintaining copies of important cultural or historical video content

[!]Prerequisites

  • [!]Docker and Docker Compose installed on host system
  • [!]Minimum 2GB RAM for handling multiple concurrent downloads
  • [!]At least 10GB free disk space for video storage (more for extensive downloading)
  • [!]Port 8081 available on host system (or ability to modify METUBE_PORT)
  • [!]Basic understanding of yt-dlp options syntax for advanced configuration
  • [!]Network connectivity to target video platforms (some may require VPN for geo-restrictions)
[!]

WARNING: For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms

[$]docker-compose.yml

[docker-compose.yml]
1services:
2 metube:
3 image: ghcr.io/alexta69/metube:latest
4 container_name: metube
5 restart: unless-stopped
6 ports:
7 - "${METUBE_PORT:-8081}:8081"
8 volumes:
9 - ./downloads:/downloads
10 environment:
11 - UID=${UID:-1000}
12 - GID=${GID:-1000}
13 - DOWNLOAD_DIR=/downloads
14 - STATE_DIR=/downloads/.metube
15 - YTDL_OPTIONS=${YTDL_OPTIONS:-{}}

[$].env Template

[.env]
1# MeTube Configuration
2METUBE_PORT=8081
3
4# User/Group IDs for file permissions
5UID=1000
6GID=1000
7
8# yt-dlp options as JSON
9# Example: {"format": "bestvideo+bestaudio/best"}
10YTDL_OPTIONS={}

[i]Usage Notes

  1. [1]Web interface at http://localhost:8081
  2. [2]Paste video URLs to download
  3. [3]Downloads saved to ./downloads folder
  4. [4]Supports YouTube, Vimeo, and 1000+ sites
  5. [5]Configure quality via YTDL_OPTIONS
  6. [6]Based on yt-dlp (youtube-dl fork)

[>]Quick Start

[terminal]
1# 1. Create the compose file
2cat > docker-compose.yml << 'EOF'
3services:
4 metube:
5 image: ghcr.io/alexta69/metube:latest
6 container_name: metube
7 restart: unless-stopped
8 ports:
9 - "${METUBE_PORT:-8081}:8081"
10 volumes:
11 - ./downloads:/downloads
12 environment:
13 - UID=${UID:-1000}
14 - GID=${GID:-1000}
15 - DOWNLOAD_DIR=/downloads
16 - STATE_DIR=/downloads/.metube
17 - YTDL_OPTIONS=${YTDL_OPTIONS:-{}}
18EOF
19
20# 2. Create the .env file
21cat > .env << 'EOF'
22# MeTube Configuration
23METUBE_PORT=8081
24
25# User/Group IDs for file permissions
26UID=1000
27GID=1000
28
29# yt-dlp options as JSON
30# Example: {"format": "bestvideo+bestaudio/best"}
31YTDL_OPTIONS={}
32EOF
33
34# 3. Start the services
35docker compose up -d
36
37# 4. View logs
38docker compose logs -f

[>]One-Liner

Run this command to download and set up the recipe in one step:

[terminal]
1curl -fsSL https://docker.recipes/api/recipes/metube/run | bash

[?]Troubleshooting

  • [!]HTTP Error 429 or rate limiting messages: Add delays between downloads using YTDL_OPTIONS with sleep-interval parameter
  • [!]Downloads failing with 'Video unavailable' errors: Update the container image as yt-dlp frequently patches site compatibility issues
  • [!]Permission denied errors when writing files: Verify UID and GID environment variables match your host system user ownership
  • [!]Container fails to start with port binding errors: Check if port 8081 is already in use or modify METUBE_PORT variable
  • [!]Downloads stuck at 0% progress: Some sites require cookies or authentication - configure these via YTDL_OPTIONS
  • [!]Large video files causing container crashes: Increase Docker memory limits or use format selection to download smaller files

Community Notes

Loading...
Loading notes...

## Download Recipe Kit

Get all files in a ready-to-deploy package

Includes docker-compose.yml, .env template, README, and license