I'm in the middle of writing up a novel about my music stack since I've just about gotten it exactly where I want it. There's no one-size-fits-all answer here and it's difficult to really replicate the behavior of major streaming services.
The short version of what I have set up:
-
Backend: Navidrome
-
Frontends: Feishin (both desktop and hosted) and Symfonium
-
Remote access: Pangolin (this does involve keeping a Navidrome rest endpoint totally exposed so Tailscale/Netbird/Wireguard are fine too, but I wanted to be sure my wife can access it from her work PC in the office)
-
Library and metadata management: Lidarr, beets, and metadata-remote. Lidarr does the bulk (one instance per user/library), beets handles manual imports, and MDRM is for fine-tuning and really obscure stuff
-
Searching/Downloading: Lidarr + Tubifarry + slskd. Also support smaller artists as much as possible, bandcamp purchases and merch and whatever go a long way.
-
Discovery: Explo
I'll have a full beginning to end writeup pretty soon hopefully. It's still not perfect, and juggling multiple users adds a huge layer of complexity, but I'm happy with where it's at.