6 Punkte von GN⁺ 2024-07-30 | 1 Kommentare | Auf WhatsApp teilen
  • MeTube ist ein selbst gehostetes Web-UI für yt-dlp, mit dem sich Medien von YouTube und Dutzenden unterstützten Websites im Browser herunterladen lassen
  • Unterstützt den Download von Videos, Audio, Untertiteln und Thumbnails; auch Playlists und Kanäle können mit angepasstem Ausgabeformat und Download-Optionen heruntergeladen werden
  • Kanäle und Playlists lassen sich abonnieren, um regelmäßig nach neuen Einträgen zu suchen und neue Uploads automatisch in die Warteschlange zu stellen
  • Läuft per Docker oder docker-compose; Anzahl gleichzeitiger Downloads, Speicherpfad, Dateinamen-Template, HTTPS, CORS, Theme, Log-Level usw. werden über Umgebungsvariablen konfiguriert
  • yt-dlp-Optionen werden in der Reihenfolge globale Optionen, Presets und download-spezifische Overrides kombiniert; da download-spezifische Overrides beliebige Optionseingaben erlauben, sollten sie nur in vertrauenswürdigen Umgebungen aktiviert werden

Was MeTube macht

  • MeTube ist ein selbst gehostetes Web-UI auf Basis von yt-dlp
  • Es kann Medien von YouTube und Dutzenden Websites herunterladen, die von yt-dlp unterstützt werden
  • Die wichtigsten Funktionen sind:
    • Download von Videos, Audio, Untertiteln und Thumbnails über ein Browser-UI
    • Download von Playlists und Kanälen
    • Konfiguration von Ausgabepfaden und Download-Optionen
    • Abonnieren von Kanälen und Playlists mit regelmäßiger Prüfung auf neue Einträge
    • Automatisches Hinzufügen neuer Uploads zur Download-Warteschlange

Ausführung

  • Kann direkt mit Docker ausgeführt werden
docker run -d -p 8081:8081 -v /path/to/downloads:/downloads ghcr.io/alexta69/metube
  • Das docker-compose-Beispiel verwendet das Image ghcr.io/alexta69/metube und mountet /downloads im Container auf das Download-Verzeichnis des Hosts
services:
  metube:
    image: ghcr.io/alexta69/metube
    container_name: metube
    restart: unless-stopped
    ports:
      - "8081:8081"
    volumes:
      - /path/to/downloads:/downloads

Download- und Speicher-Konfiguration

  • MAX_CONCURRENT_DOWNLOADS begrenzt die Anzahl gleichzeitig laufender Downloads; Standardwert ist 3
  • Ist DELETE_FILE_ON_TRASHCAN auf true gesetzt, wird beim Verschieben eines Eintrags aus dem UI-Bereich „Completed“ in den Papierkorb auch die Download-Datei auf dem Server gelöscht
  • DEFAULT_OPTION_PLAYLIST_ITEM_LIMIT legt die maximale Anzahl herunterladbarer Einträge aus einer Playlist fest; der Standardwert 0 bedeutet keine Begrenzung
  • Auch Standardwerte für Abonnements werden über Umgebungsvariablen angepasst
    • SUBSCRIPTION_DEFAULT_CHECK_INTERVAL: automatisches Prüfintervall pro Abonnement, standardmäßig 60 Minuten
    • SUBSCRIPTION_SCAN_PLAYLIST_END: maximale Anzahl von Playlist- bzw. Kanal-Einträgen, die bei einer Abonnementprüfung abgerufen werden, standardmäßig 50
    • SUBSCRIPTION_MAX_SEEN_IDS: Obergrenze für die Anzahl gespeicherter Video-IDs pro Abonnement, standardmäßig 50000
  • DOWNLOAD_DIR ist der Speicherpfad für Downloads; im Docker-Image ist der Standardwert /downloads
  • Für reine Audio-Downloads kann mit AUDIO_DOWNLOAD_DIR ein separater Speicherpfad gesetzt werden
  • Über CUSTOM_DIRS und CREATE_CUSTOM_DIRS können im UI Download-Unterverzeichnisse ausgewählt oder automatisch erstellt werden
  • In STATE_DIR werden persistente Statusdateien wie queue.json, pending.json, completed.json und subscriptions.json gespeichert
  • TEMP_DIR ist der Pfad für temporäre Download-Dateien; eine SSD oder ein RAM-Dateisystem kann die Performance verbessern, ein RAM-Dateisystem kann jedoch das Fortsetzen von Downloads verhindern

