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.

Esquema del servidor: el PC entrega CDs ripeados y descargas al NAS, y la Raspberry Pi con Navidrome lee esa carpeta y transmite al celular, la soundbar y otros reproductores

  • 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):

Text
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:

Bash
sudo apt install cifs-utils
sudo mkdir -p /mnt/musik
sudo nano /root/.smb-musik
Text
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):

Text
//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:

Bash
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:

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:

  1. Escaneo programado en vez de vigilancia de archivos (ND_SCANNER_SCHEDULE y ND_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?".
  2. 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.
  3. 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:

Bash
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.

Interfaz web de Navidrome con un álbum abierto: carátula, lista de doce pistas FLAC y reproducción en curso

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.

MusicBrainz Picard antes de la consulta: seis archivos de música sin artista ni álbum

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/.

MusicBrainz Picard después de la consulta: el álbum reconocido con sus doce pistas, carátula y tabla de etiquetas antiguas y nuevas

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):

JSON
{
  "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.

Amperfy en iPhone con una soundbar elegida como salida en el menú de 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.

Music Assistant en el navegador reproduciendo un álbum con la soundbar marcada como dispositivo de salida

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, habilita ND_JUKEBOX_ENABLED, pásale /dev/snd al contenedor y agrega el grupo audio (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

Versión chilena basada en la guía original, con componentes en stock local.