Let’s be honest: the modern web has become a bloated, over-engineered mess.
I haven’t run a personal blog in over a decade. Back then, we were all wrestling with LAMP stacks and praying our plugins didn’t open a trapdoor for every script-kiddy on the internet. When I decided to finally resurrect my online presence, I looked at the current landscape of “easy” hosting solutions and saw a lot of expensive Rube Goldberg machines.
I didn’t want a dynamic server eating up resources and demanding constant security patches just to serve text and images. That’s like renting a semi-truck to carry a single envelope.
So, I went back to basics—with a twist. I wanted the “castle and moat” security of a static site, but I didn’t want to hand-code HTML like a caveman. I wanted the WordPress editor, but without the WordPress headache.
Here is the reality: You can have your cake and eat it too. I’m running WordPress locally (where nobody can hack it), flattening it into static files (which load faster than a hiccup), and hosting it on Cloudflare pages for free.
Here is exactly how I built the plumbing, step-by-step.
The Blueprint
Think of this setup like a ghost writer.
- The Writer’s Room (Local): You write your content in a safe, offline environment.
- The Printing Press (Simply Static): We freeze that dynamic content into a snapshot—pure HTML and CSS.
- The Courier (GitHub): We ship those pages to a secure vault.
- The Billboard (Cloudflare Pages): The world sees the snapshot, not the machinery behind it.
The Gear List
- Local (App): To run WP on your laptop.
- Simply Static (Plugin): To turn dynamic PHP into static HTML.
- GitHub: To store your code.
- Cloudflare: To show it to the world.
Step 1: Building the Bunker
First, we need a WordPress instance. But we aren’t putting this on a public server where it’s a sitting duck. We’re keeping it on your machine.
- Get the Tool: Download and install Local. It’s the easiest way to spin up a WP site without messing with MAMP or Docker configs.
- Spin it Up: Click the big + button.
- Give it a name.
- Use the “Preferred” settings.
- Create your admin login.
- Go Dark: Open the admin dashboard. This is your sandbox. You can break things here, and nobody sees it.
Step 2: The Translation Layer
WordPress speaks PHP; browsers speak HTML. We need a translator.
- Install the Plugin: In your WP Admin, search for Simply Static and install/activate it.
- Configure the wiring: Go to Simply Static > Settings.
- Destination URLs: Choose “Use absolute URLs”.
- Scheme:
https:// - Host: Put your future domain here (e.g.,
mystaticsite.pages.dev). If you don’t know it yet, use a placeholder—you can fix this plumbing later. - Delivery Method: Local Directory.
- Path: Create a folder on your computer (e.g.,
C:\Websites\Output) and paste that path here. This is where the plugin will dump the “finished product.”
Step 3: Version Control
Now we need to get these files into a Git repository. If you aren’t using Git, you’re driving without a seatbelt.
- The Repository: Log into GitHub and create a new empty repo.
- The Initialization: Open your terminal (or Git Bash) and navigate to that output folder you created in Step 2. Run these commands to get the train moving (Github also gives you a copy/paste you can use for your specific scenario).
git init git remote add origin https://github.com/YOUR_USERNAME/YOUR_REPO_NAME.git
Step 4: The Snapshot
Back in your Local WordPress site:
- Go to Simply Static > Generate.
- Hit the big purple button.
- Watch the logs. It’s crawling your site, finding every link and image, and saving a static copy to your folder.
When it’s done, you’ll have a folder full of HTML. No database connections. No PHP processing. Just raw files.
Step 5: Shipping It
Now we push the content to GitHub. This is our “Save Game” state.
Bash:
git add .
git commit -m "Resurrecting the blog"
git push -u origin master
Step 6: The Global CDN
This is the magic. Cloudflare Pages will watch your GitHub repo. The second you push a change, it grabs the new files and distributes them to servers all over the world.
- Log into Cloudflare and go to Compute & AI -> Workers & Pages.
- Create Application > Pages > Connect to Git. (Look for a link to “looking to deploy pages?” and click that to get to the right place).
- Select the repo we just made.
- The Settings:
- Project Name: This makes your URL.
- Framework Preset: None. We aren’t using React or Vue; we are giving it raw HTML.
- Build Output Directory: Leave it empty (or
/if forced). The root of your repo is the site.
- Deploy.
- Click on “Add custom domain” if you want to use your own url.
Within about 30 seconds, Cloudflare will give you a live URL.
The “Day Two” Workflow
So, you want to write a new post? Here is the routine:
- Open Local on your laptop.
- Write your post. Draft, edit, tweak.
- Hit Generate in Simply Static.
- Commit and Push to GitHub.
git add .
git commit -m "Blog post update"
git push -u origin master
Cloudflare sees the update and refreshes the live site instantly.
It’s not instant gratification, but it’s secure, it’s cheap (free), and it’s rock solid. And frankly, after ten years of silence, I’d rather have a site that works than one that needs constant babysitting.