Obiettivo
Installa il servizio multimediale Serviio su Raspberry Pi
Requisiti
- Un Raspberry Pi con un'installazione funzionante di Raspbian "Stretch"
- Privilegi di root
Difficoltà
FACILE
Convenzioni
- # – richiede che i comandi linux dati vengano eseguiti con i privilegi di root sia
direttamente come utente root o utilizzandosudo
comando - $ – richiede che i comandi linux dati vengano eseguiti come un normale utente non privilegiato
Introduzione
Serviio è un server multimediale scritto in java. È disponibile in due versioni:quella gratuita (purtroppo gratuita come nella birra) e la versione "pro", che include alcune funzionalità aggiuntive come l'accesso remoto. In questo tutorial tratteremo l'installazione di Serviio su un Raspberry Pi che esegue una versione minima di Raspbian "Stretch".
Installazione delle dipendenze
Serviio è scritto in java, quindi dobbiamo installare il kit di sviluppo java per poterlo utilizzare. Ci sono due versioni di JDK nei repository Raspbian Stretch:la versione open source, rilasciata sotto GPLv2
licenza, denominata OpenJDK
e la versione commerciale, proprietaria di Oracle (il pacchetto è in realtà chiamato oracle-java8-jdk). Entrambi dovrebbero funzionare correttamente, ma in questo tutorial useremo il primo.
# apt-get update && apt-get install --no-install-recommends openjdk-8-jdk ffmpeg x264
Prendi e installa Serviio
Ora che abbiamo installato tutti i pacchetti necessari, dobbiamo prendere il tarball di Serviio:poiché stiamo lavorando su una macchina headless, useremo wget
per portare a termine il compito. Pertanto, eseguiamo:
wget http://download.serviio.org/releases/serviio-1.9-linux.tar.gz
Al termine del download, possiamo procedere all'effettiva installazione di Serviio. Estrarremo il contenuto del tarball all'interno di /opt
directory:ovviamente puoi sceglierne un'altra, ma /opt è convenzionalmente utilizzato per ospitare applicazioni di terze parti autonome. Procediamo:
# tar -xvzf serviio-1.9-linux.tar.gz -C /opt
Il -C
opzione (abbreviazione di --directory
) indica a tar di cambiare directory in quella data, prima di eseguire le operazioni.
Crea il servizio systemd per Serviio
Ora che Serviio è installato, puoi osservare che esistono due script all'interno di /opt/serviio-1.9/bin
directory:serviio.sh
e serviio-console.sh. Il primo avvia il server mentre il secondo l'interfaccia per controllarlo.
A questo punto, abbiamo tutto ciò di cui abbiamo bisogno per creare il servizio systemd per avviare serviio all'avvio del sistema. Per eseguire questo compito, dobbiamo scrivere un piccolo file di servizio. Come sicuramente saprai, systemd è il nuovo sistema di init di linux, ormai adottato da tutte le maggiori distribuzioni. È stato fonte di molte discussioni nella comunità open source, ma è senza dubbio diventato lo standard. Per creare il servizio, avvia il tuo editor preferito e crea un file chiamato serviio.service contenente il testo seguente:
[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
Descrivere la sintassi di un file di servizio systemd non è lo scopo di questo tutorial, ma si prega di notare la riga contenente il User=serviio
istruzione. Quello che vogliamo ottenere con esso, è specificare che il demone deve essere eseguito con il serviio
privilegi utente e non come root, per motivi di sicurezza. Il serviio
l'utente non esiste ancora, quindi creiamolo e diamogli la proprietà della directory /opt/serviio-1.9 e di tutti i file in essa contenuti:
# useradd -r -U -s /sbin/nologin serviio && chown -R serviio:serviio /opt/serviio-1.9
Probabilmente hai familiarità con useradd
comando, ma per motivi di chiarezza, specifichiamo a cosa servono le opzioni fornite. Il -r
l'opzione specifica che vogliamo creare un system account
. Gli account di sistema non hanno informazioni sull'invecchiamento e un uid
con un valore <1000; per tali account non viene creata alcuna home directory. Il -U
opzione indicherà al programma di creare anche un gruppo con lo stesso nome dell'utente e di aggiungere automaticamente l'utente a detto gruppo. Infine con -s
, abbiamo specificato la shell per l'utente. In questo caso abbiamo usato /sbin/nologin
che è una fake shell
. L'abbiamo usato per motivi di sicurezza:in questo modo l'utente, come è in esecuzione il servizio, non sarà mai in grado di utilizzare una vera shell per eseguire comandi.
Ci siamo:abbiamo creato l'utente serviio e scritto il nostro file di servizio. Ora dobbiamo copiarlo in /usr/systemd/system
directory:
# cp serviio.service /etc/systemd/system
Per abilitare il servizio che ora eseguiamo:
# systemctl enable serviio.service
Ora riavvia il sistema:se tutto va bene, il servizio serviio sarà già attivo al termine del processo di avvio. Puoi verificarne lo stato eseguendo:
$ systemctl status serviio.service
Systemd ti informerà sullo stato del demone, ad esempio:
● 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 [...]
Come puoi vedere il servizio è attivo e funzionante, quindi tutto è andato come previsto. Se qualcosa va storto e si verificano problemi durante l'avvio del servizio, puoi utilizzare i log forniti dallo stesso comando per risolvere i problemi.
Se stai eseguendo un firewall sulla tua macchina devi anche aprire le porte 8895/tcp
, 1900/udp
, 23423/tcp
e 23424/tcp
. Le ultime due porte sono necessarie rispettivamente per controllare la console e per accedere al mediabrowser
Servizio di controllo
Per controllare il serviio, abbiamo poche opzioni. Poiché stiamo girando su una macchina headless, non possiamo accedere alla console grafica, ma possiamo accedere all'interfaccia web, navigando su http://yourmachineip:23423/console/
da un altro computer nella stessa lan o utilizzare applicazioni di terze parti come l'app Android "ServiiDroid".
Un elenco completo delle possibili opzioni è disponibile qui:http://serviio.org/apps"
. Se utilizzi la versione “pro” di serviio potrai anche esplorare il tuo catalogo utilizzando il mediabrowser integrato accessibile da http://yourmachineip:23424/mediabrowser/
.