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:

  • gog per l’accesso a Gmail
  • goplaces per Google Places
  • wacli per 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:

  1. Aggiornare il Dockerfile
  2. Ricostruire l’immagine
  3. 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.

ComponentePosizioneMeccanismo di persistenzaNote
Config gateway/home/node/.openclaw/Volume host montatoInclude openclaw.json, token
Profili auth modelli/home/node/.openclaw/Volume host montatoToken OAuth, chiavi API
Config skill/home/node/.openclaw/skills/Volume host montatoStato a livello di skill
Workspace agent/home/node/.openclaw/workspace/Volume host montatoCodice e artefatti dell’agent
Sessione WhatsApp/home/node/.openclaw/Volume host montatoConserva il login QR
Keyring Gmail/home/node/.openclaw/Volume host + passwordRichiede GOG_KEYRING_PASSWORD
Binari esterni/usr/local/bin/Immagine DockerDevono essere incorporati al build time
Runtime NodeFilesystem del containerImmagine DockerRicostruito ad ogni build
Pacchetti SOFilesystem del containerImmagine DockerNon installare a runtime
Container DockerEffimeroRiavviabileSicuro da eliminare

Aggiornamenti

Per aggiornare OpenClaw sulla VM:

git pull
docker compose build
docker compose up -d