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.
Upstream project: Navidrome
#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
| Service | Role | Public |
|---|---|---|
| navidrome | music server + web player (:5000) | yes |
| music volume | your 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.
| Service | Plan | Monthly | What you get |
|---|---|---|---|
| Navidrome on Miget ★ | 2 GiB plan | $19 | this whole stack, flat - no usage meters, and room left for your own apps |
| Spotify | Premium | ~$13 | $12.99/mo - a perpetual rental |
| Apple Music | Individual | ~$11 | $10.99/mo |
| Plex Pass | Monthly | ~$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.
| Platform | Est. monthly | Notes |
|---|---|---|
| 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
- Create a Compose Stack in app.miget.com pointing at the templates repository
- Set the stack path to
navidrome -
Set the required variable:
(none), first account created in the web UI becomes admin
- 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.