Hosting
Docker-VM-Laufzeitumgebung
Gemeinsame Laufzeitschritte für VM-basierte Docker-Installationen wie GCP, Hetzner und ähnliche VPS-Provider.
Erforderliche Binärdateien in das Image integrieren
Binärdateien in einem laufenden Container zu installieren, ist problematisch: Alles, was zur Laufzeit installiert wird, geht beim Neustart verloren. Integrieren Sie jede externe Binärdatei, die ein Skill benötigt, während des Builds in das Image.
Die folgenden Beispiele behandeln lediglich 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 nach demselben Muster unten 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, verfügt die VM nicht über genügend Arbeitsspeicher. Verwenden Sie vor einem erneuten Versuch eine größere Maschinenklasse.
Binärdateien überprüfen:
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 das Gateway ausgeführt wird:
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 fehlerfrei ausgeführt wird; das integrierte Image HEALTHCHECK fragt denselben Endpunkt ab.
Was wo dauerhaft gespeichert wird
OpenClaw wird in Docker ausgeführt, Docker ist jedoch nicht die maßgebliche Datenquelle. Der gesamte langlebige Zustand muss Neustarts, Neuerstellungen und Reboots überstehen.
| Komponente | Speicherort | Persistenzmechanismus | Hinweise |
|---|---|---|---|
| Gateway-Konfiguration | /home/node/.openclaw/ |
Host-Volume-Mount | Enthält openclaw.json |
| Kanal-/Provider-Anmeldedaten | /home/node/.openclaw/credentials/ |
Host-Volume-Mount | Anmeldedatenmaterial für Kanäle und Provider |
| Modellauthentifizierungsprofile | /home/node/.openclaw/agents/ |
Host-Volume-Mount | agents/<agentId>/agent/auth-profiles.json (OAuth, API-Schlüssel) |
| Veraltete OAuth-Schlüsseldatei | /home/node/.config/openclaw/ |
Host-Volume-Mount | Schreibgeschützte Kompatibilität für OAuth-Sidecars vor der Migration; openclaw doctor --fix migriert diese nach auth-profiles.json |
| Skill-Konfigurationen | /home/node/.openclaw/skills/ |
Host-Volume-Mount | Zustand auf Skill-Ebene |
| Agent-Arbeitsbereich | /home/node/.openclaw/workspace/ |
Host-Volume-Mount | Code und Agent-Artefakte |
| WhatsApp-Sitzung | /home/node/.openclaw/ |
Host-Volume-Mount | Behält die QR-Anmeldung bei |
| 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-Mount | Stammverzeichnisse herunterladbarer Plugin-Pakete |
| Externe Binärdateien | /usr/local/bin/ |
Docker-Image | Müssen während des Builds 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 | Neu startbar | Kann gefahrlos zerstört werden |
Aktualisierungen
So aktualisieren Sie OpenClaw auf der VM:
git pulldocker compose builddocker compose up -d