Flottes multirégion : même binaire, mêmes ports, mêmes sondes. Lorsque Traefik ou frp sont déjà couverts ailleurs, nginx stream garde une surface TCP courte, lisible SOC, sans mélanger HTTP et la poignée TLS d’OpenClaw.
Sur chaque Mac mini M4 vpshalo, isolez OPENCLAW_HOME, liez gateway et doctor à 127.0.0.1, exposez 443 sur le bastion. ssl_preread lit le SNI sans déchiffrer l’applicatif ; les PEM restent sous PKI interne.
- Couplage outil-agent. Sans frontal stable, les agents se reconnectent aléatoirement et les journaux perdent la corrélation régionale.
- Jetons et secrets. Une rotation partielle laisse parfois un PoP authentifié et un autre rejeté, ce qui imite une panne applicative.
- Bruit des sondes. Lorsque status et doctor sont pagés séparément, la même dérive DNS déclenche deux incidents pour un seul symptôme.
| Option d’entrée | Forces opérationnelles | Limite utile à connaître |
|---|---|---|
| Traefik / HAProxy collants | Richesse HTTP, middlewares, observabilité L7 mature | Complexité lorsque seul le TCP brut doit être relayé sans inspection applicative |
| frp STCP | Tunnels prêts à l’emploi, visiteurs nommés, bonne ergonomie edge | Dépendance à la paire frps/frpc et à la discipline des secretKey |
| nginx stream + SNI | Chemin L4 court, cartographie pare-feu classique, ssl_preread standard | Rédaction manuelle des map et surveillance des upstream locaux |
Topologie multirégion : opérateur, bastion, Mac vpshalo
Le client ouvre le TLS vers un nom par PoP ; le bastion termine, lit le SNI, relaie vers 127.0.0.1 (gateway ou doctor). Le Mac vpshalo n’écoute pas ces ports sur l’Internet ; seul le canal de gestion reste exposé.
Versionnez les fragments nginx.conf, mappez jetons et bastions en CMDB. Le digest agrégé (voir plus bas) résume une panne transit sans multiplier les tickets.
Fragment stream : map SNI et proxy_pass
Exemple gateway / doctor ; adaptez hôtes, ports et DNS. Ajoutez proxy_ssl_server_name on si le Mac exige un SNI interne.
stream {
map $ssl_preread_server_name $openclaw_upstream {
gw.vpshalo.example openclaw_gateway;
doc.vpshalo.example openclaw_doctor;
default openclaw_gateway;
}
upstream openclaw_gateway { server 127.0.0.1:18080; }
upstream openclaw_doctor { server 127.0.0.1:18081; }
server {
listen 443;
ssl_preread on;
proxy_pass $openclaw_upstream;
proxy_connect_timeout 5s;
}
}
listen via iptables ou nftables, journalisez les refus de map, testez le repli DNS avant bascule GeoDNS publique et archivez les captures réseau détaillées pour tout audit indépendant.Certificats, chaînes et jetons OpenClaw
PEM sur bastion, rotation ACME liée au PoP dans le secret manager. Sous OpenClaw v2026.5.x, injectez les jetons via systemd ; une rotation partielle imite une panne TLS intermittente — documentez le runbook.
Sur le Mac, contrôlez les bind loopback après déploiement (lsof ou tâche launchd) pour éviter qu’un binaire local ne monopolise le port.
Fusion status / doctor et digest multirégion
Fusionnez status et doctor : worker qui appelle les deux URL derrière le stream, fenêtre cinq minutes, alerte seulement si les deux branches tombent. Publiez un JSON régional du type {"pop":"sg","gw":false,"doc":false} vers l’observabilité.
Superposez un digest inter-PoP pour distinguer bastion isolé et incident transit ; journalisez HTTP et p95 car le doctor surtaxe parfois le simple healthz.
Séquence minimale reproductible (six étapes)
- 1 — OpenClaw sur
127.0.0.1(gateway, doctor) ;curllocal. - 2 — Fragment
stream, reload nginx, capture handshake ciblée. - 3 — SNI public ↔ DNS versionné avec les playbooks.
- 4 — Jetons v2026.5.x via systemd/Vault ; ordre bastion puis Mac.
- 5 — Worker fusion ; panne simulée
iptables DROP. - 6 — Digest multirégion + FAQ interne.
FAQ : nginx, OpenClaw et vpshalo
Faut-il abandonner frp ? Non : choisissez nginx stream lorsque votre SOC exige une pile L4 éprouvée et des ACL simples. Peut-on mixer Traefik pour l’HTTP et nginx pour OpenClaw ? Oui, à condition de séparer clairement les ports et les certificats afin d’éviter les doubles terminaisons TLS. Le Mac doit-il connaître le SNI public ? Seulement si le service loopback le réclame ; sinon laissez le bastion réécrire le nom présenté au backend.
Trois phrases pour cahier des charges ou audit
- Loopback : aucune écoute OpenClaw sur l’interface de gestion du Mac vpshalo sans revue sécurité explicite.
- Stream : chaque SNI mappe vers un seul
upstreamdocumenté, les défauts sont journalisés. - Sondes : la fusion status/doctor réduit le bruit et exige une fenêtre temporelle écrite.
Autres entrées edge : Cloudflare Tunnel, loopback SSH ; ce guide pour un frontal TCP strict.