Un disco que pagaste hace años desaparece del catálogo de tu app de streaming. Una playlist que armaste con cuidado cambia sola. El día que cancelas la suscripción, tu biblioteca musical se esfuma. Si te ha pasado, este proyecto es para ti: un servidor de música propio con Raspberry Pi y Navidrome que se siente como Spotify (apps en el celular, carátulas, letras, playlists inteligentes), pero con música que es tuya y sin mensualidad.
Al terminar vas a tener Navidrome corriendo en Docker, tu colección guardada en un NAS o disco USB, las etiquetas ordenadas con MusicBrainz Picard y la música sonando en el celular, el PC y los parlantes de la casa. También vas a entender las decisiones de arquitectura que evitan perder la base de datos o que la Raspberry se cuelgue al arrancar.
¿Te conviene un servidor propio?
Conviene ser honesto antes de partir. Si escuchas lo último cada semana y descubres artistas nuevos todo el tiempo, el streaming te da 100 millones de canciones por una mensualidad, y ninguna colección propia compite con eso. Un servidor propio tiene sentido si:
- Tienes (o quieres armar) una colección de 100 a 300 discos que realmente escuchas.
- Te molesta que los álbumes desaparezcan del catálogo o que el acceso termine con la suscripción.
- Te importa la calidad: tus rips en FLAC suenan sin pérdida, mientras que el streaming estándar comprime.
Navidrome vs. otras opciones:
| Proyecto | La Raspberry es… | Te sirve si… |
|---|---|---|
| Volumio / moOde | El reproductor conectado al equipo de música | Quieres un Pi con DAC tocando en el living |
| Jellyfin | Servidor de películas, series y algo de música | Tu foco es el video |
| Navidrome | Servidor de música para todos los dispositivos | Quieres escuchar en celular, PC y todos los parlantes |
Navidrome está hecho para música: implementa la API Subsonic, con decenas de apps maduras, playlists inteligentes, scrobbling y letras, y usa una fracción de los recursos de Jellyfin. Si ya tienes Jellyfin, puedes correr ambos en paralelo leyendo los mismos archivos.
La arquitectura: la música vive en el NAS, el Pi solo la sirve
La decisión más importante se toma antes de instalar nada: la colección no se guarda en la Raspberry. Una colección ripeada, comprada y etiquetada representa muchas horas de trabajo, y una tarjeta microSD es el almacenamiento menos confiable de la casa.

