Despliegue de una página web estática con Hugo en Debian 12

hugo

¿Que es hugo?

Hugo es un generador de sitios web estáticos de código abierto escrito en Go que facilita la creación de sitios web.

Requisitos

  • Sistema Debian 12 actualizado.
  • Privilegios de root o sudo.
  • Acceso a internet.

Instalación de Hugo

Para instalar hugo en Debian 12 solo necesitamos ejecutar el siguiente comando:

root@hugo:~# apt install hugo -y

Creación de un sitio web con Hugo

Para crear un sitio web con hugo solo necesitamos ejecutar el siguiente comando:

root@hugo:~# hugo new site blog

Instalación de un tema

Nota: Tanto la intalación como configuración de la plantilla puede variar dependiendo de la plantilla que hayamos elegido en este caso usaremos la plantilla Gists.

Para instalar la plantilla Gists solo tenemos que ejecutar los siguientes comandos:

root@hugo:~/blog# git init
root@hugo:~/blog# git submodule add https://github.com/dmachard/hugo-theme-gists.git themes/gists
root@hugo:~/blog# cat themes/gists/config.template.toml > config.toml

Configuración de la plantilla

Para configurar la plantilla tenemos que editar el archivo de configuración de hugo, para ello ejecutamos el siguiente comando:

root@hugo:~/blog# nano config.toml

El archivo puede variar dependiendo de la plantilla que hayamos instalado, configurenlo a su gusto y necesidades.

Creación de un post

Antes de crear el post vamos a comprobar que la plantilla funciona correctamente utilizando el servidor de prueba de hugo, para ello ejecutamos el siguiente comando:

root@hugo:~/blog# hugo server -D --bind='0.0.0.0'

–bind=‘0.0.0.0’: para que la página de prueba sea accesible desde cualquier dispositivo de la red.

hugo-prueba1

Para crear un post solo tenemos que ejecutar el siguiente comando:

root@hugo:~/blog# hugo new posts/mi-primer-post.md

Configuración del post

Para configurar el post tenemos que editar el archivo que acabamos de crear, para ello ejecutamos el siguiente comando:

root@hugo:~/blog# nano content/posts/mi-primer-post.md
---
title: "Mi Primer Post"
date: 2023-09-19T11:11:19Z
draft: true
---

Configuramos el post a nuestro gusto y agregramos el contenido que queramos.

---
author: "user"
title: "Mi Primer Post"
image: "hugo.png"
date: 2023-09-19
description: "Este es mi primer post"
draft: false
tags: [
    "prueba",
    "hugo"
]
archives: ["2023/09"]
---

## Post de prueba

![hugo](../mi-primer-post/hugo.png)

Cuando terminemos de configurar el post solo tenemos que guardar los cambios y salir del editor de texto.

Si hemos detenido el servidor de prueba de hugo tenemos que volver a iniciarlo para ver los cambios que hemos realizado, para ello ejecutamos el siguiente comando:

root@hugo:~/blog# hugo server -D --bind='0.0.0.0'

Como podemos ver en la imagen de abajo el post que acabamos de crear se ha añadido correctamente.

hugo-prueba2

Si pulsamos sobre el post podemos ver el contenido que hemos añadido.

hugo-prueba3

Generación de la página web

Para generar la página web solo tenemos que ejecutar el siguiente comando:

root@hugo:~/blog# hugo

Despliegue de la página web

Nota: Antes de desplegar la página web tenemos que configurar adecuadamente la lina baseURL del archivo de configuración de hugo. En mi caso la url será “http://192.168.50.33” que es la ip de mi servidor web.

Una vez configurada la url solo tenemos que guardar los cambios, salir del editor de texto y generar la página web con el siguiente comando:

root@hugo:~/blog# hugo

Para desplegar la página web solo tenemos que copiar el contenido de la carpeta public a nuestro servidor web, en este caso usaremos apache2.

En mi caso el servidor web esta en otra máquina virtual (he eliminado el fichero index.html que viene por defecto en apache2 para que no haya problemas al acceder a la página web.), para copiar el contenido de la carpeta public a mi servidor web he utilizado el siguiente comando:

root@hugo:~/blog# scp -r public/* root@ip-servidor-web:/var/www/html/

Acceso a la página web

Para acceder a la página web solo tenemos que abrir un navegador web y escribir la url que hemos configurado en el archivo de configuración de hugo.

Como podemos ver en la imagen de abajo la página web se ha desplegado correctamente.

hugo-web

Si pulsamos sobre el post podemos ver el contenido que hemos añadido.

hugo-web2