Skip to main content

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

Navidrome actúa como backend de streaming y catálogo, sin asumir responsabilidades que no le corresponden (proxy, TLS, SSO o control de acceso avanzado).

Estas funciones se delegan en otros componentes del stack:

    Docker para aislamiento y persistencia. Reverse proxy para exposición externa y TLS. Authentik (opcional) para proteger la interfaz web sin romper compatibilidad con clientes Subsonic,Subsonic. apps móviles

    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: http://<IP-del-servidor>:4533innecesarias.

        VolúmenesUID/GID explícitos:

          Evita /data: configuraciónconflictos de Navidrome.permisos al acceder a volúmenes montados desde el host. /music:

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

            Last.fm, SpotifyListenBrainz y ListenBrainz.Spotify se usan únicamente para enriquecimiento de metadatos y scrobbling, no como dependencias funcionales. Descargas, compartición

            Base URL definida Necesaria para un funcionamiento correcto detrás de enlacesreverse proxy y configuraciónpara avanzadaenlaces de transcodificación.

            compartidos.

            AccesoConfiguración yutilizada uso(solo enlaces)

              La configuración completa se mantiene fuera del artículo:

              Levantar contenedor:Incluye:

                docker-compose up -d compose.yml Variables de entorno Fragmentos de configuración para proxy Fragmento opcional para protección con Authentik

                Validación

                AbrirComprobaciones mínimas tras el despliegue:

                  Acceso a la interfaz web en el navegador.puerto configurado. Escaneo

                  Configurarinicial usuariocompletado admin,sin bibliotecaerrores relevantes en logs.

                  Biblioteca visible y serviciosnavegable externos.por artista y álbum. Conexión correcta desde clientes Subsonic externos. Enlaces compartidos funcionales desde el dominio público.

                  Notas personales

                    ProtegidoProtección con Authentik (opcional)

                    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:

                      Evita autenticación doble en aplicaciones externas. Mantiene compatibilidad con clientes Subsonic. Limita el acceso al panel web sin añadir fricción innecesaria.

                      El fragmento necesario para esta separación está incluido en la carpeta correspondiente del repositorio en Gitea.


                      Decisiones importantes o problemas detectados

                        Proteger Navidrome completamente con SSO rompe clientes Subsonic. La interfazbiblioteca dedebe loginmontarse tienesiempre fondoen personalizado.read-only.

                        EnlacesResumen breve

                          Servidor de interésmúsica autohospedado, ligero y estable. Control total sobre biblioteca y acceso. Integración limpia con reverse proxy y SSO opcional. Configuración mantenida íntegramente en Gitea.

                          Referencias