lunes, 2 de febrero de 2015

Servidor doméstico con Raspberry: Servidor DLNA

Un servidor DLNA permite transmitir contenido multimedia vía streaming bajo el estándar UPnP AV definido por la DLNA.


Gracias a esta tecnología el contenido compartido está disponible en multitud de clientes como ordenadores, tabletas, smartphones, videoconsolas, minicadenas, y quizás el más interesante, en televisores inteligentes.


Para prestar este servicio en nuestro servidor doméstico, instalamos MiniDLNA, una pequeña aplicación que consume muy pocos recursos, soporta subtitulo en varios dispositivos, así como multiples pistas de audio. Además la versión Linux soporta inotify que permite tener siempre actualizada la base de datos de contenidos de forma instantánea, al detectar cualquier cambio en el sistema de archivos. Una gran ventaja frente a otros servidores del mismo tipo, pues la actualización de archivos no es tan inmediata.

La instalación de MiniDLNA se realiza mediante la orden siguiente:

sudo apt-get install minidlna

Una vez instalado, para proceder a su configuración, se detiene el servicio  con el comando:

sudo service minidlna stop 

Antes de seguir decir que me gusta que todas los servicios de un servidor doméstico, se ejecuten bajo un mismo usuario, en la medida de lo posible o conveniente, esto es totalmente opcional y si no deseas hacerlo puedes saltarte este paso. En mi caso, primero debo ejecutar la orden siguiente:

sudo nano /etc/default/minidlna

Busco las variables USER (usuario) y GROUP (grupo) bajo el cual se ejecutará el servicio MiniDLNA, y dejo las lineas así:

USER="pi"
GROUP="pi"

Después salgo del editor con CTRL+X y con las teclas S + ENTER salvo los cambios realizados. En segundo lugar, se debe cambiar el propietario de las carpeta que contienen la bases de datos de contenidos y moverla al directorio de caches, mediante el comando siguiente:

sudo chown +R pi:pi /var/lib/minidlna
sudo mv /var/lib/minidlna /var/cache

El tercer y último paso consiste en crear el directorio para almacenar los registros de sucesos y luego cambiar el propietario, mediante las ordenes:

sudo mkdir /var/log/minidlna
sudo chown -R pi:pi /var/log/minidlna

Hasta aquí mi propuesta opcional. Ahora se edita el fichero de configuración con credenciales elevadas, tecleando lo siguiente:

sudo nano /etc/minidlna.conf

A continuación se localiza la variable media_dir que apunta al contenido multimedia compartido, y se deja personalizada las ruta según el tipo, la líneas resultante son:

media_dir=A,/mnt/usbdisk/audio
media_dir=P,/mnt/usbdisk/fotos
media_dir=V,/mnt/usbdisk/videos

Se buscan la variables db_dir y log_dir que apuntan al directorio de la base de datos de contenidos y de registro de sucesos respectivamente, y las líneas resultantes quedan así:

db_dir=/var/cache/minidlna

log_dir=/var/log/minidlna

Bien, se localiza ahora la variable frienly_name que define el nombre de nuestro servidor DLNA, puedes poner el nombre que desees, en mi caso dejo la línea así.

friendly_name=Home Server

Para terminar la configuración, se busca la variable inotify que se encarga de activar la función de actualización automática de contenidos. Esta opción puede consumir algo de recursos en nuestra RPi, entonces se tienen dos opciones:

  • Para activar inotify dejar la línea así: inotify=yes.
  • Para desactivar inotify y ahorrar recursos dejar la línea: inotify=no.

Llegados a este punto tan sólo queda reiniciar el servicio de MiniDLNA y obligar a la reconstrucción de la base de datos, con las siguiente ordenes.

sudo service minidlna start
sudo service minidlna force-reload

Y listo! Ya está disponible nuestro contenido multimedia en los dispositivos DLNA de casa.