·
4 min de lectura
Metube
- docker ,
- downloader ,
- homelab ,
- self hosted ,
- youtube ,
- yt dlp
Web GUI para descargar con youtube-dl soportando playlists
MeTube es una interfaz web (GUI) de youtube-dl / yt-dlp para uso autoalojado (self-hosted). Permite descargar vídeos (y listas de reproducción) desde YouTube y otras decenas de sitios.
Características
- Interfaz web para gestionar descargas con yt-dlp / youtube-dl.
- Soporte para listas de reproducción, permitiendo descargar playlists completas.
- Autoalojado: puedes correr MeTube en tu propio servidor.
- Compatibilidad con múltiples sitios web (no solo YouTube).
- Permite configurar el comportamiento de descarga (secuencial, concurrente, limitado).
- Capacidad para borrar archivos descargados desde la interfaz (si se configura).
- Soporte para HTTPS y uso detrás de un proxy inverso.
- Bookmarklet y atajos para enviar URLs directamente desde el navegador / iOS.
Uso e instalación
Docker
Puedes ejecutar MeTube muy fácilmente con Docker:
docker run -d -p 8081:8081 -v /path/to/downloads:/downloads ghcr.io/alexta69/metube
Docker compose
services:
metube:
image: ghcr.io/alexta69/metube
container_name: metube
restart: unless-stopped
ports:
- "8081:8081"
volumes:
- /path/to/downloads:/downloads
Ejecución local
Si prefieres ejecutarlo sin Docker:
- Necesitas Node.js y Python 3.13. GitHub
- Clona el repositorio, entra al directorio
ui, instala dependencias connpm instally construye la UI conng build. GitHub - Luego corre el servidor Python desde
app/main.py
Configuración
Variables de entorno
MeTube se configura mediante variables de entorno (especialmente útil con Docker). Algunas de las más relevantes:
Comportamiento de descarga
DOWNLOAD_MODE: controla cómo se gestionan las descargas. Opciones:sequential: una descarga a la vez.concurrent: todas las descargas se inician inmediatamente.limited: descarga concurrente con un límite. Por defecto:limited. GitHub
MAX_CONCURRENT_DOWNLOADS: solo tiene efecto siDOWNLOAD_MODE=limited. Indica el número máximo de descargas concurrentes. Por defecto:3. GitHubDELETE_FILE_ON_TRASHCAN: si estrue, los archivos se eliminan del servidor cuando se marcan como “borrados” en la interfaz. Por defecto:false. GitHubDEFAULT_OPTION_PLAYLIST_STRICT_MODE: si estrue, solo se descargan playlists cuando la URL apunta estrictamente a una playlist. GitHubDEFAULT_OPTION_PLAYLIST_ITEM_LIMIT: límite máximo de ítems de la playlist que se pueden descargar. Por defecto0(sin límite). GitHub
Almacenamiento y directorios
DOWNLOAD_DIR: ruta donde se guardan las descargas. Por defecto/downloadsdentro del contenedor. GitHubAUDIO_DOWNLOAD_DIR: ruta para descargas solo de audio. Por defecto, es igual queDOWNLOAD_DIR. GitHubCUSTOM_DIRS: habilita subdirectorios personalizados desde la UI para guardar descargas. Por defectotrue. GitHubCREATE_CUSTOM_DIRS: si estrue, se crearán subdirectorios desde la UI. Por defectotrue. GitHubCUSTOM_DIRS_EXCLUDE_REGEX: expresión regular para excluir ciertos nombres de directorios. Por defecto(^|/)[.@].*$. GitHubDOWNLOAD_DIRS_INDEXABLE: si estrue, los directorios se hacen accesibles por web (indexables). Por defectofalse. GitHubSTATE_DIR: ruta donde se guarda el estado de la cola (persistence). Por defecto/downloads/.metubedentro del contenedor. GitHubTEMP_DIR: ruta temporal para descargas intermedias. Por defecto/downloadstambién. Se recomienda ponerla en un SSD o un sistema de ficheros RAM para mejorar rendimiento. GitHub
Naming de archivos y opciones de yt-dlp
OUTPUT_TEMPLATE: plantilla para nombrar los archivos descargados (vídeos). Por defecto%(title)s.%(ext)s. GitHubOUTPUT_TEMPLATE_CHAPTER: plantilla para capítulos si se dividen. Por defecto%(title)s - %(section_number)s %(section_title)s.%(ext)s. GitHubOUTPUT_TEMPLATE_PLAYLIST: para carpetas de playlist. Por defecto%(playlist_title)s/%(title)s.%(ext)s. Si está vacía, se usaOUTPUT_TEMPLATE. GitHubYTDL_OPTIONS: JSON con opciones para pasar a yt-dlp, como postprocesadores, recodificación, etc. GitHubYTDL_OPTIONS_FILE: ruta a un archivo JSON con las opciones deYTDL_OPTIONS. Si ambos (YTDL_OPTIONSyYTDL_OPTIONS_FILE) están configurados, las opciones definidas enYTDL_OPTIONStienen prioridad. GitHub
Servidor web y URL
URL_PREFIX: prefijo de la URL base para el servidor web, útil si va detrás de un proxy inverso. Por defecto/. GitHubPUBLIC_HOST_URL: URL base pública para los enlaces de descarga mostrados en la UI. Si tus ficheros descargados se sirven desde otro servidor, puedes especificar esta URL. GitHubPUBLIC_HOST_AUDIO_URL: lo mismo quePUBLIC_HOST_URL, pero para descargas de audio. GitHubHTTPS: si se establece atrue, MeTube usará HTTPS. Debes especificarCERTFILEyKEYFILE. GitHubCERTFILE/KEYFILE: rutas a los archivos de certificado SSL y clave si usas HTTPS. GitHubROBOTS_TXT: puedes montar unrobots.txtpara controlar el indexado de tu instancia de MeTube. GitHub
Otros ajustes básicos
UID: usuario bajo el cual corre MeTube. Por defecto1000. GitHubGID: grupo para MeTube. Por defecto1000. GitHubUMASK: máscara de permisos (umask). Por defecto022. GitHubDEFAULT_THEME: tema por defecto de la UI. Opciones:light,dark,auto. Por defectoauto. GitHubLOGLEVEL: nivel de logs. Puede serDEBUG,INFO,WARNING,ERROR,CRITICAL,NONE. Por defectoINFO. GitHubENABLE_ACCESSLOG: si activas los logs de acceso HTTP. Por defectofalse. GitHub