navidrome + jellyfin, local-first
Spotify raised prices again. So did Netflix. Disney+. Every platform that once felt like a reasonable deal has since recalibrated what "reasonable" means , upward, always upward. At some point the math stops working. Paying for access to things you don't own, on infrastructure you don't control, from companies whose decisions you can't influence.
That was already enough reason to reconsider. Then came the Spotify situation , credible reporting on their sponsorship of IDF-linked advertising. I'm not here to relitigate it. But it added weight to something I'd already written about: why digital media preservation matters. You can't preserve what you don't own. Streaming is renting, dressed up as access.
So I stopped renting.
Nothing exotic. A Samsung Chromebook 4 repurposed as a server , it sits quietly, draws very little power, and does exactly what I need. Three 1TB HDDs in RAID handle the movies and shows through Jellyfin. Music lives on my main PC, served by Navidrome.
Navidrome is a music server. Point it at a folder of audio files, it handles the rest , metadata, album art, streaming, subsonic API. That last part matters: the Subsonic API is well-supported, so any decent third-party client works with it. On Android I use Chora. Clean interface, local download support , which means my music travels with me even offline. No internet required once it's synced.
The library is just files. FLAC where I care about quality, MP3 where I don't. Tagged properly. That's it. No proprietary format, no lock-in. If Navidrome stopped existing tomorrow, the files still play.
Jellyfin is the open-source answer to Plex , without the account requirement, the telemetry, or the creeping paywalling of features. The Chromebook serves it. Three drives in RAID give me redundancy , losing one disk doesn't mean losing the library.
It scrapes metadata automatically: posters, descriptions, ratings, cast. Browsing it feels like a proper media library, not a file explorer. Streams fine over local network. With a bit of port forwarding, accessible anywhere.
This isn't about being cheap, though cost is real. It's about the shape of the relationship. When I stream from Spotify, I'm a subscriber , they can change terms, remove albums, geo-restrict content, raise prices, make political decisions I disagree with. I have no recourse. When I run Navidrome, I'm an operator. Different relationship entirely.
I wrote about this more abstractly in the preservation post , the idea that digital media is more fragile than it appears. A service shutting down is the same as a fire. The difference is you usually get no warning and no insurance payout. Local copies are the only real backup.
The Chromebook repurpose was also just satisfying on its own terms. A device that would otherwise be underused is now doing real work, constantly, quietly, costing almost nothing to run.
With Tailscale, a secure tunnel that connects all my devices. I can access my library anywhere, remotely. Again, no subscription needed. And how do I get all these medias from? It's a whole separate discussion I'd like to talk about in the future.
This isn't a tutorial , there are better resources for setup than anything I'd write here. More a record of why I did it and what the shape of it looks like. The stack is simple by design. Simple things keep running.