Hosting

Runtime de VM do Docker

Etapas compartilhadas de runtime para instalações do Docker baseadas em VM, como GCP, Hetzner e provedores de VPS semelhantes.

Inclua os binários necessários na imagem

Instalar binários dentro de um contêiner em execução é uma armadilha: tudo o que for instalado em runtime será perdido ao reiniciar. Inclua na imagem, durante a compilação, todos os binários externos necessários para uma skill.

Os exemplos abaixo abrangem apenas três binários, em ordem alfabética:

  • gog (do gogcli) para acesso ao Gmail
  • goplaces para o Google Places
  • wacli para o WhatsApp

Estes são exemplos, não uma lista completa. Instale quantos binários forem necessários para suas skills usando o mesmo padrão. Quando você adicionar posteriormente uma skill que exija um novo binário:

  1. Atualize o Dockerfile.
  2. Recompile a imagem.
  3. Reinicie os contêineres.

Exemplo de Dockerfile

dockerfile
FROM node:24-bookworm RUN apt-get update && apt-get install -y socat && rm -rf /var/lib/apt/lists/* # Exemplo de binário 1: CLI do Gmail (gogcli — instalado como `gog`)# Copie a URL atual do artefato para Linux de 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 # Exemplo de binário 2: CLI do Google Places# Copie a URL atual do artefato para Linux de 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 # Exemplo de binário 3: CLI do WhatsApp# Copie a URL atual do artefato para Linux de 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 # Adicione mais binários abaixo usando o mesmo padrão 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"]

Compile e inicie

bash
docker compose builddocker compose up -d openclaw-gateway

Se a compilação falhar com Killed ou código de saída 137 durante pnpm install --frozen-lockfile, a VM está sem memória. Use uma classe de máquina maior antes de tentar novamente.

Verifique os binários:

bash
docker compose exec openclaw-gateway which gogdocker compose exec openclaw-gateway which goplacesdocker compose exec openclaw-gateway which wacli

Saída esperada:

text
/usr/local/bin/gog/usr/local/bin/goplaces/usr/local/bin/wacli

Verifique se o Gateway está ativo:

bash
docker compose logs -f openclaw-gatewaycurl -fsS http://127.0.0.1:18789/healthz

Uma resposta 200 de /healthz confirma que o processo do Gateway está escutando e íntegro; o HEALTHCHECK integrado à imagem consulta o mesmo endpoint.

O que persiste e onde

O OpenClaw é executado no Docker, mas o Docker não é a fonte da verdade. Todo estado de longa duração deve sobreviver a reinicializações, recompilações e reinícios da máquina.

Componente Localização Mecanismo de persistência Observações
Configuração do Gateway /home/node/.openclaw/ Montagem de volume do host Inclui openclaw.json
Credenciais de canal/provedor /home/node/.openclaw/credentials/ Montagem de volume do host Material de credenciais de canais e provedores
Perfis de autenticação do modelo /home/node/.openclaw/agents/ Montagem de volume do host agents/<agentId>/agent/auth-profiles.json (OAuth, chaves de API)
Arquivo legado de chave OAuth /home/node/.config/openclaw/ Montagem de volume do host Compatibilidade somente leitura para arquivos auxiliares OAuth anteriores à migração; openclaw doctor --fix os migra para auth-profiles.json
Configurações das skills /home/node/.openclaw/skills/ Montagem de volume do host Estado no nível da skill
Espaço de trabalho do agente /home/node/.openclaw/workspace/ Montagem de volume do host Código e artefatos do agente
Sessão do WhatsApp /home/node/.openclaw/ Montagem de volume do host Preserva o login por QR
Chaveiro do Gmail /home/node/.openclaw/ Volume do host + senha Requer GOG_KEYRING_PASSWORD
Pacotes de plugins /home/node/.openclaw/npm, /home/node/.openclaw/git Montagem de volume do host Raízes de pacotes de plugins disponíveis para download
Binários externos /usr/local/bin/ Imagem do Docker Devem ser incluídos durante a compilação
Runtime do Node Sistema de arquivos do contêiner Imagem do Docker Recompilado a cada compilação da imagem
Pacotes do sistema operacional Sistema de arquivos do contêiner Imagem do Docker Não instale em runtime
Contêiner do Docker Efêmero Reiniciável Pode ser destruído com segurança

Atualizações

Para atualizar o OpenClaw na VM:

bash
git pulldocker compose builddocker compose up -d

Relacionados

Was this useful?
On this page

On this page