Ir al contenido

Blog estático con Hugo y tema Blowfish en un servidor doméstico

Rogelio Guerra Riverón
Autor
Rogelio Guerra Riverón
Construyendo mi propia infraestructura web desde cero. Aquí documento cada paso: servidores, redes, contenedores y lo que vaya surgiendo.

Llevo un tiempo queriendo documentar mejor mis proyectos de infraestructura. Después de probar varias opciones, decidí montar un blog estático con Hugo. La combinación de Hugo + Blowfish resultó ser exactamente lo que necesitaba: rápido, limpio y fácil de mantener.

Por qué Hugo y Blowfish
#

Hugo es un generador de sitios estáticos escrito en Go. Es increíblemente rápido y no requiere base de datos ni dependencias complicadas. Blowfish es un tema moderno, minimalista y bien documentado. Ambos se llevan bien en un servidor doméstico con recursos limitados.

Instalación en el servidor
#

Lo primero fue instalar Hugo. En mi caso uso Debian en el servidor:

sudo apt-get update
sudo apt-get install hugo

Verificar la instalación:

hugo version

Crear el sitio
#

Inicialicé el proyecto en una carpeta dentro de /home:

hugo new site mi-blog
cd mi-blog

Agregar el tema Blowfish
#

Cloné el repositorio del tema en la carpeta de temas:

git clone https://github.com/nunocoracao/blowfish.git themes/blowfish

Luego actualicé el archivo de configuración 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 = 20

Crear contenido
#

Los artículos van en la carpeta content/posts/. Cada uno es un archivo Markdown:

hugo new posts/mi-primer-articulo.md

El archivo generado incluye frontmatter YAML listo para editar:

---
title: "Mi Primer Artículo"
date: 2026-04-28
draft: false
---

Contenido del artículo aquí...

Servidor local para pruebas
#

Antes de publicar, probé todo localmente:

hugo server -D

El sitio estará disponible en http://localhost:1313/. El parámetro -D incluye borradores.

Generar archivos estáticos
#

Una vez listo, generé los archivos HTML finales:

hugo

Esto crea la carpeta public/ con todo el contenido compilado.

Servir con Nginx
#

Copié los archivos generados a la carpeta de Nginx:

sudo cp -r public/* /var/www/mi-blog/

Configuré un bloque servidor en Nginx:

server {
    listen 80;
    server_name mi-dominio.local;
    
    root /var/www/mi-blog;
    index index.html;
    
    location / {
        try_files $uri $uri/ =404;
    }
}

Recargué Nginx:

sudo systemctl reload nginx

Automatizar las compilaciones
#

Para no compilar manualmente cada vez que escribo un artículo, creé un script simple:

#!/bin/bash
cd /home/usuario/mi-blog
hugo
sudo cp -r public/* /var/www/mi-blog/
echo "Blog actualizado"

Lo guardaré como actualizar-blog.sh y le daré permisos de ejecución:

chmod +x actualizar-blog.sh

Reflexión final
#

Después de una semana usando esta configuración, puedo decir que es sólida. Hugo compila todo en menos de un segundo, Blowfish se ve profesional sin necesidad de customización extrema, y el servidor doméstico maneja todo sin problemas.

Lo mejor: no hay base de datos que respaldar, no hay plugins que romperse, no hay actualizaciones de seguridad cada semana. Solo archivos estáticos servidos por Nginx. Exactamente lo que buscaba.