- En el NAS: los archivos de música, con su redundancia y respaldo.
- En la Raspberry: solo la base de datos de Navidrome (playlists, favoritos, contadores de reproducción) y el caché de transcodificación.
- Navidrome ve la música en modo solo lectura. Si la Raspberry muere, la reinstalas en media hora y la música ni se enteró.
¿Y si tu NAS ya corre Docker? (Synology Container Manager, QNAP, UGREEN, TrueNAS). Entonces puedes levantar Navidrome directo ahí con el mismo archivo compose. La Raspberry conviene cuando el NAS no tiene Docker, cuando quieres separar servicios de datos o cuando ya tienes un Pi prendido 24/7 con Home Assistant o Pi hole.
¿No tienes NAS? Conecta un SSD USB a la Raspberry y móntalo en /mnt/musik. Todo lo demás queda igual, con dos cambios: el SSD no es un respaldo (configura una copia con rsync a otro disco o restic a la nube), y en un Pi 4 el total de corriente de los USB es de 1,2 A, así que si cuelgas más cosas necesitarás un hub con alimentación propia. Móntalo por UUID (sale con sudo blkid) y no por /dev/sda1, porque el nombre del dispositivo puede cambiar entre reinicios. Si el disco está vacío, formatéalo en ext4 para conservar los permisos Linux que necesita el contenedor.
Paso 1: montar la carpeta del NAS en la Raspberry
En el NAS crea una carpeta compartida musik con dos subcarpetas: neu (entrada de álbumes nuevos) y backup-navidrome. Un usuario navidrome con lectura y escritura basta. En la Raspberry la montaremos en /mnt/musik.
¿NFS o SMB?
| Usa… | Cuando… | Por qué |
|---|---|---|
| NFS | Tu NAS lo ofrece (Synology, QNAP, UGREEN, TrueNAS, OpenMediaVault) | Menos carga de CPU y conserva los permisos Linux, lo que simplifica la vida del contenedor |
| SMB | La música está en un disco del router, un PC Windows o un Mac, o el NAS no tiene NFS | Funciona en todas partes y el acceso se controla con usuario y contraseña |
La diferencia es de pocos puntos porcentuales de CPU, no de calidad de audio. Elige una de las dos.
Con NFS (instala nfs-common y agrega esta línea al final de /etc/fstab, ajustando IP y ruta):
192.168.178.34:/volume1/musik /mnt/musik nfs noatime,_netdev,nofail,x-systemd.automount 0 0
Con SMB, instala el cliente y crea el archivo de credenciales:
sudo apt install cifs-utils
sudo mkdir -p /mnt/musik
sudo nano /root/.smb-musik
username=navidrome
password=euer-passwort
Protégelo con sudo chmod 600 /root/.smb-musik y agrega la línea al fstab (uid y gid son los de tu usuario, normalmente 1000):
//192.168.178.34/musik /mnt/musik cifs credentials=/root/.smb-musik,uid=1000,gid=1000,iocharset=utf8,vers=3.0,_netdev,nofail,x-systemd.automount 0 0
Las tres opciones que evitan un Pi colgado
Las opciones al final de la línea no son decorativas:
_netdev: espera a que haya red antes de montar.nofail: si el NAS no responde, el arranque sigue igual.x-systemd.automount: monta la carpeta recién en el primer acceso y la recupera sola si el NAS se reinicia.
Sin ellas, una Raspberry con el NAS en reposo puede quedarse 90 segundos pegada en el arranque, o no arrancar. No agregues x-systemd.idle-timeout: un automount que se desmonta por inactividad detiene los servicios que dependen de él.
Monta y verifica que puedes escribir:
sudo systemctl daemon-reload
sudo mount /mnt/musik
ls /mnt/musik
touch /mnt/musik/neu/test && rm /mnt/musik/neu/test
Paso 2: Navidrome en Docker
Parte con Docker ya instalado en Raspberry Pi OS Lite de 64 bits. Crea ~/navidrome/data y dentro de ~/navidrome un compose.yaml:
services:
navidrome:
image: deluan/navidrome:latest
container_name: navidrome
user: 1000:1000
ports:
- "4533:4533"
restart: unless-stopped
environment:
ND_DEFAULTLANGUAGE: de
ND_LASTFM_LANGUAGE: de
ND_SCANNER_SCHEDULE: "@every 1h"
ND_SCANNER_WATCHERWAIT: "0"
ND_BACKUP_PATH: /backup
ND_BACKUP_SCHEDULE: "0 3 * * *"
ND_BACKUP_COUNT: "7"
volumes:
- /home/pi/navidrome/data:/data
- /mnt/musik:/music:ro
- /mnt/musik/backup-navidrome:/backup
Tres ajustes de este archivo vienen de usar un NAS, y conviene entenderlos:
- Escaneo programado en vez de vigilancia de archivos (
ND_SCANNER_SCHEDULEyND_SCANNER_WATCHERWAIT: "0"). Navidrome normalmente detecta archivos nuevos al instante mediante notificaciones del sistema de archivos, pero esas notificaciones no funcionan sobre NFS ni SMB. Por eso escanea cada hora. Esta es la causa de la pregunta más repetida en los foros: "¿por qué no aparecen mis discos nuevos?". - Respaldo nocturno de la base de datos (
ND_BACKUP_*): todas las noches a las 3:00 copia la base al NAS y guarda siete versiones. Ahí están tus playlists, favoritos y contadores, que no se guardan en los archivos de música. - La base de datos queda en local, nunca en el NAS. Navidrome usa SQLite, y SQLite sobre una carpeta de red tarde o temprano termina con la base corrupta porque el bloqueo de archivos por red no es confiable. La música puede venir por la red, la base de datos no.
En Chile cambia ND_DEFAULTLANGUAGE: de y ND_LASTFM_LANGUAGE: de por es. La línea user: 1000:1000 tiene que coincidir con el dueño de la carpeta data. Navidrome ignora las variables PUID/PGID de otras imágenes Docker.
Levanta el contenedor:
docker compose up -d
docker compose logs -f
Entra a http://<IP-de-la-Raspberry>:4533, crea el usuario administrador y luego un usuario por cada integrante de la familia, porque favoritos y playlists son por usuario.

