I use navidrome[0], its a music streaming server you can selfhost and then use a player that supports the subsonic api for playback. I use the strawberry[1] music player on my desktop and substreamer[2] on android. Navidrome can also scrobble your music to last.fm if you tell it to. The actual music files are mounted with rclone and --vfs-cache-mode full to a directory.

[0] https://www.navidrome.org/

[1] https://github.com/strawberrymusicplayer/strawberry

[2] https://substreamerapp.com/

And if you don't want to scrobble to last.fm (or listenbrainz) you can self-host Maloja https://github.com/krateng/maloja