Logo mDNS

Hugo es un generador de sitios estáticos escrito en Go. Permite construir sitios web rápidos, seguros y sin necesidad de servidores dinámicos. Está especialmente diseñado para desarrolladores, escritores técnicos y cualquier persona que prefiera escribir contenido en Markdown y publicarlo rápidamente con un diseño profesional. Perfecto para para mantener mis apuntes técnicos y documentación personal.

Es conocido por su velocidad de compilación y por no requerir dependencias externas como bases de datos o motores de plantillas complejos. Ideal para blogs, documentación, portafolios y sitios corporativos.


Coomo imaginaraás, hace poco migré este sitio a Hugo desde la version jekyll que hice hace tiempo.

Ventajas

  • 🔥 Compilación ultra-rápida (miles de páginas en segundos)
  • ✍️ Markdown + shortcodes para escribir contenido
  • 🎨 Temas personalizables y una gran comunidad de temas
  • 📦 Sitio estático sin dependencias: ideal para CDNs y GitHub Pages
  • 📂 Estructura clara basada en carpetas

Instalación genérica de Hugo

Antes de describir los pasos que di para migrar, veamos cómo se hace una instalación genérica de Hugo.

En Linux

# Descarga y descompresión manual
wget https://github.com/gohugoio/hugo/releases/download/v0.126.1/hugo_extended_0.126.1_Linux-64bit.tar.gz
tar -xvzf hugo_extended_0.126.1_Linux-64bit.tar.gz
sudo mv hugo /usr/local/bin/

En macOS

Opción 1: Homebrew

brew install hugo

Opción 2: Descarga directa

# Versión extended
curl -LO https://github.com/gohugoio/hugo/releases/download/v0.126.1/hugo_extended_0.126.1_macOS-universal.tar.gz
tar -xvzf hugo_extended_0.126.1_macOS-universal.tar.gz
sudo mv hugo /usr/local/bin/

En Windows

Opción Manual

Después te creas un sitio así de fácil

hugo new site mi-blog
cd mi-blog
git init
git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke themes/ananke
echo 'theme = "ananke"' >> config.toml
hugo new posts/mi-primer-post.md
hugo server -D

Abre tu navegador en http://localhost:1313

Migración desde Jekyll

Sin entrar en detalle, he listado los pasos que realicé.

El resultado final con todos los fuentes están aqui: rama gh-pages en LuisPalacios.github.io

  • Cloné mi repositorio, donde tenía el sitio generado con Jekyll bajo la carpeta docs/ (rama gh-pages).

  • Creé un nuevo sitio Hugo con hugo new site src (nueva carpeta), para mantener una estructura limpia separada del resto.

  • Elegí el tema PaperMod por su diseño limpio, soporte para dark/light mode, búsqueda integrada y buen soporte para taxonomías.

  • Copié el contenido del blog Jekyll (_posts/) al directorio src/content/posts/ de Hugo, y ajusté los front matter (title, date, categories, tags, cover, etc.) al formato TOML/YAML compatible con Hugo. Creé múltiples scripts en bash para hacerlo.

  • Convertí las páginas especiales (como about.md, contact.md, etc.) al nuevo formato y las moví a src/content/.

  • Personalicé la configuración en hugo.toml, definiendo taxonomías, menú, idioma, parámetros de PaperMod, etc.

  • Ajusté los assets estáticos como imágenes, favicons y SVGs dentro de src/static/.

  • Activé funcionalidades modernas como búsqueda con Fuse.js, soporte para SVGs en modo oscuro, y botones sociales.

  • Validé localmente el sitio con hugo server -D, y verifiqué funcionalidades, aspector, etc.

  • Comprobé accesibilidad, SEO básico y comportamiento responsive para asegurar que la migración mejoraba la UX y mantenía compatibilidad con el contenido antiguo.

  • Configuré GitHub pages en mi repositorio para que usase como fuente “GitHub Actions” y creé el workflow hugo.yaml Source

  • Eliminé el contenido Jekyll una vez que comprobé que funcionaba.

Resultado: un sitio mucho más rápido, moderno y sostenible, sin dependencias de Ruby o Bundler, y con un flujo de trabajo más cómodo. Es extremádamente rápido y puedo clonarlo y trabajar en cualquier sistema operativo en minutos. Conseguir lo mismo con Ruby (para Jekyll) era una pesadilla. Tienes todos los archivos de configuración y fuentes en el repositorio.