After a few years of streaming, I realized my favorite tracks kept changing catalogs or disappearing. Navidrome fixes that: a small server that exposes my own library of files through the Subsonic API, reachable from any compatible app.
Installing with Docker Compose
services:
navidrome:
image: deluan/navidrome:latest
restart: unless-stopped
ports:
- '4533:4533'
environment:
ND_SCANSCHEDULE: 1h
ND_LOGLEVEL: info
ND_SESSIONTIMEOUT: 24h
volumes:
- ./data:/data
- /srv/music:/music:ro
The music folder is mounted read-only: Navidrome has no reason to modify your files.
What to prepare first
| Item | Recommendation |
|---|---|
| Format | FLAC for the archive, MP3 320 or Opus for mobile |
| Tags | Well filled in (artist, album, year, cover art) |
| Folder layout | Artist/Album/01 - Title.flac |
Client apps
- On mobile: Symfonium (Android), Substreamer (iOS and Android)
- On desktop: the built-in web interface is enough
- In the car: any Subsonic client through Android Auto
Tip: good tagging is 90% of the experience. A tool like MusicBrainz Picard fixes metadata in bulk before the import.
Security
Don't expose it directly: go through a reverse proxy with HTTPS, or keep it behind a VPN such as WireGuard or Tailscale. An admin account with a weak password on a service open to the internet is an invitation.
- Library scanned
- Reverse proxy with HTTPS
- Regular backup of the
datafolder, which holds playlists and favorites
The result is simple: my music belongs to me, it doesn't disappear, and I listen to it wherever I want.