/images/avatar.png

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.

🌟 À 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.

🛠️ Stack technique

OutilRôle
OpenRestyReverse proxy · nginx + LuaJIT · TLS 1.3
🔒 CrowdSecIDS/IPS communautaire collaboratif
🧱 CrowdSec AppSecWAF inline · OWASP CRS 4.x
☁️ CloudflareCDN · WAF · DNS · DDoS
🌐 HugoGénérateur de site statique
🤖 MCP Hugo ServerServeur MCP pour piloter ce site depuis une IA
📊 BetterStackMonitoring · Alertes · Logs

🐛 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

Les signalements sont remerciés publiquement dans le Hall of Fame, ou restent anonymes sur demande.

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

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.

Postmortem CrowdSec : faux positif sur Sonarr/Radarr

Ce qui s'est passé
  • Date : 25 mai 2026
  • Sévérité : P3
  • Statut : Résolu
  • Impact : Sonarr et Radarr inaccessibles (403) pendant ~15-20 minutes — faux positif heuristique CrowdSec AppSec, aucune perte de données

En bref

Le 25 mai 2026 vers 22h02 (heure locale), Sonarr et Radarr sont devenus totalement inaccessibles depuis l’IP maison (82.XX.XX.XX), retournant 403 sur toutes les URLs y compris /login. Le service était pourtant opérationnel. Le diagnostic initial suspectait les récents déploiements du refactor crowdsec-cf-sync — la cause réelle est un faux positif heuristique CrowdSec AppSec.

CrowdSec AppSec + OpenResty : WAF moderne sans ModSecurity

En bref

Après des années avec ModSecurity + OWASP CRS sur nginx, j’ai migré arleo.eu vers une stack plus moderne : CrowdSec AppSec sur OpenResty. Le résultat est une architecture WAF inline mieux intégrée, plus facile à maintenir, et plus cohérente avec le reste de la stack de sécurité.

Pourquoi abandonner ModSecurity ?

ModSecurity v2 est en fin de vie active. Le maintien des règles OWASP CRS sur nginx classique génère de la friction : faux positifs fréquents, logs difficiles à corréler avec CrowdSec, et une configuration dispersée entre plusieurs outils sans vision unifiée.

SRI Hugo : hashes automatiques et monitoring CDN

En bref

Quand votre site charge des ressources depuis un CDN tiers — FontAwesome, Mermaid, Animate.css — vous faites confiance à un tiers sur lequel vous n’avez aucun contrôle. Si jsdelivr.net est compromis ou si une version « immuable » est mutée silencieusement, votre site peut devenir vecteur d’attaque.

Le Subresource Integrity (SRI) résout ça simplement : chaque balise <link> ou <script> porte un attribut integrity="sha256-…" que le navigateur vérifie avant d’exécuter la ressource. Si le hash ne correspond pas, le navigateur bloque le chargement.

Postmortem : Mermaid cassait TypeIt dans LoveIt

Ce qui s'est passé
  • Date : 14 mai 2026
  • Sévérité : P3
  • Statut : Résolu
  • Impact : Animation TypeIt cassée sur la home via un conflit DOM avec un bloc Mermaid orphelin dans les résumés — 16 articles bilingues corrigés

En bref

L’animation typewriter du thème LoveIt (TypeIt) ne fonctionnait plus sur la home après l’ajout de diagrammes Mermaid dans les posts. Cause : un sélecteur DOM #id-1 partagé entre les deux librairies. Quand Mermaid trouve un bloc orphelin dans un résumé de home, son initialisation crash, et la chaîne d’init JS s’arrête avant d’atteindre TypeIt. Fix : ajouter `

Plugin Cloudflare hugo-mcp : purge intelligente

En bref

Le plugin Cloudflare de hugo-mcp v2.0 implémente 3 modes de purge cache (full, partial, smart). Le mode partial calcule les URLs liées à invalider (canonique + sitemap + RSS + listing + home) pour préserver 95% du cache CDN à chaque modification. Concrètement : 6 URLs purgées au lieu de tout vider. Ce post détaille le calcul, les pièges, et pourquoi smart est devenu le défaut.

Hugo