Files
wiki/Catalogue-Self-Hosted/apps/app-navidrome.md
T
2026-06-09 18:40:21 +02:00

7.2 KiB

title, created, updated, type, tags, confidence, contested, sources
title created updated type tags confidence contested sources
Navidrome 2026-06-07 2026-06-07 app
catalogue
music
music-streaming
navidrome
go
subsonic
opensaubsonic
opensubsonic
mpv
high false
https://selfh.st/apps/?tag=Music
https://github.com/navidrome/navidrome
https://www.navidrome.org/

🎶 Navidrome

Serveur moderne de streaming musical écrit en Go, ultra-léger, compatible OpenSubsonic et conçu pour gérer des bibliothèques massives (testé à ~900 000 pistes).

📋 Informations Générales

Métadonnée Valeur
Site web https://www.navidrome.org/
GitHub https://github.com/navidrome/navidrome
License GPL-3.0
Langage Go
Étoiles 1 523 (15 900+ sur GitHub, ordre de grandeur selfh.st)
Dernière MAJ 2026-06-06
Catégorie cat-music

📝 Description

Navidrome (« nadia » + « drome ») est un projet né en 2017, devenu la référence des serveurs de streaming musical self-hosted modernes. Écrit en Go, il se distingue par sa consommation mémoire dérisoire (≤ 100 Mo pour 25 000 pistes), sa vitesse de scan exceptionnelle et sa capacité à gérer des bibliothèques gigantesques sans ralentissement, le tout avec un binaire unique ou une image Docker minimaliste. Le développement est très actif (releases mensuelles, plus de 100 contributeurs).

Côté fonctionnalité, Navidrome implémente intégralement l'API Subsonic/OpenSubsonic, ce qui rend la quasi-totalité des clients mobiles et desktop compatibles : DSub (Android), Substreamer, Symfonium (Android), play:Sub (iOS), Sublime Music (desktop), Feishin (le nouveau client multi-plateforme), Submariner, etc. L'UI web intégrée est sobre et fonctionnelle avec transcodage à la volée (FLAC → MP3/Opus selon le bitrate du client), gestion multi-bibliothèques, utilisateurs et permissions fines, scrobbling Last.fm, et intégration native avec les Home Assistant Media Browser.

Cas d'usage typique : « Je veux remplacer Spotify par ma propre bibliothèque FLAC stockée sur un NAS, accessible depuis mon iPhone en 4G, sans Latence, sans pub, sans tracking, sur un Raspberry Pi ». Navidrome coche toutes les cases.

🚀 Installation

Option 1 : Docker Compose (recommandé)

# docker-compose.yml
version: "3.8"

services:
  navidrome:
    image: deluan/navidrome:latest
    container_name: navidrome
    restart: unless-stopped
    user: 1000:1000
    ports:
      - "4533:4533"
    environment:
      ND_BASEURL: https://navidrome.example.com
      ND_LOGLEVEL: info
      ND_SCANSCHEDULE: 1h
      ND_TRANSCODINGCACHESIZE: "100"
      ND_ENABLETRANSCODINGCONFIG: "true"
      ND_SPOTIFY_ID: ""
      ND_SPOTIFY_SECRET: ""
      ND_LASTFM_APIKEY: ""
      ND_LASTFM_SECRET: ""
      ND_JUKEBOX_ENABLED: "true"
    volumes:
      - ./data:/data
      - ./music:/music:ro
    healthcheck:
      test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:4533/health"]
      interval: 30s
      timeout: 5s
      retries: 3

Premier lancement : créer l'utilisateur admin via l'UI web, puis ajouter le dossier /music dans Settings → Library.

Option 2 : Installation manuelle

Télécharger le binaire depuis la page des releases GitHub (navidrome_<version>_<os>_<arch>.tar.gz), le placer dans /usr/local/bin/, créer un user navidrome, configurer /etc/navidrome/navidrome.toml (ou variables d'environnement), et un service systemd minimal :

[Unit]
Description=Navidrome
After=network.target

[Service]
User=navidrome
ExecStart=/usr/local/bin/navidrome --configfile /etc/navidrome/navidrome.toml
Restart=always

[Install]
WantedBy=multi-user.target

⚙️ Configuration

  • Bibliothèques : une ou plusieurs, avec chemins distincts et ACL par utilisateur (Musique / Livres audio / K7 familiales par exemple).
  • Transcodage : ffmpeg est utilisé pour le streaming, configurable par dossier (qualité par défaut, qualité mobile, format de sortie).
  • Métadonnées : extraction automatique, scan incrémental, scan programmé (ND_SCANSCHEDULE).
  • Auth : locale par défaut, header X-Forwarded-User pour SSO (Authelia/Authentik), LDAP possible via proxy.
  • Scrobbling Last.fm : ND_LASTFM_* (clé API gratuite sur last.fm/api).
  • Spotify : ND_SPOTIFY_* pour les liens d'artistes et les previews 30s.
  • Jukebox mode : permet de streamer du device qui héberge Navidrome (utile sur Raspberry Pi avec sortie audio locale).
  • Backup : ne sauvegarder que ./data (base SQLite + cache) ; la musique elle-même est sur le NAS et se rescanne.

🔄 Alternatives

Open Source

  • app-koel — PHP/Vue, UI plus moderne mais plus lourd.
  • app-ampache — PHP historique, Subsonic-compatible, plus riche fonctionnellement.
  • app-funkwhale — Fédéré (ActivityPub), orienté podcasts.
  • app-airsonic — Java, Subsonic-compatible, plus gourmand.
  • app-gonic — Go, fork d'Airsonic-Advanced, minimaliste mais moins complet.
  • app-jellyfin — Plus généraliste (vidéo + audio + Live TV).
  • app-azuracast — Pour le côté webradio.

Propriétaires (ce que cette app remplace)

  • Spotify — Streaming freemium.
  • Apple Music / iTunes Match — Synchronisation de bibliothèque.
  • Tidal — HiFi/FLAC.
  • Google Play Music (fermé) — Successeur YouTube Music.
  • Subsonic (commercial) — Le produit original Subsonic dont Navidrome est la version libre moderne.

🔒 Sécurité

  • HTTPS obligatoire : reverse proxy Traefik ou Caddy (l'API OpenSubsonic est non chiffrée nativement).
  • Mode admin : créer un compte admin avec mot de passe fort (32+ caractères) puis créer des comptes standard.
  • Trusted proxies : ND_BASICAUTH_ENABLED=false derrière Traefik, configurer X-Forwarded-* proprement.
  • Rate limiting : activer CrowdSec/Fail2ban sur le reverse proxy, l'API ne l'ayant pas en natif.
  • Permissions dossiers : monter ./music en :ro (read-only) dans le conteneur, ne JAMAIS rendre le dossier musique accessible en écriture.
  • Mise à jour : tag latest ou stable, releases fréquentes, suivre les CVE.
  • Logs : ND_LOGLEVEL=info en prod, debug temporairement en cas de souci.

📚 Ressources

🔗 Pages Liées