More and more people are turning to self hosting music as an alternative to streaming from Spotify. This is a great way to both support artists as well as reclaim some sovereignty over omnipresent rent-seekers.
The first question every intrepid hoster must ask themselves is of course: “Which server to choose”?
Do a little searching online and the established wisdom is pretty well defined: use something Subsonic compatible for music. This includes the likes of Navidrome, Gonic and LMS.
What I don’t see said very often is that Jellyfin, as well as being great for general media, is pretty good at music too.
I am a relative newcomer to this space. I only started self-hosting ~2 years ago and I started with video. Naturally that meant Jellyfin. Once I uploaded a couple of music albums though and realized it worked great, I became fully immersed: digging out old hard drives and ripping as many CDs as I could find. The immediate benefit was that I could do all this with a single server and set of clients. No need to run both Jellyfin and another music server if Jellyfin was working fine!
I even began working on my own music client: Gelly which started as a Jellyfin client but an OpenSubsonic backend was contributed quickly. This meant that I needed to try out some Subsonic servers!
I will admit that this entire time I’ve felt that by using Jellyfin for music, I was making a concession for the convenience of running a single server. Well, after testing out both Navidrome and Gonic to ensure Gelly was fully compatible with them, my mind has changed. I don’t think using Jellyfin is a concession at all.
Here are a few things I found that Jellyfin actually does better than any of the Subsonic servers I tried:
- Lyrics: Jellyfin comes with a plugin pre-installed. Simply enable it and it will run a periodic task to fetch missing lyrics. It just works, all my music has lyrics now. No need for a 3rd party program or plugin.
- Audio Normalization: Again, just works on Jellyfin. No plugin required, Jellyfin just calculates it. It’s still not clear to me how to get normalization/ReplayGain working on, for example, Navidrome. From what I can tell you need to run another program.
- Transcoding: Jellyfin supports advanced containers and HLS. The practical impact of this is you can still seek songs when streaming transcoded streams for Jellyfin. Seeking is not possible when transcoding, at least with Navidrome.
There is one place where Jellyfin is definitely inferior to the alternatives though: resource usage. Jellyfin is a hog. It’s a sprawling C# codebase nearing 30k commits. Currently on my home server it’s using almost 1GB of memory! Some would call it bloated. But if that bloat is providing things like Lyrics, ReplayGain, and transcoding, all of which should be top of mind of music enthusiasts, is it that bad? For me, the trade-off is worth it.
You should of course choose whichever server fits your needs best. They are trivial to test using podman/docker and a read-only mount of your music collection. The speed and efficiency of some of the Subsonic servers is impressive. However, don’t be too quick to pass on Jellyfin, especially if you also plan to self-host other media. There might not be as many clients yet, but they are improving. Check out Finamp for mobile and Jellyfin-Roku if you have one of those TVs. And of course the best client of them all: Gelly 😉 which will continue to support all the Subsonic servers.

Comments
Nothing yet. Say the first thing.
Sign in to join the conversation.