Featured image of post 0x00 - Déployer un site Hugo statique via Docker

0x00 - Déployer un site Hugo statique via Docker

Apprenez à déployer facilement votre site Hugo statique avec Docker, et configurez un reverse proxy Nginx Proxy Manager pour une mise en production sécurisée.

Introduction

Cet article a été rédigé pour répondre à un besoin que j’ai rencontré : il n’existait pas d’image Docker simple pour installer et gérer un site Hugo. J’ai donc décidé de créer ma propre solution depuis le début.

Mon objectif était de créer un conteneur Docker capable de déployer facilement un site Hugo, en respectant les critères suivants :

  • Lors de la première exécution, un nouveau site doit être créé s’il n’existe pas déjà.
  • Si un site portant le même nom est déjà présent, le service Hugo doit simplement se lancer.
  • Offrir aux utilisateurs un thème simple et clair (par exemple, Stack).
  • Proposer deux langues par défaut : l’anglais et le français, afin de simplifier la configuration.

Dans cet article, je présenterai deux méthodes d’installation : une version simple et une version utilisant Nginx Proxy Manager.

Création du fichier docker-compose.yaml

Commençons par la méthode simple. Pour cela, exécutez les commandes suivantes pour créer et éditer votre fichier docker-compose.yml.

1
touch docker-compose.yml

Éditez le fichier et copiez le contenu suivant :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
version: '3.5'
services:
  hugo_app:
    image: ghcr.io/thehackdes/docker-hugo:main
    container_name: hugo_app
    hostname: hugo_app
    restart: always
    ports:
      - 1313:1313
    volumes:
      - volume_hugo_app:/srv
    environment:
      WEBSITE: "thehackdes.com"
      OPTIONS: "--bind 0.0.0.0 --appendPort=false --baseURL=http://127.0.0.1:1313"

volumes:
  volume_hugo_app:
    name: volume_hugo_app
    external: false

Ensuite, lancez Docker Compose :

1
docker compose up -d

Si tout se passe bien, vous pourrez accéder à votre site à l’adresse suivante : http://127.0.0.1:1313.

Configuration avec Nginx Proxy Manager

Voici la configuration que j’ai mise en place sur mon serveur personnel avec Nginx Proxy Manager. Cette méthode diffère car elle crée deux réseaux : un pour Hugo et un pour le Proxy. Cela améliore la sécurité, car le réseau Hugo est uniquement dédié à la communication avec le réseau du Proxy.

Commencez par créer votre fichier docker-compose.yml :

1
touch docker-compose.yml

Éditez le fichier et copiez le contenu suivant :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
version: '3.5'
services:
  hugo_app:
    image: ghcr.io/thehackdes/docker-hugo:main
    container_name: hugo_app
    hostname: hugo_app
    restart: always
    ports:
      - 1313:1313
    volumes:
      - volume_hugo_app:/srv
    environment:
      WEBSITE: "thehackdes.com"
      OPTIONS: "--bind 0.0.0.0 --appendPort=false --baseURL=https://thehackdes.com"
    networks:
      network_nginx:
        ipv4_address: 10.0.20.29
        aliases:
          - hugo_app
      network_hugo:
        ipv4_address: 10.0.29.10
        aliases:
          - hugo_app

networks:
  network_hugo:
    name: network_hugo
    ipam:
      config:
        - subnet: 10.0.29.0/24
  network_nginx:
    external:
      name: network_nginx

volumes:
  volume_hugo_app:
    name: volume_hugo_app
    external: false

Enfin, lancez Docker Compose :

1
docker compose up -d

Il ne vous reste plus qu’à configurer votre proxy pour établir la redirection, et le tour est joué. Voici comment j’ai configuré la redirection de mon côté :

0x00_1 0x00_2
Image 1 Image 2
Généré avec Hugo
Thème Stack conçu par Jimmy