The project: manage a domain, a static blog, and the infrastructure between them — entirely with code, entirely for free. No credit card. Not “free tier with a card on file” — genuinely free.
I call it other-hosted: the opposite of self-hosted. Instead of running hardware or paying for VMs, everything runs on resources provided for free by other companies. The constraint makes the architecture interesting.
The stack
Domain — eu.org is a free subdomain registrar that has been running since 1996. You get a *.eu.org domain, no card required, renewed indefinitely as long as the DNS resolves. Mine is maftoul.eu.org.
DNS and email routing — Cloudflare’s free plan handles the DNS zone and a catch-all MX that forwards any *@maftoul.eu.org address to a real mailbox — no mail server to run, no SPF gymnastics.
Code and CI — GitHub for repositories, GitHub Actions for automation. Two repos: one for blog content, one for infrastructure. The GitHub Actions free tier covers both.
IaC — OpenTofu manages the Cloudflare zone, DNS records, Pages project, and GitHub repository configuration. OpenTofu is the open-source fork of Terraform, started after HashiCorp switched Terraform to the Business Source License in 2023 — a restrictive licence that prohibits competing with HashiCorp. OpenTofu is community-governed under the Linux Foundation.
State — Hashicorp Cloud Platform free tier stores the OpenTofu state remotely. The irony of using HCP to store state for an OpenTofu setup is not lost on me.
Blog — Astro with a custom theme built from scratch, deployed to Cloudflare Pages. The free plan includes unlimited deployments, custom domain, and HTTPS.
How it fits together
A push to main in the blog repo triggers a Cloudflare Pages build automatically via its GitHub source integration. The blog is live in under a minute.
Infrastructure changes go through a pull request workflow: opening a PR runs tofu plan and posts the diff as a comment; merging runs tofu apply. Cloudflare and GitHub are both managed as code — DNS records, page rules, repository settings, all of it.
Trade-offs
The obvious risk is dependency on third-party free tiers. Any of these services could change pricing or shut down. But the architecture is modular: replacing one piece doesn’t require rebuilding everything. The IaC layer means migrating to a different DNS provider or hosting platform is a plan/apply, not a manual afternoon.
Total monthly cost: $0.00.