Cíl
Nainstalujte mediální službu Serviio na Raspberry Pi
Požadavky
- Raspberry Pi s funkční instalací Raspbian „Stretch“
- Oprávnění uživatele root
Obtížnost
SNADNÉ
Konvence
- # – vyžaduje, aby dané linuxové příkazy byly spouštěny s právy root buď
přímo jako uživatel root nebo pomocísudo
příkaz - $ – vyžaduje, aby dané linuxové příkazy byly spouštěny jako běžný neprivilegovaný uživatel
Úvod
Serviio je mediální server napsaný v jazyce Java. Je k dispozici ve dvou verzích:bezplatná (bohužel zdarma jako u piva) a verze „pro“, která přichází s některými dalšími funkcemi, jako je vzdálený přístup. V tomto tutoriálu se budeme zabývat instalací Serviio na Raspberry Pi s minimální verzí Raspbian „Stretch“.
Instalace závislostí
Serviio je napsáno v jazyce Java, proto musíme nainstalovat vývojový kit Java, abychom jej mohli používat. V repozitářích Raspbian Stretch jsou dvě verze JDK:verze s otevřeným zdrojovým kódem, vydaná pod GPLv2
licence s názvem OpenJDK
a komerční, proprietární verze od společnosti Oracle (balík se ve skutečnosti nazývá oracle-java8-jdk). Oba by měly fungovat správně, ale v tomto tutoriálu použijeme první.
# apt-get update && apt-get install --no-install-recommends openjdk-8-jdk ffmpeg x264
Uchopte a nainstalujte Serviio
Nyní, když jsme nainstalovali všechny potřebné balíčky, musíme vzít Serviio tarball:protože pracujeme na bezhlavém stroji, použijeme wget
splnit úkol. Proto spustíme:
wget http://download.serviio.org/releases/serviio-1.9-linux.tar.gz
Po dokončení stahování můžeme přistoupit k samotné instalaci Serviia. Chystáme se extrahovat obsah tarballu uvnitř /opt
adresář:samozřejmě si můžete vybrat jiný, ale /opt se běžně používá k hostování samostatných aplikací třetích stran. Pokračujme:
# tar -xvzf serviio-1.9-linux.tar.gz -C /opt
-C
volba (zkratka pro --directory
) instruuje tar, aby před provedením operací změnil adresář na daný.
Vytvořte službu systemd pro Serviio
Nyní, když je Serviio nainstalováno, můžete pozorovat, že uvnitř /opt/serviio-1.9/bin
existují dva skripty adresář:serviio.sh
a serviio-console.sh. První spouští server, zatímco druhý rozhraní pro jeho ovládání.
V tuto chvíli máme vše, co potřebujeme k vytvoření služby systemd ke spuštění serviio při nabootování systému. K provedení tohoto úkolu musíme napsat malý servisní soubor. Jak jistě víte, systemd je nový linuxový init systém, který nyní přijaly všechny hlavní distribuce. Byl zdrojem mnoha diskuzí v komunitě open source, ale nepochybně se stal standardem. Chcete-li vytvořit službu, spusťte svůj oblíbený editor a vytvořte soubor s názvem serviio.service obsahující níže uvedený text:
[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
Popis syntaxe souboru služby systemd to není účelem tohoto tutoriálu, ale všimněte si prosím řádku obsahujícího User=serviio
návod. To, co s ním chceme získat, je určit, že démon musí běžet s serviio
uživatelská oprávnění a ne jako root z bezpečnostních důvodů. serviio
uživatel ještě neexistuje, takže jej vytvořte a přidělte mu vlastnictví adresáře /opt/serviio-1.9 a všech souborů v něm:
# useradd -r -U -s /sbin/nologin serviio && chown -R serviio:serviio /opt/serviio-1.9
Pravděpodobně znáte useradd
příkaz, ale kvůli přehlednosti upřesněme, k čemu jsou nabízené možnosti. -r
volba určuje, že chceme vytvořit system account
. Systémové účty nemají žádné informace o stárnutí a uid
s hodnotou <1000; pro takové účty není vytvořen žádný domovský adresář. -U
Volba dá programu pokyn, aby také vytvořil skupinu se stejným jménem jako uživatel a automaticky přidal uživatele do této skupiny. Nakonec pomocí -s
, specifikovali jsme shell pro uživatele. V tomto případě jsme použili /sbin/nologin
což je fake shell
. Použili jsme to z bezpečnostních důvodů:tímto způsobem uživatel, služba běžící jako, nikdy nebude moci používat skutečný shell ke spouštění příkazů.
Tady jsme:vytvořili jsme uživatele serviio a napsali náš soubor služeb. Nyní jej musíme zkopírovat do /usr/systemd/system
adresář:
# cp serviio.service /etc/systemd/system
Chcete-li povolit službu, kterou nyní spouštíme:
# systemctl enable serviio.service
Nyní restartujte systém:pokud vše půjde dobře, služba serviio bude již aktivní po dokončení procesu zavádění. Jeho stav můžete ověřit spuštěním:
$ systemctl status serviio.service
Systemd vás bude informovat o stavu démona, například:
● 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 [...]
Jak vidíte, služba je aktivní a běží, takže vše proběhlo podle očekávání. Pokud se něco pokazí a dojde k problému se spuštěním služby, můžete k vyřešení problémů použít protokoly poskytnuté stejným příkazem.
Pokud na svém počítači používáte bránu firewall, musíte také otevřít porty 8895/tcp
, 1900/udp
, 23423/tcp
a 23424/tcp
. Poslední dva porty jsou potřebné pro ovládání konzole a pro přístup k mediabrowseru
Ovládací serviio
Pro ovládání serviio máme několik možností. Vzhledem k tomu, že běžíme na bezhlavém počítači, nemůžeme přistupovat ke grafické konzoli, ale můžeme přistupovat k webovému rozhraní, když přejdeme na http://yourmachineip:23423/console/
z jiného počítače ve stejné síti LAN nebo použijte aplikace třetích stran, jako je aplikace pro Android „ServiiDroid“.
Kompletní seznam možných možností je k dispozici zde:http://serviio.org/apps"
. Pokud používáte „pro“ verzi serviio, budete také moci prozkoumat svůj katalog pomocí integrovaného prohlížeče médií dostupného na http://yourmachineip:23424/mediabrowser/
.