Objetivo
Instale el servicio multimedia Serviio en Raspberry Pi
Requisitos
- Una Raspberry Pi con una instalación funcional de Raspbian "Stretch"
- Privilegios de raíz
Dificultad
FÁCIL
Convenios
- # – requiere que los comandos de Linux dados se ejecuten con privilegios de root, ya sea
directamente como usuario root o mediante el uso desudo
comando - $ – requiere que los comandos de Linux dados se ejecuten como un usuario normal sin privilegios
Introducción
Serviio es un servidor de medios escrito en Java. Está disponible en dos versiones:la gratuita (lamentablemente gratis como en la cerveza) y la versión “pro”, que viene con algunas características adicionales como el acceso remoto. En este tutorial, cubriremos la instalación de Serviio en una Raspberry Pi con versiones mínimas de Raspbian "Stretch".
Instalando dependencias
Serviio está escrito en java, por lo tanto debemos instalar el kit de desarrollo de java para poder utilizarlo. Hay dos versiones del JDK en los repositorios de Raspbian Stretch:la versión de código abierto, publicada bajo la GPLv2
licencia, llamada OpenJDK
, y la versión comercial propietaria de Oracle (el paquete en realidad se llama oracle-java8-jdk). Ambos deberían funcionar correctamente, pero en este tutorial usaremos el primero.
# apt-get update && apt-get install --no-install-recommends openjdk-8-jdk ffmpeg x264
Consigue e instala Serviio
Ahora que hemos instalado todos los paquetes necesarios, debemos agarrar el tarball de Serviio:como estamos trabajando en una máquina sin cabeza, usaremos wget
para cumplir con la tarea. Por lo tanto, ejecutamos:
wget http://download.serviio.org/releases/serviio-1.9-linux.tar.gz
Una vez finalizada la descarga, podemos proceder a la instalación real de Serviio. Vamos a extraer el contenido del tarball dentro del /opt
directorio:obviamente, puede elegir otro, pero /opt se usa convencionalmente para alojar aplicaciones independientes de terceros. Procedamos:
# tar -xvzf serviio-1.9-linux.tar.gz -C /opt
El -C
opción (abreviatura de --directory
) ) le indica a tar que cambie el directorio al dado, antes de realizar las operaciones.
Crear el servicio systemd para Serviio
Ahora que Serviio está instalado, puede observar que existen dos scripts dentro del /opt/serviio-1.9/bin
directorio:serviio.sh
y servio-console.sh. El primero lanza el servidor mientras que el segundo la interfaz para controlarlo.
En este punto, tenemos todo lo que necesitamos para crear el servicio systemd para iniciar serviio cuando se inicia el sistema. Para realizar esta tarea, debemos escribir un pequeño archivo de servicio. Como seguramente sabrá, systemd es el nuevo sistema de inicio de Linux, ahora adoptado por todas las principales distribuciones. Ha sido fuente de muchas discusiones en la comunidad de código abierto, pero sin duda se ha convertido en el estándar. Para crear el servicio, simplemente inicie su editor favorito y cree un archivo llamado serviio.service que contenga el siguiente texto:
[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
Describir la sintaxis de un archivo de servicio systemd no es el propósito de este tutorial, pero observe la línea que contiene el User=serviio
instrucción. Lo que queremos obtener con él, es especificar que el daemon debe correr con el serviio
privilegios de usuario y no como root, por razones de seguridad. El serviio
el usuario aún no existe, así que vamos a crearlo y darle la propiedad del directorio /opt/serviio-1.9 y todos los archivos que contiene:
# useradd -r -U -s /sbin/nologin serviio && chown -R serviio:serviio /opt/serviio-1.9
Probablemente estés familiarizado con el useradd
comando, pero en aras de la claridad, especifiquemos para qué son las opciones proporcionadas. El -r
La opción especifica que queremos crear una system account
. Las cuentas del sistema no tienen información de antigüedad y un uid
con un valor <1000; para tales cuentas no se crea ningún directorio de inicio. El -U
La opción indicará al programa que cree también un grupo con el mismo nombre que el usuario, y automáticamente agregará al usuario a dicho grupo. Finalmente con -s
, especificamos el shell para el usuario. En este caso usamos /sbin/nologin
que es un fake shell
. Lo usamos por razones de seguridad:de esta manera, el usuario, el servicio se está ejecutando, nunca podrá usar un shell real para ejecutar comandos.
Ahí estamos:hemos creado el usuario serviio y escrito nuestro archivo de servicio. Ahora debemos copiarlo en el /usr/systemd/system
directorio:
# cp serviio.service /etc/systemd/system
Para habilitar el servicio que ahora ejecutamos:
# systemctl enable serviio.service
Ahora, reinicie el sistema:si todo va bien, el servicio de serviio ya estará activo cuando se complete el proceso de arranque. Puede verificar su estado ejecutando:
$ systemctl status serviio.service
Systemd le informará sobre el estado del demonio, por ejemplo:
● 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 [...]
Como puede ver, el servicio está activo y en ejecución, por lo que todo salió como se esperaba. Si algo sale mal y hay problemas para iniciar el servicio, puede usar los registros proporcionados por el mismo comando para resolver los problemas.
Si está ejecutando un firewall en su máquina, también debe abrir los puertos 8895/tcp
, 1900/udp
, 23423/tcp
y 23424/tcp
. Los dos últimos puertos son necesarios respectivamente para controlar la consola y acceder al navegador de medios
Servicio de control
Para controlar el serviio, tenemos pocas opciones. Dado que estamos ejecutando en una máquina sin periféricos, no podemos acceder a la consola gráfica, pero podemos acceder a la interfaz web navegando a http://yourmachineip:23423/console/
desde otra máquina en la misma LAN o use aplicaciones de terceros como la aplicación de Android "ServiiDroid".
Una lista completa de posibles opciones está disponible aquí:http://serviio.org/apps"
. Si está ejecutando la versión "pro" de serviio, también podrá explorar su catálogo utilizando el navegador de medios integrado accesible en http://yourmachineip:23424/mediabrowser/
.