TL;DR
My self-hosted music system (100% FOSS) setup allows listening of my local music collection on (almost) any device for me and my family members own AND IT’S NOT CLUMSY. It consists of:
Yunohost system1 + Navidrome server + Feishin Linux app + Chora Android TV app + Substreamer Android app.
Like Spotify, but ‘mine’.
How it started
I was storing my music collection to my NAS since 2000. Sometimes I accessed it via Samba or NFS, but it was clumsy and I didn’t enjoy it. I tried out Spotify briefly, but then dropped it.
Starting point: I already had my Yuno server running as my Proxmox virtual server, reverse proxy, fixed IP, my domain, certificates and all these shenanigans in place. That was (is) the hardest part to set up (for me).
Then I found out about Navidrome server which can stream music to plenty of different clients. The installation was pretty straightforward (just ‘install’ on Yunohost).
The only thing I had to tinekr with was to point it to my music collection on my NAS (old Synology with spinning disks). So I fired up CLI @ yuno, created a NFS network mount from my Yuno to my NAS.
Sorry, I forgot the mounting command, that's my biggest problem with command line. I find pieces of Linux commands around the internet, try them out until it works, then I forget everything.Setup
The music (mp3 / flac) flows like this:
NAS — sends music to –> #Navidrome server2 –streams to–> #Feishin3 (Linux desktop) / #Chora4 (Android TV) / #Substreamer5 (Android on mobile) — streams via bluetooth –> Car / BT headphones
Navidrome also has a buit-in web player, which is not bad at all:
Navidrome server’s web UI allows adding users (for example, family members), managing libraries of music, tracking which client is currently connected etc. Navidrome also tracks listening statistics per user, it transcodes it (from example flac–>mp3 or to a different bitrate) and scrobbles (sends listening stats to last.fm, didn’t try this yet). Overall and after a half year of usage, I didn’t have any issues with it.
Feishin is Linux desktop application that connects to a Navidrome server (above). What I like about it is auto-DJ-jing. Often I just click on a artist and then it just plays similar music.
I use Substreamer on my mobile phone and it also connects to my Navidrome server. A nice thing is that when I listen something on my Linux desktop, the status (recently listened) also transfers to other apps and I can continue listening same band from other device.
2 features I especially like about Substreamer: auto-DJ-ing, buffering (e. g. 5 songs for areas without mobile signal) and setting the length of auto-DJ queue.
What I miss is Android Auto functionality. But it is not a big deal, I can connect it via BT to my car anyways and Android Auto frequently crashes on my phone.
For the Chora app I don’t have a screenshot, because it runs on my NVIDIA Shield / TV. It’s also a nice player. What I miss about it is an accessible playlist (when it auto generates a playlist).
Not directly related to players, I also use MusicBrainz Picard6 Linux app for editing metadata of my music collection (artists, titles, albums). It connects to online MusicBrainz database7 and tries to match music metadata or sound fingerprint. It took me about a week (of my work) to fix my music collection metadata.
What’s next?
I already have a #HomeAssistant (HA) up and running for several years. Now I can finally use #MusicAssistant (HA addon) to bring the music to HA and distribute it to other media players in house. As I read, it supports Subsonic API (Navidrome can talk to it).
A question
So, what is your music stack?