Wer gerne Filme und Serien auf seinem NAS archiviert, kommt an dem Dream-Team Plex Media Server, JDownloader und Filebot nicht vorbei. In der Vergangenheit war eine native Installation auf einem Synology NAS die beste Option. Noch besser ist nach meiner Erfahrung die Installation und vor allem der Betrieb über Docker. Diese Anleitung funktioniert dank Docker auf mit DSM 7.
Warum Docker?
Docker kapselt Linux Umgebungen maßgeschneidert als Container für die jeweilige Anwendung. Bestimmte Bereiche wie Ports und Speicherplatz können dabei nach außen dem umliegenden System zur Verfügung gestellt werden. Bei Aktualisierungen wird dabei meistens der gesamte Container ausgetauscht. Der Betrieb und die Wartung sind viel einfacher über Docker zu realisieren als, wenn man sich das DSM über native Scripte und Anwendungen verunstaltet. Das bedeutet, kein Node.js Paket oder Java-Versionen mehr direkt auf dem NAS installieren. Zudem werden Docker Container nicht nur für Synology erstellt und gepflegt. Dadurch gibt es eine deutlich besserer Unterstützung durch die Community über Docker.
Voraussetzung für die Nutzung von Docker
Um Docker auf einem Synology NAS nutzen zu können, benötigt man ein Gerät der „plus“-Reihe. Denn nur diese Geräte verfügen über eine x86-CPU. Einsteigermodelle sind das DS218+ (kaufen) oder DS220+ (kaufen). Ich selber nutze das DS1019+ (kaufen) mit einer SSD als Laufwerk.
Notwendige Schritte zur Installation
Schritt 1: Docker installieren
Zuallererst wird Docker über den DSM Paketmanager installiert.
Schritt 2: Gemeinsamen Ordner für Filme und Serien anlegen
Um es den Programmen später so einfach wie möglich machen, benennen wir alles so wie im Standard vorgesehen. Ich habe einen „Gemeinsamen Ordner“ namens „video“ auf meinem größten Laufwerk angelegt. Dort liegen folgende Ordner:
- config
- filebot
- jdownloader
- Downloads
- EXTRACTED
- Movies
- TV Shows
- Unsorted
Da JDownloader und der Filebot die Dateien aus dem Download-Ordner verschieben werden, ist ein Laufwerk aus Gründen bezüglich der Geschwindigkeit besser.
Schritt 3: Installation von PLEX
PLEX habe ich bewusst nicht über Docker installiert. Die Hardware-Beschleunigung der GPU kann hier nicht ohne Weiteres genutzt werden. Deshalb ist der Weg über den Paketmanager einfacher. Ich halte mich hier bewusst kurz, weil es hier zu keinen Problemen kommen sollte.
- DSM Paketmanager öffnen.
- PLEX suchen, installieren und starten
- Danach manuell aktualisieren mit der Version für Synology im DSM über den Button „Manuelle Installation“.
Schritt 4: Berechtigungen setzen
Berechtigungen für PLEX setzen
Damit PLEX nachher die Daten sehen kann, muss man dem Laufwerk „video“ den Benutzer „PLEX“ zuweisen.
- Einstellungen
- Gemeinsame Ordner
- Berechtigungen
- Unter „PLEX“ bei „Lesen/Schreiben“ den Haken setzen.
- Speichern.
Berechtigungen für Docker setzen
Leider habe ich keine einfache Möglichkeit gefunden, dass auch Docker auf den Video-Ordner zugreifen ohne, dass wir ihn im „docker“ Shared Folder anlegen. Deswegen müssen wir hier die Berechtigungen für „Alle“ setzen, damit Docker auf den Daten arbeiten kann.
- File Station
- Rechte Maustaste auf shared folder „video“
- Einstellungen
- Berechtigungen
- Hinzufügen
- Benutzer oder Gruppe: „Alle“.
- Lesen und Schreiben auswählen.
- Speichern.
Konfiguration von PLEX
Nach dem PLEX gestartet wurde, kann man es über die Benutzeroberfläche im Browser konfigurieren. Nun werden die Ordner TV Shows und Movies einzeln mit ihren jeweiligen Typen „Serien“ und „Filme“ hinzugefügt. Wenn die Ordner nicht gefunden werden können, wurde der letzte Schritt bei der Installation von PLEX nicht korrekt durchgeführt. Nun sollte PLEX eure vorhandenen Videodateien kennen und auf allen Clients abspielen können.
Wichtig für später: Wir merken uns, auf welchem „Volume“ der gemeinsame Ordner „video“ liegt. Wir brauchen das für die Installation des FileBots. Beispiel: /volume1/video/
Schritt 5: Installation vom JDownloader über Docker
Im DSM zuerst Docker starten. Dann im Docker Repository nach dem Image „jdownloader2-headless“ suchen das von „plusminus“ namens „plusminus/jdownloader2-headless“ auswählen und herunterladen. Nun startet man das Image und geht auf „Erweiterte Einstellungen„.
Volume Konfiguration
Lokaler Ordner | Mount path Container | Type |
---|---|---|
video/Downloads | /opt/JDownloader/Downloads | rw |
video/config/jdownloader | /opt/JDownloader/cfg | rw |
Port Konfiguration (optional)
Lokaler Port | Container Port | Type |
---|---|---|
3130 | 3130 | tcp |
3130 | 3130 | udp |
5800 | 5800 | tcp |
Environment Variables
Variable | Value |
---|---|
Dein JDownloader User | |
PASSWORD | Dein JDownloader Passwort |
Konfiguration über die Weboberfläche
Auf der Seite jdownloader.org gibt man seine Zugangsdaten ein und erreicht so die Weboberfläche des lokalen JDownloader. Dort wechselt man zu Einstellungen,
JDownloader Web | Wert |
---|---|
Archive Extractor > Extraction: Custom Extraction Path | /opt/JDownloader/Downloads/EXTRACTED |
Settings > Default Download Folder | /opt/JDownloader/Downloads |
Abschließend konfiguriert ihr den JDownloader Container so, dass er automatisch mit eurem NAS startet. Damit müsst ihr ihn nach einem Neustart nicht händisch starten.
Schritt 6: jDownloader automatisch per Script aktualisieren
Normalerweise aktualisiert sich der jDownloader nur, wenn er beendet und neu gestartet wird. Bei einer headless-Installation wieder dieser hier, ist das aber nervig. Deswegen kann mit folgenden Schritten den jDownloader dazu bringen, sich selbst zu aktualisieren, wenn er gerade nichts herunterlädt.
- Event Scripter in „Einstellungen“ Extension Manager“ aktivieren.
- Unter „Extensions“ den „Event Scripter“ aufrufen.
- Im Feld EventScripter: Scripts folgendes Script einsetzen.
- Speichern (Das Diskettensymbol).
- Allen folgenden Berechtigungsanfragen stattgeben.
[ {
"eventTrigger" : "INTERVAL",
"enabled" : true,
"name" : "Auto-update JD",
"script" : "// Restart & Update when JD is idle, or after 'x' hours.\n// Trigger: Interval (Recommended 600000 or more).\n\nvar hours = 0; // Update after 'x' hours, even if JD is not idle. (0 = Disabled)\n\nif (callAPI(\"update\", \"isUpdateAvailable\")) {\n\n var updateNow = false;\n\n if (hours > 0) {\n \n if (!getProperty(\"date\", false)) {\n setProperty(\"date\", new Date(Date.now() + hours * 60 * 60 * 1000), false);\n }\n\n if (Date.now() > getProperty(\"date\", false)) {\n updateNow = true;\n }\n }\n\n if (!updateNow) {\n \n var idle = isDownloadControllerIdle() &&\n !callAPI(\"linkcrawler\", \"isCrawling\") &&\n !callAPI(\"linkgrabberv2\", \"isCollecting\") &&\n !callAPI(\"extraction\", \"getQueue\").length > 0;\n\n if (idle) {\n updateNow = true;\n }\n }\n\n if (updateNow) {\n callAPI(\"update\", \"restartAndUpdate\");\n }\n}",
"eventTriggerSettings" : {
"lastFire" : 1594799412187,
"interval" : 600000,
"isSynchronous" : false
},
"id" : 1594796988140
} ]
Quelle: jDownloader Hilfeseiten
Schritt 7: Installation vom FileBot Watcher über Docker
Im DSM zuerst Docker starten. Im Docker Repository sucht ihr nach dem Image „filebot“ von „rednoah“ namens „rednoah/filebot“ und ladet den Tag „watcher“ herunter. Danach stellen wir unter „Advanced Configuration“ folgende Optionen ein.
Volume Konfiguration
Da der FileBot auf gesamten Videodateien und dem Downloader-Verzeichnis arbeiten muss, braucht es vollen Zugriff auf den gemeinsamen Ordner „video“. Das habt ihr euch bei der Installation von PLEX im letzten Schritt gemerkt.
Lokaler Ordner | Mount path Container | Type |
---|---|---|
video | /volume1 | rw |
video/config/filebot | /data | rw |
Environment Variables
Variable | Value |
---|---|
SETTLE_DOWN_TIME | 900 |
Zu guter Letzt konfiguriert ihr den FileBot Container so, dass er automatisch mit eurem NAS startet. So müsst ihr ihn nach einem Neustart nicht händisch starten.
Execution Command
Diese Einstellung kann nur beim Erzeugen des Container vorgenommen und später nicht verändert werden. Die zwei Backslashes „\\“ sind nötig, weil es sonst einen Formatierungsfehler gibt.
/volume1/Downloads/EXTRACTED --output /volume1/ --action move --conflict auto --lang en
Wenn Parameter wie clean gesetzt werden sollen, dann wird es hier unnötig kompliziert. Dafür erstellt man den Container und exportiert in als JSON-Datei. Darin kann man dann mit \\ die Gleichzeichen erlauben. Nun importiert man diese JSON Datei wieder. So kann man auch im Nachhinein die Befehle ändern.
"cmd" : "-script fn:amc /volume3/Downloads/EXTRACTED --output /volume3/ --action move --conflict auto --def clean\\=y skipExtract\\=y",
Die verwendeten Befehle sind auf der Filebot Seite dokumentiert.
Ein komplexeres Beispiel aus den Kommentaren sieht wie folgt aus:
/volume1/downloads/EXTRACTED –output /volume1 --action move --def seriesFormat\='serien/{n}/{n}.{S00E00}.{t}' movieFormat\='filme/{n}' unsortedFormat\='unsortiert/{file.structurePathTail}' --conflict auto --lang de --def clean\=y skipExtract\=y
Filebot Lizenz in Docker aktivieren
Nachdem der Filebot Container einmal gestartet wurde, findet ihr in DSM den folgenden Ordner:
video/config/filebot/.filebot
Sollte das nicht der Fall sein, legt diesen Ordner manuell an. Dann legt ihr eine Datei namens „license.txt“ mit dem Inhalt eurer filebot.psm Lizenz-Datei an:
video/config/filebot/.filebot/license.txt
Achtet auf den Punkt im Ordnernamen. Das Erstellen und editieren geht am einfachsten direkt in DSM über den Texteditor, den man sich als Paket herunterladen kann. Danach sollte der filebot eure Lizenz erkennen. Coole Leute machen das alles per vi auf der Shell. Die Lesen aber auch nicht eine Anleitung wie diese.
Aktualisierungen der Container
Man kann die Container per Hand aktualisieren oder automatisch per Watchtower.
Bedanke dich mit einer Spende
Ich entwickle diese Software in meiner Freizeit, um dir und anderen zu helfen.
Zusammenfassung
Durch diese Anleitung haben wir den JDownloader entsprechend konfiguriert, dass er die Dateien in den Ordner EXTRACTED entpackt. Wenn dort keine Änderungen mehr stattfinden, wartet der FileBot Watcher 15 Minuten, diese Dateien zu analysieren und umzubenennen. Danach verschiebt er sie in die entsprechende Verzeichnisse TV Shows, Movies oder Unsorted. PLEX merkt, dass in TV Shows oder Movies neue Dateien sind, sucht die passenden Titelbilder raus und stellt sie den Clients bereit. Diese Lösung läuft nach eigenen Erfahrungen sehr stabil, übersteht jegliche Updates und ist sehr performant auf einem NAS wie dem DS218+ (kaufen). Danke an Dänjiel für die Motivation, Screenshots und Testing.
Schreibe einen Kommentar