Hey guys, so I have been searching for the different ways to self-host a music-server and don’t really know whats the best/most elegant way to go.
I know that there is navidrome and many also use jellyfin for it. Now I have a few questions:
- Are there any good apps for android for navidrome/jellyfin respectively?
- how easy can I add songs to them/do they pull metadata from somewhere (like jellyfin does for movies)
- how do they (or any other options) compare in terms of ease of setup/maintainability?
- do you have any overall recommendations?
Thanks a lot for any tips/recommendations and your help :D
For using navidrome on android I use the tempus client. Which is a fork of the now dead tempo client.
Music Assistant is an excellent Home Assistant addon. Works with all streaming platforms, internet radio, and local files. And easy to stream to multiple devices (either different streams or synced for multiple speaker setups). I mostly play Qobuz for lossless audio straight to my sound system by soldering an SPDIF optical audio connector to my Home Assistant Voice device. Streaming music to Android devices or any device with web interface works as well, and you can do this on the go if you’ve configured remote access to Home Assistant.
Tempus is phenomenal. I switched to navidrome on my server to use it. Chora is also good, and I use it on my TV (works well on any screen). If you don’t mind closed-source, Symphonum is excellent.
If you are using Jellyfin, it works well on PC, with Fintunes on mobile.
You can find a number of good apps for navidrome here. I quite like Strawberry, which is cross-platform. I use it locally for library management.
I connect everything with Tailscale, which is dead simple.
Thanks for the Chora recommendation, I recently pushed the Tempus apk to my tv as the dev has been working on better landscape screen support, but navigating it on tv still requires a mouse unfortunately.
I’ll definitely give Chora a try when I get home
Are you me? Cause I have exactly the same setup. Navidrome, tailscale, the whole thing. I also use strawberry. It’s OK but a bit basic. I recently tried Nocturne for desktop, looks promising, but still somewhat buggy.
Navidrome works best with a library that is already well-organized, but it can do some things in terms of library management, particularly with the use if plugins.
There are some good tools for organizing your library, such as beets, Picard, etc. I did not have good luck with beets because I find it a bit complex for a CLI tool, and a lot of my library is composed of singles and mixes. It seems to do better with whole albums. I use Strawberry player for local library management, which has tools like Picard built in, and also connects to lots of things like lastfm if you want. You can also add lyrics with a tool like lrcget.
If you have existing playlist files saved, Navidrome will automatically import them. It can also make new playlists, and there are plugins for smart playlists, etc. Once you set up Navadrome, you shouldn’t have to touch it very much because it will automatically monitor and update your library if you set it up correctly, which is not difficult at all. It’s a little bit more specialized and so has a little bit better setup for music than Jellyfin, in my opinion. And it has far more front-ends on various platforms. I do use Jellyfin for all of my TV and movies, though.
I really like jellyfin with finamp on android but I don’t have any really specific requirements. It just acts like an old media player and works really well
You should try the beta, if you haven’t yet!
Best stack I’ve seen so far is Yubal + Navidrome + Tempo. If you don’t mind paying for your client then Symfonium is hard to beat.
I personally use Navidrome to host the music, and there are multiple android clients; personally I use Symfonium, but there is also Tempus and Tempo.
Jellyfin can also do Music.
The Music I put on Navidrome already has correct metadata, so I haven’t worried about that aspect.
Its easy to maintain because I run it with docker.
Fyi, it’s best not to recommend Tempo these days as it’s no longer maintained. Tempus is the fork of Tempo that’s still receiving regular updates (at a really good pace!)
Imo the best app for Jellyfin i Finamp, make sure to use the beta release for the updated UI and general huge improvements. It’s been in the works for a while and works great as a daily driver.
Jellyfin can use a bunch of sources to get metadata for music, some by default others by installing a plugin, but it’s much more hit-and-miss than movies or series. That’s just due to how much more music there is and how relatively worse metadata for music generally is.
Personally, I add a few albums at a time and make sure the metadata is correct using kid3.Maintainability is probably similar between the two options. Jellyfin obviously can handle other media as well so if you need something to watch movies that would result in less maintenance needed overall.
I used to run Navidrome for a bit, but soon after the Finamp beta started so I didn’t feel the need to go with the broader app selection of Subsonic.
- Navidrome on the server
- Feishin around the house
- Substreamer on the mobile
I personally use Navidrome, so everything I suggest will be based around you using that as well, however Jellyfin is probably a good option too.
Navidrome has been incredibly simple, and there are numerous great options on android for player apps. Metadata can come with the music as you get it, or you can use tools like beets or musicbrainz Picard to tag them in bulk. Navidrome has been set-and-forget for me, as I’ve set the download folder for slskd (self hosted version of soulseek) to be the library folder for Navidrome.
For a navidrome Android client, I use Symfonium, but it’s a paid Play Store exclusive. If you want FOSS, I’ve tried Tempus and it seems fine, the only reason I don’t use it is because I already paid for Symfonium
I use slskd (docker container for soulseek) to download music and Lidarr to automatically move it to an organized folder structure. Lidarr doesn’t natively connect to slskd, so you have to use an extension (which I forget the name of atm) to get them to work together. No part of this assumes that music has any metadata or that you want it, but Lidarr can be setup to automatically retag imported downloads with metadata from musicbrainz. I don’t do this, I prefer manually retagging with Picard
I don’t know what your experience with self hosting is, but I will say that I don’t think setting up a navidrome server is any more difficult than setting up a jellyfin server for shows and movies. Maintainability is pretty easy, just make sure that everything is updated every once in a while and you should be fine
Are there any good apps for android for navidrome/jellyfin respectively?
Symfonium is paid but by far the best i tried. Will work with both via subsonic api.
how easy can I add songs to them/do they pull metadata from somewhere (like jellyfin does for movies)
I use navidrome and can’t speak to jellyfin. Navidrome is intentionally read-only for security reasons so you add music to where navidrome can see it and it’ll auto-scan them in. For metadata my recommendation is KDE picard. A lot of people recommend beets and it can be good but it’s a big learning curve. Kde picard has a nice gui and easier to get music matched for beginners.
how do they (or any other options) compare in terms of ease of setup/maintainability?
From what i see people use jellyfin because they don’t want “yet another container” and most people already have jellyfin for other media content. So that would be easiest route. Navidrome isn’t hard to set up though, and overall has a better feel for me.
do you have any overall recommendations?
Look into LRCGET to get the timesynced and/or plaintext lyrics of your songs. There’s also a navidrome plugin that will automatically fetch the lyrics when a song is played
Edit: for desktop id recommend feishin. It’ll work with both through subsonic api
As for me, I just use Syncthing between my devices so I have the same music files in my laptop and my phone. It works well as I don’t often change out the music I listen to, and plus it’s local files so no network required (good on an aeroplane, for example). I personally use an MPD client on my (Linux) laptop, while on Android I use Auxio (Lotus and Chocola are excellent too)
If that doesn’t work for you, there is Jellyfin as well: Finamp for specifically music playback, Findroid for general Jellyfin use. Am not hosting Jellyfin currently so I don’t have anything to add besides that, but do check out the docs if you need help setting up / maintaining it!
This is my approach too. I use Moode Audio on a Pi at home, linked to my mini server. Same server syncs (with Syncthing) all of my music to my phone’s SD card. I have Jellyfin on the server too and my music library is available there, but I just use that for video.
Music on my server via Soulseek downloads and shares. I share it via SMB share and Jellyfin with tailscale to all my devices.
People often recommend Navidrome but its lack of care for folders irks me.
I have a lot of music in folders, could you elaborate a bit on that? I’m kinda interested in doing something like this sometime instead of copying music all the time lol but if it ignores folders I’ll check another solution
Navidrome exposes the folder structure via the subsonic api, and any compatible app can then display folders if they want. Both symfonium (mobile) and feishin (desktop) have folder support.
I’ve tried using collections in Jellyfin to mimic my folders, but it’s not great. Collections are very slow when you get a lot of content in them, plus they only take albums, not songs. Took a weekend to script the stuff in using the API, but wasn’t worth it.
I’ll try navidrome soon.
I see, thank you, I’ve always just used my tree structure as my playlist, as I typically listen to whole albums at once, so I’ve used simple audio players like 1by1 on Windows or Deadbeef on Linux where I can just browse my file system and play music. It seems most things nowadays use playlists
same, tree structure is how I listen and find stuff, ever since my winamp days
Navidrome is one piece of a large ecosystem https://opensubsonic.netlify.app/docs/
The thing Navidrome does is that it includes almost everything in one convenient install.
Use any server backend you like (I use Gonic because it is extremely simple) and then connect to it using any client that supports subsonic or opensubsonic
I use jellyfin for my setup, mostly because I already use it for video.
It can fetch metadata from audioDB or musicbrainz.
I use the Finamp android app to play music and it works really well, even with Android Auto.
It has been fine for my usecase, so I haven’t looked into other solutions.









