Why Navidrome?
Navidrome fills a gap that Jellyfin doesn't cover the same way: music only, lightweight, with the Subsonic API. The Subsonic API is the de facto standard for self-hosted music streaming — supported by 20+ mobile clients on Android and iOS. Where Jellyfin handles movies and TV shows too, Navidrome is built exclusively for music: artist/album/genre indexing, album art, lyrics, Last.fm/ListenBrainz scrobbling, per-user playlists. All in a single Go container under 50 MB, running on less than 256 MB of RAM.
What you get with Navidrome
- Subsonic API: stream from Symfonium, DSub, Ultrasonic (Android), Amperfy, iSub (iOS)
- Built-in web player — no installation required on your computer
- Automatic library scan every hour (or on demand)
- Album art and metadata fetched automatically from MusicBrainz and embedded tags
- Independent playlists, favourites, ratings and play history per user
- Last.fm and ListenBrainz scrobbling per user, no plugin needed
- Under 256 MB RAM — runs on the most modest entry-level VPS
The Subsonic API: a proven client ecosystem
One of Navidrome's strengths is not reinventing clients. By implementing the Subsonic API — an open protocol extended by the OpenSubsonic project — Navidrome benefits from a mature ecosystem of mobile and desktop clients.
On Android, Symfonium offers a polished experience with equalisation and offline playback. DSub is a reliable free and open-source option. On iOS, Amperfy and iSub have been reference apps for years. On desktop, Sublime Music (Linux) and XBMC/Kodi integrations also work with the Subsonic API.
This diversity means your client choice is independent of Navidrome: switch to another client at any time without touching the server.
Deploy Navidrome on VPS in 4 steps
Order a VPS
Choose a VPS with at least 1 vCPU and 512 MB RAM — 1 GB recommended. No domain required: access Navidrome via SSH tunnel from any computer.
Automatic deployment
ServOrbit installs Docker, configures persistent volumes and starts Navidrome in a single pass. Two volumes are created: /data (SQLite database, cache, playlists) and /music (your library). You receive the access URL as soon as it's ready.
Upload your music
Connect via SFTP (FileZilla, Cyberduck) or rsync and drop your files into the /music volume. Navidrome detects and indexes them at the next scan (every hour by default), or click Scan Library in the admin interface for immediate scanning.
Create your account and connect an app
Open your instance URL in a browser. The first-run screen prompts you to create an admin account. Then install a Subsonic client (Symfonium or DSub on Android, Amperfy on iOS), enter your server URL and credentials — your full library is available.
To access Navidrome from your computer without a domain, use an SSH tunnel: ssh -L 4533:127.0.0.1:4533 root@your-vps-ip then open http://localhost:4533. For permanent mobile access, point a subdomain at your VPS and configure HTTPS.
Navidrome architecture: Go + SQLite, nothing more
Navidrome is a single Go binary with an embedded HTTP server and SQLite database. No external services required: no Redis, no PostgreSQL, no Node.js. One Docker image, one process to monitor, one data volume to back up.
It mounts two Docker volumes: /data (database, cache, downloaded covers, playlists) and /music (your library). The official image is under 50 MB and starts in seconds. RAM usage stays under 256 MB for a personal library of 10,000–50,000 tracks.
The embedded web server serves the admin interface, web player and Subsonic API on the same port (default: 4533). To expose Navidrome over HTTPS, place an nginx or Caddy reverse proxy in front — ServOrbit configures this automatically when you assign a domain.
Navidrome vs Jellyfin: which tool for which use?
| Navidrome | Jellyfin | |
|---|---|---|
| Speciality | Music only | Video + music + photos |
| API | Subsonic / OpenSubsonic | Jellyfin REST + DLNA |
| Typical RAM | < 256 MB | 512 MB — 2 GB |
| Video transcoding | Not applicable | Yes (GPU optional) |
| Music mobile clients | 20+ Subsonic clients | Official Jellyfin app |
| Last.fm scrobbling | Native, per user | Via plugin |
Supported audio formats and transcoding
Navidrome natively plays all common audio formats: MP3, FLAC, AAC, OGG Vorbis, Opus, M4A, WAV, AIFF, WMA and ALAC. It reads metadata directly from ID3v2, Vorbis Comment and iTunes tags, and fills in missing album art from MusicBrainz and Last.fm.
On-the-fly transcoding requires ffmpeg on the server — ServOrbit configures this automatically in the deployment image. Without ffmpeg, Navidrome works in pure Direct Play: the original file is sent as-is.
Multi-user management and scrobbling
Navidrome natively manages multiple user accounts, each fully independent: playlists, favourites, ratings, listening history and scrobbling settings are all separate. An admin account can create new accounts from the web interface.
Scrobbling to Last.fm or ListenBrainz is configured per user in profile settings. Each played track is sent in the background — no plugin, no extra daemon. For families or flatmates sharing a VPS, this complete isolation lets everyone keep their own listening statistics.
Backing up Navidrome
Two things to back up: the /data volume (SQLite + cache + playlists) and your music library in /music. For /data:
docker run --rm -v navidrome-data:/data -v /backup:/backup alpine tar czf /backup/navidrome-data.tar.gz /dataYour music files in /music are your originals — restoration means copying files back and re-running a scan. ServOrbit can configure automatic daily backups of /data to S3-compatible object storage. For large libraries, rclone backups of /music to object storage with deduplication are the most cost-effective approach.