1. Introduction

I have started a blog. It is a static site generated with Hugo and deployed with Cloudflare Workers. While I was at it, I also registered my own domain.

This post covers what got me to start a blog, why I chose to build it with Cloudflare and Hugo, what Hugo is in the first place, how the site is published, the custom domain, and some things to watch out for when setting it up.

The overall setup

Here are the technologies and the setup I used (as of September 30, 2026).

ItemDetails
Static site generatorHugo
ThemePaperMod
HostingCloudflare Workers
Build and deployWorkers Builds
Domainmofukuru.com (registered with Cloudflare Registrar)

Posts are written in Markdown and managed on GitHub, which is close to how GitHub integration works on Zenn, a Japanese platform for technical writing.

2. What got me to start a blog

What I have in mind as the reason for starting a blog is generative AI.

Over the past few years, generative AI has rapidly become widely known. It is advancing at a dizzying pace, and the capabilities of the latest models, such as Claude and ChatGPT, are striking.

At the same time, I have found myself having to think about how to make use of generative AI, which keeps getting updated day by day. In an age where we use generative AI, what abilities will people need, and which ones can they develop? How will the way people work and live change? I have been thinking about what matters when considering these questions.

In starting this blog, I want to focus on one of those things that matter: fundamentals. By fundamentals, I mean the literacy to pick out the information you actually need from the vast amount of information in the world, including the output of generative AI. I want to build these fundamentals steadily, and I want to feel that I have them. That is why I wanted a place to put my thoughts into writing.

I have tried blogging before for the same reason. I found that while I could write posts, keeping it up was hard. Now that generative AI has advanced, I think the bar for keeping a blog going has come down.

As I see it, writing a blog takes a topic, research to expand on it, a structure to organize it, and the ability to write. Being weak at any one of these lowers the motivation to keep going, but generative AI can make up for the parts you are not good at. I think a time like this is a good opportunity to start a blog.

3. Why Cloudflare and Hugo

When it comes to starting a blog, there are many services to choose from. In Japan, these include Zenn, Qiita, note, and Hatena Blog. With these services, you can start writing easily: register an account and write directly in the editor, or publish through GitHub. On top of that, they have many writers and readers, so even a newcomer has a good chance of being read.

Even so, I decided to start with Cloudflare and Hugo.

Part of this comes down to my personality: I felt hesitant about joining an existing service as a newcomer. If I start on my own, fewer people will see my posts, so I can write freely and at my own pace. In other words, I felt there would be less pressure and that it would be easy to get started.

I also suspect that I will feel like customizing things on a whim in the future, so I thought this setup, with its greater freedom, would feel less confining.

4. What is Hugo?

Hugo (opens in a new tab) is a tool that sells itself on speed, as its homepage states: “The world’s fastest framework for building websites.” Its official introduction also describes it as “a static site generator written in Go, optimized for speed” (About Hugo (opens in a new tab)). For actual speed measurements, please refer to other sites.

Hugo is what is called a static site generator. It takes posts written in Markdown and templates, and generates a full set of HTML, CSS, and JavaScript files from them.

WordPress is a well-known CMS, and with WordPress the server assembles the page on every request. Hugo, on the other hand, just places finished HTML on the server ahead of time, so pages are served quickly.

I learned about Hugo while brainstorming with Claude when starting this blog, and Claude also suggested Jekyll (opens in a new tab) as an option. GitHub Pages has built-in support for Jekyll (GitHub Docs (opens in a new tab)), which makes it a good fit if you publish on GitHub Pages. However, I am not using GitHub Pages this time, so that advantage does not apply. I therefore chose Hugo for its build speed.

5. Publishing on Cloudflare

The generated static files are served using static assets on Cloudflare Workers (opens in a new tab). Workers Builds (opens in a new tab) handles building and deploying. Once you connect a GitHub repository, every push triggers a build on Cloudflare’s side.

I compared Cloudflare with other services such as GitHub Pages, Vercel, and Netlify before choosing it. As the official documentation says, “Requests to static assets are free and unlimited.” (Billing and limitations (opens in a new tab)), so it looked like the least restrictive option for static hosting. That said, there is some chance I will move elsewhere in the future.

6. Getting a custom domain

I registered the domain mofukuru.com with Cloudflare Registrar (opens in a new tab).

Cloudflare Registrar sells domains at cost, without adding any markup. If you are using Cloudflare’s services, it also makes management easier.

Note, however, that domains registered with Cloudflare Registrar can only use Cloudflare’s nameservers (Registrar FAQ (opens in a new tab)). If you want to use another DNS service, you need to transfer the domain to a different registrar.

I went back and forth on whether to get a custom domain, but in the end I did. My reasons were:

  1. I wanted to make a fresh start with something new, so I took the plunge
  2. Seeing that I had actually bought it would put me in a position where I have to follow through
  3. I thought it could benefit me (for my future career, or simply because I like tinkering, so it might be easier to keep improving things)

7. Things to watch out for

These days, even when you do not understand something, you can work through the setup with help from generative AI, so I rarely got badly stuck. Still, here are some things worth watching out for.

Match the Hugo version

The Hugo version needs to be the same in your local environment and in Cloudflare’s build environment. If the Hugo in the build environment is too old, it does not meet PaperMod’s requirements and the build fails with the following error.

hugo v0.146.0 or greater is required

In my case, I matched the versions by setting the HUGO_VERSION environment variable to my local version under the Worker’s Settings → Build → Variables and secrets.

Match the Worker name

When deploying, the name in the wrangler.jsonc configuration file must match the Worker name on the Cloudflare dashboard. If they do not match, the deploy fails.

Changes may not show up when editing on WSL

While running hugo server on WSL, there were times when editing and saving a file did not update the page in the browser.

In that case, add the option that checks for file changes at a fixed interval.

hugo server -D --poll 700ms

8. How it turned out

  • Time spent: about 3 hours
  • Cost: about $10 (the domain registration fee)

Having actually built it, I think the greater freedom to customize comes with greater difficulty. Even so, the joy of seeing my own site go live was something special. I am now determined to keep writing so that this blog does not fizzle out.

References