Régulièrement, il m’arrive de tout changer, souvent de manière radicale. En ce début d’année 2026, pas d’exception, mon site est de nouveau refait !
Depuis plus de 5 ans, j’utilisais des serveurs en ligne (des machines virtuelles) auprès de différents hébergeurs européens (OVHcloud, Contabo, Hetzner), puis ai déployé une pile technique à base de Debian, portant le service docker pour y déployer des conteneurs. Les images étaient les suivantes : Traefik, Ghost, Umami, MySQL, PostgreSQL, Authelia, VictoriaMetrics, Grafana, entre autres.
Le début de la fin#
Le système tournait sans problème ni lenteur, j’étais satisfait du fonctionnement et de la pertinence des services mis en place.
Mais, il y a toujours un mais, en janvier 2026, un problème de mise à jour entre Ghost et la base de données a provoqué une cascade de soucis. En effet, ayant attendu trop longtemps pour mettre à jour l’outil Ghost, en plus de passer d’une version 6 (alpine) à 6-alpine, je me suis retrouvé bloqué devant le panneau d’authentification d’administrateur.
Plutôt que de chercher le problème, j’ai restauré l’image, restauré la base de données (erreur) et le site est revenu à peu près en ligne. Hélas, toujours bloqué pour m’authentifier. Par chance, j’avais un navigateur encore connecté au panneau d’administration : ni une ni deux, j’ai créé un export du contenu du site et l’ai stocké en lieu sûr.
L’évolution#
A vrai dire, le sujet est arrivé au bon moment. Entre les crises géo-politiques, l’augmentation du coût des ressources, les attaques… il est temps de passer à autre chose. Fini les serveurs en ligne (VPS), terminé l’utilisation de Ghost, allons sur quelque chose de simple.
Désormais, je pousse mon contenu dans un dépôt git, puis j’utilise le service Pages de Cloudflare pour y déployer de manière statique mon site.
La pile technique est devenue la suivante : hugo -> Cloudflare Pages. Difficile de faire plus léger.
Hugo face à Ghost#
Auparavant sur WordPress, la migration vers Ghost a été salvatrice. J’étais satisfait des version de Ghost 3, 4 et 5, mais la version 6 est, je trouve, partie vers un système trop lourd, perdant sa nature d’origine à savoir la simplicité. Ghost était réputé pour sa légèreté et son éditeur de texte très brute, mais ça c’était avant.
Devenu lourd, s’ouvrant à d’autres fonctions et services dont je ne voulais pas avoir, le moment est alors venu de changer. Depuis des années, je surveille les outils comme Grav , Astro et Jekyll .
Celui qui m’a le plus intéressé fut Astro. Toutefois, vu ce que je souhaite faire avec mon site, l’outil le plus à même de répondre au besoin est Hugo . Utilisé par les copains Une Tasse de Café et Zwindler (entre autres), il répond parfaitement à mes attentes.
Avantages et inconvénients :
- ✅ écriture en Markdown, partout, avec n’importe quel éditeur de texte
- ✅ déploiement automatique via des outils gratuits comme Cloudflare Pages ou GitHub/GitLab Pages
- ✅ pas de gestion de base de données
- ✅ mises à jour simplifiées, retour en arrière facile, légèreté
- ✅ coûts réduits ! Cloudflare Pages est gratuit, un dépôt git est gratuit (selon le prestataire), seul le nom de domaine doit être payé
- ⚠️ personnalisation plus dure (quand on veut vraiment tout faire soi-même)
- ⚠️ possibilités très larges, ça prend du temps de tout configurer
Finalement, le plus gros bémol que je citerai est l’absence d’une gestion d’une médiathèque. Tout comme Ghost, il n’y pas de système graphique pour ajouter, organiser, réutiliser les images d’un article à l’autre.
Les autres outils comme l’espace commentaires ou l’ajout de compléments (les extensions comme WordPress) ne sont pas gérées nativement. Qu’importe, selon le besoin, il est possible de les ajouter d’une manière ou d’une autre, moyennant quelques configurations.
Ma procédure de migration#
Il existe bien des outils et des procédures partout sur le web, en plus des outils d’IA qui vous seront d’une grande aide. J’ai utilisé une combinaison d’outils et de procédures pour migrer mon site de Ghost vers Hugo.
Voici les étapes que j’ai suivies :
- Exporter tout le contenu du site sous Ghost depuis l’interface d’administration de Ghost
- Éteindre Ghost, faire un
mysqldumpde la base de données utilisée par Ghost - Récupérer le dossier
/var/lib/ghost/contentcomportant toutes les images - Récupérer le fichier de configuration de Ghost dans
/var/lib/ghost/config.production.json - Créer un dépôt git qui contiendra les articles et les images
- Installer Hugo sur sa machine locale (via
brew install hugosur macOS, d’autres méthodes sont disponibles sur le site officiel ) - Créer un nouveau site Hugo avec la commande
hugo new site nom-du-sitedans le dossier du dépôt git - Organiser les images dans le dossier
static/ - Convertir les articles Ghost en Markdown (pour cette partie, j’ai utilisé Claude Code qui m’a alors généré un script Python)
- Configurer le fichier
hugo.yamlselon ses contraintes et besoins - Tester localement la construction du site et voir le résultat avec la commande
hugo server --environment development --cleanDestinationDir --disableKinds=RSS --watch --port 1313 - Si tout est bon, pousser le contenu du dépôt git sur GitLab ou tout autre forge logicielle locale ou en ligne
- Créer un compte sur Cloudflare
- Utiliser
npxpour créer un projet Cloudflare Pages (vianpx wrangler pages project create nom-projet-hugo) - Récupérer les variables d’environnement générées par Cloudflare pour les intégrer comme variable dans le dépôt git
- Configurer le déploiement automatique via GitLab CI/CD ou tout autre système d’intégration continue
- Tester un déploiement manuel pour vérifier que tout fonctionne
- Réitérer et valider la procédure de déploiement
J’en ferai un article dédié pour expliquer en détail la procédure. Le processus est relativement simple mais nécessite quelques étapes. En plus, il correspond à ma démarche de gestion de projet et de déploiement continu, en plus d’effectuer du as code.
Le résultat#
Passer de Ghost à Hugo a été rapide. Le plus lourd a été la remise en forme de plus de 250 documents. Ce que j’ai gagné :
- la performance : Le site se charge en moins d’une seconde contre 3-4 secondes avec Ghost
- le coût : 0€ par mois contre 15 € mensuels pour le VPS
- la sécurité : Plus de mises à jour de sécurité à gérer, plus de base de données
- la simplicité : Un simple
git pushpour mettre à jour le site
L’absence de médiathèque est un inconvénient, mais je préfère gérer les images manuellement pour avoir plus de contrôle. En plus, avec mon thème créé sur mesure, je peux intégrer des fonctionnalités personnalisées.
Au final, cette migration correspond parfaitement à ma philosophie actuelle : revenir à l’essentiel, privilégier la simplicité et la performance. Maintenant, au boulot !
