docker.recipes

MeTube (yt-dlp Web UI)

beginner

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

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

  • 1Content creators archiving their own videos from multiple platforms for backup purposes
  • 2Educational institutions downloading lecture videos and course materials for offline access
  • 3Researchers collecting video data from social media platforms for academic analysis
  • 4Media professionals creating local libraries of reference materials and inspiration content
  • 5Home media server operators building collections of legally downloadable content
  • 6Corporate training departments archiving webinars and instructional videos
  • 7Digital 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)

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={}

Usage Notes

  1. 1Web interface at http://localhost:8081
  2. 2Paste video URLs to download
  3. 3Downloads saved to ./downloads folder
  4. 4Supports YouTube, Vimeo, and 1000+ sites
  5. 5Configure quality via YTDL_OPTIONS
  6. 6Based 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

Ad Space