ansango

Metube

4 min de lectura

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:

  1. Necesitas Node.js y Python 3.13. GitHub
  2. Clona el repositorio, entra al directorio ui, instala dependencias con npm install y construye la UI con ng build. GitHub
  3. 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 si DOWNLOAD_MODE=limited. Indica el número máximo de descargas concurrentes. Por defecto: 3. GitHub
  • DELETE_FILE_ON_TRASHCAN: si es true, los archivos se eliminan del servidor cuando se marcan como “borrados” en la interfaz. Por defecto: false. GitHub
  • DEFAULT_OPTION_PLAYLIST_STRICT_MODE: si es true, solo se descargan playlists cuando la URL apunta estrictamente a una playlist. GitHub
  • DEFAULT_OPTION_PLAYLIST_ITEM_LIMIT: límite máximo de ítems de la playlist que se pueden descargar. Por defecto 0 (sin límite). GitHub

Almacenamiento y directorios

  • DOWNLOAD_DIR: ruta donde se guardan las descargas. Por defecto /downloads dentro del contenedor. GitHub
  • AUDIO_DOWNLOAD_DIR: ruta para descargas solo de audio. Por defecto, es igual que DOWNLOAD_DIR. GitHub
  • CUSTOM_DIRS: habilita subdirectorios personalizados desde la UI para guardar descargas. Por defecto true. GitHub
  • CREATE_CUSTOM_DIRS: si es true, se crearán subdirectorios desde la UI. Por defecto true. GitHub
  • CUSTOM_DIRS_EXCLUDE_REGEX: expresión regular para excluir ciertos nombres de directorios. Por defecto (^|/)[.@].*$. GitHub
  • DOWNLOAD_DIRS_INDEXABLE: si es true, los directorios se hacen accesibles por web (indexables). Por defecto false. GitHub
  • STATE_DIR: ruta donde se guarda el estado de la cola (persistence). Por defecto /downloads/.metube dentro del contenedor. GitHub
  • TEMP_DIR: ruta temporal para descargas intermedias. Por defecto /downloads tambié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. GitHub
  • OUTPUT_TEMPLATE_CHAPTER: plantilla para capítulos si se dividen. Por defecto %(title)s - %(section_number)s %(section_title)s.%(ext)s. GitHub
  • OUTPUT_TEMPLATE_PLAYLIST: para carpetas de playlist. Por defecto %(playlist_title)s/%(title)s.%(ext)s. Si está vacía, se usa OUTPUT_TEMPLATE. GitHub
  • YTDL_OPTIONS: JSON con opciones para pasar a yt-dlp, como postprocesadores, recodificación, etc. GitHub
  • YTDL_OPTIONS_FILE: ruta a un archivo JSON con las opciones de YTDL_OPTIONS. Si ambos (YTDL_OPTIONS y YTDL_OPTIONS_FILE) están configurados, las opciones definidas en YTDL_OPTIONS tienen 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 /. GitHub
  • PUBLIC_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. GitHub
  • PUBLIC_HOST_AUDIO_URL: lo mismo que PUBLIC_HOST_URL, pero para descargas de audio. GitHub
  • HTTPS: si se establece a true, MeTube usará HTTPS. Debes especificar CERTFILE y KEYFILE. GitHub
  • CERTFILE / KEYFILE: rutas a los archivos de certificado SSL y clave si usas HTTPS. GitHub
  • ROBOTS_TXT: puedes montar un robots.txt para controlar el indexado de tu instancia de MeTube. GitHub

Otros ajustes básicos

  • UID: usuario bajo el cual corre MeTube. Por defecto 1000. GitHub
  • GID: grupo para MeTube. Por defecto 1000. GitHub
  • UMASK: máscara de permisos (umask). Por defecto 022. GitHub
  • DEFAULT_THEME: tema por defecto de la UI. Opciones: light, dark, auto. Por defecto auto. GitHub
  • LOGLEVEL: nivel de logs. Puede ser DEBUG, INFO, WARNING, ERROR, CRITICAL, NONE. Por defecto INFO. GitHub
  • ENABLE_ACCESSLOG: si activas los logs de acceso HTTP. Por defecto false. GitHub

Posts relacionados

Búsqueda no disponible en desarrollo
Tema
Oscuros
Claros