Faire tourner OpenClaw Gateway 24h/24 sur un Mac cloud échoue plus souvent sur « ne revient pas après redémarrage », « les journaux ont mangé le disque » et « processus actif mais canaux/modèles silencieux » que sur la première installation. Ce guide s'adresse aux équipes qui ont dépassé le tutoriel et traitent OpenClaw comme une infrastructure de production : six mythes du mode sans présence, un tableau de tri processus / conteneur / reverse proxy, des extraits launchd et systemd prêts à coller, des instantanés journaux et disque, et un runbook d'auto-réparation en six étapes ainsi que trois indicateurs d'astreinte. Après lecture, vous pourrez décider s'il faut corriger le plist ou l'unité systemd, les volumes, ou revenir aux couches modèle et canal dans un ordre fixe.
Ensuite nous séparons « processus visible » et « messages aller-retour », puis abordons les superviseurs macOS et Linux.
Couche 1 (processus hôte) : le binaire Gateway ou le processus Node survit-il sous le bon utilisateur, sur l'interface prévue, avec les jetons et répertoires de données à jour ?
Couche 2 (conteneur) : réseaux compose, ports publiés et volumes—quand curl sur l'hôte et curl dans le conteneur divergent, commencez par la checklist de tri réseau Docker.
Couche 3 (proxy) : TLS, en-tête Upgrade WebSocket, retrait de chemin et délais—les 502 ou échecs de poignée de main en périphérie suivent la checklist Nginx/Caddy.
Sur Mac distants, la couche 3 est souvent derrière des tunnels SSH ou une DNS privée ; n'identifiez pas « curl localhost OK » à « les rappels publics OK ». Pour des canaux type Slack/Telegram, vérifiez toujours les périmètres OAuth avec la checklist de dépannage des canaux.
Lorsque le Gateway partage l'hôte avec des builds CI et cron, surveillez la contention disque et CPU : les pics de build ralentissent fsync des journaux et les poignées TLS, ce qui apparaît comme des délais intermittents et non comme une panne nette. Surveillez le cache de build séparément des chemins de données du Gateway et alertez sur les débits d'écriture des deux pour ne pas étiqueter à tort des à-coups d'infrastructure comme des régressions de qualité du modèle.
| Symptôme | Couche à suspecter en premier | Action suivante (exécutable) |
|---|---|---|
| Superviseur « en cours » mais aucun écouteur | Processus / plist · unité | Exécution au premier plan une fois sous le même utilisateur ; vérifier WorkingDirectory et ProgramArguments |
| Hôte OK, curl dans le conteneur vers l'amont échoue | Réseau conteneur | Inspecter le réseau compose, les ports publiés, un host networking erroné |
| 502 sur le domaine alors que la boucle locale est OK | Reverse proxy | Aligner proxy_pass, en-têtes Upgrade, read_timeout |
| Interface OK, canaux silencieux | Canal / URL de rappel | Vérifier les URL de webhook et les chaînes TLS après les livraisons |
| Blocages aléatoires, quelques gigaoctets libres seulement | Disque / journaux | du -sh comme indiqué ci-dessous ; abaisser le niveau de journalisation |
| Charge élevée, 429 côté modèle | Sortie modèle / file | Limiter le débit, rerouter, allonger le backoff ; éviter qu'une sonde de liveness ne tue des pods sains |
launchd doit préciser UserName, WorkingDirectory, les chemins stdout/stderr et un ThrottleInterval associé à KeepAlive afin qu'une rafale de plantages ne sature pas l'hôte.
systemd associe Restart=on-failure à RestartSec, et documente EnvironmentFile ainsi que LimitNOFILE. Les deux doivent maintenir le service après la fin de session SSH—c'est le cœur de la différence entre l'exploitation sans présence et le débogage interactif.
Lorsque Docker encapsule le Gateway, launchd/systemd supervise en général docker compose up -d (ou un wrapper), et non Node directement—reportez les contrôles de santé vers compose ou les sondes HTTP décrites dans le guide des sondes de santé Kubernetes pour que l'hôte ne considère pas un conteneur gelé comme sain.
<!-- Clés d'exemple uniquement—ajuster chemins, utilisateur et commande selon votre installation --> <key>KeepAlive</key><true/> <key>ThrottleInterval</key><integer>30</integer> <key>StandardOutPath</key><string>/var/log/openclaw/gateway.out.log</string> <key>StandardErrorPath</key><string>/var/log/openclaw/gateway.err.log</string>
# /etc/systemd/system/openclaw-gateway.service (extrait) [Service] Restart=on-failure RestartSec=20 EnvironmentFile=-/etc/openclaw/gateway.env LimitNOFILE=1048576
Montez journaux, configuration et données sur des chemins distincts pour que sauvegardes et quotas restent indépendants. La rotation doit couvrir à la fois les journaux texte sur l'hôte et les pilotes Docker json-file—sinon des conteneurs supprimés laissent encore d'énormes couches sur le disque. Masquez au minimum les jetons Bearer, les secrets de webhook, les adresses e-mail et les suffixes d'identifiants de canal ; préférez une liste blanche de champs aux expressions régulières fragiles en liste noire avant envoi vers un SIEM.
Croisez avec le guide post-install doctor : collez les synthèses doctor dans les tickets, pas des dumps complets d'environnement dans le chat.
Sur les plateformes de journalisation centralisée, attribuez à OpenClaw sa propre politique de rétention et d'échantillonnage—montez l'échantillonnage pendant les incidents, revenez automatiquement après la fenêtre de changement, pour que le « débogage temporaire » ne devienne jamais la valeur par défaut permanente.
| Type de chemin | Emplacement typique (exemples) | Vérification / action |
|---|---|---|
| Journaux texte Gateway | /var/log/openclaw/ ou logs/ du projet | du -sh + alertes seuil ; newsyslog ou logrotate |
| Graphe Docker | Géré par le pilote de graphe | docker system df ; plafonner la taille json-file |
| Répertoires de travail et cache | ~/.openclaw, caches de build | Sauvegarder avant mise à jour ; purger les fichiers de session obsolètes |
| Espace libre sur le volume racine | / | df -h ; prévenir l'équipe en dessous d'environ 15 % libre |
# Instantané rapide des tailles (adapter les chemins à votre installation) du -sh /var/log/openclaw 2>/dev/null docker system df 2>/dev/null df -h /
Attention : avant de supprimer des données, confirmez que volumes et secrets ne sont plus utilisés ; en production, préférez l'extension et la rotation à un rm -rf aveugle.
du à il y a 24 h pour repérer les rafales.compose restart du service d'abord, puis redémarrage hôte si nécessaire ; enregistrer les codes de sortie.Cet article couvre la supervision longue durée, l'hygiène journaux/disque et l'ordre de tri des blocages sur Mac distants ; le guide doctor couvre la validation post-installation ; la checklist réseau Docker le routage conteneur ; le guide reverse proxy le TLS et le WebSocket ; le guide sondes de santé la sémantique de l'orchestrateur. Documentez dans l'ordre installation → réseau → périphérie → régime permanent pour éviter les runbooks dupliqués.
Plages de veille, rythme des correctifs et réseaux itinérants résistent aux SLA écrits ; partager disque et bande passante avec le travail quotidien complique l'isolation des blocages et des rafales de journaux. Un Mac distant dédié et contractuel découple politique d'alimentation, paliers disque et sortie réseau des habitudes individuelles.
Lorsque vous avez besoin de la même région que vos testeurs CI, d'une faible probabilité de veille et d'un disque et une bande passante prévisibles pour OpenClaw et l'automatisation, les hôtes Mac cloud MACCOME offrent un plan d'exécution plus stable : commencez par les tarifs de location Mac mini, puis ouvrez la commande régionale pour Singapour, Tokyo, Séoul, Hong Kong, Virginie (US East) ou Silicon Valley (US West). Les flux de connexion sont décrits dans le centre d'aide.
Questions fréquentes
Après redémarrage : démon ou configuration en premier ?
Exécution au premier plan pour prouver que la configuration est lisible, puis revoir l'environnement et les chemins du plist ou de l'unité. Étapes d'installation complémentaires dans le guide de dépannage doctor.
Les journaux peuvent-ils remplir le disque ?
Oui—courant sans surveillance. Ajoutez rotation, alertes et masquage en pipeline. Comparez les paliers sur les tarifs de location Mac mini.
L'interface se charge mais pas de réponses ?
Trier modèle, canal, puis file—ne pas seulement redémarrer. Croiser avec la checklist de dépannage des canaux.
Le Mac distant se met souvent en veille ?
Ajuster l'alimentation et s'appuyer sur les superviseurs pour relancer ; confirmer les fenêtres de maintenance côté fournisseur. Recherche par mot-clé dans le centre d'aide pour la connectivité.