Passer au contenu principal

Runtime Docker VM

Étapes de runtime partagées pour les installations Docker sur VM comme GCP, Hetzner et autres fournisseurs VPS similaires.

Intégrer les binaires requis dans l’image

Installer des binaires dans un conteneur en cours d’exécution est un piège. Tout ce qui est installé au runtime sera perdu au redémarrage. Tous les binaires externes requis par les Skills doivent être installés au moment de la construction de l’image. Les exemples ci-dessous montrent seulement trois binaires courants :
  • gog pour l’accès à Gmail
  • goplaces pour Google Places
  • wacli pour WhatsApp
Ce sont des exemples, pas une liste complète. Vous pouvez installer autant de binaires que nécessaire en suivant le même modèle. Si vous ajoutez plus tard de nouvelles Skills qui dépendent de binaires supplémentaires, vous devez :
  1. Mettre à jour le Dockerfile
  2. Reconstruire l’image
  3. Redémarrer les conteneurs
Exemple de Dockerfile
FROM node:24-bookworm

RUN apt-get update && apt-get install -y socat && rm -rf /var/lib/apt/lists/*

# Example binary 1: Gmail CLI
RUN curl -L https://github.com/steipete/gog/releases/latest/download/gog_Linux_x86_64.tar.gz \
  | tar -xz -C /usr/local/bin && chmod +x /usr/local/bin/gog

# Example binary 2: Google Places CLI
RUN curl -L https://github.com/steipete/goplaces/releases/latest/download/goplaces_Linux_x86_64.tar.gz \
  | tar -xz -C /usr/local/bin && chmod +x /usr/local/bin/goplaces

# Example binary 3: WhatsApp CLI
RUN curl -L https://github.com/steipete/wacli/releases/latest/download/wacli_Linux_x86_64.tar.gz \
  | tar -xz -C /usr/local/bin && chmod +x /usr/local/bin/wacli

# Add more binaries below using the same pattern

WORKDIR /app
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml .npmrc ./
COPY ui/package.json ./ui/package.json
COPY scripts ./scripts

RUN corepack enable
RUN pnpm install --frozen-lockfile

COPY . .
RUN pnpm build
RUN pnpm ui:install
RUN pnpm ui:build

ENV NODE_ENV=production

CMD ["node","dist/index.js"]
Les URL de téléchargement ci-dessus sont pour x86_64 (amd64). Pour les VM basées sur ARM (par ex. Hetzner ARM, GCP Tau T2A), remplacez les URL de téléchargement par les variantes ARM64 appropriées depuis la page de publication de chaque outil.

Construire et lancer

docker compose build
docker compose up -d openclaw-gateway
Si la construction échoue avec Killed ou exit code 137 pendant pnpm install --frozen-lockfile, la VM manque de mémoire. Utilisez une classe de machine plus grande avant de réessayer. Vérifier les binaires :
docker compose exec openclaw-gateway which gog
docker compose exec openclaw-gateway which goplaces
docker compose exec openclaw-gateway which wacli
Sortie attendue :
/usr/local/bin/gog
/usr/local/bin/goplaces
/usr/local/bin/wacli
Vérifier la passerelle :
docker compose logs -f openclaw-gateway
Sortie attendue :
[gateway] listening on ws://0.0.0.0:18789

Ce qui persiste et où

OpenClaw s’exécute dans Docker, mais Docker n’est pas la source de vérité. Tout l’état de longue durée doit survivre aux redémarrages, reconstructions et redémarrages machine.
ComposantEmplacementMécanisme de persistanceRemarques
Configuration de la passerelle/home/node/.openclaw/Montage de volume hôteInclut openclaw.json, .env
Profils d’authentification des modèles/home/node/.openclaw/agents/Montage de volume hôteagents/<agentId>/agent/auth-profiles.json (OAuth, clés API)
Configurations de Skills/home/node/.openclaw/skills/Montage de volume hôteÉtat au niveau des Skills
Espace de travail de l’agent/home/node/.openclaw/workspace/Montage de volume hôteCode et artefacts d’agent
Session WhatsApp/home/node/.openclaw/Montage de volume hôtePréserve la connexion QR
Trousseau Gmail/home/node/.openclaw/Volume hôte + mot de passeNécessite GOG_KEYRING_PASSWORD
Binaires externes/usr/local/bin/Image DockerDoivent être intégrés au moment de la construction
Runtime NodeSystème de fichiers du conteneurImage DockerReconstruit à chaque build d’image
Packages OSSystème de fichiers du conteneurImage DockerNe pas installer au runtime
Conteneur DockerÉphémèreRedémarrablePeut être détruit sans risque

Mises à jour

Pour mettre à jour OpenClaw sur la VM :
git pull
docker compose build
docker compose up -d