Resposta curta. Clone o repositório do OpenClaw e rode ./scripts/docker/setup.sh com OPENCLAW_IMAGE="ghcr.io/openclaw/openclaw:latest" definido, para ele usar a imagem oficial já pronta em vez de construir uma (compilar a partir do código-fonte exige pelo menos 6 GB de RAM). O script roda o onboarding, grava um token do Gateway no .env e inicia o Gateway com o Docker Compose. Monte a pasta de estado ~/.openclaw para que nada se perca quando o contêiner for substituído, e mantenha a porta 18789 fechada para a internet: as portas publicadas do Docker passam por fora do UFW. Dê ao contêiner pelo menos 2 GB de memória; limitada a 1 GB sem swap, a imagem oficial foi encerrada por falta de memória no nosso teste.
Verificado em 6 de novembro de 2026, correto para o OpenClaw 2026.11.1.
Este guia usa a documentação de Docker do OpenClaw, o docker-compose.yml do repositório dele e um teste da imagem oficial que fizemos no nosso próprio servidor (números abaixo).
Você precisa mesmo do Docker?
A documentação do OpenClaw chama o Docker de opcional: útil para um Gateway isolado e descartável ou para uma máquina onde você não quer instalar o Node.js. Em um VPS que só roda o OpenClaw, a instalação simples com npm e um serviço do systemd é o caminho principal (veja como hospedar o OpenClaw 24/7). O Docker é uma boa escolha quando você já roda outras coisas em contêineres.
O que é a imagem oficial
Onde fica:ghcr.io/openclaw/openclaw (principal) e o espelho no Docker Hub openclaw/openclaw. O OpenClaw desaconselha espelhos não oficiais.
Tags:latest, versões exatas como 2026.11.1, variantes -slim e variantes -browser, que incluem o Chromium para automação de navegador.
Por dentro: ela roda como o usuário node sob o tini, e o entrypoint roda openclaw doctor --fix no seu estado montado antes de iniciar o Gateway, então as atualizações da imagem migram o estado para você. Uma verificação de saúde embutida chama /healthz.
O que medimos
Baixamos ghcr.io/openclaw/openclaw:2026.11.1 em um dos nossos servidores Linux e iniciamos o Gateway duas vezes com docker run (não com o Compose), sem modelo, sem app de chat, sem porta publicada, limitado a 1 CPU e sem swap: uma vez com limite de memória de 2 GB e outra com 1 GB. Os valores de memória estão em MiB, como o Linux informa.
Resultado
Download
Cerca de 695 MB comprimidos (amd64), 2.818 MiB (cerca de 3 GB) em disco depois de baixada
Node.js na imagem
24.22.1
Limite de 2 GB: início
/healthz respondeu 48 segundos depois do docker run, incluindo a passada do doctor. O Gateway carregou 14 plugins e registrou "ready" 22 segundos depois de começar a própria inicialização
Limite de 2 GB: memória em repouso
1.349 MiB 30 segundos depois de responder à verificação de saúde, 1.106 MiB dois minutos depois, máximo de 1.439 MiB. Nenhum evento de falta de memória
Limite de 1 GB
O Gateway chegou a "ready", e então o contêiner inteiro foi encerrado por falta de memória cerca de 54 segundos depois do início (código de saída 137)
O FAQ do OpenClaw dá 1 GB como mínimo absoluto para um VPS. Com esta versão em um contêiner limitado a 1 GB, isso não foi suficiente. Conte com 2 GB ou mais, e ainda mais para conversas reais, vários apps de chat ou uma imagem -browser. Mais em quanta memória o OpenClaw precisa.
Passo a passo com o Docker Compose
Instale o Docker Engine e o Docker Compose v2 e depois baixe o repositório:
git clone https://github.com/openclaw/openclaw.git
cd openclaw
Sem OPENCLAW_IMAGE, o script constrói openclaw:local a partir do código-fonte, o que exige pelo menos 6 GB de RAM; uma construção que termina em Killed ou com código de saída 137 ficou sem memória. O script pede a chave de API do seu provedor, gera o token do Gateway e o grava no .env, e então inicia o Gateway.
Abra o painel de controle em http://127.0.0.1:18789/ na mesma máquina e cole o token do .env em Settings. Se precisar do link de novo: docker compose run --rm openclaw-cli dashboard --no-open.
Os novos DMs começam no modo pairing: mande uma mensagem ao seu bot e depois rode docker compose run --rm openclaw-cli pairing approve telegram <CODE>. Mais em conectar o OpenClaw ao Telegram.
Para uma máquina sem prompts de terminal, o OpenClaw documenta um bootstrap sem interação: coloque a chave do provedor, OPENCLAW_GATEWAY_TOKEN e TELEGRAM_BOT_TOKEN no .env, depois rode onboard --non-interactive e channels add --channel telegram --use-env pelo contêiner do Gateway antes de docker compose up -d openclaw-gateway.
Persistência: o que montar e o que fazer backup
No contêiner
O que guarda
Lado do host (padrão do setup)
/home/node/.openclaw
openclaw.json, os bancos SQLite (autenticação do provedor, sessões), os plugins instalados, os segredos do .env
$HOME/.openclaw
/home/node/.openclaw/workspace
O workspace e os arquivos de memória do agente
$HOME/.openclaw/workspace
/home/node/.config/openclaw
A chave das credenciais criptografadas mais antigas
$HOME/.openclaw-auth-profile-secrets
Monte a pasta, nunca um arquivo só. O OpenClaw salva o openclaw.json substituindo-o, então um bind mount de um único arquivo pode fazer o contêiner continuar lendo uma cópia antiga.
Mantenha o estado em um disco local. Compartilhamentos NFS, SMB e CIFS não dão ao SQLite a coordenação de memória compartilhada de que ele precisa e podem corrompê-lo.
Um Gateway por pasta de estado. Pare o contêiner antigo antes de iniciar o substituto.
Trate os backups como segredos. A documentação do OpenClaw diz que os tokens OAuth ficam em texto puro nesses arquivos SQLite.
Tudo o que você instala dentro de um contêiner em execução se perde quando ele é recriado. Ferramentas extras entram na imagem na hora da construção.
Mantenha a porta privada
O docker-compose.yml do repositório publica 18789 (e 18790 e 3978) no host e inicia o Gateway com --bind lan, então a porta publicada chega até ele. Em um VPS isso significa que a porta do painel de controle fica no endereço público, a não ser que você a bloqueie. Duas armadilhas:
O UFW não cobre isso. As portas publicadas dos contêineres passam pelas cadeias de encaminhamento do próprio Docker, não só pelas regras INPUT do host. A documentação do OpenClaw traz regras para a cadeia DOCKER-USER; um firewall na nuvem que admita só SSH também resolve.
Use um túnel para acessar o painel de controle:ssh -N -L 18789:127.0.0.1:18789 root@<vps-ip>, e depois abra http://127.0.0.1:18789/ no seu próprio computador.
O Compose também define restart: unless-stopped, então o Gateway volta depois de uma falha ou de um reinício, e remove as capabilities NET_RAW e NET_ADMIN.
O entrypoint da imagem repara e migra o estado montado no início. Faça backup de ~/.openclaw antes. Com latest você acompanha cada versão estável; fixe uma tag como 2026.11.1 para ficar parado.
Sem Docker: rode o OpenClaw na PlayNHost
Um servidor da PlayNHost já é um contêiner isolado com o próprio limite de memória, então não há nada para compor. Não usamos a imagem oficial: o servidor roda o Node.js 26 e instala o pacote npm openclaw no primeiro início, e depois procura uma versão mais nova a cada início.
Configuração: cole uma chave de provedor de IA e um token de bot do Telegram ou do Discord na página Agente, e aperte Start. No nosso teste da mesma configuração, o agente estava rodando 67 segundos depois do primeiro Start, instalação incluída.
Persistência:.openclaw fica no disco do servidor e nos backups dele (cerca de 4 MB no nosso teste); o programa e os caches são reinstalados, não entram no backup.
Porta: o Gateway escuta só no endereço loopback do próprio servidor, porta 18789, com um token que o painel gera. Nada é publicado, então não há firewall para configurar errado.
Memória: planos de 2 GB, 4 GB e 8 GB. O início se recusa a rodar o OpenClaw com menos de 2 GB.
Ainda não incluído: o painel de controle web, apps de chat além do Telegram e do Discord, e a automação de navegador (sem Chromium).
Usamos cookies para manter o site funcionando, entender como ele é usado e medir nosso marketing. Você pode aceitar tudo, aceitar apenas os cookies essenciais ou escolher por categoria.Usamos cookies para manter o site funcionando, entender como ele é usado e medir nosso marketing. Eles estão ativos por padrão. Você pode desativar o que não quiser.Leia nossa política de privacidade