2026 — OpenClaw sur Linux avec systemd et WSL2 : automatisation et passerelle

Les équipes font tourner des passerelles de type OpenClaw sur des portables Linux, de petits VPS ou des shells Windows WSL2, tout en conservant des étapes réservées à macOS : signature, simulateurs, chaînes Xcode. Ce guide rassemble des étapes 2026 reproductibles : garder un service systemd utilisateur stable sur l'environnement et le répertoire de travail, anticiper les pièges WSL2, traiter les timeouts d'outils MCP lors du passage des transports stdio vers le HTTP streamable, et appliquer une checklist ENOENT avant de fouiller des journaux entiers. Pour aligner chemins, launchd et conteneurs sur la jambe macOS, enchaînez avec 2026 — OpenClaw sur Mac distant : chemins d'installation, Docker et résidence locale, erreurs fréquentes et cas de workflow afin que les hypothèses restent cohérentes entre hôtes.

1. Linux : unités systemd --user qui survivent à la déconnexion

Préférez systemd --user aux scripts nohup artisanaux lorsque vous voulez des redémarrages automatiques, l'intégration au journal et des limites de ressources explicites. Placez l'unité sous ~/.config/systemd/user/, puis systemctl --user daemon-reload et systemctl --user enable --now openclaw-gateway.service. Le piège classique est l'absence de linger : sans loginctl enable-linger "$USER", les services utilisateur s'arrêtent quand la dernière session se ferme, ce qui ressemble à des « pannes nocturnes aléatoires ». Dans le fichier d'unité, fixez WorkingDirectory= sur le dépôt qui porte la configuration, exportez un Environment=PATH=... minimal avec le chemin absolu de Node ou du binaire, et n'attendez rien des profils shell interactifs — launchd et systemd s'accordent pour ignorer votre .bashrc dans les démons non interactifs. Pour les écouteurs HTTP, liez explicitement 127.0.0.1 tant qu'un reverse proxy n'est pas posé, afin de garder des groupes de sécurité prévisibles.

Test de fumée : après reboot, vérifiez systemctl --user is-active et journalctl --user -u openclaw-gateway -n 50 avant de clore l'installation.

2. WSL2 : chemins Windows, horloges et sockets qui divergent

WSL2 apporte un noyau Linux crédible, mais l'interopérabilité crée des défaillances fines. Les outils lancés depuis /mnt/c/... héritent d'une sémantique d'inœuds et de fins de ligne différentes ; gardez les démons longue durée sur le système de fichiers Linux, par exemple ~/projets. Un décalage d'horloge entre Windows et la VM provoque encore des erreurs sur URL signées ou jetons — exécutez wsl --shutdown après de longs cycles veille/réveil lorsque des 401 inexpliqués apparaissent. Si vous exposez un point MCP HTTP depuis WSL, rappelez-vous que localhost côté Windows n'est pas toujours la même interface que localhost dans la distro ; documentez si les clients doivent viser 127.0.0.1 sur Windows avec port transféré, ou l'IP de la distro via ip addr. Enfin, l'antivirus qui surveille le disque virtuel Linux peut gonfler la latence au premier lancement d'outil ; n'excluez le VHD de la distro que si la politique de sécurité l'autorise.

3. Timeouts MCP et migration vers Streamable HTTP

Le transport stdio semble simple jusqu'à ce qu'un scan disque lent bloque tout le tuyau. Lorsque les clients signalent un timeout d'outil alors que le serveur journalise encore du travail, séparez les plafonds de connexion des plafonds par invocation — augmenter la mauvais levier masque une surcharge réelle. Passer au HTTP streamable (réponses fragmentées ou chunked) aide lorsque les sorties sont volumineuses ou tokenisées progressivement, mais les proxys doivent désactiver une mise en tampon trop agressive. Réglez un délai de lecture idle explicite sur le reverse proxy : au-dessus du pire outil raisonnable, mais en dessous du détecteur de hang côté client, pour que l'échec remonte comme erreur structurée. Tracez les requêtes MCP avec des identifiants de corrélation entre passerelle, routeur de modèle et sous-processus d'outil afin de voir si la latence vit dans TLS, la sérialisation JSON ou l'exécutable lui-même.

4. ENOENT : cinq vérifications avant de greper tout le dépôt

ENOENT signifie presque toujours « le processus qui lève l'erreur ne voit pas le chemin que vous croyez partagé ». Contrôlez dans l'ordre : le binaire vu depuis l'unité systemd ou la session WSL (command -v), le répertoire de travail configuré, l'absence de montage réseau pas encore prêt au démarrage du service, et les chemins relatifs dans les fichiers de config qui n'existent que sur votre poste portable. Pour les passerelles Node, confrontez process.execPath à l'emplacement du script — les monorepos enterrent souvent les binaires un niveau plus bas que l'exemple de doc. Après symlink d'outil, vérifiez que la cible reste lisible après mise à jour. Si vous venez de changer de transport, assurez-vous que la racine HTTP statique ou le chemin de socket Unix dans le nouveau bloc correspond encore à l'ancien wrapper stdio.

5. Flux Mac distant élastique pour charges lourdes

Gardez la passerelle Linux ou WSL2 légère : authentification, routage, webhooks et outils peu coûteux restent locaux. Filez les tâches réservées à macOS — matrices de simulateurs, notarisation, pipelines xcodebuild lourds — vers un pool de Mac dédiés avec clés SSH distinctes par environnement. Un petit script d'orchestration peut rsync une archive du workspace, exécuter une lane Fastlane ou xcodebuild épinglée, puis renvoyer les journaux sur SSH pour conserver une trace unique côté opérateurs. Quand la demande retombe, éteignez les workers Mac inactifs tout en laissant le plan de contrôle Linux actif ; anticipez caches disque et parallélisme multi-dépôts comme pour un pool CI Mac d'entreprise classique. Côté passerelle macOS toujours sous tension, croisez launchctl, journaux système et ports avec 2026 — Manuel de stabilité launchd pour la passerelle OpenClaw : triade doctor/status/journaux, ports occupés et conflits de doubles LaunchAgent — procédures reproductibles sur Mac distant toujours allumé pour éviter qu'un incident Linux et un incident Darwin partagent la même procédure floue.

Pourquoi le Mac mini reste l'ancre matérielle du volet macOS

Déléguer vers des Mac distants n'est fiable que si le socle macOS est prévisible. Un Mac mini sur Apple Silicon combine monothread solide et une consommation idle de l'ordre de quelques watts seulement, ce qui rend les runners toujours allumés abordables à côté de tours sous-utilisées. Vous conservez une chaîne Unix native avec les flux Keychain pour la signature, sans double virtualisation comme lorsque macOS est simplement imbriqué sous un autre poste de travail. macOS empile Gatekeeper, SIP et FileVault pour durcir l'automatisation exposée à Internet, ce qui réduit le bricolage sécurité que certaines équipes Linux ajoutent après coup. Si vous câblez des passerelles OpenClaw en 2026, traitez le Mac mini M4 comme le bloc de base par défaut pour la jambe macOS avant d'élargir la flotte — lorsqu'il vous faut de la capacité dédiée supplémentaire dans plusieurs régions, ouvrez la page d'accueil Macstripe pour comparer les modèles et activer le flux élastique sans acheter de baie serveur d'emblée.