Self hosting is the way to go if you need to keep monthly services spend as low as possible but you have extra time to spend, such as with a hobby project.
Whenever I’ve worked on real startup projects, self-hosting became a constant source of little tasks for the engineering team to mix into our weekly workload. There were always little tasks to upgrade this service, investigate why that one server was slow, or to migrate something to a bigger server because we were bottlenecked on some resource. Then we had to manage backups and do our recovery drills, along with changing the backup strategy every 6 months because someone had a better idea.
When we started to add up all of the time spent managing everything it starts to look like spending dollars (of engineer time) to save pennies on SaaS bills.
Probably not a popular thing to say on HN, but I now try to stay away from teams that go to extremes to self-host everything because I just want to get my work done, not also be constantly involved in running the underlying services. I do it for my own hobby projects at home but I don’t want to be doing it at work where we have money to spend to lighten the load. If the cost is the occasional migration to a different 3rd party service that’s not a big workload relative to everything involved in self-hosting.
- gitea
- woodpecker CI
- my own docker registry
- portainer running on my docker swarm
I then define the docker stack in the git repository, and CI builds the images and pushes to build the new image to the docker repository. The portainer API allows to deploy a stack, with the image tag as a parameter.Cost savings are insane and the speed of latest amd epycs are miles ahead of the default ci instances on github and other places.