Terminaison TLS · WebSocket · allowedOrigins · Checklist mise en ligne Docker
Les ingénieurs qui font tourner OpenClaw sur un VPS en Docker et veulent un vrai nom d'hôte HTTPS restent souvent bloqués sur où le Gateway écoute, qui termine le TLS et pourquoi la Control UI signale du cross-origin ou un repli non sûr. L'article propose une table de décision boucle locale plus proxy de bord contre ports conteneur publics, des snippets minimaux Caddy et Nginx, des en-têtes WebSocket et X-Forwarded et un ordre d'acceptation pour allowedOrigins. OOM et premier WASM : long article Docker VPS. Installation : guide v2026.4 ; durcissement : multicanal ; rollback : pin.
En Docker, la prod inclut aussi pare-feu hôte, publish sur 127.0.0.1 seulement, chaîne complète et callbacks HTTPS. Liste pour triage ; détails dans la doc versionnée.
Habitude 0.0.0.0 : Gateway public sans WAF ni audit élargit la surface.
WebSocket partiel : pas de Upgrade / Connection, panneau 502 ou handshake KO.
Dérive host/origin : navigateur en A, config en IP ou alias interne, garde cross-origin.
Certificat avant DNS : émission précoce ou mélange self-signed/public.
Logs et disque : sans rotation, inodes saturés sur petit VPS.
Fenêtre de mise à jour : rolling sans image épinglée sans staging/rollback.
Note : OOM, Exit 137, WASM ou allowedOrigins : voir article triage.
Pour sortir OpenClaw du labo vers un hôte réel : HTTPS, canaux et observabilité sur une même narration d'acceptation.
| Axe | 127.0.0.1 + proxy TLS | Port conteneur public |
|---|---|---|
| Surface minimale | Internet touche 443 seulement, upstream en boucle | ACL réseau et revue de ports continues |
| Certificats | une chaîne Caddy / Nginx / ACME | chaque app ou sidecar dérive |
| WebSocket | modules matures gèrent upgrade et timeouts | en-têtes perdus ; debug direct masque le trou |
| Observabilité | logs edge et upstream joignables via request_id | vous reconstruisez agrégation et alertes |
Principe prod : cocher ensemble « panneau charge » et « les canaux rappellent le https annoncé » sur la même liste.
18789) diverge, parcourir config et compose ; ne modifiez pas seulement le proxy.allowedOrigins doit couvrir l'https réel ; après edits redémarrer froid selon article triage.Compose doit déjà exposer le Gateway loopback uniquement ; sinon finir wizard et baseline compose.
Geler le hostname : A/AAAA vers ce VPS, TTL et fenêtre de maintenance.
Bind Gateway : ss -lntp, vérifier 127.0.0.1 et le bon port.
Choisir le proxy : minimal = Caddy HTTPS auto ; Nginx existant via stream/location.
Snippet minimal : blocs ci-dessous, upstream = port doc + hostname réel.
Callbacks : IM/webhook utilisent le même hôte public et préfixe.
Golden path : du https navigateur à un heartbeat ou doctor bénin dans le playbook interne.
openclaw.example.com {
encode gzip
reverse_proxy 127.0.0.1:18789
}
server {
listen 443 ssl http2;
server_name openclaw.example.com;
ssl_certificate /etc/letsencrypt/live/openclaw.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/openclaw.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:18789;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 600s;
}
}
Chaque ligne doit pointer vers un log ou une commande concrète.
| Symptôme | Couche | Geste |
|---|---|---|
| HTTPS échoue, HTTP brut upstream ok | chaîne ou SNI | valider la chaîne et server_name |
| Statique OK, canal live coupe | timeout WebSocket | augmenter read timeout, vérifier Upgrade |
| Cross-origin console | allowedOrigins | réécrire les origines, redémarrer |
| curl public 502, local 200 | upstream proxy ou bind | parcourir compose/publish |
Attention : sans hardening multicanal, pas de dashboard en 0.0.0.0 pour démo.
Plages typiques VPS unique, pas de SLA fournisseur.
proxy_read_timeout ou équivalent Caddy).df et inodes la première semaine.| Rôle | Profil | Reco |
|---|---|---|
| Perso | faible trafic | un Caddy, un compose, fenêtre manuelle |
| Petite équipe | canaux journée | image épinglée, rollback échelonné |
| Mac / CI | jobs longs + signature | Gateway sur VPS, builds pool Mac |
ISP domestique ou petit cloud instable comme seule entrée empile IP dynamique et sommeils surprises.
Pour une porte https durable et séparer agents longue durée et pool iOS CI, location Mac mini cloud VpsMesh + VPS permanent est souvent plus stable : calcul sur nœuds contractuels, Gateway selon ce runbook.
TLS et débit au proxy familier, sessions au Gateway. Exposition publique : points de la checklist durcie. Capacité : tarifs et commander.
Vérifier l'origine complète (port inclus) dans allowedOrigins. Cas compose : article Docker VPS ; self-service : centre d'aide.
Souvent il suffit de vérifier port et health. Si chemins ou WebSocket bougent : release notes et double instance selon pin et rollback.