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ísudopří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/ .