Cloudflare Replaced Half My Infrastructure. I'm Still Not Paying Them.
How a Platform Engineer consolidated DNS, hosting, email, SSL, and deployments into one account — and why I keep finding new things it does for free.
Six months ago I had a pretty standard setup for someone running a few sites and services. Porkbun for domains. Vercel for my personal site. DigitalOcean for anything with a backend. A handful of DNS providers across different client accounts. Email forwarding through the registrar.
Today almost all of that runs through Cloudflare. I didn't plan it this way. I kept running into problems, and Cloudflare kept being the answer.
Here's what happened.
It started with a DNS migration that shouldn't have been hard
I was working on f1visa.net, an Astro site deployed to Cloudflare Workers with a D1 database. The site lived in one Cloudflare account, but the domain needed to move to another. A zone migration between two Cloudflare accounts — should be straightforward.
It wasn't. Registrar vs. zone moves are different operations. DNS records don't automatically follow. Email routing (DKIM, DMARC, SPF) breaks silently. SSL certificates need to re-provision. I ended up writing a full runbook for it because I never want to do that from memory again.
But here's the thing: once the zone was in Cloudflare, everything downstream just worked. DNS propagated fast. The SSL cert issued automatically. Email routing was one toggle. Workers deployed to the edge in under a minute. The whole stack — DNS, compute, database, email, TLS — was in one dashboard.
That was the moment I started paying attention.
Then I built my portfolio and replaced Vercel in an afternoon
When I built mwk.dev, I started on Vercel. It's what I knew. Deploy worked, site was live, done.
Then I thought: I already have Cloudflare managing DNS for this domain. Why am I routing traffic to Vercel, waiting for their SSL, configuring their DNS records in my Cloudflare zone, and debugging their edge cache — when Cloudflare Pages exists?
So I moved it. The migration took about 20 minutes:
wrangler pages deploy ./public --project-name=mwk-dev --branch=main
That was it. No build step. No framework config. Static HTML in a public/ folder, deployed to the edge. Custom domain attached instantly because the zone was already there. SSL issued in minutes. And then I connected my GitHub repo, and now every git push auto-deploys.
Before (3 services)
- Porkbun for domain
- Vercel for hosting
- Separate email forwarding
- Manual DNS record sync
- Debug Vercel ↔ CF edge cache
After (1 service)
- Cloudflare for everything
- DNS + hosting = same dashboard
- Email Routing built in
- SSL automatic
- Git push → live in seconds
Cost: $0/month. Cloudflare Pages free tier. Workers free tier. Email Routing free. DNS free. SSL free.
Then email forwarding — one more thing I didn't need a separate tool for
I needed hello@mwk.dev to land in my Gmail. With Porkbun I would have set up their email forwarding. With a custom domain on another provider, I'd be looking at ImprovMX or a paid plan somewhere.
In Cloudflare: Email Routing → Create rule → hello → forward to Gmail. Three clicks. It added the MX and SPF records automatically. Verified the destination. Done. Emails land in my inbox.
I genuinely did not know this feature existed until I needed it.
Then a client site — full app, zero server bill
I built volcarian.com — an 11-page agency site for an AI consultancy. The previous version was a React SPA on a VPS. The client was paying for a server to serve what was essentially static content with a contact form.
I rebuilt it in Astro, deployed to Cloudflare Workers with D1 for the database and KV for sessions. The client manages content through EmDash (a CMS that runs on the same Workers instance). The contact form submits to Formsubmit. Everything runs on Workers.
Monthly hosting cost: $0. The client's previous hosting was ~$20/month. It's been live for weeks with zero issues.
What's running on Cloudflare free tier right now
mwk.dev (portfolio) — Pages
f1visa.net (community site) — Workers + D1
volcarian.com (client site) — Workers + D1 + KV
Email routing for mwk.dev
DNS for all of the above
SSL for all of the above
Analytics (Web Analytics, also free)
What actually impressed me
It's not any single feature. It's that everything talks to everything else because it's all in the same account. When I add a Pages project and attach a custom domain, Cloudflare adds the DNS record for me. When I enable Email Routing, it adds the MX records. When I deploy a Worker, it's already behind the CDN and gets a free SSL cert.
Compare that to the typical stack where you're copying A records from one dashboard to another, waiting for DNS propagation, debugging why the SSL cert won't issue because of a stale CAA record, and checking three different billing pages.
A few specific things that caught me off guard:
- Pages auto-deploy from GitHub — connect the repo once, every push deploys. No GitHub Actions workflow needed. No build minutes to worry about.
- Workers + D1 + KV on the same platform — compute, SQL database, and key-value store, all in one deploy. No separate database hosting.
- Email Routing — I keep bringing this up because it's such a small feature that saves a real tool. Custom email addresses forwarding to Gmail, for free, with automatic DNS records.
- Wrangler CLI —
wrangler pages deploy ./publicand you're live. No 40-line CI config. No Docker build. Just files → edge. - .dev domains require HTTPS — Cloudflare handles this completely transparently. I never configured a certificate.
What's not perfect
I'm not going to pretend it's all sunshine. A few things I've hit:
- Zone migrations between accounts are painful. It works, but you're manually recreating DNS records, email rules, and page rules. There's no "transfer zone to another account" button that carries everything.
- Workers have cold starts. They're fast, but not instant. For a mostly-static site it's imperceptible. For an API-heavy app, you'll notice.
- D1 is still young. It's SQLite on the edge. It works great for content sites, but I wouldn't run a production SaaS database on it yet.
- The dashboard can be overwhelming. There are a lot of settings, and some are buried. I've lost time looking for options that turned out to be in a different section than I expected.
- Debugging Workers locally vs. on the edge is different.
wrangler devdoesn't always reproduce edge behavior perfectly.
Who this is for
If you're a developer or a platform engineer running a portfolio site, a few client sites, or side projects — and you're stitching together Vercel + Netlify + Porkbun + ImprovMX + whatever — take a look at what Cloudflare offers on the free tier. I'm not saying it replaces your production Kubernetes cluster. But for everything around it — the marketing sites, the docs sites, the personal projects, the DNS, the email — it's genuinely one account doing the work of five services.
I'm not affiliated with Cloudflare. I don't get anything for writing this. I'm just a Platform Engineer who is genuinely shocked at how much infrastructure I consolidated without spending a dollar.