By using upmpdcli + mpd you can turn for example a raspberry pi + hifiberry dac into an UPnP target to which you can then cast from Symfonium (or pretty much any other UPnP controller). And if you add snapcast to the mix, you can even achieve synchronous multi-room casting.
Since my family now has 7+ such pis in the house, I decided to semi-automate configuring and maintaining them, which led to me writing castpi2go.
Since the initial release I’ve added a bash script to make the setup even easier.
The really neat part of this setup is that none of the pis has to handle the music library which is why even a pi zero with 1 core can be used with a library of many TBs. Only the phone has to sync and handle the db. Getting a new pi fully configured can be done in <30min.