DLNA define las especificaciones para compartir contenido multimedia entre diferentes dispositivos mediante el uso de protocolos UPnP. Instalaremos un servidor DLNA en Ubuntu Trusty Tahr, MiniDLNA (ahora se llama ReadyMedia), que nos permitirá, por ejemplo, ver películas, escuchar música o ver fotos en el portátil, el móvil o la televisión. Actualmente, no se encuentra en los repositorios, así que lo instalaremos a partir del código fuente. (Otra alternativa sería usar algún repositorio PPA que ya contenga el paquete compilado.)
Compilación
Antes de compilarlo, nos aseguramos de que tenemos las herramientas necesarias instaladas:
$ sudo aptitude install autoconf g++ subversion linux-source linux-headers-`uname -r` build-essential tofrodos git-core subversion dos2unix make gcc automake cmake checkinstall git-core dpkg-dev fakeroot pbuilder dh-make debhelper devscripts patchutils quilt git-buildpackage pristine-tar git yasm checkinstall cvs mercurial
También nos aseguraremos de que tenemos las dependencias instaladas:
$ sudo aptitude install libexif12 libexif-dev libjpeg8-dev libjpeg-dev libjpeg-turbo8 libjpeg-turbo8-dev libid3tag0 libid3tag0-dev libflac8 libflac-dev libvorbis0a libvorbisenc2 libvorbisfile3 libvorbis-dev libsqlite3-0 libsqlite3-dev libavformat54 libavformat-dev
Descargamos el código fuente y lo compilamos:
$ git clone git://git.code.sf.net/p/minidlna/git minidlna-git
$ cd minidlna-git
$ ./autogen.sh
$ ./configure
$ make
Ahora podemos, o bien instalarlo directamente:
$ sudo make install
o bien crear un paquete .deb
con checkinstall
:
$ sudo checkinstall
Configuración
Creamos el directorio donde guardaremos la configuración:
$ mkdir ~/.minidlna
Partiremos del fichero de configuración que viene en el código:
$ cp minidlna.conf ~/.minidlna/minidlna.conf
En el fichero de configuración, deberemos especificar con qué usuario se debe ejecutar el servicio, qué directorio contiene los archivos multimedia y dónde deberá guardar la base de datos que utiliza:
user=user
media_dir=/media/share
db_dir=/home/user/.minidlna
Ejecución
Para lanzar el servicio:
$ /usr/local/sbin/minidlnad -f ~/.minidlna/minidlna.conf
Si vemos que necesitamos que reindexe los contenidos:
$ /usr/local/sbin/minidlnad -R -f ~/.minidlna/minidlna.conf
Cortafuegos
Deberemos asegurarnos de que el puerto que hayamos configurado, por
defecto el 8200, sea accesible. También el puerto UDP 1900. Por
ejemplo, si queremos permitir únicamente el acceso dentro de la propia
LAN y usamos ufw
:
$ sudo ufw allow proto tcp from 192.168.50.0/24 to any port 8200
$ sudo ufw allow proto udp from 192.168.50.0/24 to any port 1900
Clientes
En cualquier PC de escritorio, mediante VLC podemos reproducir el contenido servido a través de MiniDLNA. Basta que vayamos al menú Red local > Universal Plug'n'Play. De hecho, si tenemos los archivos de subtítulos en el servidor, también es capaz de incluirlos automáticamente.
En Android, la aplicación Media House nos permitirá reproducir el contenido.
Ejecución al inicio
Si queremos que el servicio arranque al inicio, podemos utilizar el siguiente script:
#!/bin/sh
# Mini DLNA
### BEGIN INIT INFO
# Provides: scriptname
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO
case "$1" in
'start')
/usr/local/sbin/minidlnad -f /home/user/.minidlna/minidlna.conf
echo Started
;;
'stop')
PID=`/bin/pidof minidlnad`
if [ ${PID} ]; then sudo kill -SIGTERM ${PID}
else echo Already Stopped
fi
;;
'restart')
PID=`/bin/pidof minidlnad`
if [ ${PID} ]; then sudo kill -SIGTERM ${PID}
fi
/usr/local/sbin/minidlnad -f /home/user/.minidlna/minidlna.conf
echo Restarted
;;
'status')
PID=`/bin/pidof minidlnad`
if [ ${PID} ]; then echo Running. Process ${PID}
else echo Stopped
fi
;;
'rescan')
PID=`/bin/pidof minidlnad`
if [ ${PID} ]; then sudo kill -SIGTERM ${PID}
fi
/usr/local/sbin/minidlnad -R -f /home/user/.minidlna/minidlna.conf
echo Rescanning
;;
*)
echo "Usage: $0 { start | stop | restart | status | rescan }"
;;
esac
exit 0
Lo guardamos en /etc/init.d/minidlna
y configuramos el arranque:
$ sudo chmod +x /etc/init.d/minidlna
$ sudo update-rc.d minidlna defaults
Adding system startup for /etc/init.d/minidlna ...
/etc/rc0.d/K20minidlna -> ../init.d/minidlna
/etc/rc1.d/K20minidlna -> ../init.d/minidlna
/etc/rc6.d/K20minidlna -> ../init.d/minidlna
/etc/rc2.d/S20minidlna -> ../init.d/minidlna
/etc/rc3.d/S20minidlna -> ../init.d/minidlna
/etc/rc4.d/S20minidlna -> ../init.d/minidlna
/etc/rc5.d/S20minidlna -> ../init.d/minidlna
Actualizaciones
Cuando haya actualizaciones del código, podemos repetir el proceso de compilación:
$ cd minidlna-git
$ make distclean
$ git pull
$ ./configure
$ make
$ sudo checkinstall
Desinstalación
Si queremos desinstalarlo, no tenemos más que:
$ sudo aptitude purge minidlna
$ sudo update-rc.d -f minidlna remove
$ sudo rm /etc/init.d/minidlna
$ sudo rm -r /home/user/.minidlna
Referencias
» Anand Subramanian | The Ultimate Guide to Compile and Install MiniDLNA on Ubuntu » Justin Maggard | MiniDLNA (ReadyMedia)