> Do you have a favorite software that you just love?

I'd say it's actually hard to decide.

Personally, I like being able to host my own source code and build software myself, for which the combo of Gitea + Drone CI + Sonatype Nexus worked out nicely for me: https://blog.kronis.dev/articles/goodbye-gitlab-hello-gitea-...

Apart from that, the combination of Portainer + Docker Swarm is a really nice and lightweight way to run containers, I'd say even a bit nicer than Hashicorp Nomad: https://www.portainer.io/ (though lightweight Kubernetes distros like K3s are okay for personal usage)

Also, NextCloud is really nice (for my needs), though some prefer Seafile to it: regardless of what you use, freeing yourself from a cloud storage subscription is nice, provided that you think of backups and such.

> I'm also curious how you decide to self host vs host on cloud. Is it purely for public facing vs private stuff or is it different?

For the most part, it's about the uptime.

I let my homelab servers sleep roughly when I do. They only draw 100 W from the wall due to 35 W TDP CPUs, but electricity bills are still a thing. Plus they do generate some noise, even with passive cooling for the CPUs.

But they're great as CI nodes or backup nodes as well, especially due to the fact that a 1 or 2 TB HDD is pretty cheap compared to most cloud offerings, even if you get multiple drives for backups and some spare ones.

Also, it's nice to host the public stuff in the cloud not just because of uptime concerns, but also because of a residential connection possibly being overwhelmed under load.

> Also, what are the majority of your costs? Do you have a few different VPSs or one big shared one?

I think either approach is valid.

Way back I had just 1-2 VPSes, at one point I had around 10 of them, then I gradually moved some of those into VMs in my homelab before consolidating them down further. Those VMs lead to a lot of unnecessary I/O due to multiple OS installs, as opposed to just containers running on the box instead.

As for how exactly I split things across nodes, I guess I look for vague categories like: this node will primarily host websites, this one will have most of the apps for writing code, this one will be a development node and will focus on CI, this one will mostly concern itself with backups.

Now the total amount of nodes that I have is under 10 and will probably probably remain that way. Thankfully, the cloud provider that I use does static (predictable) billing for a set amount of resources, so no AWS/GCP/Azure horror stories, as long as I only need VPSes instead of managed services.

Here's the one I use, Time4VPS: https://www.time4vps.com/?affid=5294 (affiliate link, you can remove affid if you prefer)

I've also used Hetzner for when I needed more powerful nodes for a shorter amount of time (they don't do up front monthly billing): https://www.hetzner.com/

As another affordable option, Contabo is also pretty okay: https://contabo.com/en/

There are also some better known options that were a bit more expensive when I last used them: DigitalOcean, Linode, Scaleway, Vultr and so on. I guess it's about finding a good fit of features vs pricing and other factors.