Music

Self-hosted alternative to Spotify

Self-hosting music replaces the half of Spotify you can actually own: your library, streamed to your phone and your desktop from a box at home. It does not replace Spotify's catalog. Nothing here hands you a hundred million tracks or a Discover Weekly that reads your mind, and if you mostly use Spotify to find music you have never heard, you will be disappointed. What you get instead is the collection you already have, no monthly fee, no album vanishing because a license lapsed, and files that stay put. For almost everyone the answer is Navidrome, and the reason is the Subsonic API rather than any feature on its own.

Updated 2026-07-20 · by

Top pick

Navidrome

Navidrome is a single Go binary that points at a folder of music and serves it through a fast web player plus the Subsonic API. That API is the whole argument: a large set of mature Android, iOS, and desktop clients already speak Subsonic, so you get good mobile apps without the project having to build and maintain them. It is GPL-3.0 with no paid tier, it idles on a fraction of the memory a Java or PHP stack needs, and it implements the newer OpenSubsonic extensions on top, so clients that support them pick up richer metadata and lyrics.

The options

Navidrome

GPL-3.0, free

A light music server that reads a folder of files and serves it over a web player and the Subsonic API.

Visit Navidrome site
Runs on
Docker or a single binary. Comfortably under 250 MB RAM; fine on a Raspberry Pi.
Pick it if
You want the standard pick: small, fast, actively developed, and it works with every Subsonic client on your phone.

Jellyfin

GPL-2.0, free

A full media server that handles music alongside movies and shows, with the Finamp app for music on mobile.

Visit Jellyfin site
Runs on
Docker or bare metal, ~2 GB RAM. More if it is also transcoding video.
Pick it if
You already run Jellyfin for video and would rather maintain one server than two.

gonic

GPL-3.0, free

A very small Subsonic-compatible server in Go, with podcast support and multiple music folders.

Visit gonic site
Runs on
A tiny binary. Runs happily on a Pi Zero class machine.
Pick it if
Your hardware is genuinely constrained and you want the Subsonic API with almost nothing running.

Funkwhale

AGPL-3.0, free

A music server built on ActivityPub, so instances can federate and users can follow libraries and channels across servers.

Visit Funkwhale site
Runs on
Docker, plus PostgreSQL and Redis. Budget ~2 GB RAM for the stack.
Pick it if
You want the social and federated side: sharing libraries, following channels, publishing your own music.

Ampache

AGPL-3.0, free

A long-running PHP music server with a deep feature set, its own API, and Subsonic compatibility.

Visit Ampache site
Runs on
A LAMP stack or Docker, ~1 GB RAM.
Pick it if
You want a mature, feature-heavy server and you are comfortable running PHP and MySQL.

Koel

MIT, free

A clean Laravel and Vue web player focused on the browser listening experience.

Visit Koel site
Runs on
PHP with a database, ~1 GB RAM.
Pick it if
You listen mostly at a desktop and care more about a nice web player than about mobile apps.

Airsonic-Advanced

GPL-3.0, free

The maintained Java fork of Airsonic, itself a fork of Subsonic. The original airsonic/airsonic repo was archived in 2021; the live one is kagemomiji/airsonic-advanced.

Visit Airsonic-Advanced site
Runs on
A JVM, so ~1 GB RAM and up. Heavier than the Go options.
Pick it if
You are already running Airsonic and want continuity rather than a migration.

How to choose

Start by being honest about which Spotify you are replacing. If it is the library (albums you bought, ripped, or collected over twenty years) then a self-hosted server is strictly better: no subscription, no regional gaps, no silent removals. If it is the discovery engine, none of these match it. Navidrome and the others do scrobble to Last.fm and ListenBrainz, and ListenBrainz will feed you recommendations, but that is a different experience from a curated weekly mix. Plenty of people keep a cheap streaming subscription for finding new music and self-host everything they decided to keep.

