Skip to content

Thoughts on servers and self-hosting

Published: at 18:45

I’ve tried a lot of solutions for hosting over the years, with varying levels of success. I’ve tried deploying stuff to VPS’s, my NAS, Raspberry Pis, old laptops & fly.io, just to name a few. On those, I’ve tried manually running things with docker compose, Nomad & dokku. I’ve tried different dashboard applications, and different deployment methodologies from doing it manually over SSH, running some questionable bash scripts over SSH and also using Ansible.

It turns out keeping things running is quite tricky. Each environment comes with its own challenges of course, but in general I’ve had difficulty making sure things stay running when complications happen (e.g. I need to install some updates and restart the server, or the network connectivity was lost and now the application can’t talk to its database). I won’t bore you with all the detail of my trial and error learning process (yet), but here are a few thoughts I’ve had based on my various attempts at getting something to work:

The solution I’ve currently settled on is coolify, running on an Orange Pi 5 sat next to my router. At the time of writing, coolify is currently in the beta phase of v4, which appears to be a complete rewrite. The product has some rough edges, and the documentation is somewhat lacking, but the developer is exceptionally responsive to bug reports, and since I got it configured correctly, it has been completely stable and the core hosting features have worked flawlessly. As suggested in the documentation, I’m using Cloudflare tunnels to attach domains, and this has also worked perfectly.

I really like that it has a dashboard that shows me all of my applications, and the fact I can deploy my own code from a GitHub repo with near-zero effort. It has a bunch of common applications ready for (near) one click deployment, such as Grocy, Wordpress & Gitea. It can also back databases up automatically to S3 compatible storage (I’m using Backblaze B2, because it’s cheap and doesn’t require me to create an AWS account).

Check back tomorrow for further thoughts.