gonic as the streaming server, Lidarr for library management and some of the downloads, Sonixd/Tempo as desktop/mobile clients.
Works alright for albums (downloads are a pain), probably won't really work in your case though.
Everything is running on a single-node k8s cluster (because infrastructure-as-code is awesome), but it's probably overkill for most people. https://github.com/sibwaf/Infrastructure for reference if you're interested (/selfhosted/charts - lidarr, gonic)
Shameless self-plug: I'm working on a Subsonic-compatible server which wraps yt-dlp (i.e. allows downloading from YouTube/Bandcamp and then streams it). Seems like it should work for your case of handling single tracks. It's still very much in progress (very-very slow progress) and really isn't ready for use, but if anyone is interested in following the project: https://github.com/sibwaf/Tapesonic
Oh, a shameless self-plug opportunity. TLDR: I'm making a Subsonic server trying to replicate a somewhat passable self-hosted Spotify/... experience.
My current setup is a Subsonic stack: gonic as a server, Lidarr as a library organizer/downloader (it works natively with Prowlarr BTW) and Sonixd/Tempo as desktop/mobile clients. Frankly, it sucks - no discovery and almost nothing gets auto-downloaded. Even ignoring the crucial discovery part, I got tired of manually downloading albums from Bandcamp - manually tagging, manually feeding files into Lidarr, manually adding metadata to MusicBrainz so Lidarr actually works, ...
So, I've been working on a Subsonic-compatible server for quite a while. The basic idea is:
Well then, what can Tapesonic already do?
What's broken/not implemented yet?
No user documentation, half-broken, breaking changes one after another, slow progress - but hey, it doesn't mess with your existing library and already made my life quite easier with Bandcamp albums. A docker image is available - so give it a spin if you want to ~~and then ragequit because it sucks~~