Servidor de pelis (II) [minidlna]

Daniel M. Olivera

Homelab | +07+2023+

Volver a la página principal

Un buen servidor multimedia puede ser muy sencillo de montar. Lo unico que necesitamos es que nuestro servidor casero se convierta en un servidor DLNA casero. No nos importa qué significa “DLNA”; para nosotros solo significa “la cosa que hace que las pelis se puedan reproducir en cualquier compu conectada a nuestra red”.

Hay una cuestión con montar un servidor DLNA: es muy minimalista. De hecho, se requiere que cada dispositivo tenga su propia inferfaz que pueda acceder a él. Eso no es un problema realmente; lo veremos más adelante.

Organización de los archivos

Lo importante es tener un directorio donde tengamos bien organizados los archivos. Yo creo que una buena jerarquía es la que se usa en Plex ya que, si llegamos a montar Plex también, todo estará bien organizado.

La jerarquía en Plex es dividir en cuatro directorios:

Los archivos de las películas (mp4, avi, mkv, etc )van con su nombre original y su año de lanzamiento entre paréntsis. Los archivos de subtítulos (srt) van igual que los de las películas y lo único que cambia es su extensión.

Las series se organizan con el nombre original de la serie y, entre paréntesis, su año de lanzamiento. Subordinado a eso, tendríamos un directorio por cada temporada (marcados como “Season X”). Finalmente, cada archivo de video lo ideal es que inicie con el etiquetado de a qué temporada pertenece y cuál episodio es de esa temporada con la forma S0xE0x.

La música suele organizarse por artista. Subordinado al artista, se organiza en álbumes con su respectivo año de lanzamiento. Dentro de ellos, iría cada archivo etiquetado con el orden de los tracks del album.

Organizar las cosas así te ahorrará muchos dolores de cabeza y, como dije, si llegas a instalar Plex también se requerirá esta organización de tus archivos.

Instalación de minidlna

La instalación es muy sencilla. Usa la versión de los repositorios. En Debian es tan fácil como:

sudo apt install minidlna

Y en Arch:

sudo pacman -S minidlna

Recuerda actualizar antes de instalar.

Directorio multimedia

La documentación de minidlna sugiere que el directorio donde estén metidas todas nuestras pelis y series sea:

/var/lib/minidlna

Sin embargo, ¿quién realmente usa el directorio /var para poner sus películas? Además eso causa problemas al sincronizar con rsync, syncthing, nextcloud o de donde sea que las quieras mover. Como somos personas tontas y humildes y nuestros campesinos dedos no logran alcanzar la grandeza de /var, meteremos todas las pelis (como usualmente) en una carpeta dentro del directorio /home

Vamos a suponer para este ejemplo que mi nombre de usuario es “daniel” y que he creado una carpeta llamada “media” que es donde meteré toda mi piratería:

/home/daniel/media

Dentro de media estarían cosas como:

/home/daniel/media/Movies
/home/daniel/media/TvShows

Para no confundirnos, cambiaré mi nombre por USER. Cada que lo veas, cambia tu nombre de usuario en esas líneas

/home/USER/media/TvShows

Al usar nuestro directorio home, surgirá un problema de permisos que tendremos que resolver luego. Pero eso será problema de las personas del futuro, para nosotros no.

Configuración

En tu editor de preferencia, abre el archivo

/etc/minidlna.conf

Yo soy gran fan de micro y de nano, aunque si quieres usar cosas raras como vim, neovim o emacs, está bien. Hay que abrirlo con permisos administrativos.

sudo micro /etc/minidlna.conf

