In unserem Tutorial erklären wir Schritt für Schritt, wie man mit TrueNAS oder FreeBSD einen waschechten Plex Media Server betreibt.
TrueNAS auch bekannt als FreeNAS, ist ein freies Betriebssystem für den Network Attached Storage (NAS). Unter einem NAS versteht man einen einfach zu verwaltenden Dateiserver, den man, im Gegensatz zu Synology oder QNAP, auf einer eigenen Hardware installieren kann.
TrueNAS kann aber nicht nur Dateien servieren: Da es auf FreeBSD basiert, können mit sogenannten Jails sehr einfach und sicher weitere Dienste betrieben werden. Jails ist ein ein sehr früher Vorläufer der Software Docker, deren Ersteller einfach das Jails-Konzept übernommen haben. Tutorial mit Ausnahme der Einleitung von Marcel Stritzelberger, vielen Dank!
Einen Plex-Mediaserver auf TrueNAS / FreeBSD installieren, aber wie?
Auch in Zeiten von Amazon Prime Video, Disney+, Netflix, Paramount+ & Co. haben sehr viele noch ihre Blu-Rays oder DVDs im Schrank stehen. Digitalisiert und auf der Festplatte oder dem NAS gespeichert, ist der Zugriff darauf immer noch etwas sperrig. Spätestens dann, wenn die heimische Glotze und die mobilen Endgeräte oder die anderen Familienmitglieder ins Spiel kommen, wird es fummelig.
Eine Lösung dafür ist Plex. Plex ist ein kommerzieller Nachfolger von XBMC und somit ein Client-Server-Medienabspielsystem mit einem zusätzlichen Softwarepaket. Plex organisiert Musik, Podcasts, Filme, TV-Serien und Fotos eines Benutzers.
Außerdem kann es auf Online-Dienste zugreifen, um alle Inhalte streamen zu können. Der Mediaplayer Plex ist für mehrere Linux-Distributionen, macOS, Windows, mobile Geräte, Smart TVs, diverse Spielkonsolen und Streaming-Boxen verfügbar.
Doch das Beste ist: Man kann Plex daheim auf dem eigenen Server betreiben. Damit wird der Zugriff auf die eigenen Medien so einfach wie bei den kommerziellen Streaming-Anbietern. Nur bestimmte Komfort-Funktionen gehen, wenn man den kostenpflichtigen Plex Pass erworben hat.
Was geht alles mit der Software Plex?
- diverse Medien (Video und Audio) lokal auf dem eigenen Server bzw. NAS abspeichern
- Zugriff vom PC, Smartphone, einer Spielkonsole u.v.m. mit
- der Möglichkeit, Zugänge an Freunde oder Familienmitglieder freizugeben. Das funktioniert auch, wenn diese irgendwo auf der Welt wohnen.
Ziel dieser Anleitung ist der Betrieb eines Plex Media Servers auf Basis von TrueNAS und FreeBSD. Um Plex auch öffentlich nutzen zu können, werden weitere Maßnahmen benötigt, die weiter unten behandelt werden. Es wird ein bereits installiertes TrueNAS oder FreeBSD und im anderen Fall eine OPNsense Firewall benötigt.
Plex nur lokal im eigenen Netz betreiben
Der Betrieb eines Plex Media Servers ist tatsächlich ziemlich einfach. Der eigentliche Knackpunkt ist die eigene Mediensammlung aus dem Jail heraus zu erreichen. Zusammengefasst sind folgende Schritte nötig, um das Ziel dieses Teils zu erreichen.
- Berechtigung auf lokale Medien (z.B.
/mnt/daten/medien
) erlauben. - Lokale Medien in Jail einbinden
- Pakete installieren und starten
- Medien einbinden.
Zeitaufwand insgesamt ca. 30 Minuten.
Voraussetzungen für lokalen Betrieb
TrueNAS Core oder reiner FreeBSD Server.
- Ein Jail (beispielsweise mit dem Namen PLEX) ist eingerichtet aber noch NICHT! gestartet.
- SSH ist aktiviert und ein normaler BENUTZERNAME in der „Wheel“ Gruppe ist angelegt.
- die IP-Adresse des PLEX Jails ist bekannt (z.B. 192.168.178.101)
- der Hostname des PLEX Jails ist bekannt (z.B. plex.domain.local) und erreichbar.
Begrifflichkeiten
USERNAME = SSH Benutzeraccount (root Login ist nicht direkt möglich) mit SU Rechten
PLEXIP = IP Adresse des lokalen Plex Servers
PLEXHOSTNAME = Hostname des lokalen Plex Servers.
Diagramm
Damit sieht das Setup lokal so aus:
Achtung: Plex basiert auf Multicast, bzw. nutzt Multicast, um die Gegenstellen zu finden. Damit beim ersten Start die lokale Plex Webseite den dahinterliegenden Plex Server finden kann, MÜSSEN sich beide im gleichen Subnetz befunden.
Berechtigung auf lokale Medien erlauben
In aller Regel werden eure Filme auf dem Pool von TrueNAS oder im FreeBSD Hostsystem liegen. Und damit unterliegen sie auch dessen Berechtigungen. Wenn nun in einem Jail Plex installiert wird, wurde dabei auch ein eigener Plex Benutzer angelegt.
- Problem: Dieser Benutzer ist dem Hostsystem unbekannt. Ein Zugriff aus dem Jail als Plex Benutzer auf die Dateien im Hostsystem wird an fehlenden Berechtigungen scheitern.
- Lösung: Wer Lust hat, kann einen Benutzer und Gruppe mit dem Namen „plex“ und der id 972 erstellen. Muss aber nicht sein (ist nur Kosmetik). Wichtig ist halt, dass die Dateien mindestens von Plex gelesen (Schreibrechte sind dann okay, wenn Plex sich auch um die Verwaltung der Dateien kümmern soll) werden können. Das geht auch wunderbar nur über die id.
TrueNAS
Mit TrueNAS geht das am einfachsten mit dem ACL Manager (Berechtigungen bearbeiten) des Datensatzes mit den Mediendateien, dem einfach ein lesender (und ggf. schreibender) Benutzer mit der id 972 hinzugefügt wird. Ein Warnhinweis von TrueNAS „Es konnte kein Benutzername zu dieser ID gefunden werden“ kann ignoriert werden. Berechtigungen rekursiv übernehmen nicht vergessen!
FreeBSD
In FreeBSD ohne ACL in einer klassischen UNIX-Berechtigungsstruktur, reicht meist die Anpassung der Gruppe des Medien Ordners und der Dateien mit:
chown -R :972 /mnt/daten/medien
ändert rekursiv die Gruppenzugehörigkeit auf 972 (Oder den Namen der Gruppe nehmen, statt der ID, die kann nämlich variieren) undchmod -R 750 /mnt/daten/medien
erlaubt Benutzer und Gruppe lesenden Zugriff auf Ordner und Dateien oderchmod -R 770 /mnt/daten/medien
erlaubt beiden lesenden UND schreibenden Zugriff auf Ordner und Dateien.
Alle anderen dürfen in diesem Beispiel nichts.
Das muss halt zu eurem Benutzer- & Rechtekonzept passen.
Lokale Medien in Jail einbinden
Gut, die Berechtigungen sollten jetzt passen, aber die Verzeichnisse außerhalb des Jails sind noch nicht sichtbar. Dazu gehört auch unser Beispiel mit dem /mnt/daten/medien
. Wie kommt also das /mnt/daten/medien
Verzeichnis in das Jail rein? Per NullFS.
TrueNAS
Mit TrueNAS geht das am einfachsten in der Jail Verwaltung in dem Punkt „Mount Points“. Darin können beliebig viele Ordner angegeben werden die im Jail auftauchen sollen. Als Quelle gebt ihr unser Beispiel /mnt/daten/medien
an und als Ziel dann einen Pfad innerhalb des Jail, z.B. /mnt/jail/plex/root/mnt/medien
. Sollte der medien
Ordner noch nicht existieren: Macht nichts, einfach von Hand im Pfad eintragen, der wird dann automatisch erstellt. Wird das Jail dann später gestartet, werden die Verzeichnisse automatisch eingebunden.
FreeBSD
In FreeBSD ist das eigentlich mit einem Befehl erledigt: mount_nullfs /mnt/daten/medien /mnt/jail/plex/root/mnt/medien.
Hierbei muss der Zielpfad aber bereits existieren (ggf. vorher anlegen mit mkdir -p /mnt/jail/plex/root/mnt/medien)
.
Die Schwierigkeit ist nun dafür zu sorgen, dass die Zuweisungen auch einen Neustart überleben.
Am aller einfachsten werden diese in der /etc/fstab
hinterlegt:
Device Mountpoint FStype Options Dump Pass
/mnt/daten/medien /mnt/jail/plex/root/mnt/medien nullfs rw 0 0
/mnt/daten/musik /mnt/jail/plex/root/mnt/musik nullfs rw 0 0
Am besten wird dies mit BastilleBSD oder iocage verwaltet.
Plex Jail
Pakete installieren
Ab jetzt kann das Jail gestartet werden. Login per SSH in das PLEX Jail: ssh BENUTZERNAME@PLEXTIP oder ssh BENUTZERNAME@PLEXHOSTNAME
, um Root-Rechte zu erlangen: su. Zuvor passen wir die Paketquellen auf die „latest“ an, damit auch wirklich die neueste Pakete bezogen werden:
mkdir -p /usr/local/etc/pkg/repos
cp /etc/pkg/FreeBSD.conf /usr/local/etc/pkg/repos/FreeBSD.conf
sed -i '' 's/quarterly/latest/' /usr/local/etc/pkg/repos/FreeBSD.conf
Kostenlose Plex Version
Paketquelle aktualisieren mit pkg update und dann die benötigten Pakete installieren: pkg install plexmediaserver
Dienste aktivieren und beim Start des Jails automatisch starten:
sysrc plexmediaserver_enable=YES
Da keine Konfigurationsdateien angepasst werden, kann der Dienst direkt gestartet werden:
service plexmediaserver start
Oder alternativ:
Plexpass Version – diese ist etwas aktueller als die freie Version
Paketquelle aktualisieren mit pkg update
und dann die benötigten Pakete installieren: pkg install plexmediaserver-plexpass
Dienste aktivieren und beim Start des Jails automatisch starten:
sysrc plexmediaserver-plexpass=YES
Da keine Konfigurationsdateien angepasst werden, kann der Dienst direkt gestartet werden:
service plexmediaserver-plexpass start
Plex ist dann unter http://PLEXTIP:32400 oder http://PLEXHOSTNAME:32400 erreichbar.
Medien unter TrueNAS einbinden
Beim ersten Start fragt der Assistent irgendwann nach einem Ordner mit Filmen, Serien, Musik oder Bildern. Dabei kann nun auf die Ordner verwiesen werden, die oben zur Verfügung gestellt wurden. Mindestens Inhaltstyp und Sprache anpassen, um den Assistenten zu beenden und Plex wird dann automatisch anfangen diese Ordner zu indexieren. Wenn nicht, bitte die Berechtigungen prüfen. :)
TrueNAS und der Datenschutz:
In der Standard-Konfiguration möchte es Plex auch einfach machen und dafür sorgen, dass auf die lokalen Medien von überall aus zugegriffen werden kann, auch wenn die Firewall etc. noch nicht eingerichtet sind. Dafür benutzt Plex einen Relay Server. Wer im lokalen Setup also eine externe (wenn auch nicht perfekte) Nutzung unterbinden möchte, muss dies explizit mit der Option „Aktiviere Relay“ deaktivieren. Zu finden ist der Punkt in den „Einstellungen“ im Menüpunkt „Netzwerk“.
Damit das Ganze auch für Smartphones, Tablet-PCs etc. von unterwegs aus genutzt werden kann, wird bei bsdbox.de im zweiten Teil sehr ausführlich erklärt.