Skip to content
Building This Blog: Hugo + Forgejo CI + GitHub Pages

Building This Blog: Hugo + Forgejo CI + GitHub Pages

2 min read

When I decided to document my homelab adventures, my first instinct was Kubernetes—because of course it was. I have a tendency to overengineer things. But this time I brainstormed with Claude Code and found a simpler solution. Something low-maintenance: built on my infrastructure, hosted elsewhere. Just write markdown and publish.

    graph LR
    A[Forgejo Repo] -->|push to main| B[Forgejo CI]
    B -->|hugo build| C[gh-pages branch]
    C -->|mirror sync| D[GitHub]
    D -->|GitHub Pages| E[hai.wxs.ro]
  

Homelab Adventures Blog

Source stays private in Forgejo. Public site lives on GitHub Pages with free SSL.

Why Not Self-Host?

My homelab runs 90+ Flux-managed applications across a 3-node Proxmox cluster. Adding another service means more maintenance, more updates, more things that can break at 2 AM.

For a simple blog? Overkill.

The Stack

ComponentChoiceWhy
Static generatorHugoFast builds, Go templating
ThemeHextraModern Tailwind-based, dark mode, search, diagrams
Source hostingForgejoSelf-hosted, private
CI/CDForgejo ActionsGitHub Actions compatible
Public hostingGitHub PagesFree, CDN-backed, zero maintenance
CommentsGiscusGitHub Discussions-based, no separate account needed

How It Works

  1. Push markdown to main branch in Forgejo
  2. Forgejo CI builds the site with Hugo
  3. Built files pushed to gh-pages branch
  4. Forgejo mirror syncs to GitHub automatically
  5. GitHub Pages serves the content

The entire pipeline runs in under a minute.

Key Decisions

Why not Cloudflare Pages? GitHub Pages is simpler for this use case - just push to a branch.

Why Forgejo mirror? I already use Forgejo mirrors for backup. The gh-pages branch syncs automatically alongside the main branch.

Why Hextra? Modern Tailwind-based theme with FlexSearch, Mermaid diagrams, and dark mode out of the box.

What’s Next

This blog will document the homelab journey - infrastructure patterns, automation workflows, and lessons learned from running self-hosted services at home.

Last updated on