En el nombre de usuario, dejalo comentado (con el # al frente)

# user=minidlna

No lo cambies por tu nombre de usuario ni por “root”. En cualquier caso, si algo falla, puedes intentar con esto:

user=nobody

Pero no creo que sea necesario. Baja aún más y busca

# If you want to restrict a media_dir to a specific 
# content type, you can prepend the directory name 
# with a letter representing the type (A, P or V), 
# followed by a comma, as so: 
# * "A" for audio (eg. media_dir=A,/var/lib/minidlna/music) 
# * "P" for pictures (eg. media_dir=P,/var/lib/minidlna/pictures) 
# * "V" for video (eg. media_dir=V,/var/lib/minidlna/videos) 
media_dir=/var/lib/minidlna

Dado que nuestra multimedia está en /home/daniel/media tendremos que cambiar eso. Lo que nos dice es que agreguemos una A antes del directorio si es uno de música, V si es uno de video y P si es uno de imágenes. Es decir:

media_dir=[TIPO DE MULTIMEDIA],[DIRECTORIO MULTIMEDIA]

En ese caso, borraremos ese media_dir=/var/lib/minidlna y colocaremos nuestras direcciones.

media_dir=V,/home/USER/media/Movies
media_dir=V,/home/USER/media/TvShows
media_dir=V,/home/USER/media/Video
media_dir=A,/home/USER/media/Music

Cambia “USER” por tu nombre de usuario en tu servidor (en mi caso, es “daniel”)

Lo siguiente que hay que cambiar es el nombre con el cual tu servidor DLNA será conocido en toda la red. Este es el nombre que aparecerá en tus Smart TV y en otras computadoras que quieran reproducir lo que contiene tu servidor. Busca lo siguiente, descomentalo (es decir, borra el # al inicio si es que lo tiene) y agrega el nombre por el cual quieras que se conozca tu servidor.

friendly_name=ServidorDePelis

Revisa que las siguientes opciones estén descomentadas:

inotify=yes
notify_interval=300

Esto es para que tu servidor DLNA aununcie que está activo en tu red. El intervalo indica cada cuanto hará el anuncio. El rango de 300 segundos me parece adecuado porque equivale a 5 minutos.

Algo que puede ser muy tentador es cambiar el puerto:

port=8200

pero no te lo recomiendo ya que muchos dispositivos, como las televisiones, buscarán transmisiones en este puerto y configurar cada dispositivo suele ser complicado.

Guarda el archivo de configuración y cierralo.

Arrancando el servidor DLNA

Usaremos el maligno systemd para que nos ayude a levantar nuestro servidor. Así sucede, niños míos: a veces se tiene que usar peligrosos y terribles demonios para construir un templo. Por si no lo conoces, systemd es lo que permite que muchos programas de tu computadora o servidor estén corriendo en segundo plano sin cerrarse. No es peligroso trabajar con él (bueno, lo “peligroso usual” en linux). Sin embargo, systemd está dentro de una controversia muy grande en en mundo linux, tanto que hay distribuciones que solo existen para eliminar del sistema a un programa tan maléfico. Como esas son discusiones de gente blanca, yo no me meto.

Si estamos en Arch, necesitaremos activar primero a minidlna. En Debian ya está de forma automática activado desde que lo instalamos. Para activarlo tecleamos:

sudo systemctl enable minidlna
sudo systemctl start minidlna

Si ya estaba activado, como en Debian o en Ubuntu Server, solo lo reiniciamos:

sudo systemctl restart minidlna

Comprobamos que esté activo y sin errores:

sudo systemctl status minidlna

Si todo ha salido bien, en primera dirá que esta *active y sin errores en el log. Si ese el el caso, puedes ir a la dirección de tu servidor en el explorador de internet, con el puerto 8200 y verificar si aparece la página de MiniDLNA.

La página web del servidor DLNA

Vamos a suponer que mi computadora está en una aburrida dirección ip local 192.168.0.12. Vamos a suponer que la computadora vieja o la RaspberryPi que tengo como servidor está en una dirección 192.168.0.13 (siempre que inician así, son redes locales aburridas y sin modificaciones).

¿Cómo saber que dirección local tengo? Revisa

ip a

Busca la interface a la que el servidor está conectado y allí estará la dirección ip local junto a la palabra inet

2: eth0: <BROADCAST, ...
    ...
    inet 192.168.0.12 

También puedes usar algo más sofisticado como:

ip a | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b"

Que te mostrará todas las direcciones ip locales, incluida localhost.

Ya que tienes la dirección de tu servidor, copiala en tu browser de internet seguida de dos puntos (:) y el número de puerto (8200 para el minidlna).

http://192.168.0.12:8200

Si todo sale bien, verás una página web muy chafa donde indica solamente cuántos archivos multimedia encontró MiniDLNA y cuántos dispositivos están viendo una película o una serie en ese momento desde tu servidor (0 al inicio)

Resolviendo problemas

Cuando corres status para saber el estado de minidlna con systemctl muchas veces puede decir que no puede acceder a los archivos del directorio /home o que no tiene los permisos adecuados.

minidlna.c:670: error: Media directory "/home/USER/media" not accessible 
[Permission denied]

Si pasa eso, tenemos que arreglar los permisos. Primero que nada, tenemos que agregar a tu usuario al grupo minidlna. Para eso, usaremos usermod que sirve para cambiar cuestiones de nuestra cuenta de usuario.

usermod -a -G GrupoDeEjemplo NombreDeUsuario

Donde -a es “añadir”, -G es “grupo” y luego se agrega el grupo al cual se unirá y el usuario en seguida. Por ello, en la terminal de nuestro servidor escribiremos:

sudo usermod -a -G minidlna USER

y cambia “USER” por tu propio nombre de usuario.

Si vuelves a correr status y aún dice que hay un error en los permisos, implica que no puede abrir tu directorio de usuario. A ratos cometo el error de solo cambiar los permisos al directorio “media” pero se requiere que tu directorio home base (~) tenga permisos de 755 o de 750 por lo menos.

Por ello, cambia los permisos de tu directorio home con:

sudo chmod -R 755 /home/USER

Ten cuidado, porque la opción -R cambiara, recursivamente, todos los permisos dentro de tu carpeta de usuario. Si no quieres que sea así, entonces cambia de la siguiente manera.

sudo chmod 755 /home/USER
sudo chmod -R 755 /home/USER/media

Y con eso el problema de permisos debe de quedar resuelto.

Como conectarse con el servidor DLNA

En casi todas las SmartTV actuales está la opción de “Abrir video o fotos” y, dentro de ella, está la posibilidad de buscar “Emisón de red”. Mientras que tu televisión se pueda conectar al internet, es casi seguro que tendrá esa opción.

Una opción que me gusta más para las AndroidTv y las computadoras usuales, es instalar el maravilloso reproductor VLC.

VLC está en la PlayStore de las televisiones y celulares Android, también es posible descargarlo desde repositorio en Arch:

sudo pacman -S vlc

en Debian y derivados:

sudo apt install vlc

o bajarlo desde su página para Mac, Windows y demás.

El reproductor VLC es magnifico ya que tiene tantas opciones y plugins que puedes capturar, grabar, reproducir cualquier emisión de red, streaming, y archivo multimedia que exista.

Cuando tengas VLC instalado, busca en su menú lateral la opción “Plug’n’Play Universal”. Allí aparecerán todos tus archivos multimedia de tu servidor.

Ahora solo queda conseguir unas cervezas y unas palomitas y a disfrutar.


--|+x+x+x+x+x+x+x+x+x+|--