Hosting
Environnement d’exécution de machine virtuelle Docker
Étapes d’exécution partagées pour les installations Docker sur machine virtuelle, telles que GCP, Hetzner et les fournisseurs de VPS similaires.
Intégrer les binaires requis à l’image
Installer des binaires dans un conteneur en cours d’exécution est un piège : tout ce qui est installé à l’exécution est perdu au redémarrage. Intégrez dans l’image, au moment de sa construction, chaque binaire externe dont une skill a besoin.
Les exemples ci-dessous ne couvrent que trois binaires, par ordre alphabétique :
gog(provenant degogcli) pour accéder à Gmailgoplacespour Google Placeswaclipour WhatsApp
Il s’agit d’exemples et non d’une liste exhaustive. Installez autant de binaires que nécessaire pour vos skills en suivant le même modèle. Lorsque vous ajoutez ultérieurement une skill nécessitant un nouveau binaire :
- Mettez à jour le Dockerfile.
- Reconstruisez l’image.
- Redémarrez les conteneurs.
Exemple de Dockerfile
FROM node:24-bookworm RUN apt-get update && apt-get install -y socat && rm -rf /var/lib/apt/lists/* # Exemple de binaire 1 : CLI Gmail (gogcli — installé sous le nom `gog`)# Copiez l’URL actuelle de la ressource Linux depuis https://github.com/steipete/gogcli/releasesRUN curl -L https://github.com/steipete/gogcli/releases/latest/download/gogcli_linux_amd64.tar.gz \ | tar -xzO gog > /usr/local/bin/gog; \ chmod +x /usr/local/bin/gog # Exemple de binaire 2 : CLI Google Places# Copiez l’URL actuelle de la ressource Linux depuis https://github.com/steipete/goplaces/releasesRUN curl -L https://github.com/steipete/goplaces/releases/latest/download/goplaces_linux_amd64.tar.gz \ | tar -xzO goplaces > /usr/local/bin/goplaces; \ chmod +x /usr/local/bin/goplaces # Exemple de binaire 3 : CLI WhatsApp# Copiez l’URL actuelle de la ressource Linux depuis https://github.com/steipete/wacli/releasesRUN curl -L https://github.com/steipete/wacli/releases/latest/download/wacli-linux-amd64.tar.gz \ | tar -xzO wacli > /usr/local/bin/wacli; \ chmod +x /usr/local/bin/wacli # Ajoutez d’autres binaires ci-dessous en suivant le même modèle WORKDIR /appCOPY package.json pnpm-lock.yaml pnpm-workspace.yaml .npmrc ./COPY ui/package.json ./ui/package.jsonCOPY scripts ./scripts RUN corepack enableRUN pnpm install --frozen-lockfile COPY . .RUN pnpm buildRUN pnpm ui:installRUN pnpm ui:build ENV NODE_ENV=production CMD ["node","dist/index.js"]Construire et lancer
docker compose builddocker compose up -d openclaw-gatewaySi la construction échoue avec Killed ou le code de sortie 137 pendant pnpm install --frozen-lockfile, la machine virtuelle manque de mémoire. Utilisez une classe de machine plus puissante avant de réessayer.
Vérifiez les binaires :
docker compose exec openclaw-gateway which gogdocker compose exec openclaw-gateway which goplacesdocker compose exec openclaw-gateway which wacliSortie attendue :
/usr/local/bin/gog/usr/local/bin/goplaces/usr/local/bin/wacliVérifiez que le Gateway est opérationnel :
docker compose logs -f openclaw-gatewaycurl -fsS http://127.0.0.1:18789/healthzUne réponse 200 de /healthz confirme que le processus Gateway est à l’écoute et en bon état ; le contrôle HEALTHCHECK intégré à l’image interroge le même point de terminaison.
Emplacement des données persistantes
OpenClaw s’exécute dans Docker, mais Docker n’est pas la source de référence. Tous les états à long terme doivent survivre aux redémarrages, aux reconstructions et aux réamorçages.
| Composant | Emplacement | Mécanisme de persistance | Remarques |
|---|---|---|---|
| Configuration du Gateway | /home/node/.openclaw/ |
Montage d’un volume de l’hôte | Inclut openclaw.json |
| Identifiants de canal/fournisseur | /home/node/.openclaw/credentials/ |
Montage d’un volume de l’hôte | Données d’identification des canaux et fournisseurs |
| Profils d’authentification des modèles | /home/node/.openclaw/agents/ |
Montage d’un volume de l’hôte | agents/<agentId>/agent/auth-profiles.json (OAuth, clés d’API) |
| Ancien fichier de clés OAuth | /home/node/.config/openclaw/ |
Montage d’un volume de l’hôte | Compatibilité en lecture seule avec les fichiers annexes OAuth antérieurs à la migration ; openclaw doctor --fix les migre vers auth-profiles.json |
| Configurations des skills | /home/node/.openclaw/skills/ |
Montage d’un volume de l’hôte | État propre aux skills |
| Espace de travail de l’agent | /home/node/.openclaw/workspace/ |
Montage d’un volume de l’hôte | Code et artefacts de l’agent |
| Session WhatsApp | /home/node/.openclaw/ |
Montage d’un volume de l’hôte | Préserve la connexion par code QR |
| Trousseau Gmail | /home/node/.openclaw/ |
Volume de l’hôte + mot de passe | Nécessite GOG_KEYRING_PASSWORD |
| Paquets de plugins | /home/node/.openclaw/npm, /home/node/.openclaw/git |
Montage d’un volume de l’hôte | Répertoires racines des paquets de plugins téléchargeables |
| Binaires externes | /usr/local/bin/ |
Image Docker | Doivent être intégrés au moment de la construction |
| Environnement d’exécution Node | Système de fichiers du conteneur | Image Docker | Reconstruit à chaque construction de l’image |
| Paquets du système d’exploitation | Système de fichiers du conteneur | Image Docker | Ne les installez pas à l’exécution |
| Conteneur Docker | Éphémère | Redémarrable | Peut être détruit sans risque |
Mises à jour
Pour mettre à jour OpenClaw sur la machine virtuelle :
git pulldocker compose builddocker compose up -d