Passerelle OpenClaw : npm ci, package-lock.json, installs reproductibles et discipline de reconstruction propre sur Mac cloud loué (2026-05-09)
En 2026, les fils d’incidents montrent encore le même mode d’échec : on lance npm install -g openclaw@latest pendant que la passerelle tient des descripteurs de fichiers, ce qui laisse des arbres à demi renommés, des dépendances runtime de plugins manquantes et des boucles de redémarrage qui affament le polling Telegram. Les locataires MacLogin qui livrent de l’automatisation depuis Hong Kong, le Japon, la Corée, Singapour et les États-Unis doivent traiter la passerelle comme tout autre binaire de production : committer un lockfile, piloter les installs avec la sémantique npm ci, arrêter launchd en premier et répéter les atténuations « double redémarrage » quand le cache de résolution de modules ment. Ce runbook de mai 2026 encode la matrice, l’ordre d’arrêt, les neuf étapes CI, les contrôles d’observabilité et la FAQ pour garder OpenClaw prévisible sur des minis Apple Silicon loués.
À lire avec dérive des peer dependencies et reconstruction propre, diagnostics doctor et app macOS et handoff CLI. Hub : index thématique OpenClaw. Aussi aide, tarifs et VNC.
Pourquoi les lockfiles comptent même quand OpenClaw semble « juste CLI »
Les passerelles empaquetent des dépendances transitives pour transports, plugins et adaptateurs de modèles. Sans graphe épinglé, deux machines aux plages semver identiques peuvent diverger silencieusement après une publication au registre — exactement le cauchemar que la CI reproductible doit éliminer.
package-lock.json à la main pendant un incident ; régénérez via des montées de version contrôlées et revue de code.npm ci versus npm install (matrice de décision)
| Commande | Quand l’utiliser sur les passerelles | Risque si omis |
|---|---|---|
npm ci | Images CI, workspaces neufs, pipelines de rebuild | Installs déterministes ; échec rapide si lock/package divergent |
npm install | Montées exploratoires qui mutent volontairement le lockfile | Dérive entre nœuds JP et US si non re-commit |
npm install --package-lock-only | Préparer une PR qui met à jour les locks sans exécuter les scripts | Revues des bumps transitifs toujours nécessaires |
Épingler Node.js et npm avec la version de la passerelle
Enregistrez les triplets (node -v, npm -v, openclaw --version) dans le CMDB. Utilisez Volta, asdf ou des épingles MacPorts alignées sur le guide prérequis Node pour que CI et minis loués évaluent les mêmes moteurs.
NODE_OPTIONS et les chemins de plugins via les schémas d’environnement LaunchAgent afin que les redémarrages héritent de la chaîne épinglée.Ordre d’arrêt launchd avant de toucher aux chemins npm globaux
launchctl bootout gui/$UID/ai.openclaw.gateway(adaptez l’étiquette à votre plist).- Confirmez qu’aucun enfant
nodene subsiste viapgrep -fl openclaw. - Seulement ensuite exécutez les mutations npm.
Séquence de reconstruction propre quand doctor signale des arbres partiels
Suivez l’esprit de l’article sur la dérive des peers : supprimez node_modules, réinstallez avec npm ci, relancez openclaw doctor et capturez stdout pour les bundles support. Pour les installs globales, reproduisez le contournement communautaire : retirez le préfixe cassé avant une réinstall propre.
Runbook CI en neuf étapes pour les montées de passerelle
- Instantané du plist actuel, checksum et JSON de santé.
- Branche les mises à jour de lockfile dans Git avec tags de version sémantique.
- Construire un runner macOS éphémère en CI avec
npm ci. - Tester doctor, webhook synthétique et ping modèle.
- Stager l’artefact vers l’objet stockage avec version immuable.
- Arrêter la passerelle prod selon la politique launchd.
- Installer depuis l’artefact stagé (pas depuis latest flottant).
- Amorcer deux fois si la santé clignote (atténuation double redémarrage).
- Publier notes de version + emplacement du tarball de rollback.
Atténuation double redémarrage pour résolution de modules obsolète
Quand les health checks passent mais le runtime référence encore d’anciens hash, planifiez un second launchctl kickstart -k immédiat après une courte pause. Documentez le symptôme pour que les ingénieurs ultérieurs ne le confondent pas avec TLS ou proxy.
Lien croisé : article dérive des peers vs cet article lockfile
Le guide dérive se concentre sur les graphes de dépendances qui explosent. Cet article se concentre sur les verrouiller. Utilisez les deux : verrouillez les builds quotidiens ; article dérive quand des rebuilds d’urgence suivent des publications amont de peers conflictuels.
Mise en cache d’artefacts pour les déploiements multi-régions
Quand les locataires Hong Kong et US ouest montent en version dans la même heure, tirer deux fois les mêmes tarballs depuis le registre public invite limites de débit et gigue. Promouvez des artefacts immuables vers votre propre compartiment compatible S3 (Artifactory, actifs GitHub Release) et faites tirer chaque bail par URL adressée par contenu. Enregistrez SHA256 dans le ticket de changement avec le SHA git de package-lock.json pour que les auditeurs prouvent que les nœuds JP et SG ont exécuté les mêmes octets.
| Région | Cache suggéré | Secours |
|---|---|---|
| HK / SG | Réplica compartiment APAC | Limiter la concurrence à 2 installs/min |
| JP / KR | Cache périphérique proche de Tokyo | Préférer fenêtres nocturnes |
| US | US-est primaire + miroir ouest | Utiliser npm ci --prefer-offline si tarball en cache |
npm ci en production — les événements supply-chain de 2026 rendent la discipline de somme de contrôle non optionnelle.FAQ
Puis-je encore utiliser install.sh ? Traitez les scripts curl comme bootstrap uniquement — passez aux locks commités pour tout ce qui est récurrent.
Et les installs air-gapped ? Fournissez des tarballs avec sorties npm pack et vérifiez SHA256 avant npm ci --offline.
Où louer des passerelles isolées ? Comparez les tarifs pour pools JP vs US afin d’isoler les montées bruyantes.
Dependabot doit-il fusionner automatiquement les bumps OpenClaw ? Uniquement avec une CI qui exécute doctor, echo webhook et graphe de plugins — sinon la revue humaine hebdomadaire reste préférable.
Hub OpenClaw, aide et capacité régionale
Publiez votre politique de lockfile dans la section interne du hub OpenClaw pour que chaque région hérite de la même checklist d’ordre d’arrêt. Quand Séoul a besoin d’ensembles de plugins différents de Singapour, séparez les baux plutôt que de combattre un seul graphe de lock.
Exécutez OpenClaw sur Apple Silicon dédié
Nœuds HK · JP · KR · SG · US pour des passerelles reproductibles.