Media 1 service 512 MiB RAM 52 GB disk

Navidrome

Your own Subsonic music streaming server - one container, your library, no monthly rental.

One-click deploy, from $19/mo on a Miget plan.

Navidrome turns a folder of music into a streaming service that is entirely yours: a fast, modern web player plus full Subsonic and OpenSubsonic compatibility, so any of the dozens of Subsonic apps (Symfonium, play:Sub, DSub, Feishin, Amperfy) stream straight from your instance.

It is a single Go container with an embedded SQLite database - it idles in about 130 MB and scans your library on a schedule, reading ID3/FLAC tags, cover art, and ReplayGain. No external database, no queue, nothing else to run.

Because it reads real audio files and their tags, the library lives on a filesystem volume rather than object storage - point Navidrome at the volume, upload your collection, and resize it to fit.

#what you get

  • Subsonic / OpenSubsonic API - works with every major client
  • Fast modern web player with transcoding and playlists
  • Embedded SQLite - no external database to manage
  • Multi-user, smart playlists, scrobbling to Last.fm / ListenBrainz
  • Scheduled library scans (tags, art, ReplayGain)
  • GPLv3, ~130 MB idle, single container

#topology

ServiceRolePublic
navidromemusic server + web player (:5000)yes
music volumeyour library (filesystem, single-writer)no

#miget sizing

// this stack needs

512 MiB RAM · 52 GB disk · 1 service

CPU only matters during transcoding; 512 MiB is comfortable. The 50 GB music volume is the variable - resize it to your collection. Keep replicas at 1 (single-writer library).

Hobby - recommended fit

$19/mo

2 vCPU · 2 GiB · 60 GiB disk

Headroom for your own apps: 4 GiB at $25/mo

Professional - production

$169/mo

8 vCPU · 16 GiB · 100 GiB disk

Dedicated resources, production SLOs - plan details

One Miget plan is a fixed pool of compute - the whole stack (managed databases included) deploys inside it, and anything left over runs your other apps. No per-service or per-seat math.

#vs. the managed service

What the hosted equivalents charge, against the flat Miget plan this stack fits on. Prices as of June 2026, sources linked.

ServicePlanMonthlyWhat you get
Navidrome on Miget 2 GiB plan$19this whole stack, flat - no usage meters, and room left for your own apps
SpotifyPremium~$13$12.99/mo - a perpetual rental
Apple MusicIndividual~$11$10.99/mo
Plex PassMonthly~$7$6.99/mo; lifetime rises to $749.99 on Jul 1 2026

Streaming rentals never stop billing; Navidrome streams a library you own outright.

#vs. other PaaS

Estimated monthly cost of running this exact stack (512 MiB RAM, 52 GB disk, 1 container) elsewhere, from published June 2026 rates.

PlatformEst. monthlyNotes
Miget $19 flat compose stacks first-class: one deploy, dedicated vCPU, managed Postgres/Valkey, volumes and TLS all included in the plan
Heroku ~$25 no volumes; nothing between 1 GB ($50) and 2.5 GB ($250) dynos - 2 GB containers cost far more than shown
Render ~$20 per-service instances (0.5 GB $7, 2 GB $25) - every container is its own paid service
Railway ~$13 usage-based ($10/GB RAM-mo); vCPU billed separately at $20/vCPU-mo on top
Fly.io ~$11 cheapest sticker price - but burstable shared CPUs (1/16 core; dedicated vCPUs cost ~2-3×), no compose deploys (one app per container, manual wiring), managed DBs billed extra
DO App Platform ~$11 no persistent volumes - stateful containers need managed DBs/Spaces (base $5 Spaces included here)

Estimates assume RAM fully allocated at published on-demand rates - and sticker price isn't the whole comparison: the cheaper rows buy burstable shared CPUs, per-service wiring instead of a compose deploy, and managed databases billed separately. Heroku and DO App Platform have no persistent volumes at all - stateful stacks like this one need workarounds there.

#deploy it

On Miget

  1. Create a Compose Stack in app.miget.com pointing at the templates repository
  2. Set the stack path to navidrome
  3. Set the required variable:
    • (none), first account created in the web UI becomes admin
  4. Deploy. Miget layers compose.miget.yaml (RAM, privacy, volumes, managed services) automatically

Locally first?

Every template is portable, vanilla Docker Compose - the Miget overrides are ignored locally:

git clone https://github.com/deployable-sh/stacks
cd miget-compose-templates/navidrome
docker compose up -d

Same files, same behavior. The template README covers connection strings and scaling notes.

#faq

How does this compare to Spotify or Apple Music?

Spotify is $12.99/month and Apple Music $10.99 - perpetual rentals where the catalogue (and your access) can change underneath you. Navidrome is a $13/month plan streaming a library you own outright, with no ads and no algorithm.

What about Plex Pass?

Plex Pass is $6.99/month, and its lifetime option jumps to $749.99 on July 1, 2026. Navidrome is a focused music server with open Subsonic clients and no upsell - you keep the files and the player.

Why does my music need a volume instead of a Bucket?

Navidrome reads audio tags and art directly off the filesystem to build its index, so the library lives on an RWO volume. Only the SQLite database and cache need to persist beyond that, and they ride a small second volume.

Ship Navidrome today

One compose stack, 512 MiB of RAM, from $19/month flat, and it runs on your laptop with the same files.