I host a large number of services I use myself, there are a few however just bring me no joy, or would be a considerable amount of hassle to host myself if it came to completely bootstrapping things. Notable things I don’t self-host:

  • Email - Fastmail - No issues with the company or the service so no plans to leave any time soon.
  • Passwords - Bitwarden - With the impending price rise, the constant UI changes that seem to make the product worse, and adding features I don’t want - I’m on the lookout to change this. Maybe I’ll move to Vaultwarden, maybe to another company, both 1Password and NordPass seem to be reasonable.

When it comes to the servers themselves, I follow the philosophy that servers are cattle not pets, I should be able to get start using a new server with little effort with there being no special snowflakes. Containers help with this, as does Tailscale.

Containers

I almost exclusively run anything on my servers using containers, even on my Pi at home, my servers are definitely cattle not pets. The isolation from the host and other apps is great, once you’ve built the container it just works until you make some changes. They’re easy to back up and restore, everything is defined. Add docker compose files on top of this to describe how each container interacts with other containers, and you have yourself a fully reproducible easy to manage set of infrastructure.

These days I almost exclusively use custom written containers too, a little overboard some might say. I did start with other people’s images, these all had different conventions, users, base images, some weren’t kept up to date, most run as root, etc. In the middle of all this annoying me, docker hub introduced their massive rate limiting and project restrictions. So I decided to move to my own registry and my own images. Keeping these up to date was a bit of a pain, but they were at least all small, rootless (unless required) and based on the same image.

I have tooling to make writing the containers easier and to keep them up to date and things (for the most part) just work. I’m still not fully happy with the setup and am always thinking of improvements, but until something else that gives these benefits comes along I can’t see it being a move away from containers.

Tailscale

Networking is something I just really don’t enjoy, it’s a necessity and when it doesn’t work it’s very annoying, but I just don’t find it interesting enough to want to put any effort into it. Tailscale has so far proved friction free and enabled some interesting use cases, their business philosophy also sits well with me, and the free tier shows this. Whilst I could probably self-host this with Ionscale or Headscale for the minute it’s easier to just leave the control plan with them.