My Typical Frontend Hosting Setup: Strato + Cloudflare + Pages
Every frontend project I ship — agentic-ai.weisser.dev, scrumbuddy.org, cv.weisser.dev and others — follows the same hosting pattern: domain registered at Strato, DNS managed by Cloudflare, site deployed via Cloudflare Pages. It’s free, automatic, and takes about 10 minutes to set up the first time.
The stack
- Strato — domain registrar. That’s all it does in this setup.
- Cloudflare — DNS, SSL, CDN, and the actual hosting via Cloudflare Pages.
- GitHub — source of truth. Every push triggers a build and deploy automatically.
- Vite (or any static site generator) — the build tool. Output goes to
dist/.
Step 1: Point your Strato domain to Cloudflare
Log in to Strato, go to your domain settings and change the nameservers to the two Cloudflare nameservers assigned to your account. They look like *.ns.cloudflare.com — you’ll find the exact values in your Cloudflare dashboard under DNS > Nameservers after adding the domain there.
In Cloudflare: Add a site → enter your domain → choose the free plan → Cloudflare scans your existing DNS records → you confirm and note down the two nameserver addresses → go back to Strato and enter them.
DNS propagation takes a few minutes to a few hours. Once it’s done, Cloudflare controls everything.
Step 2: Create a Cloudflare Pages project
Heads up: If you navigate to Workers & Pages in the Cloudflare dashboard and click Create, you’ll land on the Workers tab by default. Don’t start creating a Worker — look for the small link that says something like “Looking for Pages? Create a Pages project here” (or similar wording, Cloudflare changes this occasionally). Click that to get to the actual Pages setup. This trips up almost everyone the first time.
Go to pages.cloudflare.com → Create a project → Connect to Git → authorize Cloudflare to access your GitHub account → select the repository.
Configure the build settings:
| Setting | Value |
|---|---|
| Branch | main |
| Build command | npm run build |
| Build output directory | dist |
For plain HTML/CSS/JS with no build step, leave the build command empty and set the output directory to /.
Click Save and Deploy. Cloudflare clones the repo, runs the build, and publishes to a *.pages.dev URL in under a minute.
Step 3: Add your custom domain
In your Pages project, go to Custom domains → Set up a custom domain → enter your domain (e.g. agentic-ai.weisser.dev). Since your domain is already on Cloudflare, it creates the DNS record automatically and provisions SSL via Let’s Encrypt within minutes.
That’s it. The next git push to main will automatically trigger a new build and deploy. No CI pipeline to maintain, no server to manage, no bill at the end of the month.
Why this works well
The thing I like most about this setup is how little there is to think about once it’s running. Cloudflare handles SSL renewal, CDN caching, DDoS protection, and deployment all in one place. The free tier is genuinely generous for personal projects and small tools — unlimited bandwidth, 500 builds per month, custom domains included.
The only thing Strato does in this setup is hold the domain registration. If you’re registering a new domain, you could also register it directly in Cloudflare and skip the nameserver step entirely — but for domains you already have elsewhere, the nameserver delegation works just as well.
Why Cloudflare Pages over GitHub Pages
Both are free for static sites, but Cloudflare Pages has two advantages that matter in practice:
- Private repos work for free. GitHub Pages requires a public repository on the free plan — if you want to deploy from a private repo, you need GitHub Pro or a GitHub Team/Enterprise plan. Cloudflare Pages deploys from private repos at no cost.
- Every commit gets its own preview URL. Each push — not just to
main, but to any branch or pull request — gets a unique<commit-hash>.pages.devURL. This makes it trivial to review changes, share previews with others, or roll back to any previous deployment.
For public open-source sites where the source doesn’t need to be private, GitHub Pages works fine. For everything else — side projects, client work, internal tools — Cloudflare Pages is the better choice.
Reference
- dilatchi/cloudflare-static-site-demo — a clean tutorial repo that walks through the same steps with screenshots
- pages.cloudflare.com