You’ve got 50,000 songs on a network drive. Your Spotify subscription costs $12.99 a month. And you’re tired of logging into three different apps to listen to the same album on your phone, tablet, and living room speaker. Here’s the thing: you can host your own music server. And unlike Subsonic (the commercial one), there are now three solid free options that all speak the same API so your phone doesn’t care which server is slinging the bits.
The Subsonic API: Why It Matters
Before we get into the weeds, let’s talk about why this matters. Subsonic — the original commercial music server — defined an API back in 2005. Today, that API is the lingua franca of self-hosted music. Every client you might use — Symfonium on Android, Feishin on desktop, Sonixd, Substreamer, DSub, Tempo — all speak Subsonic API natively. That means if you pick the right server, you’re not locked into a single app ecosystem. You can switch servers without relearning the UI.
It’s like picking an engine for your car. Three different engines, same fuel pump. That’s powerful.
Navidrome: The Modern Default
If you’re starting fresh in 2026, Navidrome is the obvious pick. It’s written in Go (fast, low resource), it’s actively maintained, and it does exactly what you need without the cruft. Think of it as the Compose file of music servers — you get 80% of what you want in 20% of the complexity.
Install & Quick Start
services: navidrome: image: deluan/navidrome:latest container_name: navidrome restart: unless-stopped ports: - "4533:4533" environment: ND_LOGLEVEL: "info" ND_BASEURL: "" ND_MUSICFOLDER: "/music" ND_DATAFOLDER: "/data" volumes: - /path/to/music:/music:ro - navidrome_data:/data networks: - default
volumes: navidrome_data:Hit http://localhost:4533, create an admin account, point it at your music folder, and wait for the scan. On a modern box, 50K songs take 2–5 minutes. That’s not magic, that’s just Go doing Go things.
What You Get
Library scanning: Navidrome reads ID3v2 tags like a person who actually uses a music library. It groups by album artist, handles compilation albums (a notorious footgun), and supports MusicBrainz lookups for fixing botched tags. The web UI has a real search, not that “type three letters and pray” nonsense.
Multi-user: Set up user accounts for your family, housemates, or imaginary friends. Each user gets isolated playlists, favorites, and playback history. Share playlists between users without exposing the library to folks you don’t trust.
Scrobbling: Last.fm and ListenBrainz both work. Your listening history actually goes somewhere. You can use it later to fuel Spotify Wrapped envy.
Transcoding: If you’re streaming from your home lab over a dodgy 4G connection, Navidrome can transcode on the fly — FLAC down to 128kbps MP3, no transcoding server required. It’s built-in.
Web UI: The thing actually looks designed. Dark theme, album grid, play queue, search that works. No offense to the Subsonic web UI (it’s 2005, what did you expect), but Navidrome’s is from this decade.
Airsonic / Airsonic-Advanced: The Kitchen Sink
Airsonic is the OG community fork of Subsonic. If Navidrome is a Compose file, Airsonic is a full Kubernetes deployment with 40 add-ons. It runs on Java, it’s got plugin architecture, it supports DLNA streaming, it can generate playlists algorithmically, and there’s probably a feature you forgot you needed.
The trade-off? It’ll eat RAM. Idle, maybe 300–500 MB. Under load, don’t be surprised to see it crest 1 GB.
Install
services: airsonic: image: airsonic/airsonic-advanced:latest container_name: airsonic restart: unless-stopped ports: - "4040:4040" environment: JAVA_OPTS: "-Xmx1024m -Duser.timezone=UTC" volumes: - /path/to/music:/music:ro - airsonic_data:/var/airsonic - airsonic_cache:/var/airsonic/transcode networks: - default
volumes: airsonic_data: airsonic_cache:Hit http://localhost:4040, log in as admin/admin (change this immediately), and point it at your music folder. Scanning will take longer than Navidrome — Java is doing Java things.
What You Get
Plugins: Search for artist bio, grab genre info, fetch cover art, integrate with external services. There’s a whole ecosystem. If Navidrome is a Honda Civic, Airsonic is a car with an open engine bay.
DLNA/UPnP: Stream to your receiver or old Sonos-era devices. Navidrome doesn’t have this.
Advanced library features: Jukebox mode (vote to add songs to the queue — fun at parties), smart playlists, random albums, guess-the-artist mode. More gimmicks than Navidrome, yes, but some people actually use them.
Share settings: Granular control — you can give a user access to specific folders, read-only playlists, restricted downloads. Navidrome is simpler here.
Larger community: More forum threads, more StackOverflow answers, more people who’ve hit your exact problem.
The catch: maintenance is slower. Airsonic-Advanced (the better fork) gets updates, but it’s not as snappy as the Navidrome team.
gonic: The Minimal Headless Option
gonic is written by Senan Kelly (sentriz), the Subsonic API nerd. It’s 30 MB of Go binary. It has no web UI. It does exactly one job: serve Subsonic API and Jukebox API, fast and lean.
You want this if you’re running this on a Raspberry Pi 3 in a closet and never looking at it again. Or if you’re the type who’d rather cli-tool everything and a web UI feels like overhead.
Install
services: gonic: image: sonicrainbow/gonic:latest container_name: gonic restart: unless-stopped ports: - "6595:6595" environment: GONIC_MUSIC_PATHS: "/music" GONIC_DB_PATH: "/data/gonic.db" volumes: - /path/to/music:/music:ro - gonic_data:/data networks: - default
volumes: gonic_data:There’s no UI. You set it up once, then you never touch it. Your phone client is the UI. All 30 MB of gonic will happily run on a Pi Zero and sip power like a parsimonious engineer on a budget.
What You Get
Speed: Scanning is absurdly fast because there’s nothing to render. 50K songs in under a minute. gonic gets out of the way.
Resource footprint: 20–40 MB resident memory, CPU barely notices it. If you’ve got a Pi and dreams of a media server, gonic is your answer.
Jukebox API: Party mode works great. Clients can browse and queue.
MusicBrainz: Tag fetching works.
Minimal features: No transcoding (use ffmpeg-proxy somewhere else if you need it). No plugins. No DLNA. No social features. The thing serves music. That’s it.
What You Don’t Get
No web UI means no lazy browsing. Every interaction comes through a mobile client. That’s fine if that’s your workflow. It’s a dealbreaker if you ever want to spin up the server in your browser without installing an app.
Library Scanning & Tag Handling
All three handle ID3 tags, but the experience differs:
- Navidrome: Reads tags, surfaces MusicBrainz matching, lets you fix tags in the web UI. The UX is the least painful.
- Airsonic: Similar tag support, but the web UI is older. Album artist handling is solid but the UI for browsing/fixing is clunkier.
- gonic: Reads tags, no fixing UI (because no UI). If your tags are bad, you fix them on disk and rescan.
For a music library, this matters. A 30-year-old collection of MP3s downloaded from various sources will have all kinds of tag chaos. Navidrome makes this hurt less.
Multi-User & Shared Libraries
All three support multiple users. Here’s the nuance:
- Navidrome: Each user has isolated history, favorites, playlists. You can share playlists between users. Library is shared but preferences are separate. Clean.
- Airsonic: Same idea, but folder-level access control is an option. You can give one user only “Rock” and another only “Jazz.”
- gonic: No folder access control. Multi-user is supported (each user gets their own playlists and transcoding prefs), but no per-folder access restrictions.
For a household setup, Navidrome hits the sweet spot. For a shared music library where some users should see only certain folders (think: kids’ music hidden from the rest), Airsonic’s granularity wins.
Scrobbling: Last.fm & ListenBrainz
All three support both:
- Navidrome: Built-in, easy setup. Works.
- Airsonic: Built-in, also works. Same story.
- gonic: Built-in. Minimal overhead.
If you care about Listenbrainz as a decentralized music database (which is a good thing), all three will happily scrobble. Your listening history is your data, not a Silicon Valley data farm’s.
Transcoding
This is where servers diverge:
- Navidrome: On-the-fly transcoding. Send FLAC, client gets MP3 at 192 kbps if you set it. Built-in ffmpeg support.
- Airsonic: On-the-fly transcoding. More formats, more profiles. Very flexible.
- gonic: No built-in transcoding. If you need it, proxy requests through ffmpeg-proxy or transcode your library offline.
Transcoding matters if you’re streaming over mobile. A 20 MB FLAC over LTE is a slow morning. But if your library is already in AAC or MP3, you don’t need this.
Mobile & Desktop Client Compatibility
This is the Subsonic API’s superpower. Here’s the truth:
| Client | Navidrome | Airsonic | gonic |
|---|---|---|---|
| Symfonium (Android) | ✓ | ✓ | ✓ |
| DSub (Android, legacy) | ✓ | ✓ | ✓ |
| Tempo (Android, simple) | ✓ | ✓ | ✓ |
| Substreamer (Android) | ✓ | ✓ | ✓ |
| Feishin (Desktop, modern) | ✓ | ✓ | ✓ |
| Sonixd (Desktop) | ✓ | ✓ | ✓ |
| Subsonic official (Android) | ✓ | ✓ | ✓ |
They all work with all three servers. This is the whole point. Pick the server for the server, pick the client for the client. They’re decoupled.
The real difference: Navidrome’s web UI is better than Airsonic’s, so if you’re ever using a browser, Navidrome wins. gonic has no web UI, so browser streaming requires Feishin or similar.
Resource Footprint: The Real Talk
In idle state:
- Navidrome: 50–100 MB memory, negligible CPU.
- Airsonic: 300–500 MB memory (Java baseline), negligible CPU when idle.
- gonic: 20–40 MB memory, negligible CPU.
On a modern NAS or home server, none of this matters. On a Pi or a fanless box, Navidrome and gonic pull away. Airsonic is the forklift you hire to move a couch.
Under load (concurrent streaming):
- Navidrome: Linear scaling. Two streams = 2× the CPU. Still efficient.
- Airsonic: Same. Java overhead doesn’t multiply with load as badly as you’d think.
- gonic: Minimal. This thing was built for headless operation.
If you’re running five concurrent streams, gonic and Navidrome barely flinch. Airsonic will notice but won’t complain.
Web UI: A Picture Is Worth 1000 Words
Navidrome’s web UI is modern, dark by default, and responsive. Album grid, search that works, clean queue view. It looks like it was designed in the last decade. You can actually browse your music library for fun.
Airsonic’s web UI is functional but dated. It works. It’s not pretty. The album art display is smaller, the layout is busier, and it feels like you’re using a 2010 web app. Which, in spirit, you are.
gonic has no web UI. This is either “perfect, I don’t need it” or “deal breaker, I want browser access” depending on your needs.
If you ever want to browse your library from a browser without installing a desktop client, Navidrome wins on UI alone.
The Decision Matrix
┌────────────────┬─────────────────┬────────────┬─────────────┐│ Use Case │ Navidrome │ Airsonic │ gonic │├────────────────┼─────────────────┼────────────┼─────────────┤│ Fresh start │ YES │ Maybe │ If headless ││ Low resource │ YES │ NO │ YES (best) ││ Feature rich │ NO │ YES │ NO ││ Web UI │ Modern, great │ Old, works │ None ││ Multi-user │ YES │ YES │ YES (basic) ││ Granular perms │ NO │ YES │ NO ││ DLNA/UPnP │ NO │ YES │ NO ││ Transcoding │ Built-in │ Built-in │ External ││ Maintenance │ Fast │ Slower │ Very fast ││ Community │ Growing │ Larger │ Small niche │└────────────────┴─────────────────┴────────────┴─────────────┘The Real Talk
Pick Navidrome unless you have a reason not to. In 2026, it’s the default. It’s modern, efficient, well-maintained, and the web UI doesn’t feel like a chore. If you’ve got 50,000 songs on a home lab box and want to stream them to your phone without reinventing the wheel, Navidrome is the answer.
Pick Airsonic if you need folder-level access control, DLNA streaming to legacy devices, or you want algorithmic playlist generation. It’s heavier, but it’s got the depth if you need it.
Pick gonic if you’re on a Pi, you never want to touch this again after setup, and the mobile client is your UI. It’s minimal, fast, and exactly as complex as it needs to be.
They all speak Subsonic API, so your phone doesn’t care which one you picked. But your home lab does.
Get your tags right (pro tip: MusicBrainz Picard is your friend), point it at your music folder, and you’re done. Your $12.99/month is now a one-time Compose file. Your 2 AM self thanks you.