Navidrome: tu música autoalojada, fácil y accesible desde cualquier lugar.


Navidrome es un servidor de música autoalojado que pone tu colección al alcance desde cualquier lugar. Ofrece una interfaz web moderna y es compatible con numerosas apps de terceros para iOS y Android. Permite reproducir y organizar con facilidad álbumes y canciones en múltiples formatos, simplificando la gestión de bibliotecas musicales. Su instalación y uso son sencillos, por lo que resulta ideal para quienes desean hospedar su propio servidor y disfrutar de su música en casa o en movilidad.

Instalación de Docker

Para instalar Navidrome utilizaremos Docker, por lo que es necesario que en el servidor tengas instalado Docker. Para ello deberás de seguir este tutorial para instalar Docker:

Instalación de Docker en Ubuntu 24.04
Docker es una aplicación que simplifica el proceso de gestión de los procesos de las aplicaciones en contenedores. Los contenedores le permiten ejecutar sus aplicaciones en procesos aislados de recursos.

Instalación de Navidrome

Primero crearemos un directorio donde guardaremos tanto la configuración como la música de Navidrome. Además, aprovecharemos para instalar FileBrowser, una herramienta que nos permitirá subir y gestionar fácilmente los archivos de música directamente desde una interfaz web.

mkdir -p /opt/navidrome/{music,data}
touch /opt/navidrome/docker-compose.yml /opt/navidrome/data/navidrome.toml

Dentro del fichero docker-compose-yml copiaremos el siguiente contenido:

services:
  navidrome:
    image: deluan/navidrome
    container_name: navidrome
    restart: always
    ports:
      - "4533:4533"
    environment:
      - ND_LOGLEVEL=info
      - ND_ENABLEINSIGHTSCOLLECTOR=false
      - ND_CONFIGFILE=/data/navidrome.toml
    volumes:
      - /volume1/docker/navidrome:/data
      - /volume1/media/musica:/music

  filebrowser:
    image: filebrowser/filebrowser
    container_name: filebrowser
    restart: always
    user: "0:0"
    ports:
      - "8080:80"
    volumes:
      - /volume1/media/musica:/srv
      - /volume1/docker/filebrowser:/database

Y dentro de navidrome.toml añadiremos esta configuración que podemos adaptar a nuestro gusto:

Scanner.PurgeMissing = "always"

# Directorio donde está tu música
MusicFolder = "/srv"

# Directorio para la base de datos y cachés
DataFolder = "/data"

# Puerto en el que se ejecuta (por defecto 4533)
Port = "4533"

# URL externa si usas proxy inverso (recomendado con HTTPS)
PublicURL = "https://navidrome.dominio.com"

# Idioma de la interfaz web (por defecto autodetecta)
DefaultLanguage = "es"

# Permitir que otros usuarios se registren (falso = solo administrados manualmente)
EnableUserCreation = false

# Habilitar transcoding (por ejemplo, para móviles)
EnableTranscoding = true
TranscodingCacheSize = "500MB"

# Configurar transcoding usando ffmpeg (instálalo si no lo tienes)
TranscodingCmd = "/usr/bin/ffmpeg -i %s -f mp3 -"

# Restringe los usuarios para que no puedan navegar fuera de sus bibliotecas
ScanSchedule = "@every 1h"

# Habilita estadísticas anónimas (puedes desactivarlas si no quieres enviar datos)
EnableExternalServices = true

# Habilita las letras
LyricsPriority = ".lrc,.txt,embedded"

Guardamos y levantamos los dos contenedores:

docker compose up -d

Una vez que los contenedores estén en marcha, revisamos los logs de FileBrowser, ya que en ellos se mostrará la contraseña generada automáticamente para el usuario administrador.

⚠️
Ojo, esta contraseña solo aparece una vez, así que anótala antes de continuar.
# docker logs filebrowser
2025/10/08 15:30:24 Warning: filebrowser.db can't be found. Initialing in /database/
2025/10/08 15:30:24 Using database: /database/filebrowser.db
2025/10/08 15:30:24 Using config file: /config/settings.json
2025/10/08 15:30:24 Performing quick setup
2025/10/08 15:30:24 User 'admin' initialized with randomly generated password: HXXQF9KDINc1ymR2
2025/10/08 15:30:24 Listening on [::]:80

Como puedes ver en el registro, al usuario admin se le asigna una contraseña aleatoria que deberás usar para acceder por primera vez.

A partir de este momento:

  • FileBrowser estará disponible en el puerto 8080.
  • Navidrome estará escuchando en el puerto 4533.

Configurar Nginx Proxy

Si queremos acceder a los servicios a través de un subdominio, podemos configurar un Nginx Proxy para acceder a través de ellos mediante SSL y subdominio:

Configurar Proxy Inverso con Nginx para que escuche a un puerto interno
En ocasiones tenemos servicios o aplicaciones web que escuchan directamente a un puerto interno. Para evitar acceder a dicha aplicación o servicio por la IP del servidor, una configuración que podemos hacer es acceder desde un Nginx Proxy.

Primer contacto: Navidrome

Lo primero que tendremos que hacer es abrir nuestro navegador e ir a la URL que nos indica el instalador con la IP que nos haya asignado y el puerto 4533.

El primero procedimiento que tenemos hacer, es crear un usuario, configura un nombre y una contraseña segura.

Ahora no aparece nada, pero con el FileBrowser podemos cargar contenido dentro de /opt/navidrome/music

Primer contacto: FileBrowser

Lo primero que tenemos que hacer con FileBrowser, es acceder con el usuario admin y la contraseña que se ha generado durante su despliegue.

Una vez dentro, podemos acceder a Settings - User Management para crear un usuario o cambiar la contraseña de admin.

Luego en My Files, podemos subir las canciones que queremos tener en Navidrome, hacemos clic sobre la flecha hacia arriba del menú que hay arriba a la derecha y cargamos los ficheros.

Y si ahora vamos a Navidrome veremos las canciones que hemos subido:

¡Y listo! Ya se puede cargar contenido en el directorio correspondiente y ya tenemos Navidrome disponible para escuchar música en local.


Más sobre ./voidNull

Haz que cada palabra cuente: tu donación nos inspira a seguir creando contenido. Accede al apartado de Donación para hacer tu aportación