🦞

Guia de Instalação — OpenClaw VPS Stack

Passo a passo completo para instalar e configurar o OpenClaw em uma VPS

OpenClaw 2026.2.x Ubuntu 24.04 Node.js 22+ Tailscale VPN

Índice

  1. Pré-Requisitos e Contas
  2. Criar e Configurar VPS (Hetzner)
  3. Instalar Tailscale (VPS + Desktop)
  4. Instalar OpenClaw na VPS
  5. Rodar o Setup Wizard
  6. Enviar Configs para a VPS
  7. Executar Install Script na VPS
  8. Configurar Gateway e WhatsApp
  9. Acessar o Dashboard (Control UI)
  10. Configurar Modelo LLM
  11. Configurar como Serviço Permanente
  12. Troubleshooting
0
Pré-Requisitos e Contas
Prepare tudo antes de começar

Software no seu computador (local)

Contas necessárias

ServiçoLinkPara quê
Hetzner Cloudconsole.hetzner.cloudVPS (servidor)
Tailscaletailscale.comVPN mesh segura
Supabasesupabase.comDatabase
OpenRouteropenrouter.aiLLM routing (opcional)
Anthropicconsole.anthropic.comClaude API (opcional)
OpenAIplatform.openai.comGPT API (opcional)
AssemblyAIassemblyai.comTranscrição de áudio (opcional)
ClickUpclickup.comProject management (opcional)

API Keys para preparar

Obtenha antes de iniciar a instalação:

OPENROUTER_API_KEYOpenRouter → Dashboard → API Keys
ANTHROPIC_API_KEYAnthropic Console → API Keys
OPENAI_API_KEYOpenAI Platform → API Keys
SUPABASE_URLSupabase → Project Settings → API → URL
SUPABASE_ANON_KEYSupabase → Project Settings → API → anon key
SUPABASE_SERVICE_ROLE_KEYSupabase → Project Settings → API → service_role key
SUPABASE_PROJECT_REFSupabase → Project Settings → General → Reference ID
SUPABASE_DB_PASSWORDA senha que você definiu ao criar o projeto
POSTGRES_HOSTSupabase → Project Settings → Database → Host (db.xxx.supabase.co)
Organize todas as keys num arquivo de texto temporário antes de começar. Vai facilitar muito o setup.
1
Criar e Configurar VPS (Hetzner)
Seu servidor na nuvem
  1. Acessar Hetzner Console
  2. Criar servidor com:
    • Localização: Helsinki (ou mais próximo)
    • Imagem: Ubuntu 24.04
    • Tipo: CX21 ou superior (2 vCPU, 4GB RAM)
    • SSH Key: adicionar sua chave pública
  3. Anotar o IP do servidor criado

Conectar e preparar o sistema

# Conectar via SSH
ssh root@SEU_IP_DO_SERVIDOR

# Atualizar sistema
apt update && apt upgrade -y

# Instalar Node.js 22
curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
apt-get install -y nodejs

# Instalar ferramentas essenciais
apt install -y git build-essential screen jq curl ffmpeg
Node.js 22+ instalado — verificar com node --version
2
Instalar Tailscale (VPS + Desktop)
VPN mesh para conexão segura

Na VPS

# Instalar Tailscale
curl -fsSL https://tailscale.com/install.sh | sh

# Autenticar (abre link no browser)
tailscale up --hostname=openclaw

# Verificar
tailscale status

No seu computador (macOS/Windows/Linux)

Baixe e instale o Tailscale de tailscale.com/download. Autentique com a mesma conta usada na VPS.

# Verificar conectividade
tailscale ping openclaw
Ambos os dispositivos aparecem como "Connected" no painel Tailscale
3
Instalar OpenClaw na VPS
O gateway de IA

Conecte na VPS via SSH e instale o OpenClaw:

# Conectar na VPS (use IP Tailscale ou IP público)
ssh root@IP_DA_VPS

# Instalar OpenClaw globalmente
npm install -g openclaw@latest

# Verificar instalação
openclaw --version
O OpenClaw requer Node.js 22+. Se instalou versão anterior, atualize antes.
Comando openclaw --version retorna a versão (ex: 2026.2.19-2)
4
Rodar o Setup Wizard (Onboard)
Configuração interativa do OpenClaw
openclaw onboard --install-daemon

