Back in 2021, I built this blog using a custom Python script that generated static pages from a series of Markdown files. After running the script to generate the new public
folder (full of JS, CSS, images, and HTML pages) I would publish them to a Firebase hosted static site.
In the early part of 2025, I decided I wanted to have my news delivered to me rather than having to seek it out. After more than 20 years of knowing it existed, I turned to RSS feeds (and their newer cousin Atom feeds).
I installed a feed client (NetNewsWire) and started seeking out interesting blogs and feeds to subscribe to. An aside, but if anyone has feed recommendations, I would be happy to hear them.
This brings me to today. I have a blog, it works just fine, "good enough" right?
But I wanted feeds. And I didn't really feel like building it myself. The alternative is finding a third-party solution. And that brought me to Zola.
I don't remember where I first heard about it, but a Rust-based static site generator that supports template overriding, syntax highlighting, Markdown posts, and Atom feeds? What else could I need?
The conversion process was fairly straightforward as well. I set up a new GitHub private repo with an empty Zola project. I set up a Git submodule for the PaperMod theme and copied over their default content to help me get started. I do need to open a PR for a few additional tweaks to their README. I noticed that it doesn't work as expected from an empty project.
After you have the basics configured, it's easy to run locally using the zola serve
command. This creates the static pages on your local machine and starts a webserver at http://127.0.0.1:1111
. Since the build command will get run directly in production, I added the public
folder to my .gitignore
to keep it out of GitHub.
The next challenge was deployment. I decided to go with Cloudflare Pages this time around. My previous experience was with Firebase, but since Google Domains is now owned by Squarespace, I don't see any reason to stay under the Google umbrella. I do wonder if I'll miss the easy Google Analytics integration. It's nice to see traffic grow over time so you don't feel like you're sending content out into the ether.
I purchased a new domain through Cloudflare for $12.18 per year. Not too shabby. I have a few other domains, but it felt like time to start over. I set up Cloudflare pages and used their Zola build template to help get me started.
I did run into a couple issues:
- Zola was unavailable in Cloudflare's build version 2.
- Using build version 1 meant that the necessary version of glibc was unavailable. My workaround was to modify my build command to use
asdf
to install Zola before runningzola build
. This meant I was able to stick with build version 2.
# Zola build command configured in Cloudflare
asdf plugin add zola https://github.com/salasrod/asdf-zola &&
asdf install zola 0.20.0 &&
asdf global zola 0.20.0 &&
zola build
The last thing to do was link my domain to the Cloudflare pages through a custom domain. Since everything was already in Cloudflare, this was a fairly straightforward process.
I set up CNAME records to point brandonchupp.dev
to brandonchupp-dev.pages.dev
along with the www
version www.brandonchupp.dev
.
And that was it! I now have a (free, excluding the domain cost) blog pointing to a static site hosted on Cloudflare pages.
Now all that's left to do is write some content.
I also have a new Markdown composition setup. Maybe I'll write a future post about that.