Navidrome: Docker

2 minuto(s) de lectura

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!