Moving to Cloudflare (2025)

Posted on Wed 16 July 2025 in blog

Part of the "setup" series:

  1. Setting Up this Blog
  2. Moving to Cloudflare (2025)

Moving to Cloudflare

Any blog update is a simple push to GitHub now. Also, by handing over all the burden to Cloudflare resp. GitHub, maintainance of a local Node environment is no longer necessary.

Github

So far, there has been no remote repository and hosting is useful for this reason alone. A package.json has been added to allow the CF build process to set up necessary Node modules (katex, asciidoctor, etc.).

{
  "name": "depot-js-dependencies",
  "version": "1.0.0",
  "description": "Node.js tools, needed for blog creation",
  "dependencies": {
    "katex": "^0.16.21",
    "less": "^4.2.2",
    "less-plugin-clean-css": "^1.6.0",
    "asciidoctor": "^3.0.4",
    "asciidoctor-katex": "^0.4.1"
  }
}

Additionally, I learned a bit about GitHub Actions by setting up one that will maintain a requirements.txt file, utilized later from the CF build (only pip, no native uv support for the time being). With each push to GitHub, it will be recreated as necessary and the resulting repository state is pulled from CF Pages.

Cloudflare

The actual Pelican build starts here 1, leading to the website's final update. CF's GitHub integration had to be set up on both sides: GitHub must allow the Cloudflare App on the repository and the Pages project has to be connected to the GitHub repository during setup on CF.

In addition the blog's sub-domain was announced to CF and an additional apex domain CNAME record with the current provider was created.

Actualized Component List

Pelican
Flex Theme heavily modified by now locally maintained
pelican-katex KaTex support " (changed)
pelican-cite BibTeX-based citations "
pelican-toc article TOC's "
asciidoc_reader AsciiDoc support "
series Article series
pelican-more-categories Additional Pelican categories

Markdown extensions
Standard extensions: attr_list,footnotes
Third-party: mdx_include (Markdown includes)

For all other things see the first article in this series


  1. npm install && pip install -r requirements.txt && pelican content -s publishconf.py