Self-hosted music with Navidrome
Posted on Aug. 31, 2023 by Ben Dickson.
In looking for some kind of self-hosted equivelant to Spotify, a few requirements are:
- Open source and actively developed.
- Supports offline caching/playback on a mobile device.
- Can be pointed at an existing folder of music and play from there
Navidrome seems promising for this. It is very-basically a web based music player, but it supports the Subsonic API so there are various clients (e.g mobile apps)
Mobile clients
In looking at the Android clients, with the open source ones first:
- Subtracks - no offline support in v1. A new v2 is being developed but not yet released
- Ultrasonic - works okay, design is a bit unpolished - for example when going offline, you have to navigate back to the server list and choose "Offline", instead of it transparently playing the available music. Several clicks just to play a song (clicking selects it, then context menu to play/star/download/etc)
- "DSub for Subsonic" hasn't been updated since 2020, but may be open source at https://github.com/daneren2005/Subsonic ? (edit: no longer on Play Store but some screenshots can be found on archive.org)
Closed-source options:
- Substreamer - design quite similar to Spotify, which isn't a bad thing. Offline support seemed quite smooth.
- Symfonium - seems good, the most polished of the options. Not huge fan of the default design, quite busy with lots of clicks just to get to a list of artists or songs - but has lots of options to switch off stuff like the top-of-list buttons and reduce the header image sizes which makes it a lot more compact. It also supports a lot of different streaming sources. It costs $7AUD (one-off), which is fair.
So Symfonium seems like the best option for now, but Subtracks seems like it may be worth revisiting in 6 months or so.
Navidrome itself
It was very simple to setup inside Docker, and quickly scanned around 4000 songs on an aging HP N40L server.
Its interface is okay - major annoyance is the lists only show at most 50 artists (or songs) at a time which is an odd limitation (there is an old PR for infinite scrolling).
However as my intention is mostly to use it via other clients, this isn't a problem. Generally it seems "perfectly fine".