MeTube: Selbst gehostetes YouTube-Download-Programm
(github.com/alexta69)-
32-Bit-ARM-Build eingestellt
- Neue Node-Versionen unterstützen 32-Bit-ARM nicht
- Wegen Sicherheitsupdates und Abhängigkeitsproblemen ist eine Migration auf ein 64-Bit-OS erforderlich
-
MeTube im Überblick
- Web-GUI für youtube-dl (verwendet einen yt-dlp-Fork)
- Unterstützt das Herunterladen von Videos von YouTube und vielen weiteren Websites
Mit Docker ausführen
-
Docker-Befehl
docker run -d -p 8081:8081 -v /path/to/downloads:/downloads ghcr.io/alexta69/metube -
docker-compose-Beispiel
version: "3" services: metube: image: ghcr.io/alexta69/metube container_name: metube restart: unless-stopped ports: - "8081:8081" volumes: - /path/to/downloads:/downloads
Konfiguration per Umgebungsvariablen
- UID: Benutzer-ID, unter der MeTube ausgeführt wird (Standard: 1000)
- GID: Gruppen-ID, unter der MeTube ausgeführt wird (Standard: 1000)
- UMASK: umask-Wert (Standard: 022)
- DEFAULT_THEME: Standard-Theme (
light,dark,auto, Standard:auto) - DOWNLOAD_DIR: Speicherpfad für Downloads (Standard:
/downloads) - AUDIO_DOWNLOAD_DIR: Speicherpfad nur für Audio-Downloads (Standard:
DOWNLOAD_DIR) - DOWNLOAD_DIRS_INDEXABLE: Ob Download-Verzeichnisse indexierbar sind (Standard:
false) - CUSTOM_DIRS: Ob Downloads in benutzerdefinierte Verzeichnisse aktiviert sind (Standard:
true) - CREATE_CUSTOM_DIRS: Ob die automatische Erstellung von Verzeichnissen unterstützt wird (Standard:
true) - STATE_DIR: Speicherpfad für Dateien zur Warteschlangen-Persistenz (Standard:
/downloads/.metube) - TEMP_DIR: Speicherpfad für temporäre Download-Dateien (Standard:
/downloads) - DELETE_FILE_ON_TRASHCAN: Ob in der UI gelöschte Dateien auch auf dem Server gelöscht werden (Standard:
false) - URL_PREFIX: Basispfad des Webservers (Standard:
/) - PUBLIC_HOST_URL: Basis-URL der in der UI angezeigten Download-Links
- PUBLIC_HOST_AUDIO_URL: Basis-URL der Audio-Download-Links
- OUTPUT_TEMPLATE: Dateinamensvorlage für Downloads (Standard:
%(title)s.%(ext)s) - OUTPUT_TEMPLATE_CHAPTER: Dateinamensvorlage für nach Kapiteln aufgeteilte Videos (Standard:
%(title)s - %(section_number)s %(section_title)s.%(ext)s) - YTDL_OPTIONS: Zusätzliche Optionen, die an youtube-dl übergeben werden (JSON-Format)
- YTDL_OPTIONS_FILE: Pfad zu einer JSON-Datei zum Befüllen von
YTDL_OPTIONS
Browser-Cookies verwenden
-
Zu
docker-compose.ymlhinzufügenvolumes: - /path/to/cookies:/cookies environment: - YTDL_OPTIONS={"cookiefile":"/cookies/cookies.txt"} -
Erweiterung zum Extrahieren von Cookies installieren
- Firefox
- Chrome
Browser-Erweiterungen
- Chrome: Im Google Chrome Webstore installierbar
- Firefox: Über Firefox Add-ons installierbar
iOS-Kurzbefehle
- iOS-Kurzbefehl: Sendet eine URL aus Safari an MeTube
- Serveradresse und Port müssen eingegeben werden
iOS-Kompatibilität
- Anforderungen an iOS-Videodateien: Erfordert die Videocodecs h264 oder h265 sowie den Audiocodec aac
- Beim Download im MP4-Format kann die Option „Best (iOS)“ gewählt werden
Bookmarklet
- Chrome-Bookmarklet: Sendet die aktuell geöffnete Webseite an MeTube
- Bei Verwendung auf HTTPS-Seiten ist ein HTTPS-Reverse-Proxy erforderlich
Hinter einem Reverse-Proxy ausführen
-
NGINX-Konfigurationsbeispiel
location /metube/ { proxy_pass http://metube:8081; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; } -
Apache-Konfigurationsbeispiel
<Location /metube/> ProxyPass http://localhost:8081/ retry=0 timeout=30 ProxyPassReverse http://localhost:8081/ </Location> <Location /metube/socket.io> RewriteEngine On RewriteCond %{QUERY_STRING} transport=websocket [NC] RewriteRule /(.*) ws://localhost:8081/socket.io/$1 [P,L] ProxyPass http://localhost:8081/socket.io retry=0 timeout=30 ProxyPassReverse http://localhost:8081/socket.io </Location> -
Caddy-Konfigurationsbeispiel
example.com { route /metube/* { uri strip_prefix metube reverse_proxy metube:8081 } }
yt-dlp-Updates
- Automatische Nightly-Builds: Wenn es eine neue yt-dlp-Version gibt, wird automatisch gebaut und das Docker-Image aktualisiert
- Installation und Konfiguration von watchtower empfohlen
Fehlerbehebung und Issues melden
- MeTube ist eine UI für yt-dlp: Probleme im Zusammenhang mit yt-dlp sollten nicht im MeTube-Projekt gemeldet werden
- Direkte Verwendung des yt-dlp-Befehls empfohlen: Optionen zuerst testen und dann auf
YTDL_OPTIONSanwenden
Lokal bauen und ausführen
-
Erforderliche Werkzeuge: node.js und Python 3.11
cd metube/ui npm install node_modules/.bin/ng build cd .. pip3 install pipenv pipenv install pipenv run python3 app/main.py -
Docker-Image lokal bauen
docker build -t metube .
Entwicklungsnotizen
- Funktioniert unter Windows, macOS und Linux
- Wenn der Server in VSCode ausgeführt wird, ist der Download-Ordner der
Downloads-Ordner des Benutzers
Zusammenfassung von GN⁺
- MeTube ist eine Web-GUI für youtube-dl, mit der Videos von verschiedenen Websites heruntergeladen werden können
- Mit Docker lässt es sich einfach bereitstellen und konfigurieren, zudem sind über zahlreiche Umgebungsvariablen individuelle Anpassungen möglich
- Mit Browser-Erweiterungen und iOS-Kurzbefehlen lassen sich Videos bequem herunterladen
- Durch automatische Updates auf die neueste yt-dlp-Version bleibt es stets aktuell
- Projekte mit ähnlichem Funktionsumfang sind unter anderem JDownloader und Video DownloadHelper
1 Kommentare
Hacker-News-Kommentare
Tube Archivist ist nützlich, um Technikkanäle zu archivieren und zu indexieren
Gewünscht wird eine Art YouTube-TiVo
Es wird darüber nachgedacht, mit
yt-dlpeine einfache App zu bauenEine Oberfläche mit Jellyfin-Integration wäre wünschenswert
yt-dlpherunterladen und anschließend ohne Werbung über Jellyfin streamenEs ist erstaunlich, dass es so viele Tools zum Spiegeln von YouTube gibt
Ein auf
yt-dlpbasierender Server könnte populär werden, wenn er wie PiHole als simples Image mit Frontend-Client-App verpackt wäreTubeSync wird verwendet
Cobalt.tools wird verwendet
Videos, die zu einer Playlist hinzugefügt wurden, werden heruntergeladen und auf einem gemeinsam genutzten Plex-Server gespeichert
Als verwandtes Tool gibt es Yark: YouTube Archiver with Offline UI