I’ve been wanting to document my infrastructure projects better for a while. After trying several options, I decided to set up a static blog with Hugo. The combination of Hugo + Blowfish turned out to be exactly what I needed: fast, clean, and easy to maintain.
Why Hugo and Blowfish#
Hugo is a static site generator written in Go. It’s incredibly fast and requires no database or complicated dependencies. Blowfish is a modern, minimalist theme that’s well documented. Both work great on a home server with limited resources.
Installation on the server#
The first step was installing Hugo. In my case I use Debian on the server:
sudo apt-get update
sudo apt-get install hugoVerify the installation:
hugo versionCreate the site#
I initialized the project in a folder within /home:
hugo new site mi-blog
cd mi-blogAdd the Blowfish theme#
I cloned the theme repository in the themes folder:
git clone https://github.com/nunocoracao/blowfish.git themes/blowfishThen I updated the configuration file hugo.toml:
baseURL = "https://mi-dominio.local/"
languageCode = "es"
title = "Servicios Rogeliowar"
theme = "blowfish"
[params]
description = "Documentación técnica de infraestructura y servidores"
author = "Rogelio"
[menu]
[[menu.main]]
name = "Posts"
pageRef = "/posts"
weight = 10
[[menu.main]]
name = "Sobre mí"
pageRef = "/about"
weight = 20Create content#
Articles go in the content/posts/ folder. Each one is a Markdown file:
hugo new posts/mi-primer-articulo.mdThe generated file includes YAML frontmatter ready to edit:
---
title: "Mi Primer Artículo"
date: 2026-04-28
draft: false
---
Contenido del artículo aquí...Local server for testing#
Before publishing, I tested everything locally:
hugo server -DThe site will be available at http://localhost:1313/. The -D parameter includes drafts.
Generate static files#
Once ready, I generated the final HTML files:
hugoThis creates the public/ folder with all compiled content.
Serve with Nginx#
I copied the generated files to the Nginx folder:
sudo cp -r public/* /var/www/mi-blog/I configured a server block in Nginx:
server {
listen 80;
server_name mi-dominio.local;
root /var/www/mi-blog;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}I reloaded Nginx:
sudo systemctl reload nginxAutomate builds#
To avoid manually compiling every time I write an article, I created a simple script:
#!/bin/bash
cd /home/usuario/mi-blog
hugo
sudo cp -r public/* /var/www/mi-blog/
echo "Blog actualizado"I’ll save it as actualizar-blog.sh and give it execute permissions:
chmod +x actualizar-blog.shFinal thoughts#
After a week using this setup, I can say it’s solid. Hugo compiles everything in less than a second, Blowfish looks professional without needing extreme customization, and the home server handles everything without issues.
The best part: there’s no database to back up, no plugins to break, no security updates every week. Just static files served by Nginx. Exactly what I was looking for.
---
## Recommended equipment
- **[Raspberry Pi 3 B+](https://amzn.to/4upmmwn)** — Lightweight low-power server to start your homelab
- **[Raspberry Pi 4 (4GB)](https://amzn.to/4utrPSX)** — The perfect foundation for homelab, Docker and monitoring
*Affiliate links. No extra cost to you.*