I typically run my projects on Render. Simple, no fuss, mostly works great. I needed to run ffmpeg for a project I was researching into. This le me down a rabbit hole of self-hosted servers and inevitably, to Hetzner and Kamal.
Or rather, Kamal 2. I heard the buzz recently and watched dhh’s video about Kamal 2. They explicitly had support for running multiple projects on a single server 1.
Now I used to manage my own servers, with Ansible and Capistrano. But that was many years ago. So I looked around to see what would be suitable now and save me time. After some digging, I found this repo by Dylan Castillo that uses Terraform to provision a Hetzner server. Great stuff, and exactly what I needed. I adapted it to match my needs and set up an existing project of mine to use Kamal for deployment to kick the tires.
Only one problem: I had 2 web servers — a frontend running Vue and a backend running Node.js/bun. The video (and Rails typically) only use 1 web server.