I earn commissions when you sign up or buy through the affiliate links on this page, at no extra cost to you.

Homelab · Alternative · By Mohammed Almuhanna · Updated

Self-Hosted Spotify Alternative: Navidrome

I moved my music to Navidrome after a streaming service quietly pulled tracks out of my playlists. The songs were still sitting on the desktop site, just flagged unavailable. So I stopped renting access to my own collection. It lives on my server now and streams to my phone with Tempo and my Linux desktop with Feishin, over a Cloudflare tunnel. Nothing falls out of a playlist anymore, because I am the only one who decides what is in it.

What I would run instead

Navidrome is my pick, with one thing said up front so nobody is surprised. It gives you a music library that is yours, streams to every device, and never loses a track to a licensing change. But it plays the music you own, not a bottomless catalog, so it does not replace Spotify for finding new music. It replaces the part of streaming you actually keep coming back to, the albums and playlists you already care about, and it makes that part permanent. I run both, and most people will. Streaming for discovery, Navidrome for the collection I refuse to lose.

Feishin desktop music client connected to a self-hosted Navidrome library
Feishin on my Linux desktop, streaming my Navidrome library over a Cloudflare tunnel.

What you give up leaving Spotify

Spotify, Apple Music, and YouTube Music give you almost every song ever recorded on tap, recommendations that find you new things, and offline downloads, for somewhere around 11 to 13 dollars a month. The catalog is the real product, and for the money it is a good deal. The problem is what you are actually paying for. The tracks are licensed to the service, not owned by you. When a licensing deal changes, songs vanish from your own playlists and there is nothing you can do about it. That is the moment you start wanting a copy nobody else can touch.

Navidrome, and the alternatives

Navidrome

Navidrome is a light music server, a single Go program, that indexes your audio files and streams them. The useful part is that it speaks the Subsonic API, so a whole ecosystem of good apps already works with it. Tempo and Symfonium on Android, Feishin on the desktop, play:Sub and Amperfy on iOS. I reach mine from outside the house through a Cloudflare tunnel, so my library is on my phone anywhere with no open port. It only plays what you put into it, which is the whole point. Your library and your playlists are permanent and fully yours. The limit is the same coin flipped over. You bring your own music, and nothing here finds you new artists.

Jellyfin, if you already run it for video

Jellyfin handles music as well as movies. If you already run it, point it at your music folder and you are done, one less thing to host. I still use Navidrome instead, and the reason is simple. The dedicated Subsonic music apps are better to listen with than Jellyfin's music clients. Want one server for everything, run Jellyfin. Want the best music experience, run Navidrome.

Plexamp, polished but tied to Plex

Plexamp is a genuinely good music player. The problem is it runs on top of Plex and now sits behind Plex Pass, so it carries the same account-and-paywall direction that pushed a lot of people off Plex in the first place. Pick it only if you are already in the Plex world and happy to pay.

Where the music comes from

Navidrome plays files you provide, so the one real job is building a library it can read. Stick to sources you own. DRM-free files you own, like purchases from Bandcamp, the major stores, or HDtracks, and whatever else you have collected over the years. Tag it sensibly, drop it in the folder Navidrome watches, and it shows up, artwork and all. The whole point is permanence, so keep the files organized and backed up like anything else you do not want to lose.

I only speak to music you have bought and own. How you get files onto your server is your call and your responsibility.

What it takes to run

Navidrome itself is tiny and runs on almost anything. The planning is all about storage, because a music library grows large, especially in lossless. A folder of MP3s is small. A FLAC collection is not.

SetupReality
Raspberry Pi / SBCPlenty for the server itself. Pair it with a USB drive or your NAS for the library and it streams fine.
NAS or serverThe natural home if your collection is large or already lives on a NAS. Navidrome runs as one small container beside your files.

Size the storage for your collection with the storage calculator, and check the running cost of the box with the homelab power calculator.

Listening everywhere

A library you can only play at home is half a music service. Remote access is the piece that makes this feel like Spotify. Expose Navidrome with a reverse proxy or, like me, a Cloudflare tunnel that needs no open ports. Then install a Subsonic app and point it at your server. Tempo on my phone, Feishin on my Linux desktop. From there it behaves like any streaming app, playlists, search, offline caching, except the music is yours and the playlists hold still.

Cost: not a money play

This is not a money play, and I will not pretend it is. A streaming subscription at 11 to 13 dollars a month buys you the entire catalog, which Navidrome cannot match, and Navidrome being free does not change that. You self-host music to own a permanent core no service can edit. Price is not the reason. For most people the right answer is to run both. Keep streaming for the firehose of new music, and keep the albums and playlists you care about most on a server where they cannot disappear.

When to stick with Spotify

Stay on streaming alone if what you mainly want is discovery and the whole catalog. Navidrome gives you neither. Skip it too if you have no music collection and no interest in building one, because the server is only as good as the library you feed it. Navidrome is for people who already own music, or want to, and are tired of watching tracks disappear from playlists they never touched.

Common questions

Does Navidrome replace Spotify?

For the music you own, yes. It streams your library to every device. For discovering new music and reaching the whole catalog, no, it has neither. I keep a streaming subscription for discovery and use Navidrome for the collection I want to keep for good. Most people will run both.

What apps work with Navidrome?

Any Subsonic-compatible client. I use Tempo on Android and Feishin on Linux. Symfonium is a strong Android client, and play:Sub or Amperfy cover iOS. You install the app and point it at your server address.

Where do I get the music for it?

Music you own. DRM-free files you have bought from Bandcamp, the major stores, or HDtracks, and anything you have collected over time. Navidrome plays the files, you supply them.

Can I stream it away from home?

Yes. Expose Navidrome through a reverse proxy or a Cloudflare tunnel and any Subsonic app reaches it from anywhere, with no open ports if you use a tunnel.

Navidrome or Jellyfin for music?

If you already run Jellyfin, it plays music too and saves you hosting a second thing. Navidrome wins on the listening experience, because the dedicated Subsonic music apps are better than Jellyfin's music clients.

Spotify is a trademark of Spotify AB. Dalil Tech is not affiliated with or endorsed by it.