Hugo, generador de websites estáticos

Como no podía ser de otra manera, inauguro esta web con un primer post que va dedicado a la tecnología que he usado para crear este sitio.

Hugo es un framework que permite crear websites a base de contenido estático (HTML, JavaScript, CSS, …), es decir, no se sustenta en el uso de servidores de aplicaciones o bases de datos. Lo contrario de lo que ocurre con los sistemas de gestión de contenidos o CMS habituales los cuales suelen estar basados en contenido dinámico: WordPress, Drupal, Joomla!, Dokuwiki, etc. Por suspuesto, esto, tiene sus ventajas e inconvenientes.

Ventajas:

  • Simplicidad: sólo se necesita un servidor web que sirva las páginas webs y el resto de contenido estático, no hay servidores de bases de datos ni de aplicaciones.
  • Ahorro económico: no se requiere un servidor muy potente ya que las peticiones que tiene que servir son más ligeras, no hay accesos a bases de datos ni procesamientos complejos en el lado del servidor.
  • Seguridad: como no se tiene que realizar procesamiento de los datos de entrada ni consultas a otros servicios en backend, la posibilidad de explotar alguna vulnerabilidad en el lado del servidor se reduce drásticamente.
  • Multiplataforma: es posible usar casi cualquier sistema operativo (Windows, GNU/Linux, macOS, FreeBSD, etc.) y arquitectura (x64, x86, ARM).
  • Multihosting: al estar basado en contenido estático, se puede usar cualquier hosting web o CDN (Amazon S3, GitHub Pages, Dropbox, Heroku, Google Cloud Storage, Amazon CloudFront, …).
  • Personalización: soporta el uso de themes o temas que permiten personalizar el aspecto del site de forma fácil manteniendo el contenido.

Inconvenientes:

  • Funcionalidad limitada: aunque con JS se puede implementar mucha funcionalidad en el lado del cliente, no es posible resolverlo todo. Hay cosas que sólo se pueden realizar en el lado del servidor: gestión de usuarios, comentarios, cestas de la compra, formularios de contacto, etc.
  • Gestión de contenidos simple: no está pensado para que haya varios autores ni permite una gestión de contenidos compleja.
  • Curva de aprendizaje: está basado en el lenguaje de marcado Markdown para la creación de contenido. No obstante, existen interfaces de usuarios (UI) que facilitan la creación de contenido en este lenguaje.

Conclusiones

Hugo es idóneo para crear páginas personales, blogs, portfolios y webs de documentación especialmente cuando sólo hay un autor pero no para sites más complejos. Hay mucha documentación en la web oficial incluyendo una guía para principiantes.

En mi caso, he optado por personalizar la apariencia de Hugo con el tema academic por su simplicidad y estilo minimalista. En el próximo post abordaré el alojamiento del website con Amazon S3 por su facilidad de uso y precio reducido.