Dateinamen und yt-dlp-Optionen

  • OUTPUT_TEMPLATE ist das Template für Download-Dateinamen; Standardwert ist %(title)s.%(ext)s
  • Für Kapitel-, Playlist- und Kanal-Downloads können separate Templates festgelegt werden
    • OUTPUT_TEMPLATE_CHAPTER

    • OUTPUT_TEMPLATE_PLAYLIST

      • OUTPUT_TEMPLATE_CHANNEL
      • yt-dlp-Optionen werden als JSON-Objekt angegeben
      • Die Optionshierarchie wird von breitem zu engem Geltungsbereich angewendet
      1. Globale Optionen: Standardwerte für alle Downloads
      2. Presets: benannte Optionsbündel, die im UI pro Download ausgewählt werden
      3. Download-spezifische Overrides: frei eingegebene Optionen, die nur für einen bestimmten Download gelten
      • Bei kollidierenden Schlüsseln hat die spezifischere Einstellung Vorrang
      • Download-spezifische Overrides haben Vorrang vor Presets
      • Presets haben Vorrang vor globalen Optionen
      • Wird ein Optionswert in JSON auf null gesetzt, wird diese Option für den jeweiligen Download entfernt
      • YTDL_OPTIONS_FILE und YTDL_OPTIONS_PRESETS_FILE überwachen Dateiänderungen und werden automatisch neu geladen, sodass kein Container-Neustart nötig ist
      • Werden Dateien und Umgebungsvariablen gemeinsam genutzt und dabei derselbe Schlüssel oder derselbe Preset-Name definiert, haben Dateieinstellungen Vorrang

Presets und Overrides

  • Presets werden im UI unter Advanced Options als „Option Presets“ angezeigt
  • Die Beispiel-Presets führen folgende Aufgaben aus
    • sponsorblock: entfernt sponsor-, selfpromo- und interaction-Segmente
    • embed-subs: lädt englische und deutsche Untertitel herunter und bettet sie in die Videodatei ein
    • limit-rate: begrenzt die Download-Geschwindigkeit auf etwa 5 MB/s
  • Werden mehrere Presets ausgewählt, werden sie der Reihe nach angewendet; bei gleichen Optionen überschreibt das spätere Preset das frühere
  • Wird ALLOW_YTDL_OPTIONS_OVERRIDES auf true gesetzt, erscheint im UI das freie JSON-Eingabefeld „Custom yt-dlp Options“
  • Download-spezifische Overrides sind standardmäßig deaktiviert
  • Wenn diese Funktion aktiviert wird, können UI-Nutzer beliebige yt-dlp-API-Optionen übergeben; je nach Option kann dadurch die Ausführung beliebiger Befehle innerhalb des Containers möglich sein. Sie sollte daher nur in vertrauenswürdigen Umgebungen aktiviert werden
  • MeTube erzwingt im anfänglichen Schritt zum Abrufen von Metadaten eigenes Verhalten für extract_flat und noplaylist; Presets können diese Schlüssel in diesem Schritt nicht überschreiben

Cookies, Browser-Integration und Schnellzugriff

  • Wenn eingeschränkte oder private Videos heruntergeladen werden müssen, können Browser-Cookies verwendet werden
    • Cookies per Firefox- oder Chrome-Erweiterung als cookies.txt exportieren
    • In den Advanced Options von MeTube über Upload Cookies hochladen
    • Hochgeladene Cookies im selben Abschnitt über Delete Cookies löschen
  • Browser-Erweiterungen ermöglichen es, ein Video per Rechtsklick direkt an MeTube zu senden
    • Für die Nutzung auf HTTPS-Seiten muss die MeTube-Instanz hinter einem HTTPS-Reverse-Proxy liegen
    • Da Erweiterungen Anfragen von Ursprüngen wie chrome-extension://... oder moz-extension://... senden, ist die Einstellung CORS_ALLOWED_ORIGINS=* erforderlich
  • Die Chrome-Erweiterung kann über den Google Chrome Webstore oder aus dem Quellcode installiert werden
  • Die Firefox-Erweiterung kann über Firefox Addons installiert oder aus dem Quellcode verwendet werden
  • Der iOS Shortcut kann URLs aus dem Teilen-Menü von Safari an MeTube senden
  • Das Bookmarklet sendet die aktuell geöffnete Webseite an MeTube; auf HTTPS-Seiten muss MeTube per HTTPS konfiguriert sein oder hinter einem HTTPS-Reverse-Proxy liegen
  • Da das Bookmarklet vom Ursprung der aktuellen Seite Cross-Origin-Anfragen an MeTube sendet, müssen die Ursprünge der zu nutzenden Websites zu CORS_ALLOWED_ORIGINS hinzugefügt werden
  • Die MeTube extension für Raycast ermöglicht es, Videos direkt aus Raycast hinzuzufügen

