-
The first piece of infrastructure we need is a private network. For this, I created the terraform-hcloud-network module.
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
-
For this, I created the terraform-hcloud-firewall module. It supports:
-
Before creating the server, we need an SSH key for authentication. I created the terraform-hcloud-ssh-key module for this purpose.
-
Finally, let's create the server itself using the terraform-hcloud-server module. Like the others, it's designed to be flexible and supports:
-
ansible-hugo-deploy
Ansible collection for automated Hugo static site deployment with custom Caddy web server, Cloudflare DNS integration, rate limiting, and automated SSL on Rocky Linux 10.
Now let's look at bootstrapping the actual website. For this, I'm using an Ansible collection that I also created and published publicly: ansible-hugo-deploy.
-
Since I'm using Cloudflare with proxy enabled, the standard Caddy build isn't enough for automatic certificate provisioning. I need the caddy-dns/cloudflare module to pass the DNS-01 ACME challenge for certificate verification.
-
Since I'm already building a custom Caddy binary, I decided to add another useful module — caddy-ratelimit for rate limiting protection against bots and scanners.