Navidrome: Docker

Navidrome es un servidor de música personal.
Gracias a este microservicio dispondremos de nuestra colección de música de forma sencilla y remota.
La dinámica de uso es muy sencilla, tan solo definimos la ruta donde alojamos los audios que queremos reproducir remotamente y listo.
Las principales características son:
- Consumo de recursos muy bajo, diseñado en lenguaje
Go. - Compatible con cualquiera de los clientes desarrollados para Subsonic o Airsonic.
- Capaz de gestionar grandes colecciones de música.
- Reproduce practicamente cualquier formato de audio disponible.
- Gestiona de forma genial la meta información de cada uno de los archivos.
- Multi usuario.
- Monitoriza de forma automática la librería en busca de cambios.
- Sencillo pero eficaz reproductor web.
- Soporta el transcodificado al vuelo.
- Soporta listas y ademas te permite importar listas en formato m3u.
Instalación
Vamos a realizar unos pasos previos para preparar el entorno, para ello en primer lugar creamos las carpetas donde alojar el proyecto:
mkdir -p $HOME/docker/navidrome/{datos,musica} && \
cd $HOME/docker/navidrome
Ahora llega el turno de crear el fichero de configuración docker-compose.yml lanzando el siguiente comando:
cat << EOF > $HOME/docker/navidrome/docker-compose.yml
version: '3'
services:
navidrome:
image: deluan/navidrome:latest
container_name: Navidrome
user: 1000:1000
ports:
- 4533:4533
environment:
ND_SCANSCHEDULE: "1h"
ND_LOGLEVEL: "info"
ND_SESSIONTIMEOUT: "24h"
ND_UIWELCOMEMESSAGE: "Another fine release by Lordpedal"
ND_DEFAULTTHEME: "Dark"
ND_ENABLECOVERANIMATION: "true"
ND_ENABLEDOWNLOADS: "true"
ND_DEVACTIVITYPANEL: "false"
volumes:
- './datos:/data'
- './musica:/music:ro'
restart: always
EOF
Vamos a repasar los principales parámetros que hemos añadido sobre la anterior base, para poder adaptarlos a nuestro sistema y configuración especifica:
| Parámetro | Función |
|---|---|
user: 1000:1000 |
Corresponde al PID y GID de nuestro usuario id |
4533:4533 |
Puerto de acceso interfaz Web :4533 |
ND_SCANSCHEDULE: 1h |
Definimos la frecuencia de refresco base de datos |
ND_LOGLEVEL: info |
Nivel detalle log |
ND_SESSIONTIMEOUT: 24h |
Tiempo que se mantendra la sesión abierta |
ND_UIWELCOMEMESSAGE: Another fine release by Lordpedal |
Mensaje de bienvenida |
ND_DEFAULTTHEME: Dark |
Tema oscuro por defecto |
ND_ENABLECOVERANIMATION: true |
Habilita animación de portadas |
ND_ENABLEDOWNLOADS: true |
Habilita la opción de descargas |
ND_DEVACTIVITYPANEL: false |
Desactiva el panel de desarrollo, reduce carga del servicio |
./datos:/data |
Ruta donde almacena localmente la base datos |
./musica:/music:ro |
Ruta donde almacenamos las canciones |
restart: always |
Habilitamos que tras reiniciar la maquina anfitrion vuelva a cargar el servicio |
Una vez configurado, levantamos el servicio para ser configurado y ejecutado:
docker-compose up -d
En mi caso, el servicio estaría disponible en la dirección web http://192.168.1.90:4533
Durante el primer acceso se nos solicitara la creación de un usuario con privilegios admin, posteriormente podremos añadir más usuarios.
Una vez finalizado el proceso de personalización nos puede quedar algo similar a este ejemplo:
Nginx Proxy Manager
Configuramos dominios y certificados que posteriormente usaremos para conectarnos en remoto:
Clientes: iOS / Android
Existen varias aplicaciones compatibles con él pero recomiendo substreamer por su perfecta integración.
Tan solo definimos el dominio que usamos en remoto y el usuario para hacer login:
Y listo!