Hetzner
Run the full Grovs stack on a Hetzner Cloud server, installed by cloud-init on first boot.
When to use
You want one Hetzner Cloud server running the whole stack.
Prerequisites
The shared VM prerequisites: fresh Ubuntu 24.04 x86_64, 4 vCPU, 8 GB RAM, 80 GB SSD, public IPv4, SSH key, domain. Hetzner bills you for the server, storage and traffic.
1. Prepare DNS and firewall
Create a Hetzner Firewall that allows inbound TCP 80/443 from the internet and TCP 22 only from your public IP. Allow outbound traffic. Plan the DNS records; you point them at the server's IPv4 once it exists.
2. Create the server
- Generate the cloud-init file on your workstation.
- In your Hetzner project, create a server with an x86 server type, the plain Ubuntu 24.04 image and enough disk space.
- Enable public IPv4, add your SSH public key, and paste the generated file into the Cloud config field.
- Attach the firewall and create the server.
Choose the plain Ubuntu image: the startup script installs the Docker packages it needs. See Hetzner's cloud-config guide.
3. Install Grovs
Cloud-init installs Docker and the stack on first boot. Connect as root to the server's public IPv4 and point the DNS records at it.
4. Deploy and verify
Follow the shared verify steps.
Upgrades
See the shared VM upgrade notes.
Gotchas
If startup fails, read /var/log/cloud-init-output.log, fix the error, then run sudo bash /root/grovs-bootstrap.sh again. More in the shared gotchas.