Hosting
Runtime della VM Docker
Passaggi di runtime condivisi per installazioni Docker basate su VM, come GCP, Hetzner e provider VPS simili.
Integra i binari richiesti nell'immagine
Installare binari all'interno di un container in esecuzione è una trappola. Qualsiasi cosa installata a runtime andrà persa al riavvio.
Tutti i binari esterni richiesti dalle Skills devono essere installati al momento della build dell'immagine.
Gli esempi seguenti mostrano solo tre binari comuni:
gog(dagogcli) per l'accesso a Gmailgoplacesper Google Placeswacliper WhatsApp
Questi sono esempi, non un elenco completo. Puoi installare tutti i binari necessari usando lo stesso schema.
Se in seguito aggiungi nuove Skills che dipendono da binari aggiuntivi, devi:
- Aggiornare il Dockerfile
- Ricostruire l'immagine
- Riavviare i container
Dockerfile di esempio
FROM node:24-bookworm
RUN apt-get update && apt-get install -y socat && rm -rf /var/lib/apt/lists/*
# Example binary 1: Gmail CLI (gogcli — installs as `gog`)
# Copy the current Linux asset URL from https://github.com/steipete/gogcli/releases
RUN 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
# Example binary 2: Google Places CLI
# Copy the current Linux asset URL from https://github.com/steipete/goplaces/releases
RUN 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
# Example binary 3: WhatsApp CLI
# Copy the current Linux asset URL from https://github.com/steipete/wacli/releases
RUN 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
# 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"]
Build e avvio
docker compose build
docker compose up -d openclaw-gateway
Se la build fallisce con Killed o exit code 137 durante pnpm install --frozen-lockfile, la VM ha esaurito la memoria.
Usa una classe di macchina più grande prima di riprovare.
Verifica i binari:
docker compose exec openclaw-gateway which gog
docker compose exec openclaw-gateway which goplaces
docker compose exec openclaw-gateway which wacli
Output previsto:
/usr/local/bin/gog
/usr/local/bin/goplaces
/usr/local/bin/wacli
Verifica il Gateway:
docker compose logs -f openclaw-gateway
Output previsto:
[gateway] listening on ws://0.0.0.0:18789
Cosa persiste e dove
OpenClaw viene eseguito in Docker, ma Docker non è la fonte di verità. Tutto lo stato di lunga durata deve sopravvivere a riavvii, rebuild e riavvii della macchina.
| Componente | Posizione | Meccanismo di persistenza | Note |
|---|---|---|---|
| Configurazione Gateway | /home/node/.openclaw/ |
Mount di volume host | Include openclaw.json, .env |
| Profili di autenticazione modello | /home/node/.openclaw/agents/ |
Mount di volume host | agents/<agentId>/agent/auth-profiles.json (OAuth, chiavi API) |
| Configurazioni Skill | /home/node/.openclaw/skills/ |
Mount di volume host | Stato a livello di Skill |
| Workspace agente | /home/node/.openclaw/workspace/ |
Mount di volume host | Codice e artefatti agente |
| Sessione WhatsApp | /home/node/.openclaw/ |
Mount di volume host | Conserva il login QR |
| Keyring Gmail | /home/node/.openclaw/ |
Volume host + password | Richiede GOG_KEYRING_PASSWORD |
| Pacchetti Plugin | /home/node/.openclaw/npm, /home/node/.openclaw/git |
Mount di volume host | Radici dei pacchetti Plugin scaricabili |
| Binari esterni | /usr/local/bin/ |
Immagine Docker | Devono essere integrati al momento della build |
| Runtime Node | Filesystem del container | Immagine Docker | Ricostruito a ogni build dell'immagine |
| Pacchetti OS | Filesystem del container | Immagine Docker | Non installare a runtime |
| Container Docker | Effimero | Riavviabile | Sicuro da distruggere |
Aggiornamenti
Per aggiornare OpenClaw sulla VM:
git pull
docker compose build
docker compose up -d