Cómo instalar Serviio Media Server en Raspberry Pi
Objetivo
Instalar el servicio de medios Serviio en Raspberry PiRequisitos
- Una Raspberry Pi con una instalación funcional de Raspbian "Stretch"
- Privilegios de root
Dificultad
FÁCILConvenciones
- # : requiere que los comandos de Linux dados se ejecuten con privilegios de root, ya sea directamente como usuario root o mediante el uso del
sudo
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 (desafortunadamente gratuita como en la cerveza) y la versión "pro", que viene con algunas características adicionales como acceso remoto. En este tutorial cubriremos la instalación de Serviio en una Raspberry Pi con una versión mínima de Raspbian "Stretch".Instalar dependencias
Serviio está escrito en Java, por lo tanto, debemos instalar el kit de desarrollo de Java para poder usarlo. Hay dos versiones del JDK en los repositorios de Raspbian Stretch: la versión de código abierto, lanzada bajoGPLv2
licencia, llamada OpenJDK
, y la versión comercial y 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
Agarra e instala Serviio
Ahora que hemos instalado todos los paquetes necesarios, debemos tomar el tarball Serviio: como estamos trabajando en una máquina sin cabeza, usaremoswget
para realizar la tarea. Por lo tanto, corremos:wget http://download.serviio.org/releases/serviio-1.9-linux.tar.gzUna 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 /optLa
-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 serviio-console.sh. El primero inicia 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 el servicio 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 linux init, ahora adoptado por todas las distribuciones principales. Ha sido la 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 la User=serviio
instrucción. Lo que queremos obtener con él es especificar que el demonio debe ejecutarse con los serviio
privilegios del usuario y no como root, por razones de seguridad. El serviio
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.9Probablemente esté familiarizado con el
useradd
comando, pero en aras de la claridad, especifiquemos para qué sirven las opciones proporcionadas. La
-r
opción especifica que queremos crear un system account
. Las cuentas del sistema no tienen información antigua y uid
un valor <1000; para tales cuentas no se crea un directorio de inicio. La -U
opción indicará al programa que cree también un grupo con el mismo nombre que el usuario y que agregue automáticamente el usuario a dicho grupo. Finalmente con
-s
, especificamos el shell para el usuario. En este caso usamos /sbin/nologin
cuál es a fake shell
. Lo usamos por razones de seguridad: de esta manera, el usuario, el servicio se está ejecutando como, nunca podrá usar un shell real para ejecutar comandos.Ahí estamos: hemos creado el usuario del servicio y hemos escrito nuestro archivo de servicio. Ahora debemos copiarlo en el
/usr/systemd/system
directorio:# cp serviio.service /etc/systemd/systemPara habilitar el servicio ahora ejecutamos:
# systemctl enable serviio.serviceAhora, reinicie el sistema: si todo va bien, el servicio de servicio ya estará activo cuando se complete el proceso de arranque. Puede verificar su estado ejecutando:
$ systemctl status serviio.serviceSystemd 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 ejecutándose, por lo que todo salió como se esperaba. Si algo sale mal y hay problemas al iniciar el servicio, puede usar los registros proporcionados por el mismo comando para resolver los problemas.
Si está ejecutando un firewall en su equipo, debe también puertos abiertos
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 mediosServiio de control
Para controlar el servicio, tenemos pocas opciones. Dado que estamos corriendo en una máquina sin cabeza, no podemos acceder a la consola gráfica, pero podemos acceder a la interfaz web, navegandohttp://yourmachineip:23423/console/
desde otra máquina en el mismo lan o usar aplicaciones de terceros como la aplicación de Android "ServiiDroid".Una lista completa de posibles opciones están disponibles aquí:
http://serviio.org/apps"
. Si está ejecutando la versión "pro" de serviio, también podrá explorar su catálogo mediante el navegador integrado integrado accesible en http://yourmachineip:23424/mediabrowser/
.