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:
- I want to be able to poke around at stuff and understand it
- I want to be able to see what I’m running
- I want stuff to keep running without me touching it
- When stuff does go wrong, I want it to be easy to fix
- I don’t want any of the interactions to be very complicated as I’m probably not digging around in my server config very often
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.