<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Retex - Balise - arleo.eu</title><link>https://www.arleo.eu/tags/retex/</link><description>Retex - Balise - arleo.eu</description><generator>Hugo -- gohugo.io</generator><language>fr</language><lastBuildDate>Sat, 09 May 2026 22:29:45 +0200</lastBuildDate><atom:link href="https://www.arleo.eu/tags/retex/" rel="self" type="application/rss+xml"/><item><title>Migration Grav → Hugo : 2 ans de blog basculés en une journée</title><link>https://www.arleo.eu/posts/migration-grav-hugo/</link><pubDate>Sat, 09 May 2026 22:29:45 +0200</pubDate><author>Jmr</author><guid>https://www.arleo.eu/posts/migration-grav-hugo/</guid><description><![CDATA[<div class="featured-image">
                <img src="/images/migration-grav-hugo-featured.jpg" referrerpolicy="no-referrer">
            </div><h2 id="tldr">TL;DR</h2>
<p>Le 9 mai 2026, j&rsquo;ai basculé <code>arleo.eu</code> de <strong>Grav</strong> (CMS PHP) vers <strong>Hugo</strong> (générateur de site statique Go) en une session. Bascule <strong>atomique</strong> (≈ 0 seconde de downtime), 22 articles legacy migrés sous <code>/posts/</code> avec <strong>aliases SEO</strong> pour préserver les URLs Google indexées, monitoring BetterStack <code>/ping</code> intact pendant toute l&rsquo;opération.</p>
<p>Le code et le script de migration sont open source : <a href="https://github.com/jmrGrav/grav-to-hugo-migration" target="_blank" rel="noopener noreffer ">github.com/jmrGrav/grav-to-hugo-migration</a>.</p>]]></description></item><item><title>Sprint sécurité MCP livré : v1.9.0, 10 chantiers, écosystème durci</title><link>https://www.arleo.eu/posts/sprint-securite-mcp-livre/</link><pubDate>Sat, 09 May 2026 18:42:54 +0200</pubDate><author>Jmr</author><guid>https://www.arleo.eu/posts/sprint-securite-mcp-livre/</guid><description><![CDATA[<div class="featured-image">
                <img src="/images/sprint-securite-mcp-livre-featured.jpg" referrerpolicy="no-referrer">
            </div><h2 id="tldr">TL;DR</h2>
<p>Le 9 mai 2026, j&rsquo;ai livré en une session marathon les 10 chantiers du sprint sécurité MCP que <a href="/posts/roadmap-sprint-securite-mcp/" rel="">j&rsquo;avais annoncé en début de journée</a>. <code>hugo-mcp</code> est désormais en <strong>v1.9.0</strong> (<a href="https://github.com/jmrGrav/hugo-mcp/releases/tag/v1.9.0" target="_blank" rel="noopener noreffer ">GitHub Release</a>), commit <code>1404f83</code> GPG-signé.</p>
<p>Voici le recap haute-volée + un zoom pédagogique sur 2 chantiers qui ont une vraie valeur en dehors de mon contexte précis : <strong>C2 token rotation</strong> et <strong>C6 TLS interne</strong>.</p>
<h2 id="recap-des-10-chantiers">Recap des 10 chantiers</h2>
<table>
  <thead>
      <tr>
          <th>#</th>
          <th>Chantier</th>
          <th>Implémentation</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>C1</td>
          <td>Rate limiting</td>
          <td><code>slowapi</code>, 60 req/min par IP</td>
      </tr>
      <tr>
          <td>C2</td>
          <td>Token rotation</td>
          <td><code>tokens.json</code> + <code>token_mgr.py</code> CLI</td>
      </tr>
      <tr>
          <td>C3</td>
          <td>Audit logs JSON</td>
          <td><code>structlog</code>, événements machine-readable</td>
      </tr>
      <tr>
          <td>C4</td>
          <td>Pydantic v2 stricte</td>
          <td><code>CreatePageArgs</code> / <code>UpdatePageArgs</code> avec contraintes</td>
      </tr>
      <tr>
          <td>C5</td>
          <td>bcrypt cost-12</td>
          <td>Tokens hashés en stockage</td>
      </tr>
      <tr>
          <td>C6</td>
          <td>TLS NUC ↔ VM</td>
          <td>Cert EC P-256, uvicorn SSL, proxy vérifie le cert</td>
      </tr>
      <tr>
          <td>C7</td>
          <td>requirements.lock</td>
          <td>SHA-256 hashes via <code>pip-compile --generate-hashes</code></td>
      </tr>
      <tr>
          <td>C8</td>
          <td>Info disclosure</td>
          <td>Docs off, exception handler générique, <code>proxy_hide_header</code></td>
      </tr>
      <tr>
          <td>C9</td>
          <td>nginx WAF</td>
          <td>Enforcement POST + <code>application/json</code> sur <code>/mcp</code>, OWASP CRS actif</td>
      </tr>
      <tr>
          <td>C10</td>
          <td>Backup DR</td>
          <td><code>backup.sh</code> GPG-chiffré, rétention 30 jours</td>
      </tr>
  </tbody>
</table>
<p>Détails complets dans le <a href="https://github.com/jmrGrav/hugo-mcp/blob/main/CHANGELOG.md" target="_blank" rel="noopener noreffer ">CHANGELOG v1.9.0</a> et le commit <a href="https://github.com/jmrGrav/hugo-mcp/commit/1404f83" target="_blank" rel="noopener noreffer ">1404f83</a>.</p>]]></description></item></channel></rss>