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.
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.