Streaming My Own Music – Navidrome, Docker and Taking Back Control

This post is a technical follow‑up to my previous reflection about music ownership.

3 min read
Streaming My Own Music – Navidrome, Docker and Taking Back Control

Once I made the decision to stop renting most of my music, the next logical question was simple:

How do I keep the convenience of streaming, without giving up ownership?

The answer turned out to be surprisingly straightforward.

Why Navidrome

I wanted something that was:

  • Self‑hosted
  • Lightweight
  • Actively maintained
  • Compatible with many clients (mobile, desktop, web)
  • Focused on my files, not a proprietary ecosystem

Navidrome checked all those boxes.

It’s a Subsonic‑compatible music server that indexes your own library and lets you stream it anywhere just like a commercial service, except you own everything.

Architecture Overview

My setup is deliberately simple and boring which is exactly what you want for something as personal as a music library.

  • Docker (running in a Swarm cluster)
  • One Navidrome service
  • Music stored on shared storage (NFS)
  • Metadata and database persisted outside the container

No cloud dependency. No vendor lock‑in.

Docker Compose

Below is my Navidrome Docker Compose file. Hostnames, IPs, paths and identifiers have been generalized, but the structure is identical.

services:
  navidrome:
    image: deluan/navidrome:latest
    user: 1000:1000   # must match volume ownership
    ports:
      - "4533:4533"
    restart: unless-stopped
    volumes:
      - navidrome-data:/data
      - music-library:/music:ro
    deploy:
      placement:
        constraints:
          - node.role == worker

volumes:
  navidrome-data:
    driver: local
    driver_opts:
      type: nfs
      device: :/path/to/navidrome/data
      o: addr=NAS_IP,nolock,soft,rw,nfsvers=4

  music-library:
    driver: local
    driver_opts:
      type: nfs
      device: :/path/to/music/library
      o: addr=NAS_IP,nolock,soft,rw,nfsvers=4

A Few Important Notes

  • Read‑only music volume: the /music mount is read‑only. Navidrome never modifies audio files.
  • Persistent data: /data contains the database, cache, playlists and artwork.
  • User mapping: the container runs as a non‑root user matching the NFS permissions.
  • Swarm constraint: pinned to worker nodes for predictable storage access.

This setup has been rock‑solid.

Getting My Music Back from Apple

An important step in this transition was dealing with my past Apple Music / iTunes Match subscription.

Over the years, a lot of my music ended up living inside Apple’s ecosystem.

So I did the following:

  • Exported my matched and uploaded tracks
  • Retrieved the actual audio files (not just DRM‑bound placeholders)
  • Normalized metadata where needed
  • Integrated everything back into my local library

This step matters.

A streaming service may show you your music but that doesn’t mean you really have it.

Ripping CDs Again (Yes, Really)

I had to find my old USB CD/DVD drive.

And honestly? That felt good.

Ripping CDs again is slow.
Manual.
Almost meditative.

But the result is clean, lossless files that:

  • Exist independently of any platform
  • Can be backed up properly
  • Will still be playable in 20 years

FLAC in. Tags cleaned. Covers embedded.

Done once. Owned forever.

Clients and Daily Usage

Once Navidrome is running, the ecosystem opens up:

  • Web UI (any browser)
  • Mobile apps (Subsonic compatible)
  • Desktop players
  • Even smart audio devices

From a user perspective, it feels exactly like a commercial streaming service except there’s no algorithm pushing anything.

You decide what exists in your library.

Backups Are Now My Responsibility

Ownership comes with responsibility.

So I make sure:

  • The music library is backed up
  • The Navidrome data directory is included in backups
  • Restores are tested

This is the price of freedom.
And it’s worth paying.

In the End

This setup didn’t make me anti‑streaming.

It made me intentional.

Discovery can live in the cloud.
What I love lives at home.

Navidrome didn’t just give me a server.
It gave me my music back.