Hosting
Docker-VM-runtime
Gedeelde runtimestappen voor VM-gebaseerde Docker-installaties, zoals GCP, Hetzner en vergelijkbare VPS-providers.
Vereiste binaire bestanden in de image opnemen
Binaire bestanden installeren in een actieve container is een valkuil: alles wat tijdens runtime wordt geïnstalleerd, gaat bij een herstart verloren. Neem elk extern binair bestand dat een skill nodig heeft tijdens het bouwen op in de image.
De onderstaande voorbeelden behandelen slechts drie binaire bestanden, in alfabetische volgorde:
gog(vangogcli) voor toegang tot Gmailgoplacesvoor Google Placeswaclivoor WhatsApp
Dit zijn voorbeelden, geen volledige lijst. Installeer met hetzelfde patroon zoveel binaire bestanden als je skills nodig hebben. Wanneer je later een skill toevoegt die een nieuw binair bestand nodig heeft:
- Werk het Dockerfile bij.
- Bouw de image opnieuw.
- Start de containers opnieuw.
Voorbeeld-Dockerfile
FROM node:24-bookworm RUN apt-get update && apt-get install -y socat && rm -rf /var/lib/apt/lists/* # Voorbeeld van binair bestand 1: Gmail-CLI (gogcli — wordt geïnstalleerd als `gog`)# Kopieer de huidige URL van de Linux-asset van 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 # Voorbeeld van binair bestand 2: Google Places-CLI# Kopieer de huidige URL van de Linux-asset van 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 # Voorbeeld van binair bestand 3: WhatsApp-CLI# Kopieer de huidige URL van de Linux-asset van 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 # Voeg hieronder met hetzelfde patroon meer binaire bestanden toe 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"]Bouwen en starten
docker compose builddocker compose up -d openclaw-gatewayAls de build tijdens pnpm install --frozen-lockfile mislukt met Killed of afsluitcode 137, heeft de VM onvoldoende geheugen. Gebruik een grotere machineklasse voordat je het opnieuw probeert.
Controleer de binaire bestanden:
docker compose exec openclaw-gateway which gogdocker compose exec openclaw-gateway which goplacesdocker compose exec openclaw-gateway which wacliVerwachte uitvoer:
/usr/local/bin/gog/usr/local/bin/goplaces/usr/local/bin/wacliControleer of de Gateway actief is:
docker compose logs -f openclaw-gatewaycurl -fsS http://127.0.0.1:18789/healthzAls /healthz een 200-respons retourneert, bevestigt dit dat het Gateway-proces luistert en gezond is; de ingebouwde HEALTHCHECK van de image controleert hetzelfde eindpunt.
Wat waar persistent blijft
OpenClaw draait in Docker, maar Docker is niet de bron van waarheid. Alle langdurige status moet herstarts, nieuwe builds en reboots overleven.
| Component | Locatie | Persistentiemechanisme | Opmerkingen |
|---|---|---|---|
| Gateway-configuratie | /home/node/.openclaw/ |
Volumekoppeling host | Bevat openclaw.json |
| Kanaal-/providerreferenties | /home/node/.openclaw/credentials/ |
Volumekoppeling host | Referentiemateriaal voor kanalen en providers |
| Modelauthenticatieprofielen | /home/node/.openclaw/agents/ |
Volumekoppeling host | agents/<agentId>/agent/auth-profiles.json (OAuth, API-sleutels) |
| Verouderd OAuth-sleutelbestand | /home/node/.config/openclaw/ |
Volumekoppeling host | Alleen-lezencompatibiliteit voor OAuth-sidecars van vóór de migratie; openclaw doctor --fix migreert deze naar auth-profiles.json |
| Skill-configuraties | /home/node/.openclaw/skills/ |
Volumekoppeling host | Status op skillniveau |
| Agentwerkruimte | /home/node/.openclaw/workspace/ |
Volumekoppeling host | Code en agentartefacten |
| WhatsApp-sessie | /home/node/.openclaw/ |
Volumekoppeling host | Behoudt de QR-aanmelding |
| Gmail-sleutelring | /home/node/.openclaw/ |
Hostvolume + wachtwoord | Vereist GOG_KEYRING_PASSWORD |
| Plugin-pakketten | /home/node/.openclaw/npm, /home/node/.openclaw/git |
Volumekoppeling host | Hoofdmappen van downloadbare pluginpakketten |
| Externe binaire bestanden | /usr/local/bin/ |
Docker-image | Moeten tijdens het bouwen worden opgenomen |
| Node-runtime | Containerbestandssysteem | Docker-image | Wordt bij elke imagebuild opnieuw opgebouwd |
| OS-pakketten | Containerbestandssysteem | Docker-image | Niet tijdens runtime installeren |
| Docker-container | Tijdelijk | Herstartbaar | Kan veilig worden vernietigd |
Updates
OpenClaw op de VM bijwerken:
git pulldocker compose builddocker compose up -d