As for hosting your own apps I found Hetzner VPS or something similar to be very good. Just pack them up into a docker-compose with your CI/CR pushing an image into a repository and you can host a lot of low-medium traffic solutions on a single box with the cost being a fraction of "the Cloud" (especially PaaS). On the box there is a single Nginx acting as a reverse proxy to the exposed compose ports offloading SSL.
In such a solution you just need to ask yourself should Postgres, Grafana etc. be shared between the apps or put into each one of the compose configs as a service and handled separately. Both have their upsides and downsides.
Well it was mostly pieced together information - the one that I already had from experience and the rest pulled from the Internet.
But which parts do you mean exactly? How to setup nginx to act as a reverse proxy? Or putting together a docker-compose? I'm thinking of doing some kind of guide for this type of thing on my blog - basically from setting up a Hetzner VPS box to running a docker-compose'd app and exposing it on a HTTPS endpoint for your own domain (so setting up DNS probably also).
I have something similar, but with traefik instead of nginx. Traefik integrates very nicely with docker using labels, such that the labels configure e.g. domain, path, http-auth etc for the web service running in a container.
I also use CapRover. The initial setup was harder than I expected and there definitely is some learning curve and learning how to package your own apps or how to even make some of the pre-made apps to work (it doesn't really work out of the box). Once you get used to it though, it makes it really easy to add new applications and put them live. If I have an idea for a website, I can just click new WordPress instance, point the domain and done. If I want to also add a forum for that website, I just click new Disqus instance.
In such a solution you just need to ask yourself should Postgres, Grafana etc. be shared between the apps or put into each one of the compose configs as a service and handled separately. Both have their upsides and downsides.