Navidrome

Interface web en thème sombre : grille de pochettes d'albums, file de lecture ouverte et barre du lecteur en bas.

Collection musicale en streaming via l'API OpenSubsonic

Navidrome est un serveur de streaming musical auto-hébergé, écrit en Go et publié sous GPL-3.0. Il indexe un dossier de fichiers audio d'après leurs tags et le sert de deux façons : une interface web en React (Material UI et React-Admin) et l'API Subsonic, que parlent les applis compatibles Subsonic, Madsonic ou Airsonic. Le README le résume en « votre Spotify personnel », alimenté par sa propre collection.

Clients Subsonic et Jellyfin sur un même serveur

  • Applis Subsonic et OpenSubsonic : la documentation en recense pour iOS, Android, Windows, macOS, Linux, Android TV, CarPlay et Android Auto.
  • API Jellyfin depuis la 0.64.0, expérimentale et désactivée par défaut. Les applis musicales écrites pour Jellyfin, comme Finamp et Jellify, s'y connectent sans serveur Jellyfin. La vidéo et la TV en direct restent hors de son champ.
  • Testé sur environ 900 000 morceaux, deux tiers en FLAC et un tiers en MP3, et donné pour tourner correctement sur un Raspberry Pi Zero. La base de données est un SQLite rangé dans le dossier de données.
  • Transcodage à la volée réglable par utilisateur et par lecteur, en Opus si besoin, pour ménager le forfait data d'un téléphone.
  • Plusieurs bibliothèques avec des droits par utilisateur : la musique d'un côté et les livres audio de l'autre, ou la collection familiale à part de la collection personnelle. Compteurs d'écoute, favoris et playlists restent propres à chaque compte.
  • Liens de partage publics vers un album, un morceau ou une playlist, et scrobbling vers Last.fm, ListenBrainz ou Maloja (par une URL ListenBrainz personnalisée).

Tags propres exigés, fichiers audio jamais réécrits

Le classement suit les tags, jamais les dossiers. La FAQ le présente comme un choix de conception : la navigation par dossier n'existe pas, elle est simulée à partir des tags sur le modèle /AlbumArtist/Album/01-Song.ext, et une bibliothèque sans tags n'est explicitement pas prise en charge. Une compilation ne tient en un seul album que si chaque piste porte le tag de compilation (TCMP=1 en ID3, COMPILATION=1 en FLAC). Le projet recommande beets ou MusicBrainz Picard pour taguer, et oriente vers d'autres serveurs ceux qui tiennent à la navigation par dossier.

Navidrome n'écrit jamais dans le dossier musical. L'interface ne permet ni d'éditer les tags ni de renommer un fichier. La FAQ invoque la sécurité : sur un serveur exposé à Internet, une seule faille suffirait alors à effacer toute la musique. L'envoi de fichiers manque aussi, par choix, et la FAQ renvoie vers un outil à part, un gestionnaire comme FileBrowser ou un partage réseau.

ffmpeg doit être installé à côté du binaire. La documentation d'installation en fait une condition pour que Navidrome fonctionne correctement, et le paquet .deb l'installe comme dépendance avec apt.

Les playlists intelligentes sont en bêta, sans éditeur dans l'interface web. Leurs règles s'écrivent en JSON, dans un fichier .nsp importé au scan, ou passent par un client doté d'un éditeur de règles comme Feishin. L'éditeur intégré figure à la feuille de route.

La dernière version, 0.64.2, date du 24 septembre 2026, et le projet reste en 0.x. Quatre versions mineures sont sorties entre la 0.61.0 du 31 mars et la 0.64.0 du 12 septembre 2026. Le README déconseille la branche master, parfois instable, au profit des releases. La 0.64.0 réencode tous les identifiants internes et demande de sauvegarder la base avant la mise à jour. La 0.64.2 corrige les erreurs database is locked apparues depuis la 0.64.0 sur les stockages lents, disques USB ou volumes distants.