Runtime Docker su VM
Passaggi comuni del runtime per installazioni Docker su VM come GCP, Hetzner e provider VPS simili.
Incorpora i binari necessari nell’immagine
Installare binari dentro un container in esecuzione e una trappola. Tutto cio che viene installato a runtime viene perso al riavvio.
Tutti i binari esterni richiesti dalle skill devono essere installati al momento della build dell’immagine.
Gli esempi qui sotto mostrano solo tre binari comuni:
gogper l’accesso a Gmailgoplacesper Google Placeswacliper WhatsApp
Si tratta di esempi, non di un elenco completo. Puoi installare tutti i binari necessari usando lo stesso pattern.
Se aggiungi nuove skill in seguito che dipendono da binari aggiuntivi, devi:
- Aggiornare il Dockerfile
- Ricostruire l’immagine
- Riavviare i container
Esempio di Dockerfile
FROM node:24-bookworm
RUN apt-get update && apt-get install -y socat && rm -rf /var/lib/apt/lists/*
# Esempio binario 1: CLI Gmail
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
# Esempio binario 2: CLI Google Places
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
# Esempio binario 3: CLI WhatsApp
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
# Aggiungi altri binari qui sotto usando lo stesso 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 e a corto di memoria.
Usa una macchina piu potente 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 atteso:
/usr/local/bin/gog
/usr/local/bin/goplaces
/usr/local/bin/wacli
Verifica il Gateway:
docker compose logs -f openclaw-gateway
Output atteso:
[gateway] listening on ws://0.0.0.0:18789
Cosa persiste e dove
OpenClaw gira in Docker, ma Docker non e la fonte autorevole. Tutto lo stato persistente deve sopravvivere a riavvii, rebuild e reboot.
| Componente | Posizione | Meccanismo di persistenza | Note |
|---|---|---|---|
| Config gateway | /home/node/.openclaw/ | Volume host montato | Include openclaw.json, token |
| Profili auth modelli | /home/node/.openclaw/ | Volume host montato | Token OAuth, chiavi API |
| Config skill | /home/node/.openclaw/skills/ | Volume host montato | Stato a livello di skill |
| Workspace agent | /home/node/.openclaw/workspace/ | Volume host montato | Codice e artefatti dell’agent |
| Sessione WhatsApp | /home/node/.openclaw/ | Volume host montato | Conserva il login QR |
| Keyring Gmail | /home/node/.openclaw/ | Volume host + password | Richiede GOG_KEYRING_PASSWORD |
| Binari esterni | /usr/local/bin/ | Immagine Docker | Devono essere incorporati al build time |
| Runtime Node | Filesystem del container | Immagine Docker | Ricostruito ad ogni build |
| Pacchetti SO | Filesystem del container | Immagine Docker | Non installare a runtime |
| Container Docker | Effimero | Riavviabile | Sicuro da eliminare |
Aggiornamenti
Per aggiornare OpenClaw sulla VM:
git pull
docker compose build
docker compose up -d