Ziel
Installieren Sie den Serviio-Mediendienst auf dem Raspberry Pi
Anforderungen
- Ein Raspberry Pi mit einer funktionierenden Installation von Raspbian „Stretch“
- Root-Rechte
Schwierigkeit
EINFACH
Konventionen
- # – erfordert, dass bestimmte Linux-Befehle mit Root-Rechten ausgeführt werden, entweder
direkt als Root-Benutzer oder durch Verwendung vonsudo
Befehl - $ – erfordert, dass bestimmte Linux-Befehle als normaler, nicht privilegierter Benutzer ausgeführt werden
Einführung
Serviio ist ein in Java geschriebener Medienserver. Es ist in zwei Versionen erhältlich:die kostenlose (leider kostenlos wie bei Bier) und die „Pro“-Version, die einige zusätzliche Funktionen wie den Fernzugriff bietet. In diesem Tutorial behandeln wir die Installation von Serviio auf einem Raspberry Pi mit minimalen Versionen von Raspbian „Stretch“.
Installation von Abhängigkeiten
Serviio ist in Java geschrieben, daher müssen wir das Java Development Kit installieren, um es verwenden zu können. Es gibt zwei Versionen des JDK in den Raspbian Stretch Repositories:die Open-Source-Version, veröffentlicht unter GPLv2
Lizenz namens OpenJDK
, und die kommerzielle, proprietäre Version von Oracle (das Paket heißt eigentlich oracle-java8-jdk). Beide sollten korrekt funktionieren, aber in diesem Tutorial werden wir ersteres verwenden.
# apt-get update && apt-get install --no-install-recommends openjdk-8-jdk ffmpeg x264
Besorgen und installieren Sie Serviio
Nachdem wir alle benötigten Pakete installiert haben, müssen wir uns den Serviio-Tarball schnappen:Da wir an einer Headless-Maschine arbeiten, werden wir wget
verwenden um die Aufgabe zu erfüllen. Daher führen wir Folgendes aus:
wget http://download.serviio.org/releases/serviio-1.9-linux.tar.gz
Nachdem der Download abgeschlossen ist, können wir mit der eigentlichen Serviio-Installation fortfahren. Wir werden den Inhalt des Tarballs in /opt
extrahieren Verzeichnis:Natürlich können Sie ein anderes wählen, aber /opt wird üblicherweise verwendet, um eigenständige Anwendungen von Drittanbietern zu hosten. Fahren wir fort:
# tar -xvzf serviio-1.9-linux.tar.gz -C /opt
Das -C
Option (kurz für --directory
) weist tar an, in das angegebene Verzeichnis zu wechseln, bevor die Operationen ausgeführt werden.
Erstellen Sie den systemd-Dienst für Serviio
Nachdem Serviio nun installiert ist, können Sie beobachten, dass zwei Skripte in /opt/serviio-1.9/bin
vorhanden sind Verzeichnis:serviio.sh
und serviio-console.sh. Der erste startet den Server, der zweite die Schnittstelle zur Steuerung.
An diesem Punkt haben wir alles, was wir brauchen, um den systemd-Dienst zu erstellen, um serviio zu starten, wenn das System bootet. Um diese Aufgabe zu erfüllen, müssen wir eine kleine Servicedatei schreiben. Wie Sie sicherlich wissen, ist systemd das neue Linux-Init-System, das jetzt von allen wichtigen Distributionen übernommen wird. Es war die Quelle vieler Diskussionen in der Open-Source-Community, aber es ist zweifellos zum Standard geworden. Um den Dienst zu erstellen, starten Sie einfach Ihren bevorzugten Editor und erstellen Sie eine Datei namens serviio.service, die den folgenden Text enthält:
[Unit] Description=Serviio media Server After=syslog.target network.target [Service] User=serviio ExecStart=/opt/serviio-1.9/bin/serviio.sh ExecStop=/opt/serviio-1.9/bin/serviio.sh -stop [Install] WantedBy=multi-user.target
Die Beschreibung der Syntax einer systemd-Dienstdatei ist nicht der Zweck dieses Tutorials, aber beachten Sie bitte die Zeile mit dem User=serviio
Anweisung. Was wir damit erreichen wollen, ist die Angabe, dass der Daemon mit dem serviio
laufen muss Benutzerrechte und nicht als root, aus Sicherheitsgründen. Der serviio
Benutzer existiert noch nicht, also erstellen wir ihn und geben ihm den Besitz des Verzeichnisses /opt/serviio-1.9 und aller darin enthaltenen Dateien:
# useradd -r -U -s /sbin/nologin serviio && chown -R serviio:serviio /opt/serviio-1.9
Sie sind wahrscheinlich mit useradd
vertraut Befehl, aber lassen Sie uns der Klarheit halber spezifizieren, wofür die bereitgestellten Optionen sind. Das -r
Option gibt an, dass wir ein system account
erstellen möchten . Systemkonten haben keine Alterungsinformationen und eine uid
mit einem Wert <1000; für solche Konten wird kein Home-Verzeichnis erstellt. Das -U
Option weist das Programm an, auch eine Gruppe mit demselben Namen wie der Benutzer zu erstellen und den Benutzer automatisch zu dieser Gruppe hinzuzufügen. Abschließend mit -s
, haben wir die Shell für den Benutzer angegeben. In diesem Fall haben wir /sbin/nologin
verwendet das ist eine fake shell
. Wir haben es aus Sicherheitsgründen verwendet:Auf diese Weise wird der Benutzer, unter dem der Dienst ausgeführt wird, niemals in der Lage sein, eine tatsächliche Shell zum Ausführen von Befehlen zu verwenden.
Da sind wir:Wir haben den Benutzer serviio erstellt und unsere Servicedatei geschrieben. Jetzt müssen wir es in das Verzeichnis /usr/systemd/system
kopieren Verzeichnis:
# cp serviio.service /etc/systemd/system
Um den Dienst zu aktivieren, führen wir jetzt Folgendes aus:
# systemctl enable serviio.service
Starten Sie nun das System neu:Wenn alles gut geht, ist der serviio-Dienst bereits aktiv, wenn der Bootvorgang abgeschlossen ist. Sie können seinen Status überprüfen, indem Sie Folgendes ausführen:
$ systemctl status serviio.service
Systemd informiert Sie über den Status des Daemons, zum Beispiel:
● serviio.service - Serviio media Server Loaded: loaded (/etc/systemd/system/serviio.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2017-09-28 21:29:18 CEST; 31s ago Main PID: 420 (java) CGroup: /system.slice/serviio.service └─420 java -Xmx512M -Xms20M -XX:+UseG1GC -XX:GCTimeRatio=1 -XX:MinHeapFreeRatio=10 -XX:MaxHeapFreeRatio=20 -Djava.net.preferIPv4Stack=true [...]
Wie Sie sehen können, ist der Dienst aktiv und läuft, also lief alles wie erwartet. Wenn etwas schief geht und Probleme beim Starten des Dienstes auftreten, können Sie die mit demselben Befehl bereitgestellten Protokolle verwenden, um die Probleme zu beheben.
Wenn Sie auf Ihrem Computer eine Firewall ausführen, müssen Sie auch die Ports 8895/tcp
öffnen , 1900/udp
, 23423/tcp
und 23424/tcp
. Die letzten beiden Ports werden jeweils zur Steuerung der Konsole und zum Zugriff auf den Mediabrowser benötigt
Steuerungsdienst
Um serviio zu steuern, haben wir nur wenige Optionen. Da wir auf einer Headless-Maschine laufen, können wir nicht auf die grafische Konsole zugreifen, aber wir können auf die Weboberfläche zugreifen, indem wir zu http://yourmachineip:23423/console/
navigieren von einem anderen Computer im selben LAN oder verwenden Sie Anwendungen von Drittanbietern wie die Android-App „ServiiDroid“.
Eine vollständige Liste möglicher Optionen finden Sie hier:http://serviio.org/apps"
. Wenn Sie die „Pro“-Version von serviio ausführen, können Sie Ihren Katalog auch durchsuchen, indem Sie den integrierten Mediabrowser verwenden, der unter http://yourmachineip:23424/mediabrowser/
verfügbar ist .