O wizard vai pedir várias configurações. Aqui está o que cada campo significa:

Anthropic Setup Token

No seu computador local (não na VPS), abra um terminal e rode:

claude setup-token

Copie o token gerado (formato sk-ant-oat01-...) e cole na VPS.

Se usa assinatura mensal do Claude (Pro/Max), primeiro faça claude login no seu computador, depois claude setup-token.

WhatsApp

Quando perguntar sobre o telefone, selecione se é pessoal ou dedicado ao bot.

Gateway Service

Selecione "Restart" se já estiver instalado, ou instale normalmente.

Hatch

Quando perguntar "How do you want to hatch your bot?", pode pular por enquanto (vamos configurar manualmente).

Onboard completo sem erros
5
Enviar Configs para a VPS
Se tiver config local (aiosbot-vps-stack)

Se você gerou configs localmente com o setup.sh, precisa enviá-las para a VPS.

Bug macOS: O sed -i do setup.sh não funciona no macOS. Se der erro "extra characters at the end of l command", troque todos os sed -i "s| por sed -i '' "s| no script.
Bug macOS: Arquivos com extended attributes (o @ no ls -la) travam scp/rsync/tar/zip. Solução: limpar com xattr -cr ~/caminho/ antes de transferir.

Método recomendado: Deploy via SSH

Se scp/rsync travarem, use redirecionamento via SSH (funciona sempre):

# 1. Criar estrutura na VPS
ssh root@IP_VPS 'mkdir -p /opt/aiosbot/vps/{config,mcps,skills,workspace}'

# 2. Enviar arquivo por arquivo
ssh root@IP_VPS 'cat > /opt/aiosbot/.env' < .env
ssh root@IP_VPS 'cat > /opt/aiosbot/vps/install.sh' < vps/install.sh
ssh root@IP_VPS 'chmod +x /opt/aiosbot/vps/install.sh'

# Repetir para cada arquivo necessário
Se tiver muitos arquivos, crie um script bash que faz todos os ssh cat automaticamente.
6
Executar Install Script na VPS
Instalar dependências e configurar ambiente
# Na VPS
cd /opt/aiosbot
chmod +x vps/install.sh
./vps/install.sh

O script instala:

Se aparecer erro @synkra/aiosbot - Not found, o pacote correto é openclaw. Instale com: npm install -g openclaw@latest
Se pedir instalação de ffmpeg via brew, no Linux use: apt-get install -y ffmpeg
Install script completo — openclaw --version funciona
7
Configurar Gateway e WhatsApp
Conectar o bot ao mundo

Configurar o Gateway

# Configuração interativa
openclaw configure

Selecione Gateway e configure:

CampoValor Recomendado
Gateway port18789 (padrão)
Gateway bind modeLoopback (pra começar, depois mude pra Tailnet)
Gateway authPassword
Gateway passwordUma senha forte
A senha precisa ser uma string. Se o OpenClaw recusar dizendo "expected string, received number", configure via CLI: openclaw config set gateway.auth.password '"SUA_SENHA"' (com aspas duplas dentro de simples).

Iniciar o Gateway

# Iniciar em modo verboso (primeiro teste)
openclaw gateway --force --verbose

Deve mostrar:

Conectar WhatsApp

Abra outro terminal SSH na VPS e rode:

openclaw channels login --verbose

Vai aparecer um QR code. Escaneie com o WhatsApp (Dispositivos Conectados → Conectar Dispositivo).

Se já conectou antes e precisa reconectar, use o mesmo comando openclaw channels login --verbose.

Configurar Política de DMs

Por padrão, o OpenClaw bloqueia mensagens de números não autorizados.

# Opção 1: Aceitar de qualquer número (mais fácil pra testar)
openclaw config set channels.whatsapp.dmPolicy open

# Opção 2: Allowlist (mais seguro - só números específicos)
openclaw config set channels.whatsapp.dmPolicy allowlist
# Adicionar números permitidos no config
Se ver Blocked unauthorized sender nos logs, o número que mandou mensagem não está na allowlist. Mude pra open ou adicione o número.
Gateway rodando + WhatsApp conectado + mensagens sendo recebidas nos logs
8
Acessar o Dashboard (Control UI)
Interface web de gerenciamento

