"É só usar um VPS. É tipo uma instalação de um clique." Este é o conselho que você vai ouvir em todo fórum, todo servidor de Discord e todo tutorial. E é tecnicamente verdade — da mesma forma que cozinhar o jantar é apenas "aplicar calor a comida." A instalação do OpenClaw em si é direta. Tudo que vem antes é onde as pessoas se dão mal.

Já configurei isso múltiplas vezes, ajudei outros a fazer o mesmo, e assisti gente suficiente quebrar seus servidores ou ser comprometida em horas para saber que o conselho "é só subir um VPS" é perigosamente incompleto. Este guia cobre cada passo de um servidor novo até uma instância do OpenClaw rodando, com segurança tratada como preocupação de primeira classe — não uma reflexão tardia.

Antes de começar

Este guia assume Ubuntu 22.04+ em um VPS na nuvem (DigitalOcean, Hetzner, Linode, Vultr — qualquer provedor funciona). Você vai precisar de: 1 vCPU, 4 GB RAM, 100 GB de armazenamento e um terminal com acesso SSH. Custo total: aproximadamente $6–24/mês dependendo do provedor.

Por que segurança vem primeiro

No momento em que seu VPS recebe um endereço IP público, ele está sob ataque. Isso não é hipérbole. Em segundos após o provisionamento, scanners automatizados vão encontrar seu servidor e começar a tentar forçar acesso SSH. Eu já vi tentativas de login começarem dentro de 12 segundos de um novo servidor entrar no ar.

O OpenClaw é um agente de IA com acesso aos seus dados pessoais, suas plataformas de mensagens, potencialmente seu e-mail e qualquer outra coisa que você conectar a ele. Se alguém compromete seu servidor, não ganha apenas uma máquina Linux — ganha seu assistente de IA e tudo que ele tem acesso. É por isso que protegemos o servidor antes de instalar qualquer coisa.

Atualizar o sistema

Faça SSH no seu servidor novo como root e imediatamente atualize tudo. Sua imagem de VPS quase certamente está rodando pacotes com vulnerabilidades conhecidas.

apt update && apt upgrade -y

Isso pode levar alguns minutos. Não pule o upgrade — seu trabalho é manter seu sistema atualizado enquanto atacantes estão ativamente escaneando servidores desatualizados.

Instalar ferramentas essenciais de segurança e rede

Uma instalação limpa do Ubuntu é deliberadamente mínima. O Linux foi projetado para ser composável e leve — não para vir pré-carregado com tudo que você pode precisar. Instale o essencial:

apt install -y curl wget ufw fail2ban ca-certificates gnupg git

Criar um usuário não-root

Rodar tudo como root é como servidores são completamente comprometidos a partir de um único exploit. Crie um usuário dedicado com privilégios sudo:

adduser openclaw
usermod -aG sudo openclaw

Use uma senha forte e única. Não a senha que você usa em todo lugar. Não uma variação dela. Uma senha genuinamente aleatória. Você não precisará digitá-la frequentemente porque estamos prestes a eliminar acesso baseado em senha inteiramente.

Configurar autenticação por chave SSH

Senhas são adivináveis. Chaves SSH não são. Na sua máquina local (não no servidor), gere um par de chaves se ainda não tiver um:

# On your local machine
ssh-keygen -t ed25519 -C "openclaw-vps"

Copie a chave pública para seu servidor:

# On your local machine
ssh-copy-id -i ~/.ssh/id_ed25519.pub openclaw@your-server-ip

Salve sua chave SSH

Se você perder sua chave privada e desabilitarmos a autenticação por senha (o que estamos prestes a fazer), você está permanentemente trancado do lado de fora. Faça backup do seu par de chaves agora. Guarde em algum lugar seguro. Não prossiga até verificar que consegue logar com a chave.

Teste o login baseado em chave antes de prosseguir:

# On your local machine
ssh openclaw@your-server-ip

Se você entrou sem ser solicitado por uma senha, está tudo certo. Se não, pare e corrija antes de continuar.

Hardening do SSH

Agora travamos o daemon SSH. Edite a configuração do SSH:

sudo nano /etc/ssh/sshd_config

Encontre e defina estes valores (alguns podem precisar ser descomentados ou adicionados):

Port 2222
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2

Estamos mudando a porta SSH do padrão 22 para 2222. Isso não é segurança — é redução de ruído. Todo scanner automatizado bate na porta 22 primeiro. Mudar para uma porta não-padrão elimina 99% dos ataques automatizados de baixo esforço e mantém seus logs legíveis.

Verifique a configuração SSH antes de reiniciar. Se você configurar errado e reiniciar, ficará trancado do lado de fora. Execute: sudo sshd -t

