Abstract purple and amber illustration representing a self-hosted music streaming server

Navidrome

Navidrome is a free, open-source music server that turns a personal music collection into a private streaming service. Point it at a folder of songs already owned, and it streams that library to a web player or any of the dozens of mobile apps built for the Subsonic API. It’s the self-hosted answer to paying a subscription for music already bought, not a way to get at anything new.

Quick facts: Navidrome is open source under the GNU GPL v3 license, confirmed from GitHub’s LICENSE file. It’s written in Go with a React web UI, in active development since 2020, with over 21,000 stars on GitHub. The official Docker image is deluan/navidrome, default port 4533. Same rule as everywhere else on this site: this page assumes music already owned, ripped CDs, purchased downloads, personal recordings, nothing else.

What is Navidrome?

Navidrome is built by Deluan Quintão and a community of contributors. Jellyfin and Plex both started as video-first platforms with music added later; Navidrome was built around music from day one. The project cites testing against a library of roughly 900,000 songs, about two-thirds FLAC and one-third MP3. It speaks OpenSubsonic, an open evolution of the Subsonic protocol, so it works with apps built for Subsonic, Madsonic, and Airsonic too.

Compatible with: Android, iOS, Windows, macOS, and Linux through third-party apps, plus a built-in web player. Navidrome’s own app directory lists around 80 compatible clients, from phone apps to Sonos and Kodi integrations.

What do people actually use it for?

The obvious case is swapping out a paid streaming subscription for music already owned: CDs digitized years ago, Bandcamp purchases, lossless downloads bought straight from a label. Navidrome sorts it by artist, album, and genre, pulls in embedded artwork and tags, and streams to a phone over mobile data without chewing through a data plan, thanks to on-the-fly transcoding. Multi-user support lets a household share one server with separate logins and playlists, and it runs comfortably on modest hardware since it never transcodes video.

Is Navidrome legal?

Yes. It’s open-source software, and installing it isn’t legally different from installing any other program. Navidrome doesn’t scrape, index, or fetch music from anywhere; it only streams what’s already sitting in a folder. What matters is where those files came from: CDs and vinyl ripped personally, digital purchases, and royalty-free or Creative Commons tracks are all legal to store this way. This page has nothing to do with music without the rights to it.

How to install Navidrome with Docker

Prereq: Docker and Docker Compose need to already be installed. Our homelab setup guide for beginners covers picking hardware for a first Docker project.

  1. Create two folders: one for Navidrome’s database and cache, one holding the music.
  2. Save the docker-compose.yml below and edit the two volume paths to match.
  3. Run the compose file from that folder.
  4. Open the server’s IP address on port 4533 and create the first admin account.
services:
  navidrome:
    image: deluan/navidrome:latest
    container_name: navidrome
    user: 1000:1000
    ports:
      - "4533:4533"
    restart: unless-stopped
    volumes:
      - "/path/to/data:/data"
      - "/path/to/music:/music:ro"
docker compose up -d

That user directive should match the UID:GID that owns the music folder, which heads off permission errors on the first scan. Mounting /music read-only (:ro) isn’t required, but it’s sensible. The official image covers linux/amd64, arm/v6, arm/v7, and arm64, so a Raspberry Pi runs the same image as a full server, per Navidrome’s own Docker installation docs.

Tip: updating later is just docker compose pull, then docker compose up -d.

Warning: don’t forward port 4533 straight to the internet; reach it from outside the house through a mesh VPN or a reverse proxy with a real certificate instead.

Which mobile apps work with Navidrome?

Navidrome speaks OpenSubsonic, so it works with any of the roughly 80 third-party clients in its own app directory. On Android, Symfonium and Substreamer come up constantly, one paid and polished, the other free and open source. On iOS and macOS, Amperfy and Supersonic cover native and desktop use. Older clients like DSub still work fine too.

Navidrome vs Jellyfin, Plex, and Emby for music

Jellyfin, Plex, and Emby are general-purpose media servers: video comes first, music gets a section bolted on afterward. Navidrome only does music, and that focus shows up in scan speed and native support for a Subsonic client ecosystem general media servers don’t plug into. Running Navidrome next to Jellyfin or Plex for movies and TV isn’t a conflict; plenty of self-hosters run both.

Navidrome vs other self-hosted music servers

Airsonic-Advanced is the closest direct peer: same GPL-3.0 license family, same Subsonic API lineage. Its own README admits its tagged stable releases can be extremely outdated, and the most recent one is dated 2020, though snapshot builds keep coming, a big part of why many self-hosters ended up on Navidrome instead. Funkwhale takes a different approach: a federated platform built on ActivityPub, meant for sharing music across independently run “pods” rather than just streaming a private library, though it offers Subsonic access too.

NavidromeAirsonic-AdvancedFunkwhale
ModelSingle personal serverSingle personal serverFederated network of pods
APIOpenSubsonic (native)SubsonicSubsonic access, plus its own API
DevelopmentRegular releasesStable tag stale since 2020Active
  • Purpose-built for music, not a video server with music bolted on
  • Fast scans, even on libraries with hundreds of thousands of tracks
  • Works with dozens of existing Subsonic and OpenSubsonic apps
  • Light enough to run on a Raspberry Pi
  • No official mobile app; every client is third-party
  • Web UI covers music only, nothing for photos or video
  • Some polished third-party clients, like Symfonium, are paid
  • Smart playlists and a few newer features are still marked beta

FAQ

Is Navidrome free?

Yes, entirely. Open source under GPL-3.0, no premium tier, no feature gate. Some third-party client apps are paid, but the server itself costs nothing.

What port does Navidrome use by default?

Port 4533 handles both the web UI and the Subsonic API, set in the official docker-compose example and changeable through configuration options.

Is Navidrome legal to run?

Yes, open-source software like any other self-hosted program. What matters is what gets put on it, and this page assumes music that’s already owned.

What’s the difference between Navidrome and Jellyfin or Plex?

Mostly focus. Jellyfin and Plex are video-first media servers that also handle music; Navidrome is built around music exclusively, with faster scans and a wider ecosystem of Subsonic apps.

Which mobile apps work with Navidrome?

Any Subsonic or OpenSubsonic client works: Symfonium and Substreamer cover Android, Amperfy covers iOS and macOS, and Navidrome’s directory lists dozens more.

Can I install Navidrome without Docker?

Yes. Pre-built binaries are available for Windows, macOS, Linux, and FreeBSD, and it can be built from source. Docker just makes for a cleaner install that’s easier to update later.

The Jellyfin and Plex app pages cover installing a full media server that also handles music, and Emby rounds out the option if native Apple TV or PlayStation apps matter more. For audiobooks and podcasts specifically, Audiobookshelf covers that same personal-library approach with its own dedicated app. Our homelab setup guide for beginners covers the Docker basics all of these depend on.