Un tip de orden: en Configuración → Bibliotecas crea una segunda biblioteca "Nuevos" apuntando a /music/neu. Lo recién copiado se puede escuchar de inmediato y ves de un vistazo qué falta etiquetar.
Paso 3: de dónde sacar la música (legalmente)
- Tus propios CDs: rípealos en el PC a FLAC con fre:ac o Exact Audio Copy (Windows), XLD (macOS) o abcde (Linux). Usa MusicBrainz como fuente de metadatos y guarda directo en la carpeta del NAS. Un lector USB externo lee audio a 8-24x, así que un disco toma pocos minutos. La legislación sobre copia privada cambia según el país. En Chile, revisa la Ley 17.336 de Propiedad Intelectual antes de asumir que está permitido, y en ningún caso compartas los rips.
- Compra de descargas: Qobuz (FLAC hasta 24 bit/192 kHz), Bandcamp (entre 85 y 90 % del precio va al artista) o la tienda de iTunes (AAC sin DRM).
- Gratis y legal: Free Music Archive, Jamendo y el Live Music Archive de archive.org.
- Tus playlists de Spotify: expórtalas a CSV con Exportify y úsalas como lista de compras y de rips.
Lo que queda fuera a propósito son los programas que graban o descargan streams de Spotify o YouTube, porque vulneran los términos de esos servicios y entregan audio comprimido de calidad mediocre.
Paso 4: etiquetas y carátulas con MusicBrainz Picard
Navidrome arma artistas, álbumes, años y géneros solo a partir de las etiquetas de los archivos, e ignora los nombres de las carpetas. Si las etiquetas están mal, el servidor se siente como un explorador de archivos. Si están bien, se siente como Spotify.

El flujo es siempre igual: abre la carpeta neu en Picard, haz clic en Cluster y luego en Lookup. Picard reconoce el disco por la huella acústica y las etiquetas existentes, descarga la carátula en alta resolución, escribe los IDs de MusicBrainz y, si activas "mover archivos al guardar", lo ordena en la carpeta principal como Artista/Álbum/.

Con discos completos funciona casi siempre. Con pistas sueltas, prueba Analizar (huella AcoustID) y, si tampoco resulta, completa artista y título a mano.
Paso 5: la experiencia tipo Spotify
Playlists inteligentes: son reglas, no listas fijas. Navidrome las lee como archivos .nsp en la carpeta de música. Esta es la versión casera de "Descubrimiento semanal": favoritos que no suenan hace 180 días, en orden aleatorio (el ejemplo original viene en alemán; puedes traducir name y comment):
{
"name": "Lange nicht gehört",
"comment": "Favoriten, die seit 180 Tagen nicht liefen",
"all": [
{ "is": { "loved": true } },
{ "notInTheLast": { "lastPlayed": 180 } }
],
"sort": "random",
"limit": 50
}
Recomendaciones: cada usuario puede conectar su cuenta de Last.fm o ListenBrainz (la alternativa abierta de los creadores de MusicBrainz). Desde la versión 0.63, Navidrome muestra artistas similares y canciones populares en la página de cada artista.
Letras sincronizadas: si junto a 03 - Tema.flac hay un 03 - Tema.lrc, la letra avanza con la canción. El programa gratuito LRCGET descarga los .lrc de toda tu colección desde la base abierta LRCLIB.
Paso 6: escucharla en todas partes
| App | Plataforma | Comentario |
|---|---|---|
| Symfonium | Android, Android Auto | La más completa y la única que transmite a Chromecast por sí sola. Pago único después de la prueba |
| Amperfy | iPhone, iPad, CarPlay | Gratis y open source, con modo offline y AirPlay |
| play:Sub | iPhone, iPad, CarPlay | El clásico maduro de iOS (de pago) |
| Feishin | Windows, macOS, Linux | Cliente de escritorio estilo Spotify, gratis |
| Web | Cualquier navegador | Puerto 4533 |
Fuera de casa: usa una VPN como WireGuard o Tailscale (lo recomendado) o un proxy reverso con HTTPS. Nunca abras el puerto 4533 directo a internet.
Parlantes y soundbar: en Android, Symfonium manda la música a cualquier equipo con Chromecast integrado, y el parlante descarga el stream directo desde la Raspberry, así que el celular es solo el control remoto. En iPhone se hace por AirPlay.

