Créer un dashboard Splunk d’audience avec les logs Nginx

La licorne Geekeries transforme d’anciens tableaux de bord en un dashboard Splunk d’audience qui sépare visiteurs humains et robots

Bonjour à tous, une fois les logs Nginx de Geekeries.org correctement ingérés dans Splunk après la dernière upgrade serveur, j’avais une question assez simple : est-ce que je pouvais faire un « vrai » dashboard Splunk de mesure d’audience, façon Google Analytics, mais sans ajouter de JavaScript, de cookie ou de nouveau tracker dans votre navigateur ?

Je voulais connaître les pages lues, les sources du trafic, les appareils utilisés et la place occupée par les robots. Je voulais aussi les visiteurs uniques, le nombre de sessions ou encore le taux de rebond. Tout en sachant que Nginx n’observe qu’une suite de requêtes HTTP. Il ne voit ni vos clics dans la page, ni votre scroll, ni le moment où vous partez faire un café en laissant l’onglet ouvert.

Le projet a commencé avec douze vieux (genre j’y avais pas touché depuis 4 ans) dashboards récupérés de mon précédent serveur. Il s’est terminé avec une vue Audience & Web Analytics de 26 panneaux, directement alimentée par les journaux du site. Entre les deux, le plus gros travail n’a pas été de dessiner des camemberts (Ca Splunk le fait très bien). Il a fallu décider ce que les données permettaient … Lire la suite

Docker et Portainer part 13 : Authentik avec Nginx Proxy Manager et des passkeys

La licorne Geekeries présente deux clés de sécurité devant un portail d’identité qui protège plusieurs applications derrière un proxy

Salut à tous, aujourd’hui on regarde comment déployer Authentik devant son Nginx Proxy Manager. Si vous vous rappelez j’ai plusieurs services web derrière mon reverse proxy NPM (et presque autant de façons de me connecter à chacun d’eux). Une Basic Auth par-ci, un compte local par-là, puis un autre mot de passe dans l’application elle-même. Cela fonctionnait, mais la collection de creds commençait sérieusement à ressembler à un élevage industriel (avez vous entendus parler de bitwarden notre sauveur?).

Bref, je voulais donc mettre en place un SSO : une seule identité, une authentification forte avec mes YubiKeys ou une passkey, puis des droits différents selon l’application. Comme tout passait déjà par mon reverse proxy, le projet s’est assez naturellement transformé en déploiement d’Authentik avec Nginx Proxy Manager.

Le but n’était pas de remplacer NPM. Il sait déjà très bien publier les services, gérer les certificats TLS et envoyer chaque requête au bon conteneur. Authentik devait seulement lui apporter ce qui lui manquait : savoir qui se présente et décider s’il a le droit de passer.

Bienvenue dans la treizième partie de ma série Docker et Portainer. Celle où l’on remplace enfin les petites fenêtres grises … Lire la suite

Optimiser WordPress : Pnwy sous Stéroide !

La licorne Geekeries allège une page WordPress en retirant une police et des fichiers inutiles

Salut à tous, j’ai profité d’une maintenance récente pour enfin (ré)optimiser le WordPress de Geekeries.org. Pas en installant un énième plugin miracle, mais en regardant ce que le navigateur chargeait vraiment.

Le site n’était pas à genoux. Il fonctionnait, les pages s’ouvraient, et personne ne m’avait signalé de catastrophe. PageSpeed lui me scorait pourtant à 72 sur mobile et 73 sur ordinateur. Le plus visible était le décalage de mise en page : le logo arrivait sans dimensions réservées et poussait le contenu pendant le chargement.

J’ai donc repris la chaîne complète, du reverse proxy jusqu’au navigateur, avec deux règles assez simples : une modification à la fois, et un retour arrière prêt avant de toucher à la production. Pwny m’a aidé à faire l’inventaire et à préparer les contrôles, et les appliquer mais chacun autorisé et vérifié manuellement.

Le serveur n’était pas le principal coupable

Une requête sur le site suit ce chemin : visiteur → Nginx Proxy Manager → Nginx et PHP → WordPress → MariaDB et Redis. Mon premier réflexe aurait pu être de régler PHP-FPM ou d’ajouter encore du cache. Les mesures racontaient autre chose.

Une fois la page anonyme servie à chaud, le TTFB… Lire la suite

Build a CSIRT Second Brain with OpenCode, Obsidian, MCP, and an AbuseIPDB custom tool

CSIRT second brain: workshop introduction (French)

Bonjour à tous ! Le 1er octobre 2026, j’ai animé à Stockholm un atelier consacré au « CSIRT second brain » (ou « second cerveau » en français), pour les équipes de réponse à incident. Il s’inscrivait dans le cadre des 78e rencontres du TF-CSIRT, organisées en Suède du 29 septembre au 1er octobre (auxquelles j’ai aussi assisté 😊).

J’ai préparé cet atelier suite au meeting précédent du TF-CSIRT à Riga au printemps, où plusieurs personnes m’ont demandé de montrer comment on s’y prend au CERT pour qualifier nos incidents avec des agents. Et autant c’est « assez simple » à expliquer, autant l’implémentation réelle en prod est vite complexe à reproduire : entre le choix des LLM, les tools, les MCP, les skills et les bases de connaissances…

Mettre tout ça en musique dans un atelier suffisamment simple pour que tout le monde comprenne en une demi-journée, gratuitement, mais suffisamment complexe pour être représentatif de la réalité, c’était un beau challenge sur lequel je me suis fait des nœuds au cerveau… pour vous sortir la version la plus simple d’un agent SOC/CSIRT de qualification d’incidents.

L’idée de mon workshop est de conserver … Lire la suite