There's one project I'd highly recomnend - take a look at MASH - Mother of All Self Hosting ansible playbook.
While I haven't used this one in particular, they have a separate playbook for hosting Matrix I'm using, and it has been the smoothest experience with selfhosting anything ever I had.
The playbook is super robust, I never had it fail without it being immediately clear why and how to fix it, including for example "you didn't update for a while, this cfg parameter changed/got renamed, do this to fix it."
In case of Matrix, it was literally just "change 4 config values in vars.cfg, and add your server ip to hosts inventory, and run " just setup-all"", and it worked.
The MASH one has a lot of services you might need, and from what I've seen the setup process of adding a new service is often just adding i.e "jellyfin-enable: true" to your cfg.