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
- Ir a https://github.com/gohugoio/hugo/releases
- Descargar hugo_extended_*.zip para Windows.
- Extraer y colocar hugo.exe en una ruta del PATH.
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/
(ramagh-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 directoriosrc/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í asrc/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.