Modo Offline Total: OpenClaw Sem Internet Nenhuma
Configure OpenClaw em ambientes sem internet. Baixe modelos antecipadamente, transfira via USB, rode 100% air-gapped. Para segurança máxima e compliance.
Para quando “100% local” não basta — você precisa de zero conexão com internet. Nenhuma porta aberta, nenhum DNS, nenhum pacote baixado na máquina de produção.
Este guia mostra como preparar tudo em uma máquina conectada e transferir para uma máquina offline (air-gapped).
TL;DR — 3 Fases
- Máquina COM internet: Baixe Ollama, modelo, Node.js e OpenClaw
- Transfira via USB, SD card ou rede interna
- Máquina SEM internet: Instale tudo a partir dos arquivos locais
Quando Usar
- Compliance — LGPD, GDPR, HIPAA exigem que dados não saiam da rede
- Dados sensíveis — Código proprietário, documentos confidenciais, dados médicos
- Ambientes restritos — Governo, militar, infraestrutura crítica
- Trabalho em campo — Locais sem internet (embarcações, áreas rurais, eventos)
- Segurança máxima — Zero superfície de ataque via rede
Dica: Se você tem internet mas quer privacidade, o Setup Simples é mais fácil. Este guia é para ambientes realmente sem internet.
Arquitetura
FASE 1 FASE 2 FASE 3
┌──────────────────┐ ┌──────┐ ┌──────────────────┐
│ MÁQUINA ONLINE │ │ │ │ MÁQUINA OFFLINE │
│ │ │ USB │ │ │
│ Baixar: │ ───► │ ou │ ───► │ Instalar: │
│ - Ollama binary │ │ SD │ │ - Ollama binary │
│ - Modelo (3-9GB) │ │ Card │ │ - Modelo IA │
│ - Node.js tar │ │ │ │ - Node.js │
│ - OpenClaw .tgz │ └──────┘ │ - OpenClaw │
└──────────────────┘ │ │
│ Resultado: │
│ IA funcionando │
│ sem internet │
└──────────────────┘
Fase 1: Na Máquina COM Internet
Vamos baixar tudo que precisamos. Use uma máquina com internet e o mesmo sistema operacional da máquina de destino (mesma arquitetura: x86_64 ou ARM64).
1.1 Criar pasta de transferência
mkdir -p ~/openclaw-offline && cd ~/openclaw-offline
1.2 Baixar Ollama
# Linux x86_64
curl -L https://ollama.com/download/ollama-linux-amd64 -o ollama
# Linux ARM64 (Raspberry Pi, etc)
curl -L https://ollama.com/download/ollama-linux-arm64 -o ollama
# macOS — baixe o .dmg do site
# https://ollama.com/download/mac
chmod +x ollama
1.3 Baixar modelo de IA
# Instale Ollama temporariamente para baixar o modelo
./ollama serve &
sleep 5
# Baixar modelo (escolha um)
./ollama pull llama3.2:3b # 2GB — leve
# ./ollama pull llama3.1:8b # 4.7GB — equilibrado
# ./ollama pull qwen2.5:7b # 4.4GB — bom em português
# Parar o Ollama
pkill ollama
# Copiar os arquivos do modelo
cp -r ~/.ollama/models ./ollama-models/
1.4 Baixar Node.js
# Linux x86_64
curl -O https://nodejs.org/dist/v24.0.0/node-v24.0.0-linux-x64.tar.xz
# Linux ARM64
curl -O https://nodejs.org/dist/v24.0.0/node-v24.0.0-linux-arm64.tar.xz
# macOS ARM64 (M1/M2/M3)
curl -O https://nodejs.org/dist/v24.0.0/node-v24.0.0-darwin-arm64.tar.gz
Nota: Verifique a versão mais recente em nodejs.org/download
1.5 Baixar OpenClaw
# Empacotar OpenClaw para instalação offline
npm pack openclaw
# Isso cria: openclaw-x.x.x.tgz
1.6 Verificar pacote completo
ls -lh ~/openclaw-offline/
# Deve ter:
# ollama (~100MB)
# ollama-models/ (2-9GB dependendo do modelo)
# node-v24.x.x-*.tar (~30MB)
# openclaw-x.x.x.tgz (~5MB)
Fase 2: Transferir
Copie a pasta inteira ~/openclaw-offline/ para a mídia de transferência:
# Para USB (ajuste /dev/sdX e ponto de montagem)
cp -r ~/openclaw-offline/ /media/usb/
# Para um pendrive já montado
cp -r ~/openclaw-offline/ /mnt/pendrive/
Tamanho total: 2-10GB dependendo do modelo escolhido.
Segurança: Se estiver transferindo para ambiente classificado, considere criptografar o USB com LUKS:
# Na máquina online sudo cryptsetup luksFormat /dev/sdX1 sudo cryptsetup open /dev/sdX1 usb_crypt sudo mkfs.ext4 /dev/mapper/usb_crypt sudo mount /dev/mapper/usb_crypt /mnt/usb cp -r ~/openclaw-offline/ /mnt/usb/
Fase 3: Na Máquina SEM Internet
Conecte o USB e monte:
# Montar USB
sudo mount /dev/sdX1 /mnt/usb
cd /mnt/usb/openclaw-offline/
3.1 Instalar Node.js
# Extrair Node.js para /usr/local
sudo tar xf node-v24.0.0-linux-x64.tar.xz -C /usr/local --strip-components=1
# Verificar
node --version # v24.x.x
npm --version # 10.x.x
3.2 Instalar Ollama
# Copiar binário
sudo cp ollama /usr/local/bin/ollama
sudo chmod +x /usr/local/bin/ollama
# Criar usuário do serviço
sudo useradd -r -s /bin/false -m -d /usr/share/ollama ollama
# Copiar modelos
sudo mkdir -p /usr/share/ollama/.ollama/
sudo cp -r ollama-models/ /usr/share/ollama/.ollama/models/
sudo chown -R ollama:ollama /usr/share/ollama/.ollama/
# Criar serviço systemd
sudo tee /etc/systemd/system/ollama.service > /dev/null << 'EOF'
[Unit]
Description=Ollama Service
After=network-online.target
[Service]
User=ollama
Group=ollama
ExecStart=/usr/local/bin/ollama serve
Restart=always
RestartSec=3
Environment="OLLAMA_HOST=0.0.0.0"
Environment="HOME=/usr/share/ollama"
[Install]
WantedBy=default.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable ollama
sudo systemctl start ollama
3.3 Verificar Ollama
ollama list
# Deve listar o modelo copiado (llama3.2:3b)
ollama run llama3.2:3b "Olá! Estou offline?"
# Deve responder normalmente
3.4 Instalar OpenClaw
# Instalar a partir do pacote local
sudo npm install -g ./openclaw-*.tgz
# Verificar
openclaw --version
3.5 Configurar
openclaw onboard --install-daemon
# Escolha: Ollama como provider
# Modelo: llama3.2:3b
# Canal: o que preferir
Ou configure manualmente:
# ~/clawd/config.yaml
agents:
defaults:
model:
primary: "ollama/llama3.2:3b"
ollama:
baseUrl: "http://localhost:11434"
timeout: 120
3.6 Verificar
openclaw gateway status
# Deve mostrar: running
Envie uma mensagem de teste. Se respondeu — funciona 100% sem internet.
🎉 Air-Gapped e Funcionando!
Seu assistente IA roda sem nenhuma conexão com internet. Nenhum dado pode sair.
Desmontar USB e Bloquear
Depois de instalar tudo, remova o USB e (opcionalmente) bloqueie portas USB:
# Desmontar
sudo umount /mnt/usb
# Opcional: Desabilitar USB (segurança extrema)
# echo 'blacklist usb-storage' | sudo tee /etc/modprobe.d/block-usb.conf
# sudo update-initramfs -u
Atualizações em Ambiente Offline
Para atualizar, repita o processo:
- Na máquina online:
npm pack openclaw+ollama pull modelo-novo - Transfira via USB
- Na máquina offline:
sudo npm install -g ./openclaw-*.tgz
Frequência recomendada: Uma vez por mês para patches de segurança.
Segurança Adicional
Firewall
# Bloquear TODO tráfego externo (só permitir loopback)
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT DROP
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT
sudo iptables-save | sudo tee /etc/iptables/rules.v4
Logs de auditoria
# Habilitar auditoria de acesso ao OpenClaw
sudo auditctl -w /home/$USER/clawd/ -p rwxa -k openclaw_access
Criptografia de disco
Para máxima segurança, use criptografia full-disk (LUKS) na máquina offline. Se alguém roubar o hardware, os dados ficam protegidos.
Para Empresas: Compliance
| Regulação | Como o Air-Gap Atende |
|---|---|
| LGPD | Dados pessoais nunca saem do servidor controlado |
| GDPR | Sem transferência internacional de dados |
| HIPAA | Informações de saúde permanecem on-premise |
| SOC 2 | Perímetro de segurança claramente definido |
Dica: Documente o processo de air-gap como parte do seu relatório de compliance. O fato de que nenhum dado pode sair da rede é um diferencial forte.
Troubleshooting
Ollama não encontra o modelo copiado
Verifique a estrutura de pastas:
ls -la /usr/share/ollama/.ollama/models/
# Deve ter: blobs/ e manifests/
Se a estrutura está diferente, copie novamente:
sudo rm -rf /usr/share/ollama/.ollama/models/
sudo cp -r /mnt/usb/openclaw-offline/ollama-models/ /usr/share/ollama/.ollama/models/
sudo chown -R ollama:ollama /usr/share/ollama/.ollama/
sudo systemctl restart ollama
npm install falha offline (dependências)
O npm pack empacota o OpenClaw mas pode precisar de dependências nativas. Na máquina online, faça:
# Instalar todas as dependências offline
npm install --global-style openclaw@latest
cd $(npm root -g)/openclaw
npm pack
Isso garante que todas as dependências estão incluídas.
Arquitetura incompatível
Se a máquina online é x86_64 mas a offline é ARM64 (ou vice-versa), baixe os binários para a arquitetura correta:
# Verificar arquitetura da máquina de destino
uname -m
# x86_64 = amd64, aarch64 = arm64