Webserver, HTTPS, Reverse Proxy

  • Webserver-bezogene Einstellungen werden über Umgebungsvariablen angepasst
    • HOST hat den Standardwert 0.0.0.0
    • PORT hat den Standardwert 8081
    • URL_PREFIX wird für Deployments unter einem Unterpfad hinter einem Reverse Proxy verwendet
    • PUBLIC_HOST_URL und PUBLIC_HOST_AUDIO_URL ändern die Basis-URL für Download-Links abgeschlossener Dateien
  • Wird HTTPS auf true gesetzt und CERTFILE sowie KEYFILE angegeben, läuft MeTube im HTTPS-Modus
  • Ein Reverse Proxy kann für HTTPS-Terminierung oder Authentifizierung verwendet werden
  • Das Image linuxserver/swag enthält Konfigurationsfragmente für MeTube als subfolder und subdomain sowie eine Authelia-Authentifizierungskonfiguration
  • Das NGINX-Beispiel proxyt den Pfad /metube/ auf http://metube:8081 und setzt die Header Upgrade und Connection für WebSocket-Funktionalität
  • Auch Reverse-Proxy-Beispiele für Apache und Caddy werden bereitgestellt

Updates, Troubleshooting und lokale Entwicklung

  • MeTube ist von yt-dlp abhängig; wegen Änderungen am Layout von Videowebsites muss yt-dlp häufig aktualisiert werden
  • Wenn ein neues stabiles yt-dlp-Release erscheint, wird automatisch ein neues MeTube-Docker-Image veröffentlicht
  • Um Container aktuell zu halten, kann watchtower verwendet werden
  • Um dem Nightly-Channel von yt-dlp zu folgen, wird in YTDL_NIGHTLY_UPDATE_TIME im Format HH:MM die Uhrzeit festgelegt, zu der täglich ein Upgrade und ein Neustart von MeTube ausgeführt werden
  • Bei Problemen mit Authentifizierung, Nachbearbeitung, Berechtigungen oder YTDL_OPTIONS wird empfohlen, zunächst direkt mit yt-dlp zu debuggen und anschließend die funktionierenden Optionen nach MeTube zu übernehmen
  • Für lokalen Build und lokale Ausführung werden Node.js 22+ und Python 3.13 benötigt
  • Das UI wird mit pnpm gebaut, Python-Abhängigkeiten werden mit uv sync installiert, anschließend startet man mit uv run python3 app/main.py
  • Das Docker-Image kann lokal mit docker build -t metube . gebaut werden; dabei wird auch das UI mitgebaut

