Installation d'un blog Hugo

Posted on 16 oct. 2025
tl;dr: petit manuel à destination du dev paresseux

Installation du blog

Installation de hugo

Sur une machine sous Linux (Debian):

sudo apt install hugo

Création du blog

Dans le dossier où on veut que le blog soit créé:

hugo new site dev-blog

Installation du thème

Se poser dans le dossier des thèmes et cloner le thème voulu:

cd dev-blog/themes
git clone https://github.com/athul/archie.git
echo 'theme="archie"' >> ../hugo.toml

Création d’un premier post

# on revient à la racine
cd ..
hugo new posts/installation-blog.md

Déploiement du blog

On génère le statique du blog…

hugo

… puis on vérifie qu’on a bien ce qu’on veut dans public.

On copie sur le serveur:

rsync -avz --progress public <user>@<ip_ou_name_server>:<path>

On modifie la config nginx:

server {                                                                                                                                                                                    
    listen 80;                                                                                                                                                                                
    listen [::]:80;                                                                                                                                                                           
    server_name <domain>;
                                                                                                                                                             
    # Prevent nginx HTTP Server Detection
    server_tokens off;                                                                                                                                                                                                                                                                                                                                                                
    # Enforce HTTPS                                                                                                                                                                           
    return 301 https://$server_name$request_uri;
}     

  server {
    listen 443 ssl;
    server_name <domain> www.<domain>;

    client_max_body_size 100m;

    ssl_certificate /etc/nginx/cert/fullchain.pem;
    ssl_certificate_key /etc/nginx/cert/privkey.pem;
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;

    root <path_to_public_files>;

    location / {
      try_files $uri $uri/ /index.html;
    }

   } 

On génère les certifs:

certbot certonly --nginx -d <domain> -d www.<domain> ...