It's quite unlikely that a self-hosted music streaming server could give you suggestions of music not in your library without an external service. But there might be some alternatives to Spotify that can address some of the economic injustices in music streaming, just like self-hosted and free/libre/open-source software can address some injustices that damage user privacy and data sovereignty in centralized services.
While not strictly about streaming, I find Bandcamp quite nice for discovering new music. As a bonus, bands receive much more money if you purchase their music than what they'd get when streamed on a service like Spotify. (Note that, in aggregate, a band may nevertheless earn more from mainstream platforms if they are streamed a lot but listeners aren't willing to purchase. Be sure to buy music that you like if you have the means to do so! Not only it helps bands to create more awesome music, you can also listen to downloaded digital files after the demise of centralized streaming platforms.)
Worryingly, Epic Games purchased Bandcamp last year. However, the fate of the platform looks at least somewhat safe, since its workers recently managed to unionize despite initial union-busting by corporate.
Another laternative would be Resonate, which is run as a co-op and has a novel approach to music purchases and paying bands. However, their collection can currently be a bit sparse, depending on which genres you're interested in.
I'm using Etebase as a self-hosted backend for this purpose. It is zero-knowledge, so not even your own server knows about your calerdar, to-do list, and contacts (but it does know when have you edited entries, I think).
There's an android app for synchronization, and on the desktop, you can run a daemon to expose a standard CalDAV/CardDAV interface for e.g., Thunderbird. The alternative is the Flutter-based client, either on the web or as a desktop app, I think, but I much rather prefer Thunderbird (I have other accounts from work to synchronize, too, and TB lets me look at them in one place).
I'm not sure about the Todoist integration, though. That sounds like it would compromise privacy.