Casser, réparer, apprendre.

Ce site tourne sur un NUC Intel hébergé à la maison, derrière une connexion fibre standard. Il sert avant tout de terrain d’expérimentation pour tester des configurations serveur, des scripts d’automatisation, et des outils de sécurité open source.

Pas un site professionnel — un homelab : on casse des choses, on les répare, on apprend.

Migration en cours
Le site migre progressivement de Grav CMS vers Hugo. Les anciennes URLs sont préservées, mais le rendu visuel évolue. Si vous voyez un bug, signalez-le.

🛠️ Stack technique

Outil Rôle Lien
🔒 CrowdSec IDS/IPS communautaire collaboratif Dashboard
☁️ Cloudflare CDN · WAF · DNS · DDoS Dashboard
📊 BetterStack Monitoring · Alertes · Logs Status page
🌐 Hugo Générateur de site statique gohugo.io
🛡️ ModSecurity WAF local · OWASP CRS 4.x OWASP CRS
nginx Reverse proxy · TLS 1.3 nginx.org

🌟 À ne pas manquer

Trois articles qui résument l’esprit du homelab :

📚 La documentation complète est dans Documentation et les scripts d’automatisation dans Scripts.

🐛 Vous avez trouvé une faille ?

Si vous découvrez un bug, une mauvaise configuration ou une faille de sécurité sur ce serveur, merci de me le signaler. Ce homelab est public et j’apprends de mes erreurs.

📨 Signalement responsable : www.arleo.eu/security.txt

Toute contribution à l’amélioration de la sécurité est la bienvenue.

MCP Hugo Server passe public : npm et Claude Desktop

Ce blog est géré depuis plusieurs mois par mcp-hugo-server-go, un serveur MCP écrit en Go.

Il donne à Claude un accès direct et sécurisé au contenu Hugo de arleo.eu : création, édition, publication, gestion des taxonomies, images, et bien plus.

C’est le successeur du serveur FastAPI/Python à 6 outils documenté ici en mai.

Cet article explique pourquoi ce projet, initialement pensé pour un usage strictement personnel, est maintenant installable par n’importe qui gère un site Hugo.

Hugo SEO : noindex sur les taxonomies (correctif Bing)

Contexte

Bing Webmaster Tools remontait une recommandation “There are too many pages with insufficient content” (sévérité : modérée) — 15 pages en erreur, toutes du même type :

  • https://www.arleo.eu/en/tags/svg/
  • https://www.arleo.eu/en/tags/sonarr/
  • https://www.arleo.eu/en/categories/incidents/
  • etc.

Ces pages sont les taxonomies Hugo — les listes par tag et par catégorie. Elles ne contiennent pas d’article en elles-mêmes, juste une liste de liens. Pour Bing, c’est du thin content.

Même réflexe d’investigation que pour un précédent correctif SEO sur les 404 Googlebot et la normalisation du sitemap sur ce site : vérifier la search console d’abord, comprendre pourquoi Hugo génère les pages en cause, puis corriger au niveau du template plutôt que de patcher chaque URL à la main.

SEO Hugo : 404 Googlebot, aliases noindex et normalisation des sitemaps

Contexte

Google Search Console remontait quatre catégories de problèmes sur arleo.eu :

  • 404 Googlebot : /fr/tag/cloudflare, /en/tag/nginx, /fr/tag/javascript… URLs avec préfixe /fr/ ou singulier /tag/ jamais servi par nginx
  • 16 pages “Exclue par la balise noindex” : toutes des pages de redirection générées par aliases: dans le frontmatter Hugo
  • Balise robots : noodp hardcodée dans le thème LoveIt
  • Sitemap FR/EN : 104 vs 105 URLs — un tag doublon FR et deux tags manquants

Acte 1 : aliases Hugo → redirections nginx 301

Pourquoi Hugo génère des pages noindex

Hugo génère les entrées aliases: du frontmatter comme des fichiers HTML statiques :

Hugo : gel des diagrammes Mermaid en SVG statiques dark/light

Problème

Les diagrammes Mermaid sur arleo.eu rendaient côté client via cdn.jsdelivr.net. Trois conséquences concrètes :

  1. CSP contraintescript-src cdn.jsdelivr.net et worker-src cdn.jsdelivr.net obligatoires (Mermaid v11 utilise des Web Workers pour ses parsers).
  2. Flash de rendu — le diagramme apparaît après l’exécution JS, créant un décalage visible.
  3. Thème dark ignoré — Mermaid initialisait le SVG en mode clair même quand le thème du site était dark.

La solution : générer les SVG au build avec mmdc, en dehors de tout contexte navigateur.

CSP A+ sur Hugo + Cloudflare : de hash-based à origin allowlist, monitoring auto et durcissement

Contexte

arleo.eu tourne sur Hugo (VM KVM) → OpenResty (NUC) → Cloudflare (CDN/WAF). Objectif : score A+ sur Mozilla Observatory avec une CSP stricte qui résiste aux injections côté edge.

Le parcours a traversé trois stratégies en quelques semaines — nonces, hashes, puis origin allowlist — avant d’aboutir à une solution stable et automatisée.


Acte 1 : pourquoi hash-based a échoué

L’idée de départ semblait solide : Hugo Pipes externalise tout le JS avec SRI, on liste les hashes dans la CSP, résultat propre. En pratique, deux problèmes ont rendu l’approche impossible.