Se o teste passar sem output, reinicie o SSH:

sudo systemctl restart sshd

Não feche sua sessão atual. Abra um novo terminal e teste a conexão com a nova porta:

# On your local machine — in a NEW terminal
ssh -p 2222 openclaw@your-server-ip

Só feche a sessão original após confirmar que a nova funciona.

Configurar o firewall

Isso é uma dieta de eliminação para tráfego de rede. Bloqueamos tudo, depois seletivamente permitimos apenas o que precisamos.

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 2222/tcp comment 'SSH'

Só isso por enquanto. Uma porta aberta — nossa porta SSH customizada. Todo o resto está bloqueado. Ative o firewall:

sudo ufw enable

Verifique as regras:

sudo ufw status verbose

Configurar Fail2ban

"Eu pensei que tínhamos desabilitado senhas?" Sim — hoje. Mas segurança não é um evento único. O Fail2ban adiciona defesa em profundidade banindo automaticamente IPs que falham repetidamente na autenticação, protegendo contra ataques de força bruta na sua autenticação por chave SSH e em quaisquer serviços futuros que você exponha.

Crie um arquivo de configuração local (nunca edite o config principal — ele é sobrescrito em atualizações):

sudo nano /etc/fail2ban/jail.local

Adicione esta configuração:

[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 3

[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3

Inicie e habilite o fail2ban:

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Verifique se está rodando:

sudo fail2ban-client status sshd

Habilitar atualizações automáticas de segurança

Seu servidor precisa se atualizar sozinho sem esperar você lembrar de fazer SSH e rodar apt upgrade. Configure upgrades automáticos:

sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

Verifique se a origem de segurança está habilitada em /etc/apt/apt.conf.d/50unattended-upgrades. A linha contendo ${distro_id}:${distro_codename}-security deve estar descomentada.

Opcionalmente, configure reboots automáticos para atualizações de kernel:

sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

Encontre e defina:

Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "03:00";

Seu servidor agora pode reiniciar sozinho às 3 da manhã quando patches de kernel exigirem. Você vai dormir melhor.

Sanidade básica do SO

Antes de instalar qualquer outra coisa, defina seu fuso horário e certifique-se de que o relógio do sistema está sincronizado. Desvio de horário causa bugs sutis e enlouquecedores em sistemas distribuídos e logging:

sudo timedatectl set-timezone UTC
sudo timedatectl set-ntp on

Verifique:

timedatectl status

Instalar Tailscale VPN

É aqui que a configuração fica genuinamente interessante. O Tailscale cria uma VPN mesh privada entre seus dispositivos — seu laptop, seu celular, seu servidor — usando WireGuard por baixo. Uma vez que o Tailscale estiver rodando, podemos remover todo acesso público ao servidor e permitir apenas conexões através da mesh VPN criptografada.

curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up

Você receberá uma URL de autenticação. Abra-a no seu navegador, faça login na sua conta Tailscale e autorize o dispositivo. Uma vez conectado, obtenha o IP Tailscale do seu servidor:

tailscale ip -4

Isso te dá algo como 100.x.x.x — um IP privado que só é acessível pela sua rede Tailscale. Teste a conexão da sua máquina local (que também deve ter Tailscale instalado):

# On your local machine (with Tailscale running)
ssh -p 2222 openclaw@100.x.x.x

Restringir apenas ao Tailscale

Agora fazemos algo que parece imprudente mas é na verdade a configuração mais segura possível: removemos o acesso SSH público inteiramente.

# Remove public SSH rule
sudo ufw delete allow 2222/tcp

# Allow SSH only through Tailscale
sudo ufw allow in on tailscale0 to any port 2222 proto tcp comment 'SSH via Tailscale'

O SSH público agora se foi. Todo tráfego de entrada público se foi. O servidor só é acessível pela sua mesh Tailscale privada. Para hardening extra, desabilite IPv6 no UFW e aplique configurações a nível de kernel:

# Disable IPv6 in UFW
sudo sed -i 's/IPV6=yes/IPV6=no/' /etc/default/ufw

# Apply kernel hardening
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1

Recarregue o firewall:

sudo ufw reload
sudo ufw status verbose

Verifique se ainda consegue conectar via Tailscale. Se conseguir — parabéns, seu servidor agora é invisível para a internet pública.

Instalar Node.js

O OpenClaw requer Node.js. Nunca use a versão do Node que vem com o gerenciador de pacotes da sua distro — está sempre desatualizada. Instale do repositório oficial NodeSource:

curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt install -y nodejs

Verifique a instalação:

node --version
npm --version

Instalar o OpenClaw

Crie um diretório dedicado para a aplicação — não despeje apps de produção no diretório home:

sudo mkdir -p /opt/openclaw
sudo chown openclaw:openclaw /opt/openclaw
cd /opt/openclaw

Clone o repositório:

git clone https://github.com/openclaw/openclaw.git .
npm install

Corrija as permissões do diretório (elas vêm quebradas por padrão — como é tradição):

sudo chown -R openclaw:openclaw /opt/openclaw

Crie um diretório de credenciais:

mkdir -p /opt/openclaw/credentials
chmod 700 /opt/openclaw/credentials

Copie o arquivo de ambiente de exemplo e configure com suas chaves de API e configurações:

cp .env.example .env
nano .env

Execute o comando doctor embutido para verificar se tudo está configurado corretamente:

npm run doctor

Criar um serviço systemd

O systemd garante que o OpenClaw inicie no boot, reinicie em caso de crash e faça log corretamente. Crie o arquivo de serviço:

sudo nano /etc/systemd/system/openclaw.service

Adicione esta configuração de unit:

[Unit]
Description=OpenClaw AI Agent
After=network.target

[Service]
Type=simple
User=openclaw
WorkingDirectory=/opt/openclaw
ExecStart=/usr/bin/node /opt/openclaw/index.js
Restart=on-failure
RestartSec=10
StandardOutput=journal
StandardError=journal
SyslogIdentifier=openclaw
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target

Habilite e inicie o serviço:

sudo systemctl daemon-reload
sudo systemctl enable openclaw
sudo systemctl start openclaw

Verifique se está rodando:

sudo systemctl status openclaw

Veja os logs para observar o comportamento em runtime:

sudo journalctl -u openclaw -f

Backups e monitoramento

Sua instância OpenClaw agora está rodando e acumulando dados — memórias, conversas, configurações. Proteja-a.

Configure um script básico de backup:

sudo nano /opt/openclaw/backup.sh
#!/bin/bash
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/opt/openclaw/backups"
mkdir -p $BACKUP_DIR
tar -czf $BACKUP_DIR/openclaw_$TIMESTAMP.tar.gz \
    --exclude='node_modules' \
    --exclude='backups' \
    /opt/openclaw/
# Keep only last 7 backups
ls -t $BACKUP_DIR/openclaw_*.tar.gz | tail -n +8 | xargs -r rm
echo "Backup completed: openclaw_$TIMESTAMP.tar.gz"
chmod +x /opt/openclaw/backup.sh

Automatize com um cron job (diário às 2 da manhã):

crontab -e
# Add this line:
0 2 * * * /opt/openclaw/backup.sh >> /var/log/openclaw-backup.log 2>&1

Se o OpenClaw possui uma auditoria de segurança embutida, execute-a:

npm audit

A arquitetura final

Vamos revisar o que você construiu. Seu servidor agora tem:

O servidor é acessível apenas pela sua rede Tailscale privada. Toda conexão é criptografada ponta a ponta com WireGuard. Isso é significativamente mais seguro do que a configuração padrão que a maioria dos tutoriais te deixa.

Segurança não é algo que você faz uma vez. Ela precisa viver de graça na sua cabeça o tempo todo.

A alternativa: use um Mac Mini

Depois de tudo isso — depois do hardening de SSH, das regras de firewall, da mesh VPN, dos serviços systemd — eu deveria te contar uma coisa. Você também poderia simplesmente rodar o OpenClaw em um Mac Mini isolado na sua rede local. Sem IP público. Sem superfície de ataque. Sem conta de VPS. Conecte, instale Node.js, clone o repositório, rode.

A abordagem VPS faz sentido quando você precisa de acesso remoto de qualquer lugar, uptime 24/7, ou está rodando múltiplos serviços. Mas se você só quer um assistente pessoal de IA que funciona quando você está em casa e tem uma máquina sobrando — a opção mais simples e segura é um dispositivo na sua rede local que não tem nenhuma exposição à internet pública.

Há uma ironia em gastar duas horas protegendo um servidor público quando a configuração mais segura é um computador no seu armário que a internet não consegue ver. Escolha a abordagem que se encaixa nos seus requisitos reais, não a que parece mais impressionante.

A melhor arquitetura de servidor é aquela que combina com seu modelo de ameaça, não a que tem mais passos.

Se você quer ajuda configurando o OpenClaw para seu caso de uso específico — seja em um VPS, uma máquina local, ou uma arquitetura multi-serviço mais complexa — eu faço consultoria exatamente nesse tipo de infraestrutura de IA.

Relacionado: 6 Casos de Uso do OpenClaw: Construa um Segundo Cérebro, Fábrica de Conteúdo e Mais