Écosystème 2026 : trois risques récurrents des passerelles auto-hébergées
Trois risques dominent en 2025-2026. Liaison : 0.0.0.0 sans proxy ni filtre expose la passerelle ; préférez 127.0.0.1 plus SSH ou VPN. Jetons : jamais dans l'historique, plist world-readable ni logs CI ; fichier 600 et EnvironmentVariables launchd, rotation aux départs. Mises à jour : évitez le mode « toujours latest » à chaque boot ; épinglez semver, planifiez les montées, lancez openclaw doctor avant de réactiver le pré-tirage.
| Décision | Choix orienté production | Quand cela fait mal |
|---|---|---|
| Adresse d'écoute | 127.0.0.1 + entrée maîtrisée |
Les scans réseau et la force brute ciblent vite les écouteurs 0.0.0.0 ouverts |
| Stockage du jeton | Compte de service + fichier d'environnement verrouillé | Shells partagés, journaux verbeux et copies de plist exposent le bearer |
| Cadence de mise à jour | Hebdomadaire ou promotion pilotée par CI | Latest à chaque boot surprend l'automatisation et les dépendances |
Prérequis et variables d'environnement
Épinglez Node 22+, CLI OpenClaw, compte service sur hôtes partagés. Exportez OPENCLAW_GATEWAY_TOKEN, hôte et port selon votre binaire. Chemins workspace stables pour MCP en absolu. Avec proxy, fixez HTTPS_PROXY et NO_PROXY pour que la sonde de santé (CI ou autre user) ne fluctue pas.
- Version Node figée dans
.node-versionou la configuration nvm du compte service. - Fichier de jeton en mode
600, propriétaire identique à l'utilisateur du LaunchAgent. - Répertoire de journaux
~/Library/Logs/OpenClaw/créé avant le premier chargement. - Chemin du point de santé documenté (par exemple
/healthou/v1/statusselon votre build).
Démarrage de la passerelle et stratégie de liaison
Boot manuel d'abord : lsof sur le port, curl avec Authorization: Bearer, MCP OK, puis launchd. Sur le même Mac distant que la CI, enchaînez le pré-tirage sur une sonde verte pour ne pas marteler les registres quand la passerelle est down — lien direct avec les nœuds dédiés MacPull.
- Arrêter tout processus résiduel sur le même port pour éviter les conflits silencieux.
- Exporter les mêmes variables que celles qui seront injectées dans le plist.
- Lancer la commande documentée de la passerelle OpenClaw et noter les chemins stdout/stderr.
- Valider une requête authentifiée réussie puis une réponse 401 volontaire sans en-tête.
- Consigner semver, horodatage et auteur dans le journal de changement interne.
Modèle de script de contrôle et installation LaunchAgent
LaunchAgent dans ~/Library/LaunchAgents/ : RunAtLoad, KeepAlive + ThrottleInterval ~30s, StandardOutPath / StandardErrorPath sous ~/Library/Logs/. Chargez avec launchctl bootstrap gui/$UID (ou load sur ancien macOS). Sonde : StartInterval ou SSH depuis CI ; curl + code HTTP et JSON ok si présent ; exit ≠ 0 pour alerte.
#!/bin/bash
set -euo pipefail
# Modèle de contrôle — renseigner HOST, PORT, TOKEN, HEALTH_PATH selon votre déploiement
HOST="${OPENCLAW_GATEWAY_HOST:-127.0.0.1}"
PORT="${OPENCLAW_GATEWAY_PORT:-18789}"
TOKEN="${OPENCLAW_GATEWAY_TOKEN:?définir le jeton}"
HEALTH_PATH="${OPENCLAW_HEALTH_PATH:-/health}"
CODE=$(curl -s -o /tmp/oc_health.json -w "%{http_code}" \
-H "Authorization: Bearer ${TOKEN}" \
"http://${HOST}:${PORT}${HEALTH_PATH}")
test "$CODE" = "200" || { echo "santé HTTP $CODE"; exit 1; }
if grep -q '"ok"' /tmp/oc_health.json 2>/dev/null; then
grep -q '"ok":true' /tmp/oc_health.json || exit 1
fi
exit 0
Adaptez le JSON ou gardez HTTP 200 + latence. Alerte tôt pour éviter les embouteillages de pré-tirage (voir le guide ClawHub lié en tête d'article).
Journaux et liste de contrôle minimale pour le dépannage
Échec : StandardErrorPath, logs app, espace disque, lsof post-reboot, reboot manuel avant de blâmer l'amont. Jeton CI à jour, puis openclaw doctor ou status. Ce parcours reste court et actionnable pour une équipe réduite.
- 1. Dernières lignes stderr du daemon et corrélation horaire avec la sonde.
- 2. Port occupé ou processus zombie via
lsofet étatlaunchctl list. - 3. Identité du jeton et correspondance avec les clients CI et scripts SSH.
- 4. Espace disque et permissions sur le répertoire de travail de la passerelle.
FAQ : erreurs fréquentes
lsof -i :PORT, unload du plist doublon, kill PID orphelins, un seul reload.
DNS/proxy/cert différents : curl -v côté runner vs admin ; alignez NO_PROXY.
Confidentialité macOS ou chown incorrect après copie de plist ; évitez Full Disk Access sauf besoin prouvé.
Synthèse et passage à l'achat
Mac distant dédié pour OpenClaw et pré-tirage CI
Passezelle stable, SSD libre et SSH fiable : consultez tarifs, achat et aide sans connexion préalable.