spb/cluster-skill
Public
HTML 57.2%
Shell 19.1%
Python 11.2%
CSS 7.4%
JavaScript 5.1%
1<!doctype html><html lang='fr'><head><meta charset='utf-8'><title>MacLustr — Dossier technique</title><style>/* Dossier technique MacLustr — feuille d'impression (A4 paysage) */2@page { size: A4 landscape; margin: 13mm 14mm 15mm 14mm; }3:root {4 --ink: #0f1115; --ink-2: #4b5060; --ink-3: #868b99; --line: #dfe2ea; --line-2: #c9cdd8;5 --paper: #ffffff; --paper-2: #f5f6f9; --paper-3: #eceef4;6 --accent: #2563eb; --accent-2: #1d4ed8; --accent-dim: #e8effd; --alt: #7c3aed;7 --good: #16a34a; --bad: #dc2626; --off: #9aa0ae;8 --sans: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Helvetica Neue", Inter, Arial, sans-serif;9 --mono: "SF Mono", ui-monospace, Menlo, Consolas, monospace;10}11* { box-sizing: border-box; }12html, body { margin: 0; padding: 0; }13body { font: 9pt/1.42 var(--sans); color: var(--ink); background: var(--paper); -webkit-print-color-adjust: exact; print-color-adjust: exact; }14h1, h2, h3, h4 { margin: 0; letter-spacing: -.02em; line-height: 1.12; }15p { margin: 0 0 6px; }16code { font: 8.4pt var(--mono); background: var(--paper-2); border: 1px solid var(--line); border-radius: 3px; padding: 0 3px; color: var(--accent-2); }17strong { font-weight: 650; }18.mono { font-family: var(--mono); }19.small { font-size: 8pt; }20.faint { color: var(--ink-3); }21.r { text-align: right; }22.nw { white-space: nowrap; }23.logo { width: 22px; height: 22px; color: var(--accent); vertical-align: middle; }24.brand { display: inline-flex; align-items: center; gap: 8px; font-weight: 700; font-size: 13pt; letter-spacing: -.02em; }25.eyebrow { font-size: 7.6pt; text-transform: uppercase; letter-spacing: .14em; color: var(--ink-3); font-weight: 600; margin: 0 0 8px; }2627/* ---------- couverture ---------- */28body.cover { background: #09090b; color: #f4f4f5; width: 297mm; height: 210mm; overflow: hidden; }29.cover .kpi { background: #111114; border: 0; border-radius: 0; }30.cover .kpi b { color: #fff; } .cover .kpi span { color: #a1a1aa; } .cover .kpi small { color: #6b6b76; }31.cv { position: relative; width: 297mm; height: 210mm; overflow: hidden; padding: 14mm 18mm; display: flex; flex-direction: column; justify-content: space-between; background: radial-gradient(70% 55% at 80% 0%, rgba(96,165,250,.16), transparent 70%), #09090b; }32.cv::after { content: ""; position: absolute; inset: 0; background-image: linear-gradient(rgba(255,255,255,.035) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.035) 1px, transparent 1px); background-size: 14mm 14mm; -webkit-mask-image: radial-gradient(ellipse at 50% 0%, #000 0%, transparent 75%); mask-image: radial-gradient(ellipse at 50% 0%, #000 0%, transparent 75%); pointer-events: none; }33.cv > * { position: relative; z-index: 1; }34.cv .brand { color: #f4f4f5; }35.cv .logo { color: #60a5fa; }36.cv-top { display: flex; justify-content: space-between; align-items: center; color: #a1a1aa; font-size: 9pt; }37.cv-mid { max-width: 190mm; }38.cv .eyebrow { color: #a1a1aa; }39.cv h1 { font-size: 52pt; font-weight: 750; letter-spacing: -.04em; line-height: .96; color: #fff; }40.cv h1 span { color: #6b6b76; }41.cv .sub { margin-top: 7mm; font-size: 11.5pt; line-height: 1.5; color: #c9cbd3; max-width: 160mm; }42.cv-facts { display: grid; grid-template-columns: repeat(6, 1fr); border: 1px solid #26262d; border-radius: 10px; overflow: hidden; background: #111114; }43.cv-facts .kpi { padding: 5mm 5mm; border-right: 1px solid #26262d; }44.cv-facts .kpi:last-child { border-right: 0; }45.cv-facts .kpi b { display: block; font: 600 22pt/1.05 var(--mono); letter-spacing: -.03em; color: #fff; }46.cv-facts .kpi span { display: block; color: #a1a1aa; font-size: 8.6pt; margin-top: 2px; }47.cv-facts .kpi small { display: block; color: #6b6b76; font: 7.6pt var(--mono); margin-top: 4px; }48.cv-bot { display: flex; justify-content: space-between; color: #6b6b76; font-size: 8.4pt; }4950/* ---------- corps ---------- */51.sec { break-before: page; }52.sec:first-child { break-before: auto; }53.sec-h { display: flex; align-items: baseline; gap: 12px; border-bottom: 2px solid var(--ink); padding-bottom: 6px; margin-bottom: 10px; }54.sec-h .num { font: 600 11pt var(--mono); color: var(--accent); }55.sec-h h2 { font-size: 20pt; font-weight: 700; }56h3 { font-size: 12pt; font-weight: 650; margin: 10px 0 5px; break-after: avoid; display: flex; align-items: baseline; gap: 8px; }57h3 .cnt { font: 500 8.5pt var(--mono); color: var(--ink-3); }58h4 { font-size: 9.5pt; font-weight: 650; color: var(--ink-2); text-transform: uppercase; letter-spacing: .08em; margin-bottom: 8px; }59.lead { color: var(--ink-2); font-size: 9.1pt; max-width: 245mm; margin-bottom: 4px; }60.lead.big { font-size: 12pt; line-height: 1.5; color: var(--ink); margin-bottom: 10px; }61.note { color: var(--ink-3); font-size: 8.4pt; margin-top: 4px; }62.two { display: grid; grid-template-columns: 1fr 1fr; gap: 10mm; align-items: start; }63.three-col { display: grid; grid-template-columns: 1.1fr 1fr 1.2fr; gap: 5mm; align-items: start; }64.kpis { display: grid; grid-template-columns: repeat(6, 1fr); gap: 4mm; margin: 6px 0 4px; }65.kpis.three { grid-template-columns: repeat(3, 1fr); }66.kpi { border: 1px solid var(--line); border-radius: 8px; padding: 7px 10px; background: var(--paper); break-inside: avoid; }67.kpi b { display: block; font: 600 17pt/1.05 var(--mono); letter-spacing: -.03em; }68.kpi span { display: block; color: var(--ink-2); font-size: 8.4pt; margin-top: 2px; }69.kpi small { display: block; color: var(--ink-3); font: 7.4pt var(--mono); margin-top: 4px; }70.toc { border: 1px solid var(--line); border-radius: 8px; padding: 10px 12px; background: var(--paper-2); }71.toc div { display: flex; gap: 10px; padding: 3px 0; border-bottom: 1px dashed var(--line); font-size: 9pt; }72.toc div:last-child { border-bottom: 0; }73.toc .num { font: 600 8.4pt var(--mono); color: var(--accent); width: 18px; }7475/* tables */76table.t { width: 100%; border-collapse: collapse; margin: 4px 0 10px; font-size: 8.2pt; break-inside: auto; }77table.t th { text-align: left; font-size: 7.4pt; text-transform: uppercase; letter-spacing: .06em; color: var(--ink-3); font-weight: 600; padding: 5px 6px; border-bottom: 1.5px solid var(--ink); white-space: nowrap; }78table.t th.r { text-align: right; }79table.t td { padding: 4px 6px; border-bottom: 1px solid var(--line); vertical-align: top; overflow-wrap: anywhere; }80table.t tr { break-inside: avoid; }81table.t thead { display: table-header-group; }82table.t td.id { font: 600 8.4pt var(--mono); white-space: nowrap; color: var(--ink); }83table.t td.mono, .mono { font-family: var(--mono); }84table.t td code { font-size: 7.6pt; }85table.t.hw { font-size: 7.5pt; }86table.t.hw td { padding: 3px 4px; line-height: 1.3; }87table.t.over td:first-child, table.t.models td:first-child { font-weight: 500; }88table.t.roles td { font-size: 7.4pt; padding: 3px 5px; line-height: 1.3; }89.roles-page { break-before: page; }90.keep { break-inside: avoid; }91table.t.ovh td { font-size: 7.4pt; line-height: 1.3; }92table.t.ovh td:nth-child(6) { min-width: 34mm; } table.t.ovh td code { white-space: normal; word-break: break-all; }93.kpis.stack { grid-template-columns: 1fr; gap: 3mm; }94table.t.tun td:first-child { font: 600 8pt var(--mono); }95table.t.apps td { font-size: 7.8pt; padding: 3px 6px; }96.app-group { margin-bottom: 4px; }97table.t.heat td, table.t.bars td { vertical-align: middle; }98table.t.bars td { padding: 3px 6px; }99table.t.bars td small { line-height: 1.1; }100td small { color: var(--ink-3); font-size: 7.4pt; }101102/* barres */103.meter { white-space: nowrap; }104.bar { display: inline-block; width: 52%; height: 6px; border-radius: 3px; background: var(--paper-3); vertical-align: middle; overflow: hidden; margin-right: 6px; }105.bar i { display: block; height: 100%; background: var(--accent); border-radius: 3px; }106.bar.alt i { background: var(--alt); }107.meter.wide .bar { width: 58%; }108.meter .v { font: 7.8pt var(--mono); color: var(--ink-2); vertical-align: middle; }109110/* statuts */111.st { display: inline-block; padding: 1px 7px; border-radius: 999px; font-size: 7.2pt; font-weight: 600; border: 1px solid var(--line-2); color: var(--ink-2); white-space: nowrap; }112.st::before { content: ""; display: inline-block; width: 5px; height: 5px; border-radius: 50%; background: var(--off); margin-right: 5px; vertical-align: middle; }113.st.on { color: #166534; border-color: #bbf7d0; background: #f0fdf4; } .st.on::before { background: var(--good); }114.st.bad { color: #991b1b; border-color: #fecaca; background: #fef2f2; } .st.bad::before { background: var(--bad); }115.st.off { color: var(--ink-3); background: var(--paper-2); }116117/* fiches, panneaux */118.fiches p { padding: 6px 9px; border-left: 3px solid var(--accent); background: var(--paper-2); border-radius: 0 6px 6px 0; margin-bottom: 5px; font-size: 8pt; break-inside: avoid; }119.panel { border: 1px solid var(--line); border-radius: 8px; padding: 10px 12px; margin-bottom: 8px; break-inside: avoid; }120.flow { margin: 0; padding: 0; list-style: none; counter-reset: f; }121.flow li { display: grid; grid-template-columns: 20px 1fr; gap: 8px; align-items: start; padding: 5px 0; border-bottom: 1px dashed var(--line); font-size: 8.6pt; }122.flow li:last-child { border-bottom: 0; }123.flow li::before { counter-increment: f; content: counter(f, decimal-leading-zero); font: 600 8pt var(--mono); color: var(--accent); }124.flow li b { display: block; font-weight: 650; }125.flow li div span { color: var(--ink-2); display: block; }126.gw { display: grid; grid-template-columns: 70px 1fr; gap: 2px 10px; padding: 6px 0; border-bottom: 1px dashed var(--line); font-size: 8.6pt; }127.gw:last-child { border-bottom: 0; }128.gw b { font: 600 9pt var(--mono); grid-row: span 2; align-self: center; }129.gw span { color: var(--ink-2); }130.gw .mono { font-size: 7.8pt; color: var(--ink-3); }131132/* carte et sites */133figure.map { margin: 0 0 8px; break-inside: avoid; }134figure.map img { width: 100%; height: 78mm; object-fit: cover; object-position: center 40%; border-radius: 8px; border: 1px solid var(--line); display: block; }135figure.map figcaption { font-size: 7.8pt; color: var(--ink-3); margin-top: 4px; }136.sites { display: grid; grid-template-columns: repeat(4, 1fr); gap: 3mm; margin-top: 6px; }137.site { border: 1px solid var(--line); border-radius: 8px; padding: 7px 9px; break-inside: avoid; }138.site .s-h { display: flex; justify-content: space-between; align-items: baseline; gap: 6px; font-size: 9.8pt; }139.site .s-h .mono { font-size: 8pt; color: var(--ink-2); }140.site .s-r { color: var(--ink-3); font-size: 7.8pt; margin: 2px 0 6px; }141.site p { font-size: 7.5pt; color: var(--ink-2); min-height: 20px; margin-bottom: 3px; }142.site .s-n { display: flex; flex-wrap: wrap; gap: 3px; }143.site .s-n span { font: 7.4pt var(--mono); padding: 1px 5px; border-radius: 4px; background: var(--paper-2); border: 1px solid var(--line); }144145.end { display: flex; align-items: center; gap: 8px; margin-top: 18px; color: var(--ink-3); font: 8.4pt var(--mono); }146</style></head>147<body>148<section class='sec'><div class='sec-h'><span class='num'>1</span><h2>Vue d'ensemble</h2></div>149<div class='two'>150 <div>151 <p class='lead big'>MacLustr est un cluster privé de 33 Macs Apple Silicon et 4 serveurs Linux OVHcloud. Il totalise <strong>484 cœurs CPU</strong>, <strong>812 cœurs GPU</strong> et <strong>1,38 To de mémoire</strong>, et héberge <strong>36 applications</strong> en production, dont 35 sites publics servis en HTTPS par le MacLustr Tunnel.</p>152 <p>Les compteurs « nominaux » du cluster (<code>NODES.md</code>, <code>CLAUDE.md</code>, site www.maclustr.io) comptent 32 cœurs pour chaque M3 Ultra ; <code>system_profiler</code> et <code>mld scan</code> en voient 28 (20 performance + 8 efficience). Ce document donne les valeurs mesurées.</p><p><strong>Architecture en trois plans.</strong> (1) La <strong>passerelle interne M1M32</strong> héberge le git personnel spbgit et l'orchestrateur <code>mld</code>, qui place chaque application sur le nœud le plus efficient, la supervise (<code>mld heal</code> toutes les 5 min) et pousse le registre aux consommateurs. (2) L'agent <strong>maclustr-agentd</strong> (M4M64a:9210) sonde tous les nœuds pour les apps macOS et iOS MacLustr et le site www.maclustr.io. (3) La <strong>passerelle publique BHS64</strong> (OVH Beauharnois) termine le TLS de 36 domaines avec Caddy et les relaie aux nœuds par le tunnel WireGuard « MacLustr Tunnel » (hub 10.67.0.1, 13 pairs) ; R9128 (Gravelines) est le hub de secours. Il n'y a plus de ngrok.</p><p><strong>Accès.</strong> Tout passe par <code>ssh <alias></code> depuis le laptop (<code>~/.ssh/config</code>) avec clés ed25519 et agent forwarding ; trois clés publiques sont autorisées partout : <code>maclustr-cluster</code> (laptop), <code>maclustr-m1m32</code> (passerelle mld) et <code>maclustr-agentd</code> (agent). Les mots de passe sudo et identifiants DeskIn/VNC ne figurent pas ici : voir <code>NODES.md</code>.</p>153 </div>154 <div>155 <div class='toc'><h4>Sommaire</h4><div><span class='num'>1</span>Vue d'ensemble</div><div><span class='num'>2</span>Nœuds internes — LAN Saint-Augustin</div><div><span class='num'>3</span>Macs dédiés loués hors site</div><div><span class='num'>4</span>Serveurs dédiés OVHcloud</div><div><span class='num'>5</span>Topologie publique : tunnel et sites</div><div><span class='num'>6</span>Emplacements et carte</div><div><span class='num'>7</span>Répartitions et capacité</div><div><span class='num'>8</span>Applications hébergées</div><div><span class='num'>9</span>Instantané live</div><div><span class='num'>10</span>Sources et méthode</div></div>156 </div>157</div>158<h3>Par catégorie</h3>159<table class='t over'><thead><tr><th>Catégorie</th><th class=r>Machines</th><th class=r>Cœurs CPU</th><th class=r>RAM</th><th>Stockage (brut)</th><th>Où</th></tr></thead><tbody><tr><td class="id"><strong>1. Nœuds internes — LAN MacLustr</strong></td><td class="r nw">21 Macs</td><td class="r nw">286 (nominal 294)</td><td class="r nw">784 Go</td><td>≈ 13,1 To</td><td>Saint-Augustin-de-Desmaures, Québec</td></tr><tr><td class="id"><strong>2. Macs loués hors site</strong></td><td class="r nw">12 Macs</td><td class="r nw">114</td><td class="r nw">240 Go</td><td>≈ 6,9 To</td><td>Turquie, États-Unis, Irlande, Chypre</td></tr><tr><td class="id"><strong>3. Serveurs dédiés OVHcloud (Linux)</strong></td><td class="r nw">4 serveurs</td><td class="r nw">38 c / 76 threads x86</td><td class="r nw">384 Go</td><td>4 × 2 × 960 Go NVMe (RAID 1)</td><td>Beauharnois (Québec) ×3, Gravelines (France) ×1</td></tr><tr><td class="id"><strong>Total</strong></td><td class="r nw"><strong>37 machines</strong></td><td class="r nw"><strong>400 cœurs Apple + 38 cœurs AMD</strong></td><td class="r nw"><strong>1 408 Go</strong></td><td>≈ 28 To</td><td>7 sites, 5 pays</td></tr></tbody></table>160<div class='kpis'><div class='kpi'><b>21</b><span>Macs sur le LAN</span><small>Saint-Augustin</small></div><div class='kpi'><b>12</b><span>Macs loués</span><small>Istanbul · Atlanta · Dublin · Limassol</small></div><div class='kpi'><b>4</b><span>serveurs OVHcloud</span><small>Beauharnois · Gravelines</small></div><div class='kpi'><b>3</b><span>passerelles</span><small>M1M32 · BHS64 · R9128</small></div><div class='kpi'><b>2</b><span>hubs WireGuard</span><small>17 pairs</small></div><div class='kpi'><b>38</b><span>routes HTTPS</span><small>Caddy · Let’s Encrypt</small></div></div>161</section>162163<section class='sec'><div class='sec-h'><span class='num'>2</span><h2>Nœuds internes — LAN Saint-Augustin-de-Desmaures</h2></div><p class=lead>Réseau <code>192.168.2.x</code>, domaine <code>maclustr.io</code>, Tailscale présent mais <strong>SSH inter-nœuds via Tailscale bloqué</strong> (ACL) : tout passe par les IP LAN. Utilisateur <code>simon-pierreboucher</code> partout, home <code>/Users/simon-pierreboucher</code>. Tous durcis le 10 septembre 2026 (<code>mld harden --all</code> : ouverture de session automatique, pas de veille, redémarrage après coupure, mises à jour automatiques désactivées, FileVault désactivé sur les deux M3 Ultra). PM2 pour les apps, launchd seulement pour l'agent, les gardiens et la console.</p>164<h3>2a. Matériel et système <span class='cnt'>21 Macs</span></h3>165<table class='t hw'><thead><tr><th>Alias</th><th>Modèle (identifiant)</th><th>Puce (P + E)</th><th class=r>Cœurs</th><th class=r>RAM</th><th>SSD total / libre</th><th>N° de série</th><th>IP LAN</th><th>Tunnel wg1</th><th>macOS</th><th>État 10 sept. 22 h 30</th></tr></thead><tbody><tr><td class="nw id">M3U96a</td><td>Mac Studio (Mac15,14)</td><td>M3 Ultra (20 + 8)</td><td class="r nw">28</td><td class="r nw">96 Go</td><td class="nw">995 / 487 Go</td><td>HM62TG64LP</td><td class="nw">192.168.2.87</td><td class="nw">10.67.0.10</td><td class="nw">26.6</td><td>en ligne, 17 processus PM2</td></tr><tr><td class="nw id">M3U96b</td><td>Mac Studio (Mac15,14)</td><td>M3 Ultra (20 + 8)</td><td class="r nw">28</td><td class="r nw">96 Go</td><td class="nw">995 / 414 Go</td><td>J3661QHQ7M</td><td class="nw">192.168.2.82</td><td class="nw">10.67.0.11</td><td class="nw">26.4</td><td>en ligne, 8 processus PM2</td></tr><tr><td class="nw id">M2U64</td><td>Mac Studio (Mac14,14)</td><td>M2 Ultra (16 + 8)</td><td class="r nw">24</td><td class="r nw">64 Go</td><td class="nw">995 / 401 Go</td><td>T99R24M36K</td><td class="nw">192.168.2.107</td><td class="nw">10.67.0.12</td><td class="nw">26.5</td><td>en ligne, 10 processus PM2</td></tr><tr><td class="nw id">M4M64a</td><td>Mac Studio (Mac16,9)</td><td>M4 Max (12 + 4)</td><td class="r nw">16</td><td class="r nw">64 Go</td><td class="nw">995 / 848 Go</td><td>YFQW7Y1734</td><td class="nw">192.168.2.83</td><td class="nw">10.67.0.13</td><td class="nw">26.5.1</td><td>en ligne, 9 processus PM2</td></tr><tr><td class="nw id">M4M64b</td><td>Mac Studio (Mac16,9)</td><td>M4 Max (12 + 4)</td><td class="r nw">16</td><td class="r nw">64 Go</td><td class="nw">995 / 799 Go</td><td>F163L9H422</td><td class="nw">192.168.2.78</td><td class="nw">10.67.0.14</td><td class="nw">26.5.1</td><td>en ligne, 19 processus PM2</td></tr><tr><td class="nw id">M4BP48</td><td>MacBook Pro (Mac16,5)</td><td>M4 Max (12 + 4)</td><td class="r nw">16</td><td class="r nw">48 Go</td><td class="nw">995 / 931 Go</td><td>DRXR751720</td><td class="nw">192.168.2.80</td><td class="nw">—</td><td class="nw">26.5.1</td><td>en ligne (98 j)</td></tr><tr><td class="nw id">M4BP36</td><td>MacBook Pro (Mac16,6)</td><td>M4 Max (10 + 4)</td><td class="r nw">14</td><td class="r nw">36 Go</td><td class="nw">995 / 945 Go</td><td>DJ616D4NPF</td><td class="nw">192.168.2.79</td><td class="nw">—</td><td class="nw">26.5.1</td><td>en ligne (rallumé, 6 j)</td></tr><tr><td class="nw id">M4M36</td><td>Mac Studio (Mac16,9)</td><td>M4 Max (10 + 4)</td><td class="r nw">14</td><td class="r nw">36 Go</td><td class="nw">494 / 445 Go</td><td>FXGPY9V7NT</td><td class="nw">192.168.2.69</td><td class="nw">10.67.0.17</td><td class="nw">26.5.2</td><td>en ligne, gardiens launchd</td></tr><tr><td class="nw id">M2M32</td><td>Mac Studio (Mac14,13)</td><td>M2 Max (8 + 4)</td><td class="r nw">12</td><td class="r nw">32 Go</td><td class="nw">494 / 365 Go</td><td>X5PF2TW170</td><td class="nw">192.168.2.90</td><td class="nw">10.67.0.18</td><td class="nw">26.5.1</td><td>en ligne</td></tr><tr><td class="nw id">M2M32b</td><td>Mac Studio (Mac14,13)</td><td>M2 Max (8 + 4)</td><td class="r nw">12</td><td class="r nw">32 Go</td><td class="nw">494 / 296 Go</td><td>VHKX7M65XC</td><td class="nw">192.168.2.77</td><td class="nw">—</td><td class="nw">26.5.1</td><td>en ligne</td></tr><tr><td class="nw id">M2M32c</td><td>Mac Studio (Mac14,13)</td><td>M2 Max (8 + 4)</td><td class="r nw">12</td><td class="r nw">32 Go</td><td class="nw">494 / 458 Go</td><td>W2QTCJ7TKG</td><td class="nw">192.168.2.89</td><td class="nw">—</td><td class="nw">26.5.1</td><td>en ligne</td></tr><tr><td class="nw id">m4mc</td><td>Mac mini (Mac16,11)</td><td>M4 Pro (8 + 4)</td><td class="r nw">12</td><td class="r nw">24 Go</td><td class="nw">494 / 456 Go</td><td>J742M2X1VC</td><td class="nw">192.168.2.75</td><td class="nw">—</td><td class="nw">26.5.1</td><td>en ligne</td></tr><tr><td class="nw id"><strong>M1M32</strong></td><td>Mac Studio (Mac13,1)</td><td>M1 Max (8 + 2)</td><td class="r nw">10</td><td class="r nw">32 Go</td><td class="nw">494 / 376 Go</td><td>LVC2Q4R716</td><td class="nw">192.168.2.76</td><td class="nw">10.67.0.2</td><td class="nw">26.5.1</td><td>en ligne, <strong>passerelle</strong></td></tr><tr><td class="nw id">m4ma</td><td>Mac mini (Mac16,10)</td><td>M4 (4 + 6)</td><td class="r nw">10</td><td class="r nw">24 Go</td><td class="nw">494 / 457 Go</td><td>N6NVTGFFVV</td><td class="nw">192.168.2.73</td><td class="nw">—</td><td class="nw">26.5.1</td><td>en ligne</td></tr><tr><td class="nw id">m4mb</td><td>Mac mini (Mac16,10)</td><td>M4 (4 + 6)</td><td class="r nw">10</td><td class="r nw">16 Go</td><td class="nw">245 / 209 Go</td><td>GYWPHYG6TX</td><td class="nw">192.168.2.74</td><td class="nw">—</td><td class="nw">26.5.1</td><td>en ligne</td></tr><tr><td class="nw id">m4md</td><td>Mac mini (Mac16,10)</td><td>M4 (4 + 6)</td><td class="r nw">10</td><td class="r nw">16 Go</td><td class="nw">245 Go</td><td>—</td><td class="nw">192.168.2.110 (dernière connue)</td><td class="nw">—</td><td class="nw">26.6.2</td><td><strong>hors ligne</strong> (éteint depuis la coupure du 10 sept.)</td></tr><tr><td class="nw id">m2m16</td><td>Mac mini (Mac14,12)</td><td>M2 Pro (6 + 4)</td><td class="r nw">10</td><td class="r nw">16 Go</td><td class="nw">494 / 458 Go</td><td>LFWH0GVGC6</td><td class="nw">192.168.2.85</td><td class="nw">—</td><td class="nw">26.4.1</td><td>en ligne (rallumé)</td></tr><tr><td class="nw id">M3BA24</td><td>MacBook Air (Mac15,12)</td><td>M3 (4 + 4)</td><td class="r nw">8</td><td class="r nw">24 Go</td><td class="nw">494 / 453 Go</td><td>M4KXY1V9CL</td><td class="nw">192.168.2.81</td><td class="nw">—</td><td class="nw">26.5.1</td><td>en ligne (rallumé, 6 j)</td></tr><tr><td class="nw id">M3BA16</td><td>MacBook Air (Mac15,12)</td><td>M3 (4 + 4)</td><td class="r nw">8</td><td class="r nw">16 Go</td><td class="nw">494 / 440 Go</td><td>LTQX17FW9W</td><td class="nw">192.168.2.70</td><td class="nw">—</td><td class="nw">26.5.1</td><td>en ligne (99 j)</td></tr><tr><td class="nw id">m2m8a</td><td>Mac mini (Mac14,3)</td><td>M2 (4 + 4)</td><td class="r nw">8</td><td class="r nw">8 Go</td><td class="nw">494 / 456 Go</td><td>WQF2N4L6RT</td><td class="nw">192.168.2.84</td><td class="nw">—</td><td class="nw">26.5.1</td><td>en ligne (rallumé)</td></tr><tr><td class="nw id">m2m8b</td><td>Mac mini (Mac14,3)</td><td>M2 (4 + 4)</td><td class="r nw">8</td><td class="r nw">8 Go</td><td class="nw">245 / 211 Go</td><td>Q339C7TMT7</td><td class="nw">192.168.2.72</td><td class="nw">—</td><td class="nw">26.5.1</td><td>en ligne</td></tr></tbody></table>166<p class='note'>: 21 Macs, 286 cœurs mesurés (294 nominaux), 784 Go, 20 en ligne.** 11 Mac Studio, 6 Mac mini, 2 MacBook Pro, 2 MacBook Air. 16 nœuds ont redémarré ensemble le 10 septembre (coupure de courant) et sont revenus seuls : PM2, tunnel wg1 et routes Caddy intacts. Autres équipements sur place : deux NAS UGREEN (DXP4800 Plus <code>192.168.2.173</code>, DH4300 Plus <code>192.168.2.175</code>).</p>167<div class='roles-page'><h3>2b. Rôle, runtimes et applications par nœud</h3>168<p class='lead'>Rôle, runtimes et applications par nœud</p>169<table class='t roles'><col style='width:7%'><col style='width:21%'><col style='width:18%'><col style='width:26%'><col style='width:28%'><thead><tr><th>Alias</th><th>Rôle</th><th>Runtimes détectés</th><th>Applications (port)</th><th>Processus PM2 / launchd</th></tr></thead><tbody><tr><td class="id">M3U96a</td><td>worker apps principal ; ex-passerelle LLM (llm.maclustr.io démantelée le 9 juin 2026)</td><td>brew, docker, git, node, pm2, pnpm, postgresql@17, py3.14, redis, tunnel, uv</td><td>admin-ka (3300, épinglé, launchd), fetcha (8220), job-ka (8096), polyllm (8240), qc26 (8200), rareindex (8210), sorti-ka (8120), uqo-imm1033 (8161), vrai-prix (8090)</td><td>fetcha-api, fetcha-web, job-ka-sync, job-ka-web, polyllm-web, qc26-engine, qc26-web, rareindex-api/-web/-worker, sorti-ka-sync/-web, uqo-imm1033, vrai-prix, vrai-prix-cost-sync, vrai-prix-immoka-sync, vrai-prix-ingest</td></tr><tr><td class="id">M3U96b</td><td><strong>réservé hfmarketdata</strong> (lac de données FirstRate <code>~/firstratedata</code>, 353 Go)</td><td>brew, docker, git, node, pm2, pnpm, py3.14, redis, tunnel</td><td>hfmarketdata (8090)</td><td>hfmarketdata-api, -contracts-backfill, -edgar-backfill, -edgar-incremental, -edgar-reconcile, -frd-refresh, -rowgroups, pm2-logrotate</td></tr><tr><td class="id">M2U64</td><td>worker apps, <strong>sans session graphique</strong> (services en LaunchDaemon)</td><td>brew, docker, git, node, pm2, pnpm, postgresql@17, py3.14, tunnel</td><td>food-ka (8097), maclustr-appmanager (8787), maclustr-console (3000), maclustr-nodepages (8003), spb-cloud (5001), spboucher-ai (3100), uqo-eval (8150), vquant (5000)</td><td>10 processus PM2 (food-ka, app-manager, console, nodepages, spb-cloud, spboucher-ai, uqo-eval + cron cost-sync, vquant)</td></tr><tr><td class="id">M4M64a</td><td>worker apps + <strong>maclustr-agentd :9210</strong> (sondes SSH de tout le cluster, API des apps macOS/iOS) + site vitrine www.maclustr.io</td><td>brew, docker, git, node, pm2, postgresql@17, py3.14, tunnel, uv</td><td>fabri-ka (8097), ka-stats (8140), lou-ka (8095), maclustr-agentd (9210, launchd), maclustr-www (8280, épinglé), pdb-api (8270), uqo-chat (8190)</td><td>fabri-ka-sync/-web, ka-stats, lou-ka-sync/-web, maclustr-www, pdb-api, uqo-chat-api, uqo-chat-sandbox</td></tr><tr><td class="id">M4M64b</td><td>worker apps le plus chargé (19 processus) ; Postgres 17 + Redis locaux pour api-ka</td><td>brew, docker, git, node, pm2, pnpm, postgresql@17, py3.13, py3.14, redis, tunnel</td><td>api-ka (8000, <code>/opt/api-ka</code>), auto-ka (8095), cancerindex (8250), groupe-ka (8110), immo-ka (8096), uqo-imm1003 (8160), websensor (8260)</td><td>apika-api, apika-scheduler, auto-ka-sync/-web, cancerindex-api/-backup/-web/-worker, groupe-ka (+ kaid-alerts, kaid-mf, rapport-quotidien, status-tick), immo-ka-sync/-web, uqo-imm1003, websensor-api/-engine/-web</td></tr><tr><td class="id">M4BP48</td><td>worker libre (portable)</td><td>brew, git, uv</td><td>—</td><td>—</td></tr><tr><td class="id">M4BP36</td><td>worker libre (portable)</td><td>brew, git</td><td>—</td><td>—</td></tr><tr><td class="id">M4M36</td><td><strong>gardiens Ka</strong> (agents de surveillance, launchd)</td><td>brew, git, node, pm2, py3.13, tunnel</td><td>ka2 (8799), ka4 (8899), ka6 (8999)</td><td>ka2, ka4, ka6 (LaunchAgents) + runners/courrier/pousseur</td></tr><tr><td class="id">M2M32</td><td>worker libre (ex-trouve-ka, volumes Docker conservés)</td><td>brew, docker, git, node, pm2, pnpm, py3.14, tunnel, uv</td><td>—</td><td>—</td></tr><tr><td class="id">M2M32b</td><td>worker libre (ex-flotte trouve-ka)</td><td>brew, docker, git, node, pm2, uv</td><td>—</td><td>—</td></tr><tr><td class="id">M2M32c</td><td>worker libre</td><td>git, uv</td><td>—</td><td>—</td></tr><tr><td class="id">m4mc</td><td>worker libre</td><td>git, uv</td><td>—</td><td>—</td></tr><tr><td class="id"><strong>M1M32</strong></td><td><strong>passerelle du cluster</strong> : spbgit (dépôts bare <code>~/srv/git/*.git</code>, git.spboucher.ai :7420), orchestrateur <code>mld</code> (<code>~/dispatch</code>), <code>mld heal</code> (LaunchDaemon io.maclustr.mld-heal, 5 min), alias <code>gitsrv</code> ; aucune autre app</td><td>brew, git, node, pm2, postgresql@17, tunnel, uv</td><td>spbgit (7420)</td><td>spbgit</td></tr><tr><td class="id">m4ma</td><td>worker libre</td><td>git, uv</td><td>—</td><td>—</td></tr><tr><td class="id">m4mb</td><td>worker libre</td><td>git</td><td>—</td><td>—</td></tr><tr><td class="id">m4md</td><td>worker libre (hors ligne)</td><td>—</td><td>—</td><td>—</td></tr><tr><td class="id">m2m16</td><td>worker libre</td><td>git</td><td>—</td><td>—</td></tr><tr><td class="id">M3BA24</td><td>worker libre (portable)</td><td>brew, git</td><td>—</td><td>—</td></tr><tr><td class="id">M3BA16</td><td>worker libre (portable)</td><td>brew, git</td><td>—</td><td>—</td></tr><tr><td class="id">m2m8a</td><td>worker libre (8 Go)</td><td>brew, git</td><td>—</td><td>—</td></tr><tr><td class="id">m2m8b</td><td>worker libre (8 Go)</td><td>git</td><td>—</td><td>—</td></tr></tbody></table></div>170</section>171172<section class='sec'><div class='sec-h'><span class='num'>3</span><h2>Macs dédiés loués hors site</h2></div><p class=lead>Douze Macs loués chez trois fournisseurs, ajoutés du 8 au 10 septembre 2026. Ils sont dans <code>mld</code> comme <code>REMOTE_NODES</code> <strong>réservés</strong> : aucun placement automatique, seulement <code>mld deploy <app> --node <alias></code>. Pas de Tailscale, pas de LAN vers les apps sœurs, pas de gardiens Ka. PM2 est chargé en <strong>LaunchDaemon système</strong> (<code>/Library/LaunchDaemons/pm2.<user>.plist</code>) parce que la session graphique n'est pas garantie au démarrage. Runtimes posés par <code>mld prepare</code> : Xcode CLT, Homebrew, node 26, pnpm, pm2, Python 3.13/3.14, uv ; cinq d'entre eux sont déjà raccordés au tunnel (wg1). Aucune application déployée au 10 septembre 2026 : <strong>12 machines prêtes</strong>.</p>173<h3>3a. Turquie — Macly <span class='cnt'>8 Macs</span></h3>174<p class='lead'>Turquie — Macly (AS199099 Erlion Bilişim), 8 Macs</p>175<table class='t hw'><thead><tr><th>Alias</th><th>Modèle (identifiant)</th><th>Puce (P + E)</th><th class=r>Cœurs</th><th class=r>RAM</th><th>SSD total / libre</th><th>N° de série</th><th>IP publique (LAN fournisseur)</th><th>Tunnel wg1</th><th>macOS</th><th>Ville</th><th>Ajouté</th><th>État</th></tr></thead><tbody><tr><td class="nw id">M1M64</td><td>Mac Studio (Mac13,1)</td><td>M1 Max (8 + 2)</td><td class="r nw">10</td><td class="r nw">64 Go</td><td class="nw">1 995 / 726 Go</td><td>WWVV29HYQW</td><td>45.74.241.221 (10.100.1.221)</td><td class="nw">—</td><td class="nw">26.6.2</td><td class="nw">Istanbul</td><td class="nw">2026-09-08</td><td class="nw">en ligne (2 j)</td></tr><tr><td class="nw id">m4me</td><td>Mac mini (Mac16,10)</td><td>M4 (4 + 6)</td><td class="r nw">10</td><td class="r nw">16 Go</td><td class="nw">245 / 201 Go</td><td>D46D7Q4XFL</td><td>45.74.245.36</td><td class="nw">—</td><td class="nw">26.6.2</td><td class="nw">Uşak</td><td class="nw">2026-09-08</td><td class="nw">en ligne (2 j)</td></tr><tr><td class="nw id">m4mf</td><td>Mac mini (Mac16,10)</td><td>M4 (4 + 6)</td><td class="r nw">10</td><td class="r nw">16 Go</td><td class="nw">245 / 202 Go</td><td>XY0YVKXV50</td><td>45.74.245.37 (10.100.2.37)</td><td class="nw">—</td><td class="nw">26.6.2</td><td class="nw">Uşak</td><td class="nw">2026-09-09</td><td class="nw">en ligne (1 j)</td></tr><tr><td class="nw id">m4mh</td><td>Mac mini (Mac16,10)</td><td>M4 (4 + 6)</td><td class="r nw">10</td><td class="r nw">16 Go</td><td class="nw">245 / 206 Go</td><td>H9FT6DP6V9</td><td>45.74.241.182 (10.100.1.182)</td><td class="nw">10.67.0.47</td><td class="nw">26.6.2</td><td class="nw">Istanbul</td><td class="nw">2026-09-10</td><td class="nw">en ligne (18 h)</td></tr><tr><td class="nw id">m1m16b</td><td>Mac mini (Macmini9,1 — vendu « M4 », c'est un M1)</td><td>M1 (4 + 4)</td><td class="r nw">8</td><td class="r nw">16 Go</td><td class="nw">245 / 188 Go</td><td>C07J70PHQ6NY</td><td>45.74.241.171</td><td class="nw">10.67.0.48</td><td class="nw">26.6.1</td><td class="nw">Istanbul</td><td class="nw">2026-09-10</td><td class="nw">en ligne (19 h)</td></tr><tr><td class="nw id">m4mi</td><td>Mac mini (Mac16,10)</td><td>M4 (4 + 6)</td><td class="r nw">10</td><td class="r nw">16 Go</td><td class="nw">245 / 204 Go</td><td>VW6R45M7HW</td><td>45.74.245.39</td><td class="nw">10.67.0.49</td><td class="nw">26.6.2</td><td class="nw">Uşak</td><td class="nw">2026-09-10</td><td class="nw">en ligne (16 h)</td></tr><tr><td class="nw id">m4mj</td><td>Mac mini (Mac16,10)</td><td>M4 (4 + 6)</td><td class="r nw">10</td><td class="r nw">16 Go</td><td class="nw">245 / 207 Go</td><td>QX4L7DQFJH</td><td>45.74.245.38</td><td class="nw">10.67.0.50</td><td class="nw">26.6.2</td><td class="nw">Uşak</td><td class="nw">2026-09-10</td><td class="nw">en ligne (16 h)</td></tr><tr><td class="nw id">m4mk</td><td>Mac mini (Mac16,10)</td><td>M4 (4 + 6)</td><td class="r nw">10</td><td class="r nw">16 Go</td><td class="nw">245 / 207 Go</td><td>DK65R60V95</td><td>45.74.241.98</td><td class="nw">10.67.0.51</td><td class="nw">26.6.2</td><td class="nw">Istanbul</td><td class="nw">2026-09-10</td><td class="nw">en ligne (12 h)</td></tr></tbody></table>176<div class='keep'><h3>3b. États-Unis et Irlande — MacStadium <span class='cnt'>3 Macs</span></h3>177<p class='lead'>États-Unis (Atlanta) et Irlande (Dublin) — MacStadium, 3 Macs</p>178<table class='t hw'><thead><tr><th>Alias</th><th>Modèle (identifiant)</th><th>Puce (P + E)</th><th class=r>Cœurs</th><th class=r>RAM</th><th>SSD total / libre</th><th>N° de série</th><th>IP publique</th><th>macOS</th><th>Ville</th><th>Ajouté</th><th>État</th></tr></thead><tbody><tr><td class="nw id">m2m16b</td><td>Mac mini (Mac14,12)</td><td>M2 Pro (6 + 4)</td><td class="r nw">10</td><td class="r nw">16 Go</td><td class="nw">995 / 942 Go</td><td>TQV5L6R9MK</td><td class="nw">208.52.154.68</td><td class="nw">26.6</td><td>Atlanta (AS395336)</td><td class="nw">2026-09-08</td><td class="nw">en ligne (3 j)</td></tr><tr><td class="nw id">m1m16</td><td>Mac mini (Macmini9,1)</td><td>M1 (4 + 4)</td><td class="r nw">8</td><td class="r nw">16 Go</td><td class="nw">995 / 958 Go</td><td>H2WGW18RQ6P0</td><td class="nw">207.254.29.71</td><td class="nw">26.6.2</td><td>Dublin (AS30377)</td><td class="nw">2026-09-08</td><td class="nw">en ligne (6 j)</td></tr><tr><td class="nw id">m2m16c</td><td>Mac mini (Mac14,3)</td><td>M2 (4 + 4)</td><td class="r nw">8</td><td class="r nw">16 Go</td><td class="nw">995 / 959 Go</td><td>X0KPDY0DQ5</td><td class="nw">207.254.29.128</td><td class="nw">26.6.2</td><td>Dublin (AS30377)</td><td class="nw">2026-09-08</td><td class="nw">en ligne (3 j)</td></tr></tbody></table></div>179<div class='keep'><h3>3c. Chypre — rentamac <span class='cnt'>1 Mac</span></h3>180<p class='lead'>Chypre (Limassol) — rentamac, 1 Mac</p>181<table class='t hw'><thead><tr><th>Alias</th><th>Modèle (identifiant)</th><th>Puce (P + E)</th><th class=r>Cœurs</th><th class=r>RAM</th><th>SSD total / libre</th><th>N° de série</th><th>Accès SSH</th><th>macOS</th><th>Ajouté</th><th>État</th></tr></thead><tbody><tr><td class="nw id">m4mg</td><td>Mac mini (Mac16,10)</td><td>M4 (4 + 6)</td><td class="r nw">10</td><td class="r nw">16 Go</td><td class="nw">245 / 203 Go</td><td>R7023K3WF0</td><td class="nw">gate1.rentamac.io:27335</td><td class="nw">26.6.2</td><td class="nw">2026-09-09</td><td class="nw">en ligne (1 j)</td></tr></tbody></table></div>182</section>183184<section class='sec'><div class='sec-h'><span class='num'>4</span><h2>Serveurs dédiés OVHcloud (Linux)</h2></div><p class=lead>Quatre serveurs bare-metal Ubuntu Server <strong>24.04.4 LTS</strong> (noyau 6.8), utilisateur <code>ubuntu</code> avec <strong>sudo sans mot de passe</strong>, root joignable par clé, fuseau America/Toronto, marqueur <code>/root/maclustr-postinstall.done</code>. Installés depuis le manager https://manager.ca.ovhcloud.com piloté en Safari/JXA (recette et scripts dans <code>cluster-skill/ovh-manager/</code>, ≈ 20 min par serveur). Ce ne sont <strong>pas</strong> des nœuds <code>mld</code>/agentd (pas de Homebrew ni de launchd) : on les pilote en SSH direct. Disques : 2 × 960 Go NVMe en RAID 1 logiciel partout (md2 <code>/boot</code>, md3 <code>/</code> 878 Go).</p>185<table class='t ovh'><thead><tr><th>Alias</th><th>Nom OVH (gamme, ID)</th><th>CPU</th><th class=r>RAM</th><th>Réseau</th><th>IPv4 / IPv6</th><th>Lieu</th><th>Rôle</th><th>Services actifs</th><th>État 10 sept. 22 h 35</th></tr></thead><tbody><tr><td class="id"><strong>BHS64</strong> (<code>ovh2</code>)</td><td><code>ns5044661.ip-51-161-112.net</code> (ADVANCE-2, ID 540625)</td><td>AMD EPYC 4345P, 8 c / 16 t, 3,8–5,5 GHz</td><td class="r nw">64 Go DDR5 ECC 3600</td><td>3 Gbit/s public, 25 Gbit/s privé</td><td><strong>51.161.112.61</strong> (gw 100.64.0.1) · <code>2607:5300:22a:3d00::/56</code></td><td>Beauharnois BHS8, baie BHS0805A03C, <code>ca-east-bhs-a</code></td><td><strong>passerelle principale MacLustr Tunnel</strong></td><td>WireGuard hub <code>wg0</code> 10.67.0.1 (udp 51820, 13 pairs), Caddy (36 routes, TLS auto), ufw actif, <code>tunnelctl</code></td><td>en ligne (22 h)</td></tr><tr><td class="id"><strong>BHS64b</strong> (<code>ovh3</code>)</td><td><code>ns5015175.ip-51-161-112.net</code> (ADVANCE-2)</td><td>AMD EPYC 4345P, 8 c / 16 t</td><td class="r nw">64 Go DDR5 ECC</td><td>3 Gbit/s</td><td><strong>51.161.112.66</strong> · <code>2607:5300:22a:4200::/56</code></td><td>Beauharnois, <code>ca-east-bhs-a</code></td><td><strong>réserve</strong> (usage à définir, pas une passerelle)</td><td>aucun (Caddy et ufw inactifs)</td><td>en ligne (3,5 h)</td></tr><tr><td class="id"><strong>BHS128</strong> (<code>ovh4</code>)</td><td><code>ns5044426.ip-51-161-112.net</code> (ADVANCE-1, ID 528691)</td><td>AMD EPYC 4245P, 6 c / 12 t, 3,9–5,4 GHz</td><td class="r nw">128 Go DDR5 3600</td><td>3 Gbit/s public, 25 Gbit/s privé</td><td><strong>51.161.112.69</strong> (gw 100.64.0.1) · <code>2607:5300:22a:4500::/56</code></td><td>Beauharnois BHS8, baie BHS0805A01C, <code>ca-east-bhs-a</code></td><td><strong>réserve</strong> (prêt à accueillir une app)</td><td>aucun (Caddy et ufw inactifs)</td><td>en ligne (installé ce soir 22 h 26)</td></tr><tr><td class="id"><strong>R9128</strong> (<code>ovh1</code>)</td><td><code>ns3049362.ip-51-255-75.eu</code> (RISE-L, ID 1907852)</td><td>AMD Ryzen 9 9950X, 16 c / 32 t, 4,3–5,7 GHz</td><td class="r nw">128 Go DDR5 3600</td><td>1 Gbit/s public + privé</td><td><strong>51.255.75.61</strong> (gw 51.255.75.254) · <code>2001:41d0:1004:273d::/64</code></td><td>Gravelines GRA1, baie G118A10, <code>eu-west-gra-a</code> (France)</td><td><strong>passerelle secondaire / secours</strong></td><td>WireGuard hub <code>wg0</code> 10.66.0.1, Caddy actif, ufw actif</td><td>en ligne (2 j)</td></tr></tbody></table>186<h3>Fiches</h3>187<div class='fiches'><p><strong>BHS64</strong> — installé le 10 septembre 2026 (hostname <code>bhs64</code>), puis <code>gateway-setup.sh BHS64 51.161.112.61 10.67.0</code>. Clé publique WireGuard du hub <code>QrpSXW8mIJjGMuB3eiP2LQJGpFgV6lTmBG9v0Cxsiz0=</code>. Les Macs s'y raccordent par leur interface <code>wg1</code> (10.67.0.x). Les certificats Let's Encrypt ont été copiés depuis R9128 pour un HTTPS immédiat. Latence ≈ 10 ms depuis Saint-Augustin. Outils : <code>tunnelctl</code> sur place, <code>mlt</code> sur le laptop (cible par défaut), <code>mld tunnel …</code> via M1M32. Toute route est repointée automatiquement à chaque <code>mld deploy</code>/<code>move</code>. Renouvellement automatique le 10 octobre 2026, sans engagement ; monitoring OVH avec intervention proactive.</p><p><strong>BHS64b</strong> — jumeau exact de BHS64, installé le 10 septembre en soirée (hostname <code>bhs64b</code>). Décision : aucun rôle pour l'instant et <strong>ce ne sera pas une passerelle tunnel</strong> ; réservé pour un autre usage.</p><p><strong>BHS128</strong> — ADVANCE-1 de 128 Go, installé le 10 septembre à 22 h 26 (hostname <code>bhs128</code>) ; 3 clés vérifiées depuis le laptop, M1M32 et M4M64a, sudo, fuseau et paquets de base OK (git, python3, tmux, jq, rsync, wireguard, ufw…). Aucun rôle : <strong>réserve prête à accueillir une app ou autre chose</strong>. Pour publier un site depuis ce serveur : le raccorder au hub BHS64 en pair WireGuard, puis <code>mlt add <domaine> BHS128:<port></code>.</p><p><strong>R9128</strong> — RISE-L installé le 8 septembre 2026 (hostname <code>r9128</code>). Première passerelle du tunnel (hub 10.66.0.1, Macs via <code>wg0</code>), devenue secours quand BHS64 a pris le relais (≈ +75 ms depuis le Québec). A hébergé SPB AI (API LLM llama.cpp CPU) le 9 septembre, retirée le jour même. Restent build-essential, cmake. Renouvellement automatique le 8 octobre 2026.</p></div>188</section>189190<section class='sec'><div class='sec-h'><span class='num'>5</span><h2>Topologie publique : tunnel et sites</h2></div><p class=lead>Les 36 domaines publics arrivent sur BHS64 (DNS <code>A → 51.161.112.61</code>) et sont relayés par WireGuard vers le nœud qui porte l'app. <code>mld</code> pose et repointe les routes ; <code>mld heal</code> répare pairs et routes manquants.</p>191<table class='t tun'><col style='width:22%'><col style='width:78%'><thead><tr><th>Nœud (wg1)</th><th>Sites publics (→ port local)</th></tr></thead><tbody><tr><td class="id">M3U96a (10.67.0.10)</td><td>www.administration-ka.com (3300), www.fetcha.co (8220), www.job-ka.com (8096), www.polyllm.io (8240), www.qc26.ca (8200) + redirection qc26.ca, www.rareindex.io (8210), www.sorti-ka.com (8120), www.uqo-imm1033.app (8161), www.vrai-prix.com (8090)</td></tr><tr><td class="id">M3U96b (10.67.0.11)</td><td>www.hfmarketdata.io (8090)</td></tr><tr><td class="id">M2U64 (10.67.0.12)</td><td>app.maclustr.io (8787), cloud.spboucher.ai (5001), console.maclustr.io (3000), node.maclustr.io (8003), www.food-ka.com (8097), www.spboucher.ai (3100), www.uqo-eval.app (8150), www.vquant.ai (5000)</td></tr><tr><td class="id">M4M64a (10.67.0.13)</td><td>www.fabri-ka.com (8097), www.ka-stats.com (8140), www.lou-ka.com (8095), www.maclustr.io (8280), www.pdb-api.co (8270), www.uqo-chat.app (8190)</td></tr><tr><td class="id">M4M64b (10.67.0.14)</td><td>www.api-ka.com (8000), www.auto-ka.com (8095), www.cancerindex.io (8250), www.groupe-ka.com (8110), www.immo-ka.com (8096), www.uqo-imm1003.app (8160), www.websensor.io (8260)</td></tr><tr><td class="id">M4M36 (10.67.0.17)</td><td>www.ka2.bot (8799), www.ka4.bot (8899), www.ka6.bot (8999)</td></tr><tr><td class="id">M1M32 (10.67.0.2)</td><td>git.spboucher.ai (7420)</td></tr><tr><td class="id">M2M32 (10.67.0.18), m4mh (.47), m1m16b (.48), m4mi (.49), m4mj (.50), m4mk (.51)</td><td>raccordés au tunnel, aucune route (prêts à publier)</td></tr></tbody></table>192<div class='three-col'>193 <div class='panel'><h4>Chemin d'une requête</h4>194 <ol class='flow'><li><div><b>DNS</b><span>A → 51.161.112.61 (BHS64, Beauharnois) ; secours 51.255.75.61 (R9128, Gravelines)</span></div></li><li><div><b>Caddy</b><span>termine le TLS Let’s Encrypt et choisit l'upstream d'après l'hôte</span></div></li><li><div><b>WireGuard</b><span>hub 10.67.0.1 → interface wg1 du nœud (10.67.0.x), MTU 1380, keepalive 25 s</span></div></li><li><div><b>Nœud</b><span>processus PM2 ou launchd sur le port local ; healthcheck local puis public à chaque déploiement</span></div></li></ol>195 </div>196 <div class='panel'><h4>Passerelles live</h4>197 <div class='gw'><b>BHS64</b><span>principale · Beauharnois (Québec)</span><span class='mono'>36 routes · 14/14 pairs · 51,4 Go reçus</span></div><div class='gw'><b>R9128</b><span>secondaire · Gravelines (France)</span><span class='mono'>2 routes · 3/3 pairs · 0,4 Go reçus</span></div>198 </div>199 <div class='panel'><h4>Services internes</h4><p class='small' style='color:var(--ink-2)'>maclustr-agentd (M4M64a:9210, API Bearer, routes <code>/api/cluster</code>, <code>/api/apps</code>, <code>/api/tunnel</code>, <code>/api/events</code>) alimente les apps macOS MacLustr 3.0.7 et iOS 4.2.0 ; Postgres 17 local sur M3U96a, M2U64, M4M64a, M4M64b et M1M32 ; Redis sur M3U96a, M3U96b, M4M64b ; Docker sur les Studios et M2M32/M2M32b.</p></div>200</div>201</section>202203<section class='sec'><div class='sec-h'><span class='num'>6</span><h2>Emplacements et carte</h2></div><p class=lead>7 sites dans 6 pays sur trois continents. Le LAN de Saint-Augustin porte le cœur du cluster ; Beauharnois et Gravelines publient les sites ; Istanbul, Atlanta, Dublin et Limassol étendent la capacité. Géolocalisation vérifiée par IP et latence.</p>204<figure class='map'><img src='map.png' alt='Carte mondiale des nœuds'><figcaption>Vue d'ensemble : épingles dimensionnées selon le nombre de nœuds, arcs WireGuard vers les passerelles OVHcloud. Capture du site www.maclustr.io/map.</figcaption></figure>205<div class='sites'><div class='site'><div class='s-h'><b>Saint-Augustin-de-Desmaures</b><span class='mono'>21 nœuds</span></div><div class='s-r'>Québec, Canada · MacLustr (LAN privé) · <span class='mono'>46.74, -71.46</span></div><p>Le cœur du cluster : 21 Macs sur un réseau local 10 GbE, deux NAS UGREEN.</p><div class='s-n'><span>M3U96a</span><span>M3U96b</span><span>M2U64</span><span>M4M64a</span><span>M4M64b</span><span>M4BP48</span><span>M4BP36</span><span>M4M36</span><span>M2M32</span><span>M2M32b</span><span>M2M32c</span><span>m4mc</span><span>M1M32</span><span>m4ma</span><span>m4mb</span><span>m4md</span><span>m2m16</span><span>M3BA24</span><span>M3BA16</span><span>m2m8a</span><span>m2m8b</span></div></div><div class='site'><div class='s-h'><b>Istanbul</b><span class='mono'>8 nœuds</span></div><div class='s-r'>Turquie · Macly (réseau Erlion) · <span class='mono'>41.01, 28.98</span></div><p>Huit Macs dédiés loués : un Mac Studio M1 Max 64 Go et sept Mac mini.</p><div class='s-n'><span>M1M64</span><span>m4me</span><span>m4mf</span><span>m4mh</span><span>m1m16b</span><span>m4mi</span><span>m4mj</span><span>m4mk</span></div></div><div class='site'><div class='s-h'><b>Beauharnois</b><span class='mono'>3 nœuds</span></div><div class='s-r'>Québec, Canada · OVHcloud BHS8 · <span class='mono'>45.31, -73.87</span></div><p>Passerelle principale du MacLustr Tunnel et deux serveurs de réserve. ≈ 10 ms du LAN.</p><div class='s-n'><span>BHS64</span><span>BHS64b</span><span>BHS128</span></div></div><div class='site'><div class='s-h'><b>Dublin</b><span class='mono'>2 nœuds</span></div><div class='s-r'>Irlande · MacStadium · <span class='mono'>53.34, -6.25</span></div><p>Deux Mac mini dédiés (M1, M2).</p><div class='s-n'><span>m1m16</span><span>m2m16c</span></div></div><div class='site'><div class='s-h'><b>Gravelines</b><span class='mono'>1 nœud</span></div><div class='s-r'>Hauts-de-France, France · OVHcloud GRA1 · <span class='mono'>50.99, 2.13</span></div><p>Passerelle secondaire : secours et présence européenne.</p><div class='s-n'><span>R9128</span></div></div><div class='site'><div class='s-h'><b>Atlanta</b><span class='mono'>1 nœud</span></div><div class='s-r'>Géorgie, États-Unis · MacStadium · <span class='mono'>33.79, -84.41</span></div><p>Mac mini M2 Pro dédié.</p><div class='s-n'><span>m2m16b</span></div></div><div class='site'><div class='s-h'><b>Limassol</b><span class='mono'>1 nœud</span></div><div class='s-r'>Chypre · rentamac · <span class='mono'>34.69, 33.04</span></div><p>Mac mini M4 derrière NAT, joint par la passerelle SSH du fournisseur.</p><div class='s-n'><span>m4mg</span></div></div></div>206</section>207208<section class='sec'><div class='sec-h'><span class='num'>7</span><h2>Répartitions et capacité</h2></div>209<h3>7a. Par emplacement</h3>210<table class='t bars'><col style='width:24%'><col style='width:6%'><col style='width:26%'><col style='width:22%'><col><thead><tr><th>Emplacement</th><th class='r'>Nœuds</th><th>Cœurs / threads</th><th>Mémoire</th><th>Alias</th></tr></thead><tbody><tr><td class='id'>Saint-Augustin-de-Desmaures<br><small>Québec, Canada · MacLustr (LAN privé)</small></td><td class='r'>21</td><td class='meter wide'><span class='bar '><i style='width:100%'></i></span><span class='v'>294 cœurs</span></td><td class='meter wide'><span class='bar alt'><i style='width:100%'></i></span><span class='v'>784 Go</span></td><td class='mono small'>M3U96a, M3U96b, M2U64, M4M64a, M4M64b, M4BP48, M4BP36, M4M36, M2M32, M2M32b, M2M32c, m4mc, M1M32, m4ma, m4mb, m4md, m2m16, M3BA24, M3BA16, m2m8a, m2m8b</td></tr><tr><td class='id'>Istanbul<br><small>Turquie · Macly (réseau Erlion)</small></td><td class='r'>8</td><td class='meter wide'><span class='bar '><i style='width:26.53061224489796%'></i></span><span class='v'>78 cœurs</span></td><td class='meter wide'><span class='bar alt'><i style='width:22.448979591836736%'></i></span><span class='v'>176 Go</span></td><td class='mono small'>M1M64, m4me, m4mf, m4mh, m1m16b, m4mi, m4mj, m4mk</td></tr><tr><td class='id'>Beauharnois<br><small>Québec, Canada · OVHcloud BHS8</small></td><td class='r'>3</td><td class='meter wide'><span class='bar '><i style='width:14.965986394557824%'></i></span><span class='v'>44 thr</span></td><td class='meter wide'><span class='bar alt'><i style='width:32.6530612244898%'></i></span><span class='v'>256 Go</span></td><td class='mono small'>BHS64, BHS64b, BHS128</td></tr><tr><td class='id'>Dublin<br><small>Irlande · MacStadium</small></td><td class='r'>2</td><td class='meter wide'><span class='bar '><i style='width:5.442176870748299%'></i></span><span class='v'>16 cœurs</span></td><td class='meter wide'><span class='bar alt'><i style='width:4.081632653061225%'></i></span><span class='v'>32 Go</span></td><td class='mono small'>m1m16, m2m16c</td></tr><tr><td class='id'>Gravelines<br><small>Hauts-de-France, France · OVHcloud GRA1</small></td><td class='r'>1</td><td class='meter wide'><span class='bar '><i style='width:10.884353741496598%'></i></span><span class='v'>32 thr</span></td><td class='meter wide'><span class='bar alt'><i style='width:16.3265306122449%'></i></span><span class='v'>128 Go</span></td><td class='mono small'>R9128</td></tr><tr><td class='id'>Atlanta<br><small>Géorgie, États-Unis · MacStadium</small></td><td class='r'>1</td><td class='meter wide'><span class='bar '><i style='width:3.4013605442176873%'></i></span><span class='v'>10 cœurs</span></td><td class='meter wide'><span class='bar alt'><i style='width:2.0408163265306123%'></i></span><span class='v'>16 Go</span></td><td class='mono small'>m2m16b</td></tr><tr><td class='id'>Limassol<br><small>Chypre · rentamac</small></td><td class='r'>1</td><td class='meter wide'><span class='bar '><i style='width:3.4013605442176873%'></i></span><span class='v'>10 cœurs</span></td><td class='meter wide'><span class='bar alt'><i style='width:2.0408163265306123%'></i></span><span class='v'>16 Go</span></td><td class='mono small'>m4mg</td></tr></tbody></table>211<h3>7b. Par modèle et par puce</h3><table class='t models'><thead><tr><th>Famille</th><th class=r>Local</th><th class=r>Loués</th><th class=r>OVH</th><th class=r>Total</th></tr></thead><tbody><tr><td class="id">Mac Studio</td><td class="r nw">11</td><td class="r nw">1</td><td class="r nw">—</td><td class="r nw">12</td></tr><tr><td class="id">Mac mini</td><td class="r nw">6</td><td class="r nw">11</td><td class="r nw">—</td><td class="r nw">17</td></tr><tr><td class="id">MacBook Pro</td><td class="r nw">2</td><td class="r nw">—</td><td class="r nw">—</td><td class="r nw">2</td></tr><tr><td class="id">MacBook Air</td><td class="r nw">2</td><td class="r nw">—</td><td class="r nw">—</td><td class="r nw">2</td></tr><tr><td class="id">Serveur x86 (AMD EPYC 4345P ×2, EPYC 4245P, Ryzen 9 9950X)</td><td class="r nw">—</td><td class="r nw">—</td><td class="r nw">4</td><td class="r nw">4</td></tr><tr><td class="id">Puces Apple : M4 (Max ×5, Pro ×1, base ×10) 16 · M3 (Ultra ×2, base ×2) 4 · M2 (Ultra ×1, Max ×3, Pro ×2, base ×3) 9 · M1 (Max ×2, base ×2) 4</td><td class="r nw"></td><td class="r nw"></td><td class="r nw"></td><td class="r nw">33</td></tr></tbody></table>212<div class='keep'><h3>7c. Capacité libre</h3><p class='lead'>Capacité libre</p>213<div class='kpis three'><div class='kpi'><b>14</b><span>nœuds LAN libres</span><small>150 cœurs · 332 Go</small></div><div class='kpi'><b>12</b><span>Macs loués libres</span><small>114 cœurs · 240 Go</small></div><div class='kpi'><b>2</b><span>serveurs OVH libres</span><small>BHS64b 64 Go · BHS128 128 Go</small></div></div></div>214</section>215216<section class='sec'><div class='sec-h'><span class='num'>8</span><h2>Applications hébergées</h2></div><p class=lead>36 applications, toutes décrites par un manifeste mld (dir, processus, runtimes, RAM, ports, placement, tunnel). Le registre M1M32:~/dispatch/registry.json est la seule source de vérité de « quelle app tourne où » ; état confirmé par maclustr-agentd au moment de la génération.</p>217<div class='app-group'><h3>Groupe Ka <span class='cnt'>15</span></h3><p class='lead'>L'écosystème immobilier, automobile, alimentaire et emploi du Québec : une famille de plateformes qui partagent identité (KA ID), données (API·Ka) et gardiens autonomes.</p><table class='t apps'><col style='width:15%'><col style='width:19%'><col style='width:11%'><col><col style='width:15%'><thead><tr><th>Application</th><th>Domaine</th><th>Nœud</th><th>Description</th><th>État</th></tr></thead><tbody><tr><td class='id'>Groupe Ka</td><td class='mono'>www.groupe-ka.com</td><td class='mono nw'>M4M64b<span class='faint'>:8110</span></td><td>Portail du groupe : vision, univers, dossier investisseurs.</td><td class='nw'><span class='st on'>en ligne</span> <span class='faint mono small'>77 ms · 94 % / 24 h</span></td></tr><tr><td class='id'>Lou·Ka</td><td class='mono'>www.lou-ka.com</td><td class='mono nw'>M4M64a<span class='faint'>:8095</span></td><td>Location résidentielle : annonces, carte 3D, Lou-Ka Score.</td><td class='nw'><span class='st on'>en ligne</span> <span class='faint mono small'>350 ms · 100 % / 24 h</span></td></tr><tr><td class='id'>Immo·Ka</td><td class='mono'>www.immo-ka.com</td><td class='mono nw'>M4M64b<span class='faint'>:8096</span></td><td>Propriétés à vendre : 70 000+ annonces, analyses de prix, KA Scores.</td><td class='nw'><span class='st on'>en ligne</span> <span class='faint mono small'>66 ms · 94 % / 24 h</span></td></tr><tr><td class='id'>Vrai-Prix</td><td class='mono'>www.vrai-prix.com</td><td class='mono nw'>M3U96a<span class='faint'>:8090</span></td><td>Évaluation hédonique, méthode du coût, statistiques de marché.</td><td class='nw'><span class='st on'>en ligne</span> <span class='faint mono small'>60 ms · 90 % / 24 h</span></td></tr><tr><td class='id'>Auto·Ka</td><td class='mono'>www.auto-ka.com</td><td class='mono nw'>M4M64b<span class='faint'>:8095</span></td><td>Marché automobile : véhicules, prix, fiches v3.</td><td class='nw'><span class='st on'>en ligne</span> <span class='faint mono small'>300 ms · 94 % / 24 h</span></td></tr><tr><td class='id'>Fabri·Ka</td><td class='mono'>www.fabri-ka.com</td><td class='mono nw'>M4M64a<span class='faint'>:8097</span></td><td>Artisans, fabricants et ateliers du Québec.</td><td class='nw'><span class='st on'>en ligne</span> <span class='faint mono small'>39 ms · 100 % / 24 h</span></td></tr><tr><td class='id'>Food·Ka</td><td class='mono'>www.food-ka.com</td><td class='mono nw'>M2U64<span class='faint'>:8097</span></td><td>Alimentation : produits, commerces, prix.</td><td class='nw'><span class='st on'>en ligne</span> <span class='faint mono small'>134 ms · 93 % / 24 h</span></td></tr><tr><td class='id'>Sorti·Ka</td><td class='mono'>www.sorti-ka.com</td><td class='mono nw'>M3U96a<span class='faint'>:8120</span></td><td>Sorties, événements et activités.</td><td class='nw'><span class='st on'>en ligne</span> <span class='faint mono small'>158 ms · 90 % / 24 h</span></td></tr><tr><td class='id'>Job·Ka</td><td class='mono'>www.job-ka.com</td><td class='mono nw'>M3U96a<span class='faint'>:8096</span></td><td>Emplois et carrières.</td><td class='nw'><span class='st on'>en ligne</span> <span class='faint mono small'>146 ms · 90 % / 24 h</span></td></tr><tr><td class='id'>API·Ka</td><td class='mono'>www.api-ka.com</td><td class='mono nw'>M4M64b<span class='faint'>:8000</span></td><td>API unifiée du groupe : Postgres 17, Redis, 24 outils agent.</td><td class='nw'><span class='st on'>en ligne</span> <span class='faint mono small'>79 ms · 94 % / 24 h</span></td></tr><tr><td class='id'>Ka·Stats</td><td class='mono'>www.ka-stats.com</td><td class='mono nw'>M4M64a<span class='faint'>:8140</span></td><td>Observatoire statistique des univers Ka.</td><td class='nw'><span class='st on'>en ligne</span> <span class='faint mono small'>47 ms · 100 % / 24 h</span></td></tr><tr><td class='id'>Administration·Ka</td><td class='mono'>www.administration-ka.com</td><td class='mono nw'>M3U96a<span class='faint'>:3300</span></td><td>Console d'administration multi-sites, pilotée par le registre mld.</td><td class='nw'><span class='st on'>en ligne</span> <span class='faint mono small'>44 ms · 90 % / 24 h</span></td></tr><tr><td class='id'>Gardien ka2</td><td class='mono'>www.ka2.bot</td><td class='mono nw'>M4M36<span class='faint'>:8799</span></td><td>Agent gardien autonome : surveillance et réparation.</td><td class='nw'><span class='st on'>en ligne</span> <span class='faint mono small'>74 ms · 94 % / 24 h</span></td></tr><tr><td class='id'>Gardien ka4</td><td class='mono'>www.ka4.bot</td><td class='mono nw'>M4M36<span class='faint'>:8899</span></td><td>Agent gardien autonome.</td><td class='nw'><span class='st on'>en ligne</span> <span class='faint mono small'>73 ms · 94 % / 24 h</span></td></tr><tr><td class='id'>Gardien ka6</td><td class='mono'>www.ka6.bot</td><td class='mono nw'>M4M36<span class='faint'>:8999</span></td><td>Agent gardien autonome.</td><td class='nw'><span class='st on'>en ligne</span> <span class='faint mono small'>76 ms · 94 % / 24 h</span></td></tr></tbody></table></div><div class='app-group'><h3>Données & intelligence <span class='cnt'>9</span></h3><p class='lead'>Indices, marchés et infrastructures de données servis en API publiques.</p><table class='t apps'><col style='width:15%'><col style='width:19%'><col style='width:11%'><col><col style='width:15%'><thead><tr><th>Application</th><th>Domaine</th><th>Nœud</th><th>Description</th><th>État</th></tr></thead><tbody><tr><td class='id'>HF Market Data</td><td class='mono'>www.hfmarketdata.io</td><td class='mono nw'>M3U96b<span class='faint'>:8090</span></td><td>Données de marché haute fréquence : actions, futures, options, fondamentaux SEC. API + MCP.</td><td class='nw'><span class='st on'>en ligne</span> <span class='faint mono small'>79 ms · 94 % / 24 h</span></td></tr><tr><td class='id'>RareIndex</td><td class='mono'>www.rareindex.io</td><td class='mono nw'>M3U96a<span class='faint'>:8210</span></td><td>Intelligence de marché des objets de collection : 212 connecteurs.</td><td class='nw'><span class='st on'>en ligne</span> <span class='faint mono small'>49 ms · 90 % / 24 h</span></td></tr><tr><td class='id'>CancerIndex</td><td class='mono'>www.cancerindex.io</td><td class='mono nw'>M4M64b<span class='faint'>:8250</span></td><td>Index mondial des cancers : 9 510 entités NCIt, 13 connecteurs, pgvector.</td><td class='nw'><span class='st on'>en ligne</span> <span class='faint mono small'>49 ms · 94 % / 24 h</span></td></tr><tr><td class='id'>WebSensor</td><td class='mono'>www.websensor.io</td><td class='mono nw'>M4M64b<span class='faint'>:8260</span></td><td>Détection de changements web : 4 000+ capteurs, 16 connecteurs.</td><td class='nw'><span class='st on'>en ligne</span> <span class='faint mono small'>42 ms · 94 % / 24 h</span></td></tr><tr><td class='id'>Fetcha</td><td class='mono'>www.fetcha.co</td><td class='mono nw'>M3U96a<span class='faint'>:8220</span></td><td>Infrastructure d'accès web intelligent : scrape, crawl, map, SDK.</td><td class='nw'><span class='st on'>en ligne</span> <span class='faint mono small'>48 ms · 90 % / 24 h</span></td></tr><tr><td class='id'>PolyLLM</td><td class='mono'>www.polyllm.io</td><td class='mono nw'>M3U96a<span class='faint'>:8240</span></td><td>Une interface, tous les modèles : 9 fournisseurs, Arena, BYOK.</td><td class='nw'><span class='st on'>en ligne</span> <span class='faint mono small'>46 ms · 90 % / 24 h</span></td></tr><tr><td class='id'>vQuant</td><td class='mono'>www.vquant.ai</td><td class='mono nw'>M2U64<span class='faint'>:5000</span></td><td>Terminal quantitatif : indices, portefeuilles, MFA.</td><td class='nw'><span class='st on'>en ligne</span> <span class='faint mono small'>79 ms · 93 % / 24 h</span></td></tr><tr><td class='id'>QC26</td><td class='mono'>www.qc26.ca</td><td class='mono nw'>M3U96a<span class='faint'>:8200</span></td><td>L'élection québécoise 2026 en données : sondages, Monte Carlo, revue de presse.</td><td class='nw'><span class='st on'>en ligne</span> <span class='faint mono small'>58 ms · 89 % / 24 h</span></td></tr><tr><td class='id'>PDB API</td><td class='mono'>www.pdb-api.co</td><td class='mono nw'>M4M64a<span class='faint'>:8270</span></td><td>Explorateur et API de la base SPID (FastAPI + DuckDB).</td><td class='nw'><span class='st on'>en ligne</span> <span class='faint mono small'>40 ms · 100 % / 24 h</span></td></tr></tbody></table></div><div class='app-group keep'><h3>Enseignement UQO <span class='cnt'>4</span></h3><p class='lead'>Outils de cours interactifs, tuteur IA et ateliers d'évaluation immobilière.</p><table class='t apps'><col style='width:15%'><col style='width:19%'><col style='width:11%'><col><col style='width:15%'><thead><tr><th>Application</th><th>Domaine</th><th>Nœud</th><th>Description</th><th>État</th></tr></thead><tbody><tr><td class='id'>UQO Éval</td><td class='mono'>www.uqo-eval.app</td><td class='mono nw'>M2U64<span class='faint'>:8150</span></td><td>Atelier d'évaluation immobilière : hédonique, coût, à vendre, marché.</td><td class='nw'><span class='st on'>en ligne</span> <span class='faint mono small'>47 ms · 93 % / 24 h</span></td></tr><tr><td class='id'>UQO IMM1003</td><td class='mono'>www.uqo-imm1003.app</td><td class='mono nw'>M4M64b<span class='faint'>:8160</span></td><td>Notes de cours interactives et séances vidéo.</td><td class='nw'><span class='st on'>en ligne</span> <span class='faint mono small'>48 ms · 94 % / 24 h</span></td></tr><tr><td class='id'>UQO IMM1033</td><td class='mono'>www.uqo-imm1033.app</td><td class='mono nw'>M3U96a<span class='faint'>:8161</span></td><td>Notes de cours interactives et séances vidéo.</td><td class='nw'><span class='st on'>en ligne</span> <span class='faint mono small'>61 ms · 90 % / 24 h</span></td></tr><tr><td class='id'>UQO-Chat</td><td class='mono'>www.uqo-chat.app</td><td class='mono nw'>M4M64a<span class='faint'>:8190</span></td><td>Tuteur IA des cours IMM1003 et IMM1033, sur invitation.</td><td class='nw'><span class='st on'>en ligne</span> <span class='faint mono small'>52 ms · 100 % / 24 h</span></td></tr></tbody></table></div><div class='app-group keep'><h3>Plateforme MacLustr <span class='cnt'>6</span></h3><p class='lead'>Les services qui font tourner le cluster lui-même.</p><table class='t apps'><col style='width:15%'><col style='width:19%'><col style='width:11%'><col><col style='width:15%'><thead><tr><th>Application</th><th>Domaine</th><th>Nœud</th><th>Description</th><th>État</th></tr></thead><tbody><tr><td class='id'>www.maclustr.io</td><td class='mono'>www.maclustr.io</td><td class='mono nw'>M4M64a<span class='faint'>:8280</span></td><td>Cette page : vitrine du cluster, inventaire et état live des nœuds et des applications.</td><td class='nw'><span class='st on'>en ligne</span> <span class='faint mono small'>46 ms · 99 % / 24 h</span></td></tr><tr><td class='id'>maclustr-agentd</td><td class='mono'>service interne</td><td class='mono nw'>M4M64a<span class='faint'>:9210</span></td><td>Agent de supervision : métriques des 33 nœuds, santé des apps, état du tunnel. Alimente les apps macOS et iOS MacLustr et ce site.</td><td class='nw'><span class='st on'>en ligne</span> <span class='faint mono small'>100 % / 24 h</span></td></tr><tr><td class='id'>Console MacLustr</td><td class='mono'>console.maclustr.io</td><td class='mono nw'>M2U64<span class='faint'>:3000</span></td><td>Console web du cluster.</td><td class='nw'><span class='st on'>en ligne</span> <span class='faint mono small'>74 ms · 93 % / 24 h</span></td></tr><tr><td class='id'>App Manager</td><td class='mono'>app.maclustr.io</td><td class='mono nw'>M2U64<span class='faint'>:8787</span></td><td>Gestionnaire d'applications.</td><td class='nw'><span class='st on'>en ligne</span> <span class='faint mono small'>78 ms · 93 % / 24 h</span></td></tr><tr><td class='id'>Node Pages</td><td class='mono'>node.maclustr.io</td><td class='mono nw'>M2U64<span class='faint'>:8003</span></td><td>Pages de bord par nœud.</td><td class='nw'><span class='st on'>en ligne</span> <span class='faint mono small'>68 ms · 93 % / 24 h</span></td></tr><tr><td class='id'>spbgit</td><td class='mono'>git.spboucher.ai</td><td class='mono nw'>M1M32<span class='faint'>:7420</span></td><td>Forge git privée : dépôts bare de toutes les apps, source de vérité du code.</td><td class='nw'><span class='st on'>en ligne</span> <span class='faint mono small'>94 ms · 94 % / 24 h</span></td></tr></tbody></table></div><div class='app-group keep'><h3>SPB <span class='cnt'>2</span></h3><p class='lead'>Sites et services personnels.</p><table class='t apps'><col style='width:15%'><col style='width:19%'><col style='width:11%'><col><col style='width:15%'><thead><tr><th>Application</th><th>Domaine</th><th>Nœud</th><th>Description</th><th>État</th></tr></thead><tbody><tr><td class='id'>spboucher.ai</td><td class='mono'>www.spboucher.ai</td><td class='mono nw'>M2U64<span class='faint'>:3100</span></td><td>Site personnel.</td><td class='nw'><span class='st on'>en ligne</span> <span class='faint mono small'>76 ms · 93 % / 24 h</span></td></tr><tr><td class='id'>SPB Cloud</td><td class='mono'>cloud.spboucher.ai</td><td class='mono nw'>M2U64<span class='faint'>:5001</span></td><td>Nuage privé : fichiers, partage, OTP, réorganisation IA.</td><td class='nw'><span class='st on'>en ligne</span> <span class='faint mono small'>76 ms · 93 % / 24 h</span></td></tr></tbody></table></div>218</section>219220<section class='sec'><div class='sec-h'><span class='num'>9</span><h2>Instantané live</h2></div><p class=lead>Mesures de maclustr-agentd le 10 septembre 2026 à 23 h 09 : 32/33 Macs en ligne, CPU moyen 13,6 %, 296 Go de mémoire utilisés sur 1 008 Go en ligne, 20 870 processus, 36/37 applications saines.</p>221<table class='t heat'><col style='width:9%'><col style='width:9%'><col style='width:5%'><col style='width:6%'><col style='width:9%'><col style='width:15%'><col style='width:19%'><col style='width:19%'><col style='width:4%'><col><thead><tr><th>Nœud</th><th>Puce</th><th class='r'>Cœurs</th><th class='r'>RAM</th><th>État</th><th>CPU</th><th>Mémoire</th><th>Disque</th><th class='r'>Load</th><th>macOS</th></tr></thead><tbody><tr><td class='id'>M3U96a</td><td>M3 Ultra</td><td class='r'>32</td><td class='r'>96 Go</td><td><span class='st on'>en ligne</span></td><td class='meter'><span class='bar '><i style='width:15.2%'></i></span><span class='v'>15 %</span></td><td class='meter'><span class='bar '><i style='width:17.8125%'></i></span><span class='v'>17,1 / 96 Go</span></td><td class='meter'><span class='bar '><i style='width:1.187904967602592%'></i></span><span class='v'>11 / 926 Go</span></td><td class='r mono'>3.11</td><td class='mono'>26.6</td></tr><tr><td class='id'>M3U96b</td><td>M3 Ultra</td><td class='r'>32</td><td class='r'>96 Go</td><td><span class='st on'>en ligne</span></td><td class='meter'><span class='bar '><i style='width:10.3%'></i></span><span class='v'>10 %</span></td><td class='meter'><span class='bar '><i style='width:16.5625%'></i></span><span class='v'>15,9 / 96 Go</span></td><td class='meter'><span class='bar '><i style='width:1.187904967602592%'></i></span><span class='v'>11 / 926 Go</span></td><td class='r mono'>1.91</td><td class='mono'>26.4</td></tr><tr><td class='id'>M2U64</td><td>M2 Ultra</td><td class='r'>24</td><td class='r'>64 Go</td><td><span class='st on'>en ligne</span></td><td class='meter'><span class='bar '><i style='width:5.4%'></i></span><span class='v'>5 %</span></td><td class='meter'><span class='bar '><i style='width:17.34375%'></i></span><span class='v'>11,1 / 64 Go</span></td><td class='meter'><span class='bar '><i style='width:1.187904967602592%'></i></span><span class='v'>11 / 926 Go</span></td><td class='r mono'>1.16</td><td class='mono'>26.5</td></tr><tr><td class='id'>M4M64a</td><td>M4 Max</td><td class='r'>16</td><td class='r'>64 Go</td><td><span class='st on'>en ligne</span></td><td class='meter'><span class='bar '><i style='width:25.2%'></i></span><span class='v'>25 %</span></td><td class='meter'><span class='bar '><i style='width:20.9375%'></i></span><span class='v'>13,4 / 64 Go</span></td><td class='meter'><span class='bar '><i style='width:1.187904967602592%'></i></span><span class='v'>11 / 926 Go</span></td><td class='r mono'>1.61</td><td class='mono'>26.5.1</td></tr><tr><td class='id'>M4M64b</td><td>M4 Max</td><td class='r'>16</td><td class='r'>64 Go</td><td><span class='st on'>en ligne</span></td><td class='meter'><span class='bar '><i style='width:14.9%'></i></span><span class='v'>15 %</span></td><td class='meter'><span class='bar '><i style='width:22.03125%'></i></span><span class='v'>14,1 / 64 Go</span></td><td class='meter'><span class='bar '><i style='width:1.187904967602592%'></i></span><span class='v'>11 / 926 Go</span></td><td class='r mono'>3.06</td><td class='mono'>26.5.1</td></tr><tr><td class='id'>M4BP48</td><td>M4 Max</td><td class='r'>16</td><td class='r'>48 Go</td><td><span class='st on'>en ligne</span></td><td class='meter'><span class='bar '><i style='width:7.5%'></i></span><span class='v'>8 %</span></td><td class='meter'><span class='bar '><i style='width:25.208333333333332%'></i></span><span class='v'>12,1 / 48 Go</span></td><td class='meter'><span class='bar '><i style='width:1.2958963282937366%'></i></span><span class='v'>12 / 926 Go</span></td><td class='r mono'>1.49</td><td class='mono'>26.5.1</td></tr><tr><td class='id'>M4BP36</td><td>M4 Max</td><td class='r'>14</td><td class='r'>36 Go</td><td><span class='st on'>en ligne</span></td><td class='meter'><span class='bar '><i style='width:16.7%'></i></span><span class='v'>17 %</span></td><td class='meter'><span class='bar '><i style='width:27.77777777777778%'></i></span><span class='v'>10,0 / 36 Go</span></td><td class='meter'><span class='bar '><i style='width:1.187904967602592%'></i></span><span class='v'>11 / 926 Go</span></td><td class='r mono'>2.33</td><td class='mono'>26.5.1</td></tr><tr><td class='id'>M4M36</td><td>M4 Max</td><td class='r'>14</td><td class='r'>36 Go</td><td><span class='st on'>en ligne</span></td><td class='meter'><span class='bar '><i style='width:9.6%'></i></span><span class='v'>10 %</span></td><td class='meter'><span class='bar '><i style='width:23.055555555555557%'></i></span><span class='v'>8,3 / 36 Go</span></td><td class='meter'><span class='bar '><i style='width:2.391304347826087%'></i></span><span class='v'>11 / 460 Go</span></td><td class='r mono'>1.44</td><td class='mono'>26.5.2</td></tr><tr><td class='id'>M2M32</td><td>M2 Max</td><td class='r'>12</td><td class='r'>32 Go</td><td><span class='st on'>en ligne</span></td><td class='meter'><span class='bar '><i style='width:10.4%'></i></span><span class='v'>10 %</span></td><td class='meter'><span class='bar '><i style='width:24.0625%'></i></span><span class='v'>7,7 / 32 Go</span></td><td class='meter'><span class='bar '><i style='width:2.391304347826087%'></i></span><span class='v'>11 / 460 Go</span></td><td class='r mono'>1.08</td><td class='mono'>26.5.1</td></tr><tr><td class='id'>M2M32b</td><td>M2 Max</td><td class='r'>12</td><td class='r'>32 Go</td><td><span class='st on'>en ligne</span></td><td class='meter'><span class='bar '><i style='width:9.9%'></i></span><span class='v'>10 %</span></td><td class='meter'><span class='bar '><i style='width:23.125%'></i></span><span class='v'>7,4 / 32 Go</span></td><td class='meter'><span class='bar '><i style='width:2.391304347826087%'></i></span><span class='v'>11 / 460 Go</span></td><td class='r mono'>1.2</td><td class='mono'>26.5.1</td></tr><tr><td class='id'>M2M32c</td><td>M2 Max</td><td class='r'>12</td><td class='r'>32 Go</td><td><span class='st on'>en ligne</span></td><td class='meter'><span class='bar '><i style='width:12.3%'></i></span><span class='v'>12 %</span></td><td class='meter'><span class='bar '><i style='width:24.375%'></i></span><span class='v'>7,8 / 32 Go</span></td><td class='meter'><span class='bar '><i style='width:2.391304347826087%'></i></span><span class='v'>11 / 460 Go</span></td><td class='r mono'>1.3</td><td class='mono'>26.5.1</td></tr><tr><td class='id'>m4mc</td><td>M4 Pro</td><td class='r'>12</td><td class='r'>24 Go</td><td><span class='st on'>en ligne</span></td><td class='meter'><span class='bar '><i style='width:10.4%'></i></span><span class='v'>10 %</span></td><td class='meter'><span class='bar '><i style='width:31.25%'></i></span><span class='v'>7,5 / 24 Go</span></td><td class='meter'><span class='bar '><i style='width:2.391304347826087%'></i></span><span class='v'>11 / 460 Go</span></td><td class='r mono'>1.51</td><td class='mono'>26.5.1</td></tr><tr><td class='id'>M1M32</td><td>M1 Max</td><td class='r'>10</td><td class='r'>32 Go</td><td><span class='st on'>en ligne</span></td><td class='meter'><span class='bar '><i style='width:13.4%'></i></span><span class='v'>13 %</span></td><td class='meter'><span class='bar '><i style='width:25.0%'></i></span><span class='v'>8,0 / 32 Go</span></td><td class='meter'><span class='bar '><i style='width:2.391304347826087%'></i></span><span class='v'>11 / 460 Go</span></td><td class='r mono'>1.63</td><td class='mono'>26.5.1</td></tr><tr><td class='id'>m4ma</td><td>M4</td><td class='r'>10</td><td class='r'>24 Go</td><td><span class='st on'>en ligne</span></td><td class='meter'><span class='bar '><i style='width:12.5%'></i></span><span class='v'>12 %</span></td><td class='meter'><span class='bar '><i style='width:30.416666666666664%'></i></span><span class='v'>7,3 / 24 Go</span></td><td class='meter'><span class='bar '><i style='width:2.391304347826087%'></i></span><span class='v'>11 / 460 Go</span></td><td class='r mono'>1.45</td><td class='mono'>26.5.1</td></tr><tr><td class='id'>m4mb</td><td>M4</td><td class='r'>10</td><td class='r'>16 Go</td><td><span class='st on'>en ligne</span></td><td class='meter'><span class='bar '><i style='width:13.3%'></i></span><span class='v'>13 %</span></td><td class='meter'><span class='bar '><i style='width:46.25%'></i></span><span class='v'>7,4 / 16 Go</span></td><td class='meter'><span class='bar '><i style='width:4.824561403508771%'></i></span><span class='v'>11 / 228 Go</span></td><td class='r mono'>2.14</td><td class='mono'>26.5.1</td></tr><tr><td class='id'>m4md</td><td>M4</td><td class='r'>10</td><td class='r'>16 Go</td><td><span class='st off'>hors ligne</span></td><td class='meter'><span class='bar '><i style='width:0%'></i></span><span class='v'>—</span></td><td class='meter'><span class='bar '><i style='width:0%'></i></span><span class='v'>—</span></td><td class='meter'><span class='bar '><i style='width:0%'></i></span><span class='v'>—</span></td><td class='r mono'>—</td><td class='mono'>—</td></tr><tr><td class='id'>m2m16</td><td>M2 Pro</td><td class='r'>10</td><td class='r'>16 Go</td><td><span class='st on'>en ligne</span></td><td class='meter'><span class='bar '><i style='width:20.5%'></i></span><span class='v'>20 %</span></td><td class='meter'><span class='bar '><i style='width:46.875%'></i></span><span class='v'>7,5 / 16 Go</span></td><td class='meter'><span class='bar '><i style='width:2.391304347826087%'></i></span><span class='v'>11 / 460 Go</span></td><td class='r mono'>1.22</td><td class='mono'>26.4.1</td></tr><tr><td class='id'>M1M64</td><td>M1 Max</td><td class='r'>10</td><td class='r'>64 Go</td><td><span class='st on'>en ligne</span></td><td class='meter'><span class='bar '><i style='width:12.2%'></i></span><span class='v'>12 %</span></td><td class='meter'><span class='bar '><i style='width:12.968750000000002%'></i></span><span class='v'>8,3 / 64 Go</span></td><td class='meter'><span class='bar '><i style='width:0.5920344456404736%'></i></span><span class='v'>11 / 1 858 Go</span></td><td class='r mono'>1.54</td><td class='mono'>26.6.2</td></tr><tr><td class='id'>m2m16b</td><td>M2 Pro</td><td class='r'>10</td><td class='r'>16 Go</td><td><span class='st on'>en ligne</span></td><td class='meter'><span class='bar '><i style='width:25.9%'></i></span><span class='v'>26 %</span></td><td class='meter'><span class='bar '><i style='width:51.87500000000001%'></i></span><span class='v'>8,3 / 16 Go</span></td><td class='meter'><span class='bar '><i style='width:1.6198704103671708%'></i></span><span class='v'>15 / 926 Go</span></td><td class='r mono'>2.36</td><td class='mono'>26.6</td></tr><tr><td class='id'>m4me</td><td>M4</td><td class='r'>10</td><td class='r'>16 Go</td><td><span class='st on'>en ligne</span></td><td class='meter'><span class='bar '><i style='width:14%'></i></span><span class='v'>14 %</span></td><td class='meter'><span class='bar '><i style='width:55.625%'></i></span><span class='v'>8,9 / 16 Go</span></td><td class='meter'><span class='bar '><i style='width:4.824561403508771%'></i></span><span class='v'>11 / 228 Go</span></td><td class='r mono'>1.5</td><td class='mono'>26.6.2</td></tr><tr><td class='id'>m4mf</td><td>M4</td><td class='r'>10</td><td class='r'>16 Go</td><td><span class='st on'>en ligne</span></td><td class='meter'><span class='bar '><i style='width:11.5%'></i></span><span class='v'>12 %</span></td><td class='meter'><span class='bar '><i style='width:54.37499999999999%'></i></span><span class='v'>8,7 / 16 Go</span></td><td class='meter'><span class='bar '><i style='width:4.824561403508771%'></i></span><span class='v'>11 / 228 Go</span></td><td class='r mono'>1.66</td><td class='mono'>26.6.2</td></tr><tr><td class='id'>m4mg</td><td>M4</td><td class='r'>10</td><td class='r'>16 Go</td><td><span class='st on'>en ligne</span></td><td class='meter'><span class='bar '><i style='width:10%'></i></span><span class='v'>10 %</span></td><td class='meter'><span class='bar '><i style='width:53.75%'></i></span><span class='v'>8,6 / 16 Go</span></td><td class='meter'><span class='bar '><i style='width:4.824561403508771%'></i></span><span class='v'>11 / 228 Go</span></td><td class='r mono'>1.41</td><td class='mono'>26.6.2</td></tr><tr><td class='id'>m4mh</td><td>M4</td><td class='r'>10</td><td class='r'>16 Go</td><td><span class='st on'>en ligne</span></td><td class='meter'><span class='bar '><i style='width:12.6%'></i></span><span class='v'>13 %</span></td><td class='meter'><span class='bar '><i style='width:56.875%'></i></span><span class='v'>9,1 / 16 Go</span></td><td class='meter'><span class='bar '><i style='width:4.824561403508771%'></i></span><span class='v'>11 / 228 Go</span></td><td class='r mono'>1.63</td><td class='mono'>26.6.2</td></tr><tr><td class='id'>m4mi</td><td>M4</td><td class='r'>10</td><td class='r'>16 Go</td><td><span class='st on'>en ligne</span></td><td class='meter'><span class='bar '><i style='width:14.7%'></i></span><span class='v'>15 %</span></td><td class='meter'><span class='bar '><i style='width:55.00000000000001%'></i></span><span class='v'>8,8 / 16 Go</span></td><td class='meter'><span class='bar '><i style='width:4.824561403508771%'></i></span><span class='v'>11 / 228 Go</span></td><td class='r mono'>1.57</td><td class='mono'>26.6.2</td></tr><tr><td class='id'>m4mj</td><td>M4</td><td class='r'>10</td><td class='r'>16 Go</td><td><span class='st on'>en ligne</span></td><td class='meter'><span class='bar '><i style='width:11.8%'></i></span><span class='v'>12 %</span></td><td class='meter'><span class='bar '><i style='width:55.00000000000001%'></i></span><span class='v'>8,8 / 16 Go</span></td><td class='meter'><span class='bar '><i style='width:4.824561403508771%'></i></span><span class='v'>11 / 228 Go</span></td><td class='r mono'>1.17</td><td class='mono'>26.6.2</td></tr><tr><td class='id'>m4mk</td><td>M4</td><td class='r'>10</td><td class='r'>16 Go</td><td><span class='st on'>en ligne</span></td><td class='meter'><span class='bar '><i style='width:11%'></i></span><span class='v'>11 %</span></td><td class='meter'><span class='bar '><i style='width:53.75%'></i></span><span class='v'>8,6 / 16 Go</span></td><td class='meter'><span class='bar '><i style='width:4.824561403508771%'></i></span><span class='v'>11 / 228 Go</span></td><td class='r mono'>1.42</td><td class='mono'>26.6.2</td></tr><tr><td class='id'>M3BA24</td><td>M3</td><td class='r'>8</td><td class='r'>24 Go</td><td><span class='st on'>en ligne</span></td><td class='meter'><span class='bar '><i style='width:14.5%'></i></span><span class='v'>14 %</span></td><td class='meter'><span class='bar '><i style='width:43.333333333333336%'></i></span><span class='v'>10,4 / 24 Go</span></td><td class='meter'><span class='bar '><i style='width:2.391304347826087%'></i></span><span class='v'>11 / 460 Go</span></td><td class='r mono'>1.89</td><td class='mono'>26.5.1</td></tr><tr><td class='id'>M3BA16</td><td>M3</td><td class='r'>8</td><td class='r'>16 Go</td><td><span class='st on'>en ligne</span></td><td class='meter'><span class='bar '><i style='width:17%'></i></span><span class='v'>17 %</span></td><td class='meter'><span class='bar '><i style='width:58.12500000000001%'></i></span><span class='v'>9,3 / 16 Go</span></td><td class='meter'><span class='bar '><i style='width:2.608695652173913%'></i></span><span class='v'>12 / 460 Go</span></td><td class='r mono'>1.36</td><td class='mono'>26.5.1</td></tr><tr><td class='id'>m2m8a</td><td>M2</td><td class='r'>8</td><td class='r'>8 Go</td><td><span class='st on'>en ligne</span></td><td class='meter'><span class='bar '><i style='width:18.5%'></i></span><span class='v'>18 %</span></td><td class='meter'><span class='bar '><i style='width:58.75%'></i></span><span class='v'>4,7 / 8 Go</span></td><td class='meter'><span class='bar '><i style='width:2.391304347826087%'></i></span><span class='v'>11 / 460 Go</span></td><td class='r mono'>1.4</td><td class='mono'>26.5.1</td></tr><tr><td class='id'>m2m8b</td><td>M2</td><td class='r'>8</td><td class='r'>8 Go</td><td><span class='st on'>en ligne</span></td><td class='meter'><span class='bar '><i style='width:12.5%'></i></span><span class='v'>12 %</span></td><td class='meter'><span class='bar '><i style='width:58.75%'></i></span><span class='v'>4,7 / 8 Go</span></td><td class='meter'><span class='bar '><i style='width:4.824561403508771%'></i></span><span class='v'>11 / 228 Go</span></td><td class='r mono'>1.3</td><td class='mono'>26.5.1</td></tr><tr><td class='id'>m1m16</td><td>M1</td><td class='r'>8</td><td class='r'>16 Go</td><td><span class='st on'>en ligne</span></td><td class='meter'><span class='bar '><i style='width:12%'></i></span><span class='v'>12 %</span></td><td class='meter'><span class='bar '><i style='width:53.75%'></i></span><span class='v'>8,6 / 16 Go</span></td><td class='meter'><span class='bar '><i style='width:1.187904967602592%'></i></span><span class='v'>11 / 926 Go</span></td><td class='r mono'>1.07</td><td class='mono'>26.6.2</td></tr><tr><td class='id'>m2m16c</td><td>M2</td><td class='r'>8</td><td class='r'>16 Go</td><td><span class='st on'>en ligne</span></td><td class='meter'><span class='bar '><i style='width:13.3%'></i></span><span class='v'>13 %</span></td><td class='meter'><span class='bar '><i style='width:53.75%'></i></span><span class='v'>8,6 / 16 Go</span></td><td class='meter'><span class='bar '><i style='width:1.187904967602592%'></i></span><span class='v'>11 / 926 Go</span></td><td class='r mono'>1.54</td><td class='mono'>26.6.2</td></tr><tr><td class='id'>m1m16b</td><td>M1</td><td class='r'>8</td><td class='r'>16 Go</td><td><span class='st on'>en ligne</span></td><td class='meter'><span class='bar '><i style='width:16%'></i></span><span class='v'>16 %</span></td><td class='meter'><span class='bar '><i style='width:56.25%'></i></span><span class='v'>9,0 / 16 Go</span></td><td class='meter'><span class='bar '><i style='width:6.578947368421052%'></i></span><span class='v'>15 / 228 Go</span></td><td class='r mono'>1.27</td><td class='mono'>26.6.1</td></tr></tbody></table>222</section>223224<section class='sec'><div class='sec-h'><span class='num'>10</span><h2>Sources et méthode</h2></div>225<p><code>mld scan</code>, <code>mld status</code>, <code>mld tunnel status</code> (22 h 30), <code>system_profiler SPHardwareDataType</code>, <code>sw_vers</code>, <code>sysctl hw.model</code>, <code>df -H</code>, <code>uptime</code>, <code>pm2 jlist</code> sur les 33 Macs ; <code>lscpu</code>, <code>free</code>, <code>/proc/mdstat</code>, <code>systemctl</code>, <code>ufw status</code> sur les 4 serveurs OVH ; fiches du manager OVH (ID, baie, IPv6) ; <code>NODES.md</code>, <code>~/.ssh/config</code>, <code>mld/config.py</code>, <code>agentd.py</code>. Géolocalisation des Macs loués : whois / ip-api et temps de connexion mesurés le 9 septembre. Documents complémentaires : <code>NODES.md</code> (identifiants, sudo), <code>MACLUSTR-TUNNEL.md</code> (tunnel), <code>KA-REMOTE-DEV.md</code> (apps Ka), <code>ovh-manager/README.md</code> (installation OVH), <code>cluster-registry.json</code> (registre mld).</p>226<p class='note'>Les identifiants (mots de passe sudo, DeskIn, VNC, jetons) ne figurent pas dans ce dossier : voir <code>NODES.md</code>. Document généré par <code>cluster-skill/dossier/build.py</code> à partir de <code>INVENTAIRE-MACLUSTR.md</code>, de l'inventaire du site www.maclustr.io et de l'API live du cluster ; à régénérer après tout ajout ou retrait de machine.</p>227<div class='end'><svg class='logo' viewBox='0 0 32 32'><rect x='3' y='3' width='11' height='11' rx='2.5' fill='currentColor'/><rect x='18' y='3' width='11' height='11' rx='2.5' fill='currentColor' opacity='.55'/><rect x='3' y='18' width='11' height='11' rx='2.5' fill='currentColor' opacity='.55'/><rect x='18' y='18' width='11' height='11' rx='2.5' fill='currentColor' opacity='.3'/></svg><span>MacLustr · 10 septembre 2026</span></div>228</section>229</body></html>