Navidrome: Servidor de música autohospedado
Introducción
Este artículo documenta el uso de Navidrome escomo un servidor de música ligero,autohospedado rápidodentro del stack multimedia. Se integra como servicio persistente sobre Docker y autohospedado,se idealexpone mediante reverse proxy, con soporte para gestionarclientes web, móviles y transmitiraplicaciones tucompatibles con Subsonic, sin depender de plataformas externas ni servicios propietarios.
El objetivo principal es centralizar una biblioteca musical desdelocal (FLAC, MP3, etc.), mantener control total sobre los datos y permitir acceso remoto seguro, dejando fuera cualquier parte.lógica Compatibleajena a la reproducción y catalogación de música.
Enfoque general / Arquitectura
Estas funciones se delegan en otros componentes del stack:
La biblioteca musical se monta en solo lectura, garantizando que Navidrome no altere el contenido original ni la estructura del dataset.
Desarrollo
Qué se hizo y navegador,por qué
Uso de la imagen oficial
Se emplea la imagen mantenida por el proyecto, ligera y sin dependencias externas ni funciones bloqueadas.
docker-compose.yml
services:
navidrome:
image: ghcr.io/navidrome/navidrome:latest
user: 1000:1000 # debe coincidir con el UID del usuario que tenga acceso a los volúmenes
ports:
- "4533:4533"
restart: unless-stopped
network_mode: bridge
container_name: Navidrome
environment:
ND_SCANSCHEDULE: 1h
ND_LOGLEVEL: "debug"
ND_AGENTS: "lastfm,deezer"
ND_SESSIONTIMEOUT: 24h
ND_UILOGINBACKGROUNDURL: "https://ejemplo.com/fondo.jpg"
ND_ENABLEDOWNLOADS: true
ND_LASTFM_ENABLED: true
ND_LASTFM_LANGUAGE: es
ND_LISTENBRAINZ_ENABLED: true
ND_SPOTIFY_ID: "your_spotify_client_id"
ND_SPOTIFY_SECRET: "your_spotify_secret"
ND_ENABLEEXTERNALSERVICES: true
ND_BASEURL: "https://tu-dominio.tld"
ND_COVERJPEGQUALITY: 100
ND_PASSWORDENCRYPTIONKEY: "clave_larga_de_encriptado"
ND_LASTFM_APIKEY: "tu_lastfm_apikey"
ND_LASTFM_SECRET: "tu_lastfm_secret"
ND_ENABLESHARING: "true"
ND_ENABLETRANSCODINGCONFIG: "true"
ND_SCANNER_PURGEMISSING: "always"
ND_DEFAULTLANGUAGE: "es"
ND_SCANNER_EXTRACTOR: "taglib"
ND_PREFERSORTTAGS: "false"
volumes:
- /ruta/local/navidrome/data:/data
- /ruta/a/tu/musica:/music:ro
Detalles clave
Puerto 4533: acceso principal a la interfaz web:
innecesarias.http://<IP-del-servidor>:4533
VolúmenesUID/GID explícitos:
/data/musicEscaneo periódico de la biblioteca
musicalPermite (solodetectar lectura).cambios sin intervención manual, evitando escaneos agresivos o continuos.
Extracción de metadatos basada en tags Se priorizan los metadatos embebidos frente a heurísticas por nombre de archivo, clave cuando la librería está bien etiquetada.
Integraciones activadasexternas habilitadas:
Base URL definida
Necesaria para un funcionamiento correcto detrás de enlacesreverse proxy y configuraciónpara avanzadaenlaces de transcodificación.
AccesoConfiguración yutilizada uso(solo enlaces)
La configuración completa se mantiene fuera del artículo:
Levantar contenedor:Incluye:
docker-compose up -d
compose.ymlValidación
AbrirComprobaciones mínimas tras el despliegue:
Configurarinicial usuariocompletado admin,sin bibliotecaerrores relevantes en logs.
Notas personales
La interfaz web puede protegerse mediante Authentik usando un proxy provider,provider, sinmanteniendo la API Subsonic accesible para no romper compatibilidad con clientes móviles o de escritorio.
Este enfoque es opcional, pero recomendado cuando Navidrome se expone a internet:
El fragmento necesario para esta separación está incluido en la carpeta correspondiente del repositorio en Gitea.