Criar túnel SSH

No seu computador local, abra um terminal e rode:

ssh -N -L 18789:127.0.0.1:18789 root@IP_DA_VPS

Deixe esse terminal aberto (não vai mostrar nada, é normal).

Acessar no browser

Abra no browser:

http://127.0.0.1:18789/
Conexões localhost (127.0.0.1) são auto-aprovadas pelo gateway. Não precisa de token extra.
Se pedir token, gere com openclaw dashboard na VPS e use a URL tokenizada gerada.

O dashboard mostra:

Dashboard acessível com "Health OK" verde no canto superior direito
9
Configurar Modelo LLM
Escolher qual IA o bot usa

Trocar o modelo padrão

# Definir modelo principal
openclaw config set agents.defaults.model.primary openai/gpt-4.1-mini

# Outros exemplos:
# openclaw config set agents.defaults.model.primary anthropic/claude-sonnet-4
# openclaw config set agents.defaults.model.primary google/gemini-2.0-flash-001
# openclaw config set agents.defaults.model.primary deepseek/deepseek-chat

Configurar API Keys

# Configuração interativa (recomendado)
openclaw configure
# Selecione "Model" e siga o wizard

Modelos disponíveis por provedor

ProvedorModelos PopularesCusto
OpenAIgpt-4.1-mini, gpt-4o, gpt-4o-mini$$
Anthropicclaude-sonnet-4, claude-haiku-4$$
Googlegemini-2.0-flash, gemini-pro$
DeepSeekdeepseek-chat, deepseek-v3$
OpenRouterQualquer modelo via proxyVaria
Após trocar o modelo, sempre reinicie o gateway: openclaw gateway --force ou Ctrl+C + reiniciar.
Se aparecer No API key found for provider, rode openclaw configure → selecione Model → configure a API key do provedor escolhido.
Mensagem enviada pelo WhatsApp recebe resposta do modelo configurado
10
Configurar como Serviço Permanente
Rodar 24/7 sem terminal aberto

Instalar serviço systemd

# Instalar o gateway como serviço
openclaw gateway install

# Se já estiver instalado:
openclaw gateway install --force

Gerenciar o serviço

# Iniciar
openclaw gateway start

# Parar
openclaw gateway stop

# Ver status
openclaw health

# Ver logs
openclaw logs --follow

Agora o gateway:

Feche todos os terminais, mande mensagem pelo WhatsApp e confirme que o bot responde
?
Troubleshooting
Problemas comuns e soluções

Gateway não responde

openclaw health
openclaw gateway --force --verbose
# Ver logs detalhados
openclaw logs --follow

"pairing required" ao conectar TUI/Dashboard

"gateway password missing"

# Definir variável de ambiente
OPENCLAW_GATEWAY_PASSWORD="SUA_SENHA" openclaw tui

# Ou configurar permanentemente
openclaw config set gateway.auth.password '"SUA_SENHA"'

"Blocked unauthorized sender"

# Abrir pra todos (teste)
openclaw config set channels.whatsapp.dmPolicy open

# Reiniciar gateway após mudar config
openclaw gateway --force

"No API key found for provider"

# Configurar API keys
openclaw configure
# Selecione "Model" e configure o provedor

API rate limit

Bug macOS: sed "extra characters"

No macOS, sed -i precisa de argumento extra. Troque:

# De (não funciona no macOS):
sed -i "s|algo|outro|g" arquivo

# Para (funciona no macOS):
sed -i '' "s|algo|outro|g" arquivo

Bug macOS: scp/rsync/tar travam

Extended attributes do macOS quebram transferências. Limpe antes:

xattr -cr ~/caminho/do/projeto/

Se ainda travar, use o método SSH com cat:

ssh root@VPS 'cat > /destino/arquivo' < arquivo_local

Comandos úteis

ComandoO que faz
openclaw doctorDiagnóstico completo do sistema
openclaw healthStatus rápido do gateway
openclaw statusStatus dos canais e sessões
openclaw channels listListar canais conectados
openclaw models listListar modelos disponíveis
openclaw skills listListar skills instaladas
openclaw logs --followLogs em tempo real
openclaw configureWizard de configuração
openclaw resetReset de configuração
openclaw dashboardGerar URL tokenizada do dashboard