Skip to content

Rebuilding jonathandobson.com

One VPS, one Cloudflare account, and a week's worth of decisions written down so you can do it in an afternoon. Everything here was built, broken and fixed for real.

A static-first Next.js 16 site

Two seasonal themes chosen per request, fully prerendered, with a contact form that emails you through Resend behind Cloudflare Turnstile.

A locked-down origin

Traefik with Let’s Encrypt certificates, reachable only from Cloudflare. SSH only through a Cloudflare Tunnel.

Your own Git forge

Gitea on PostgreSQL 18 with an Actions runner and a container registry.

Push to deploy

Push to main: tests, image, live in under four minutes — with automatic rollback if the new version isn’t healthy.

Each part builds on the last. If you are recreating the setup, follow it in order; if you are here for one problem, the lessons page is a list of every surprise, each linked to where it happened.