I’ve spent a good deal of time these past few months exploring the world of self-hosted music servers and players. Why would I do this, when I have subscriptions to both Apple Music and Spotify? Good question! My answer may not be enough to get you diving into this complex world of software, but I will say it’s ended up bringing me a fair amount of pleasure.

I’ve been a paying Apple Music subscriber since its inception. Back in the day, I had a sizable collection of CDs that had accumulated over the years. As the iPhone took off, the idea of having my music at hand anywhere I went was exciting. And so, like many others, I ripped those CDs into MP3s and stored them in Apple Music (iTunes at the time). I eventually sold off my pesky physical CDs because who needs old media just laying about the house? I was a man of the future.

Spotify came in later as a gift from my brother. I jumped between both, using Spotify for its stronger electronic catalog, and Apple Music for the rest of my music listening. I was a happy man of the future. But then the cracks in this subscription-based lifestyle started appearing. Music I thought I owned started being replaced. Songs were now showing listed from weird compilation albums, or replaced outright with live versions or mixes. Songs, sometimes whole albums, would show up as unavailable. Apple and the music licensing twats were messing with my stuff.

In early 2024, I had begun self-hosting several software solutions to replace internet subscriptions I’d had. I was taking control back over a small portion of my daily needs, and enjoying the ownership. A few months ago I started looking into what it would take to jump from Apple Music, at least partially. It’s been a bit of a bumpy road, but I’ve finally gotten to a stable enough solution to write about this journey.

Apple Music acts as both a music catalog and a server that allows you to sync or stream music to your mobile devices. This is where I started my search, for a music server. And let me tell you, there is a thriving, if somewhat messy, world out there for music servers. I’m not going to try and write up something about all of them, that would be lunacy. What I wanted was something I could self-host on my Mac Mini, either as a native Mac application or via Docker. And being self-hosted, I did not want to pay for a new subscription, although I kept my thinking a bit open here. I’m all for paying for quality software. This narrowed down the options a bit. Here’s a rough list of music servers that I explored, in no particular order.

There are probably 5-10 others that I also looked at, but it started to become pretty clear that this music server space had some weirdness about it. Interfaces were all over the place, installation varied from simple app install to complex server configs, and many had awful notes about them across the web. The ones above that I spent the most time with are what I’ll outline.

Plex and Jellyfin

I already have both of these systems running on my Mac, so this was the easiest place to start. Both call themselves media servers, but they also both clearly view movies as their focus. Plex has a dedicated player app called Plexamp, and there are several iOS players that stream from Jellyfin. What I hated about both was the way they handle metadata, or tags. Plex basically disregards what your files have and uses their own data to display music info. It also didn’t stream very well over my Tailscale network. Jellyfin was just a mess with music in general so I ditched this pretty quickly.

Doppler and Swinsian

These were interesting because they’re both native Mac apps, clearly trying to win over people from the Apple Music app. Swinsian is purely desktop use, so that was tossed out pretty quickly. Doppler was actually pretty interesting. It’s a very slick desktop app that has an iOS companion app. Both apps were really easy to use, handled playing music well, and respected the music file tags nicely. Where Doppler got clunky was getting music over to iOS. You have several options to basically copy all your music files directly to the iOS app. There is no sync, so the two apps are basically independent of each other. I routinely ran into issues with duplicates and missing files. Both apps are pretty strong in what they do, the developer just needs to invest in a better sync between them both.

The weird ones

Vox lists itself as a superior music app, and I strongly disagree with that. The desktop app feels like a throwback to Winamp, so I didn’t even bother testing out any sort of mobile player or sync. Lightweight Music Server is just what it says on the tin. A bit too lightweight for my tastes. Roon looks impressive, but it’s a paid ecosystem, and an expensive one at that. Way too high of a bar for me to even begin seriously looking at. Koel looked pretty slick, but I couldn’t get the server to run. After a few days of rabbit hole digging, I gave up.

Where I landed

Navidrome is a fairly new entrant into the space around Airsonic, which has several spinoffs. The underlying APIs are used by several of the servers listed above. It’s easy to set up, and just works. I had zero issues adding my music, and the web player works fine as a desktop player for me when needed. It has a PWA that can be used as a player on your mobile, but this isn’t ideal. I have enough storage on my phone that I want to be able to store some, or all, my music if needed. Now that I had landed on a possible server, I needed an iOS app as player. And so I got out my machete and started hacking my way through that jungle.

Because Navidrome uses the Airsonic API base, which is also used by Ampache, Airsonic, Funkwhale and others, there are quite a few mobile apps out there to play off this API. Most of them are run by solo developers, and it shows in the various apps UI and UX. I landed on Amperfy for iOS, and so far have been quite pleased with it. It has a simple, but effective UI. It has a decent CarPlay implementation and allows me to store my music locally on my phone or stream from my server. I’ve chosen to store locally.

Words of warning

If the above hasn’t already tipped you off to the fact that the music server space is a bit like the wild west, wait until you have to start tagging any of the music you rip or download. I had no idea how complex music tagging could be, and I’m still figuring this out. I’ve run through several apps for this, including MusicBrainz Picard, Kid3, MP3Tag, AudioRanger, Meta (not the evil one), and a few others. I’ve stuck with Kid3 for now, although it’s still a pretty confusing experience. Thankfully I’m not adding a ton of new music often.

Yes, but why?

I am now truly a man of the future. Confused by complex software, annoyed by technology hiccups, and still paying subscriptions. Apple Music is there for my exploration of new music, and artists I just don’t feel I need to own. Honestly, I’d go broke if I tried to buy everything I listen to. For the artists I truly love, and find myself listening to again and again, I’ll buy a CD or a digital download where it’s DRM-free, and add it to Navidrome. I guess I have the best of both worlds here, but “best” seems a stretch at times.

Another reason for this deep dive into music has been to push myself to explore albums once again. Using the streaming services has formed a habit of only listening to singles. I missed the joy of hearing an album from start to finish. Hearing the music as the artists intended the music to be heard, and not just what the algorithm has selected for me. Your mileage may vary.