← Blog

Why I rebuilt my site as static files

I’ve spent a long time managing servers — Ubuntu and CentOS boxes, Apache configs, MySQL tuning, WHM panels full of client sites. So when it came time to rebuild my own site, my first instinct was the familiar one: spin up a droplet, install the stack, point a domain at it.

I didn’t. Here’s why.

The maintenance math

A personal site is the worst kind of server to own. It’s important enough that you’d be embarrassed if it went down, but not important enough that you’ll actually watch it. Six months pass, a PHP version goes EOL, a plugin gets a CVE, and you find out because someone emails you about the pharmacy spam on your homepage.

A static site has no runtime. There’s no PHP, no database, no admin login — nothing listening that can be exploited. The attack surface is the CDN, and that’s Cloudflare’s problem, not mine.

What I gave up

Honestly, less than I expected:

  • Comments. I didn’t have any worth keeping.
  • The admin UI. I write in Markdown now. This turns out to be faster.
  • Dynamic anything. Forms go to a third-party endpoint if I need them.

What I gained

git add content/blog/new-post.md
git commit -m "new post"
git push

That’s the whole deploy. Cloudflare picks up the push, runs the build, and the site is live in under a minute. No SSH, no rsync script, no wondering whether the file permissions are right this time.

The build output is plain HTML and CSS sitting on a CDN. It’ll still be serving in five years without me touching it, which is exactly what I want from a personal site.

The one real tradeoff

If you want to publish from your phone, static-plus-Git is genuinely worse. There are ways around it — a headless CMS in front, or a Git client on mobile — but they add back some of the moving parts you just removed. I write at a desk, so I took the simpler option.