MeTube (yt-dlp Web UI)
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:latest4 container_name: metube5 restart: unless-stopped6 ports: 7 - "${METUBE_PORT:-8081}:8081"8 volumes: 9 - ./downloads:/downloads10 environment: 11 - UID=${UID:-1000}12 - GID=${GID:-1000}13 - DOWNLOAD_DIR=/downloads14 - STATE_DIR=/downloads/.metube15 - YTDL_OPTIONS=${YTDL_OPTIONS:-{}}[$].env Template
[.env]
1# MeTube Configuration2METUBE_PORT=808134# User/Group IDs for file permissions5UID=10006GID=100078# yt-dlp options as JSON9# Example: {"format": "bestvideo+bestaudio/best"}10YTDL_OPTIONS={}[i]Usage Notes
- [1]Web interface at http://localhost:8081
- [2]Paste video URLs to download
- [3]Downloads saved to ./downloads folder
- [4]Supports YouTube, Vimeo, and 1000+ sites
- [5]Configure quality via YTDL_OPTIONS
- [6]Based on yt-dlp (youtube-dl fork)
[>]Quick Start
[terminal]
1# 1. Create the compose file2cat > docker-compose.yml << 'EOF'3services:4 metube:5 image: ghcr.io/alexta69/metube:latest6 container_name: metube7 restart: unless-stopped8 ports:9 - "${METUBE_PORT:-8081}:8081"10 volumes:11 - ./downloads:/downloads12 environment:13 - UID=${UID:-1000}14 - GID=${GID:-1000}15 - DOWNLOAD_DIR=/downloads16 - STATE_DIR=/downloads/.metube17 - YTDL_OPTIONS=${YTDL_OPTIONS:-{}}18EOF1920# 2. Create the .env file21cat > .env << 'EOF'22# MeTube Configuration23METUBE_PORT=80812425# User/Group IDs for file permissions26UID=100027GID=10002829# yt-dlp options as JSON30# Example: {"format": "bestvideo+bestaudio/best"}31YTDL_OPTIONS={}32EOF3334# 3. Start the services35docker compose up -d3637# 4. View logs38docker 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
Shortcuts: C CopyF FavoriteD Download