2026 OpenClaw sur Mac distants toujours allumés :
redémarrages launchd/systemd, journaux et disque, tri des blocages Gateway

Environ 18 min · MACCOME

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.

Six mythes OpenClaw en mode sans présence (« processus actif » n'est pas synonyme de sain)

  1. Confondre launchd/systemd « chargé » avec « prêt » : les boucles de plantage restent « chargées » ; jugez sur la fenêtre de disponibilité continue et les derniers codes de sortie, pas sur la seule sortie de liste.
  2. Ne modifier qu'à l'intérieur des conteneurs et oublier les droits de montage sur l'hôte : des chemins inscriptibles dans le conteneur mais invisibles pour les scripts de rotation sur l'hôte provoquent des doubles écritures ou une rotation cassée.
  3. Ignorer l'écart entre reverse proxy et boucle locale du Gateway : les ressources statiques de l'interface de contrôle se chargent alors que les rappels visent un nom public ; des sondes qui ne font que curl 127.0.0.1 derrière une terminaison TLS en périphérie donnent « métriques vertes, utilisateurs rouges »—croiser avec le guide reverse proxy et TLS.
  4. Imputer chaque 429 ou délai dépassé au fournisseur : les rafales de nouvelles tentatives sans présence s'amplifient ; ajoutez backoff et coupe-circuit alignés sur les consignes de routage du fournisseur.
  5. Laisser le débogage journalisé sans masquage : jetons, webhooks et données personnelles dans les journaux centralisés font exploser le risque conformité avant même que le disque soit plein—liste blanche de champs avant envoi vers un SIEM.
  6. Supposer que les Mac cloud partagent la politique d'alimentation d'un portable : veille, mode coque fermée et fenêtres de maintenance coupent les connexions longues durée ; formalisez l'alimentation et la politique de redémarrage du démon plutôt qu'un simple « merci de ne pas mettre en veille ».

Ensuite nous séparons « processus visible » et « messages aller-retour », puis abordons les superviseurs macOS et Linux.

Tri en trois couches : processus hôte, réseau conteneur, proxy périphérique

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ômeCouche à suspecter en premierAction suivante (exécutable)
Superviseur « en cours » mais aucun écouteurProcessus / 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 échoueRéseau conteneurInspecter le réseau compose, les ports publiés, un host networking erroné
502 sur le domaine alors que la boucle locale est OKReverse proxyAligner proxy_pass, en-têtes Upgrade, read_timeout
Interface OK, canaux silencieuxCanal / URL de rappelVérifier les URL de webhook et les chaînes TLS après les livraisons
Blocages aléatoires, quelques gigaoctets libres seulementDisque / journauxdu -sh comme indiqué ci-dessous ; abaisser le niveau de journalisation
Charge élevée, 429 côté modèleSortie modèle / fileLimiter le débit, rerouter, allonger le backoff ; éviter qu'une sonde de liveness ne tue des pods sains

macOS launchd et Linux systemd : champs à figer dans la politique de redémarrage

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.

launchd
<!-- 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>
systemd
# /etc/systemd/system/openclaw-gateway.service (extrait)
[Service]
Restart=on-failure
RestartSec=20
EnvironmentFile=-/etc/openclaw/gateway.env
LimitNOFILE=1048576

Volume des journaux, rotation et masquage (mêmes frontières que votre posture secrets)

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 cheminEmplacement typique (exemples)Vérification / action
Journaux texte Gateway/var/log/openclaw/ ou logs/ du projetdu -sh + alertes seuil ; newsyslog ou logrotate
Graphe DockerGéré par le pilote de graphedocker system df ; plafonner la taille json-file
Répertoires de travail et cache~/.openclaw, caches de buildSauvegarder 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
bash
# 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 /
warning

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.

Runbook d'auto-réparation en six étapes (alerte → post-mortem)

  1. Geler la surface de changement : noter les tags d'image, les empreintes du fichier compose, les trois dernières modifications certificat/DNS du proxy.
  2. Sonder les trois couches une fois : écouteur sur l'hôte, amont dans le conteneur, nom public via curl/WebSocket avec horodatage.
  3. Vérifier l'état des canaux : utiliser les commandes de statut ou de sonde documentées—pas seul un HTTP 200.
  4. Inspecter disque et croissance des journaux : comparer du à il y a 24 h pour repérer les rafales.
  5. Redémarrage borné : compose restart du service d'abord, puis redémarrage hôte si nécessaire ; enregistrer les codes de sortie.
  6. Gabarit de post-mortem : classer la cause racine en configuration / réseau / fournisseur / ressources et retuner les alertes.

Trois indicateurs d'astreinte (quantifiables)

  1. Fenêtre de disponibilité continue : nombre minimum d'heures quotidiennes sans intervention humaine sur sept jours ; si en dessous du SLA contractuel, dimensionnez disque ou CPU.
  2. Croissance quotidienne des journaux en Go : rapportez la croissance absolue et la tendance semaine sur semaine ; projetez la capacité sur 14 jours.
  3. Taux de faux « blocages » : part des tickets qui disparaissent après un simple redémarrage du Gateway ; un taux élevé indique un mauvais ordre de tri—collectez d'abord des preuves côté modèle et canal.

Comment cela s'articule avec les guides doctor, Docker, proxy et Kubernetes

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.

Pourquoi un portable seul est un mauvais hôte pour OpenClaw longue durée

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é.