Alexa: Amazon no permite enviar streams directamente a un Echo. Sin servicios extra, solo queda emparejarlo por Bluetooth como parlante. Existe un skill de pago (My Media for Alexa) que pasa por servidores de terceros y no conoce tus playlists de Navidrome.
Home Assistant: con el add on Music Assistant, Navidrome aparece como fuente y puedes tocar en cualquier parlante que Home Assistant vea, sea Chromecast, AirPlay, DLNA, Sonos o multiroom con Snapcast. Agrega el proveedor Subsonic y ojo con un detalle: la Base URL va sin puerto (http://<IP-de-la-Raspberry>) y el 4533 va en su propio campo.

Respaldo y solución de problemas
El diseño permite que cualquier pieza falle. Si muere la microSD, reinstalas, copias el compose y restauras el último respaldo de la base desde el NAS (copiándolo a data/navidrome.db). Si muere el NAS, se pierde la música, así que la carpeta musik tiene que entrar en la estrategia de respaldo del NAS igual que tus fotos.
| Síntoma | Causa y solución |
|---|---|
| Los discos nuevos no aparecen | Sobre NFS/SMB no hay notificaciones. Lanza un escaneo manual desde el ícono de actividad o espera el programado |
Biblioteca vacía, log con permission denied |
El usuario del contenedor no puede leer la música. En SMB revisa uid/gid y en NFS la opción squash del NAS |
unable to open database file |
La carpeta data no es del usuario de user:. Corrige con sudo chown -R 1000:1000 ~/navidrome/data |
El Pi se cuelga al arrancar o /music aparece vacío |
Faltan nofail y x-systemd.automount en el fstab. Tras reiniciar el NAS basta con docker compose restart |
| Álbum sin carátula | Picard la baja del Cover Art Archive, o pon un cover.jpg en la carpeta del disco |
Variantes y mejoras
- DAC I2S para modo jukebox: Navidrome puede reproducir él mismo por la tarjeta de sonido del Pi usando
mpv, que viene en la imagen Docker. Monta un DAC I2S tipo PCM5102 o un HAT HiFiBerry, habilitaND_JUKEBOX_ENABLED, pásale/dev/sndal contenedor y agrega el grupoaudio(GID 29 en Raspberry Pi OS). Así la Raspberry también toca directo al equipo del living, controlada desde el celular. - Mide el consumo: con un medidor USB-C en línea puedes comprobar cuánto gasta tu servidor. Una Raspberry Pi 4 en reposo ronda los 3 W y una Pi 5 un poco más. Encendida todo el año sale del orden de 25-40 kWh, poco comparado con una suscripción, pero vale la pena medirlo si además tienes un SSD USB conectado.
- Multiroom barato: una Raspberry Pi Zero 2 W con un DAC pequeño por pieza, como cliente Snapcast, arma un sistema de audio sincronizado en toda la casa sin depender de parlantes "inteligentes".
Personalización para Chile
Esta corrida no pudo consultar el catálogo en línea de MechatronicStore, así que no vinculamos productos específicos con SKU ni precio. Busca en la tienda:
- Raspberry Pi 5 (o Raspberry Pi 4 de 2 GB o más). La Pi 5 conviene si varias personas escuchan a la vez con transcodificación.
- Fuente USB-C oficial: 27 W para la Pi 5 (así sobra corriente para un disco USB) o 5 V 3 A para la Pi 4.
- Tarjeta microSD de buena calidad para el sistema y la base de datos (la música no va aquí).
- SSD USB si no tienes NAS.
- Módulo DAC I2S si quieres el modo jukebox.
Si ya tienes una Raspberry Pi 3 o una Zero 2 W, Navidrome también corre ahí. Solo no esperes transcodificar para varios usuarios al mismo tiempo.
Recursos
- Tutorial original (alemán): Raspberry Pi Musikserver: Navidrome als Spotify Alternative, de Philipp Schweizer en raspberry.tips
- Proyecto Navidrome: navidrome.org, con documentación e imagen Docker
deluan/navidrome - Etiquetado: MusicBrainz Picard
- Documentación adicional: ListenBrainz para recomendaciones y LRCLIB para letras sincronizadas
Versión chilena basada en la guía original, con componentes en stock local.




