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.