Hosting
Docker-VM-Laufzeit
Gemeinsame Laufzeitschritte für VM-basierte Docker-Installationen, etwa bei GCP, Hetzner und ähnlichen VPS-Providern.
Erforderliche Binärdateien in das Image integrieren
Binärdateien in einem laufenden Container zu installieren, ist eine Falle: Alles, was zur Laufzeit installiert wird, geht beim Neustart verloren. Integrieren Sie jede externe Binärdatei, die ein Skill benötigt, bereits zur Build-Zeit in das Image.
Die folgenden Beispiele behandeln nur drei Binärdateien in alphabetischer Reihenfolge:
gog(ausgogcli) für den Gmail-Zugriffgoplacesfür Google Placeswaclifür WhatsApp
Dies sind Beispiele und keine vollständige Liste. Installieren Sie nach demselben Muster so viele Binärdateien, wie Ihre Skills benötigen. Wenn Sie später einen Skill hinzufügen, der eine neue Binärdatei benötigt:
- Aktualisieren Sie das Dockerfile.
- Erstellen Sie das Image neu.
- Starten Sie die Container neu.
Beispiel-Dockerfile
FROM node:24-bookworm RUN apt-get update && apt-get install -y socat && rm -rf /var/lib/apt/lists/* # Beispiel-Binärdatei 1: Gmail-CLI (gogcli – wird als `gog` installiert)# Kopieren Sie die aktuelle URL des Linux-Assets von 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 # Beispiel-Binärdatei 2: Google-Places-CLI# Kopieren Sie die aktuelle URL des Linux-Assets von 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 # Beispiel-Binärdatei 3: WhatsApp-CLI# Kopieren Sie die aktuelle URL des Linux-Assets von 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 # Fügen Sie unten nach demselben Muster weitere Binärdateien hinzu 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"]Erstellen und starten
docker compose builddocker compose up -d openclaw-gatewayWenn der Build während pnpm install --frozen-lockfile mit Killed oder dem Exit-Code 137 fehlschlägt, reicht der Arbeitsspeicher der VM nicht aus. Verwenden Sie vor einem erneuten Versuch eine größere Maschinenklasse.
Überprüfen Sie die Binärdateien:
docker compose exec openclaw-gateway which gogdocker compose exec openclaw-gateway which goplacesdocker compose exec openclaw-gateway which wacliErwartete Ausgabe:
/usr/local/bin/gog/usr/local/bin/goplaces/usr/local/bin/wacliÜberprüfen Sie, ob der Gateway aktiv ist:
docker compose logs -f openclaw-gatewaycurl -fsS http://127.0.0.1:18789/healthzWenn /healthz eine 200-Antwort zurückgibt, bestätigt dies, dass der Gateway-Prozess Verbindungen entgegennimmt und funktionsfähig ist; der im Image integrierte HEALTHCHECK fragt denselben Endpunkt ab.
Was wo dauerhaft gespeichert wird
OpenClaw läuft in Docker, aber Docker ist nicht die maßgebliche Datenquelle. Alle langlebigen Zustände müssen Neustarts, Neuerstellungen und Systemneustarts überstehen.
| Komponente | Speicherort | Persistenzmechanismus | Hinweise |
|---|---|---|---|
| Gateway-Konfiguration | /home/node/.openclaw/ |
Host-Volume-Einbindung | Enthält openclaw.json |
| Channel-/Provider-Zugangsdaten | /home/node/.openclaw/credentials/ |
Host-Volume-Einbindung | Zugangsdatenmaterial für Channels und Provider |
| Modellauthentifizierungsprofile | /home/node/.openclaw/agents/ |
Host-Volume-Einbindung | agents/<agentId>/agent/auth-profiles.json (OAuth, API-Schlüssel) |
| Veraltete OAuth-Schlüsseldatei | /home/node/.config/openclaw/ |
Host-Volume-Einbindung | Schreibgeschützte Kompatibilität für OAuth-Sidecars vor der Migration; openclaw doctor --fix migriert diese in auth-profiles.json |
| Skill-Konfigurationen | /home/node/.openclaw/skills/ |
Host-Volume-Einbindung | Zustand auf Skill-Ebene |
| Agent-Arbeitsbereich | /home/node/.openclaw/workspace/ |
Host-Volume-Einbindung | Code und Agent-Artefakte |
| WhatsApp-Sitzung | /home/node/.openclaw/ |
Host-Volume-Einbindung | Bewahrt die QR-Anmeldung |
| Gmail-Schlüsselbund | /home/node/.openclaw/ |
Host-Volume + Passwort | Erfordert GOG_KEYRING_PASSWORD |
| Plugin-Pakete | /home/node/.openclaw/npm, /home/node/.openclaw/git |
Host-Volume-Einbindung | Stammverzeichnisse herunterladbarer Plugin-Pakete |
| Externe Binärdateien | /usr/local/bin/ |
Docker-Image | Müssen zur Build-Zeit integriert werden |
| Node-Laufzeit | Container-Dateisystem | Docker-Image | Wird bei jedem Image-Build neu erstellt |
| Betriebssystempakete | Container-Dateisystem | Docker-Image | Nicht zur Laufzeit installieren |
| Docker-Container | Flüchtig | Neustartbar | Kann gefahrlos gelöscht werden |
Aktualisierungen
So aktualisieren Sie OpenClaw auf der VM:
git pulldocker compose builddocker compose up -d