1 Kommentare

 
GN⁺ 2024-07-30
Meinungen auf Hacker News
  • Tube Archivist ist ebenfalls eine Überlegung wert. Wenn man nur ein paar Videos herunterladen will, ist es überdimensioniert, aber ich nutze es, um meine liebsten Tech-Kanäle zu archivieren und zu indexieren.
    Nicht nur Transkripte/Untertitel, sondern auch Kommentare, Titel und Beschreibungen lassen sich per Volltext- und Metadatensuche durchsuchen – ärgerlicherweise ist das deutlich besser als das, was Alphabet anbietet.
    https://www.tubearchivist.com/

    • Als ich mir TubeArchivist angesehen habe, gefiel mir nicht, dass es 3 Container benötigt. Dann habe ich im selfhosted-Subreddit Pinchflat gefunden; es läuft in einem einzigen Container, war leicht zu deployen und funktioniert bisher gut.
      https://github.com/kieraneglin/pinchflat
    • Das würde ich vermeiden. Die Dateibenennung setzt voraus, dass eine Datenbank existiert.
      Für temporären Speicher kann ich das verstehen, aber ein Tool, das sich selbst als „Archivierungs“-Software bezeichnet, sollte davon ausgehen, dass es möglicherweise nicht länger überlebt als die Daten, die es bewahren soll.
      Ich hatte gehofft, es wäre etwas wie ein PeerTube-Klon mit Download-Funktion, aber die Ergebnisse haben mich ernüchtert; yt-dlp mit cleverer Konfiguration und Skripten erledigt Archivierungsarbeit besser.
    • Google wird seine eigenen Produkte nicht auf eine strukturierte, fortgeschrittene Weise bequem nutzbar machen. So ein Ansatz wäre zu vorteilhaft für die Nutzer und gäbe ihnen zu viel Kontrolle. Google mag so etwas nicht.
    • Eine weitere Alternative, die heute früher auf der Startseite war: Yark: YouTube Archiver with Offline UI
      https://news.ycombinator.com/item?id=41100820
    • Ich denke schon lange darüber nach, zu Tube Archivist zu wechseln, aber ich habe mehrere TB an YouTube-Videos, die ich mit TubeSync gesammelt habe, und möchte sie nicht erneut herunterladen.
      Zum Glück habe ich den Format-String, mit dem die Dateinamen gespeichert wurden, und da TubeSync ein Django- und PostgreSQL-Backend nutzt, könnte man sie vielleicht mit den YouTube-IDs verknüpfen. Trotzdem sieht die Migration ziemlich nach Albtraum aus.
  • Was ich wirklich will, ist ein YouTube-TiVo.
    Ich habe etwa 100 Kanäle, die ich fast religiös verfolge, die aber nur selten etwas hochladen, und deren Videos möchte ich auf keinen Fall verpassen.
    Ich will auch nicht bei YouTube Hunderte neuer Videos von Kanälen durchwühlen, die viermal am Tag posten, nur um die 1–2 zu finden, die ich tatsächlich sehen möchte. Am Ende verpasst man sie doch.
    Schön wäre ein Prioritäts-Feed, der nur das enthält, was ich wirklich sehen will oder sehen sollte; noch besser wäre es, wenn alles heruntergeladen würde und ich es per DLNA ansehen könnte.
    Dafür zu sorgen, dass wir das, was wir mögen, nicht verpassen, ist nicht die Art, wie YouTube arbeitet. YouTubes Art ist es, uns Videos anzudrehen, die 3-Minuten-Inhalte auf 18–22 Minuten strecken, während uns das Feedback ans Gesicht gefesselt bleibt.

    • Löst das nicht einfach YouTube-Abos? Abonniere diese 100 Kanäle und setze ein Lesezeichen auf die Abo-Seite; dann hast du einen Prioritäts-Feed mit nur dem, was du sehen willst.
      Wenn du kein Konto erstellen möchtest, ist das in Ordnung, und NewPipe passt dann gut; aber es gibt eine eigene Seite, die Videos selbst ausgewählter Kanäle in chronologischer Reihenfolge zeigt. Da zu sagen, „dafür zu sorgen, dass wir das, was wir mögen, nicht verpassen, ist nicht die Art, wie YouTube arbeitet“, wirkt etwas seltsam.
    • NewPipe eignet sich gut dafür. Entfernt man in den Inhalten der Hauptseite die Spalte „Default Kiosk“ und lässt nur „What's New“ übrig, sieht man ausschließlich Videos abonnierter Kanäle. Die Abos in NewPipe sind überhaupt nicht in ein Google-Konto integriert.
    • Soweit ich weiß, nutzt YouTube immer noch RSS. Das könntest du ausprobieren.
    • Ich nutze für diesen Zweck Invidious. Es hat einen Prioritäts-Feed nur für Abos, was mir gefällt.
      Die Auffindbarkeit ist nicht gut, aber wenn das für deinen Use Case nicht nötig ist, ist es einen Blick wert.
    • Es gibt eine Erweiterung namens fraidycat, die ich genau dafür nutze.
      https://fraidyc.at/
  • Eines verstehe ich nicht: Warum muss das auf einem Server gehostet werden? Könnte es nicht einfach eine Standalone-App sein, die unter Windows/Linux/mac läuft?
    Ich habe vor Kurzem angefangen, yt-dlp zu nutzen, und überlegt, eine einfache App zu bauen. Lohnt sich das? Gibt es für so etwas schon Alternativen?

    • Wenn man möchte, kann ein Windows-/Linux-/OSX-Gerät oder eine virtuelle Maschine bzw. ein Container darauf als Server dienen. So müssen die Entwickler nicht getrennt eine Web-UX und eine native UX bauen.
      Viele Leute betreiben selbst gehostete Apps auf externen Servern, im Homelab oder in einer Kombination daraus und richten diese Ressourcen wie eine Infrastruktur mit Backups usw. ein. PC/Laptop/Tablet/Telefon bleiben dann relativ einfache Clients oder Caches; bei Verlust oder Beschädigung kann man lokal mit dem Server synchronisierte Inhalte einfach wiederherstellen, wodurch der Austausch leichter wird. Das ist einer der Gründe, warum diese Art von Self-Hosting beliebt ist.
      Desktop-Apps als Wrapper um yt-dlp habe ich einige gesehen. Ich habe sie nicht selbst genutzt, daher kann ich wenig über Stabilität oder Zuverlässigkeit sagen, aber wenn du nicht aus Spaß etwas Neues bauen willst, solltest du zuerst suchen. Vielleicht gibt es schon genau das, was du möchtest.
    • Celluloid nutzt automatisch yt-dlp zum Streamen, wenn man es auffordert, eine unterstützte URL zu öffnen. Parabolic ist ein dediziertes Download-Tool, das yt-dlp verwendet.
      https://flathub.org/apps/details/io.github.celluloid_player....
      https://flathub.org/apps/org.nickvision.tubeconverter
    • Wenn man nur YouTube-Videos herunterlädt, braucht man nicht einmal zwingend yt-dlp. Das geht mit deutlich weniger Code und Komplexität; ich nutze dafür ein sehr kleines C-Programm. Auch ein kleines Shell-Skript funktioniert völlig ausreichend.
      Worüber niemand spricht: yt-dlp kann inzwischen itag 22 nicht mehr herunterladen, und itag 18 ist gedrosselt. Deshalb muss yt-dlp Audio- und Videodateien getrennt laden und anschließend mit ffmpeg zusammenführen.
      Die YouTube-Werbeumsätze haben gerade die Konsensschätzungen verfehlt. Der Zugriff auf YouTube-Videos könnte künftig noch schlechter werden.
      Wenn man nicht die Gewohnheit hat, bestimmte Formate auszuwählen, merkt man das vermutlich kaum. Manche haben zum Beispiel jahrelang nur itag 18 und 22 verwendet.
    • Es gibt auch Freetube.
      https://freetubeapp.io/
    • Man möchte Videos vielleicht auf ein NAS oder einen Heimserver herunterladen und dort speichern, nicht auf das Gerät, das man gerade benutzt.
      Eine Dockerisierte Web-App zu bauen und zu pflegen ist deutlich einfacher, als jeweils Desktop-/Mobile-Clients für Windows, macOS, Android, iOS und Linux zu erstellen.
  • Eine Schnittstelle, die mit Jellyfin integriert ist, wäre schön: YouTube durchsuchen, mit yt-dlp herunterladen und dann werbefrei über Jellyfin streamen.

    • Ich nutze es fast genau so, nur der yt-dlp-Schritt ist manuell. Ein Jellyfin-Plugin wäre großartig.
  • Ziemlich cool. Momentan nutze ich https://cobalt.tools, das ist auch in Ordnung.

    • Perfekt. Es gibt eine Option, das ursprüngliche YouTube-Audioformat herunterzuladen, ohne es nach mp3 zu transkodieren.
  • Ich habe festgestellt, dass Brave für iOS einen Playlist-Button hat, mit dem man YouTube-Videos herunterladen und auf dem Gerät speichern kann. PiP und Offline-Wiedergabe funktionieren, und Werbung gibt es auch nicht.
    Es nutzt eine öffentliche Lizenz auf Basis des Mozilla-iOS-Backends; ich frage mich, warum nicht mehr Apps so etwas machen. Sie haben einen Weg gefunden, Apple dazu zu bringen, es zu akzeptieren, und der CEO hat hier auch schon einmal gepostet und diese Technik als zulässig verteidigt.
    Im Kern funktioniert es erst, nachdem das Video innerhalb der normalen YouTube-Website geladen wurde, und es ist wie ein Lesemodus-Button, der nicht nur für YouTube, sondern für beliebige Videoinhalte gilt.

  • Ich finde es etwas erstaunlich, dass es so viele YouTube-Mirroring-Tools gibt. Wenn man so etwas nutzt: Warum lädt/archiviert man Videos, statt einfach von YouTube zu streamen?
    Ich verstehe, dass Archivieren sinnvoll sein kann, falls etwas von YouTube gelöscht wird, aber bei mir passiert das extrem selten. Wenn ich ein Video gesehen habe, ist es erledigt, und wenn ich es später nicht mehr sehen kann, ist mir das ziemlich egal.

    • Es gibt mehrere Gründe, Videos herunterzuladen oder zu archivieren, statt von YouTube zu streamen.
      Erstens ist Werbeentfernung für viele ein ziemlich wichtiger Grund.
      Zweitens kann man, wie schon erwähnt, ein Video oder einen ganzen Kanal nicht mehr streamen, wenn er wegen Copyright-Claims oder anderer Meldungen entfernt wurde. Je nachdem, welche Inhalte man schaut, kann das für manche deutlich wichtiger sein als für dich.
      Drittens kann man für die Offline-Wiedergabe herunterladen. Das geht zwar auch mit der offiziellen YouTube-App, aber man muss für Premium zahlen; der Preis wirkt überzogen, und das Löschproblem bleibt trotzdem bestehen.
      Viertens geht es um lokale Indizierung. Wenn man später auf Videos verweisen will, um sie erneut anzusehen oder zu teilen, kann es bequemer sein, sie in der eigenen Struktur zu organisieren, statt Lesezeichen auf die YouTube-Kopie zu pflegen oder jedes Mal zu suchen.
      Es kann eine Mischung dieser Gründe sein, und sicher gibt es weitere, die ich nicht bedacht habe oder an die ich mich gerade nicht erinnere.
    • Für mich ist es derselbe Grund, aus dem Leute früher Videorekorder benutzt haben. Es geht nicht um „Urheberrechtsverletzung“, sondern darum, etwas für später zu speichern oder es anzusehen, wenn keine oder nur eine langsame Internetverbindung verfügbar ist.
      Das meiste, was ich herunterlade, sehe ich einmal an und lösche es dann.
    • Im Heimnetz meiner Kinder blockiere ich YouTube und gebe ihnen stattdessen Zugriff auf ein von mir kuratiertes DadTube.
    • Du wunderst dich, warum solche Tools existieren, und nennst gleichzeitig selbst den wichtigsten Grund, warum sie existieren sollten.
      Außerdem gibt es Situationen, in denen YouTube-Streaming nicht möglich ist: Das Internet ist ausgefallen, ein ausländischer Mobiltarif wäre zu teuer, oder man möchte einfach die miese Werbung loswerden.
    • Wegen Bandbreitenlimits. Wenn man dieselbe Musikvideo-Playlist immer wieder abspielen möchte, frisst das ziemlich viel vom Kontingent.
  • Verwandt: Yark: YouTube Archiver with Offline UI
    https://news.ycombinator.com/item?id=41100820

  • Wenn man einen der auf yt-dlp basierenden Server mit einem sehr einfachen Pi-hole-ähnlichen Image-Erstellungstool und einer ordentlichen Frontend-Client-App zur Wiedergabe verpackt, könnte das meiner Meinung nach groß werden – ähnlich wie Pi-hole sich bei weniger technisch versierten Nutzern verbreitet hat.
    Man kauft einen Raspberry Pi, schreibt ein Image auf eine microSD-Karte, wählt seine Lieblings-YouTube-Kanäle aus und installiert die Client-App; dann sind alle bevorzugten YouTube-Inhalte lokal und ohne Werbung verfügbar.

  • Ich nutze derzeit TubeSync. Der Funktionsumfang ist schlicht und es hat auch viele Bugs, aber für mich funktioniert es gut genug.
    Was ich brauche, ist nur: Kanäle oder Playlists abonnieren, Videos in einen bestimmten Pfad herunterladen und einmal täglich nach neuen Inhalten suchen.
    Die nötige UX beschränkt sich auf die Kanaleinstellungen; danach sollen einfach nur Dateien gespeichert werden, und Plex kümmert sich um den Rest. Kennt jemand eine bessere Alternative?