After that the choice is mostly about mobile. The Subsonic API is the deciding factor, because it is what gets you real phone apps: Symfonium and Substreamer on Android, play:Sub and Amperfy on iOS, Feishin and Supersonic on the desktop. Navidrome, gonic, Ampache, and Airsonic-Advanced all speak it, which means you pick the client you like and the server becomes an implementation detail. Jellyfin is the exception worth taking seriously: if you already run it for video (see Jellyfin vs Plex), adding music costs you nothing extra, and Finamp is a decent music app. One server to back up and update is a real advantage.

Match the server to the hardware. Navidrome and gonic are Go binaries that will run on a Raspberry Pi next to everything else in the self-hosted starter set. Funkwhale, Ampache, Koel, and Airsonic-Advanced each drag in a database, a PHP or JVM runtime, or both, so they want a real mini PC or a NAS. Wherever it runs, keep the music on storage you trust and size it before you rip anything, which is what the RAID and ZFS calculator is for. Do not port-forward the server to reach it from outside; put it behind a mesh VPN like WireGuard or Tailscale instead. Most Subsonic clients handle that fine.

The verdict

Run Navidrome. It is small enough to sit on a Pi, it is actively maintained, and because it speaks the Subsonic API you get a real choice of good phone apps instead of whatever one client the project managed to ship. Run Jellyfin instead if it is already serving your video, since one server to update and back up beats two. Choose gonic for genuinely tiny hardware, Funkwhale if federation and sharing are the point, and Ampache or Koel if you want a heavier web-first player and do not mind a PHP stack. Airsonic-Advanced is for people already on Airsonic who want continuity. Whatever you pick, tag the library with beets first, keep it on storage you have actually planned (the best NAS OS roundup is the place to start), and back it up with something like Restic or Borg before you rip another disc.

FAQ

What is the best self-hosted music server?

Navidrome, for most people. It is a single Go binary that serves your music folder over a fast web player and the Subsonic API, which is what gets you good Android and iOS apps. Pick Jellyfin instead if you already run it for video, gonic if your hardware is very limited, and Funkwhale if you want federation and sharing between instances.

How much does Navidrome cost?

Nothing. Navidrome is free and open source under the GPL-3.0 with no paid tier, no accounts, and no feature gated behind a subscription. Your only costs are the hardware it runs on and the power to keep it on, and it is light enough that a Raspberry Pi will do.

Is Navidrome good?

Yes, and it is the default recommendation in most homelab threads for good reason. It is small, quick to set up, actively developed, and it stays out of the way: point it at a folder, let it scan, and use whichever Subsonic client you like on your phone. The main limits are that it serves music only (no video, no podcasts) and it will not do Spotify-style discovery.

Is Navidrome OpenSubsonic?

Yes. Navidrome supports the classic Subsonic API and also implements the OpenSubsonic extensions, the community effort to move the spec forward after Subsonic itself stopped evolving. Clients that support OpenSubsonic get the extra bits, like better metadata and lyrics, while older Subsonic clients keep working.

What is Navidrome used for?

Streaming your own music collection to your own devices. You keep the files on a server or NAS, Navidrome indexes them and serves them over the web and the Subsonic API, and you play them from a browser, a phone app, or a desktop client anywhere you can reach the server. It is a personal streaming service backed by files you own.

Where can I host my music for free?

On hardware you already have. All of the servers here are free and open source, so the practical answer is a Raspberry Pi, an old laptop, a used mini PC, or a NAS you already run. Free cloud tiers are a poor fit because music libraries get large quickly and you end up paying for storage anyway. Running it at home also keeps your listening history to yourself.

Is there a program that will organize my music?

Yes, and it is worth doing before you set up a server, because every one of these tools reads tags rather than filenames. beets is the standard command-line library manager: it matches your files against MusicBrainz, fixes the tags, fetches cover art, and files everything into a consistent folder structure. MusicBrainz Picard does the same job with a graphical interface. Clean tags first, then scan.

Can I self-host Spotify's catalog?

No. Self-hosting streams music you already have; it does not license a catalog. Anyone promising otherwise is describing piracy, not a homelab project. The realistic setup is to self-host the collection you own and keep a streaming subscription if you rely on it for finding new music.

Related on HomelabCompass

← All self-hosted alternatives