Files

1 line
8.0 KiB
JSON

{"repo": "caio23364/openclaw-js", "files": {"DOCKER.md": {"131702c8511369fd9d03ac37b3fe4049f1055c13": {"t": 1785674613.1556616, "n": 7496, "h": "7d6026583e6d436b", "c": "# 🐳 OpenClaw JS - Docker Guide\n\nGuia completo para rodar o OpenClaw JS em Docker.\n\n## 📋 Pré-requisitos\n\n- Docker Engine 24.0+ (com Buildx para multi-plataforma)\n- Docker Compose 2.0+ (opcional, mas recomendado)\n- Pelo menos 2GB de RAM disponível\n- **Suporte a arquiteturas**: AMD64 (x86_64) e ARM64 (Apple Silicon, Raspberry Pi, AWS Graviton)\n\n## 🖥️ Suporte a Arquiteturas\n\nO OpenClaw JS suporta as seguintes arquiteturas:\n\n| Arquitetura | Plataformas | Status |\n|-------------|-------------|--------|\n| `linux/amd64` | Intel, AMD tradicional, servidores cloud | ✅ Suportado |\n| `linux/arm64` | Apple Silicon (M1/M2/M3), Raspberry Pi 4/5, AWS Graviton | ✅ Suportado |\n\n### Apple Silicon (M1/M2/M3/M4)\n\nO Docker Desktop para Mac com Apple Silicon usa automaticamente a imagem ARM64:\n\n```bash\n# O Docker irá automaticamente usar a imagem ARM64 se disponível\ndocker-compose up -d\n\n# Ou force explicitamente\ndocker run -d --platform linux/arm64 --name openclaw -p 18789:18789 openclaw-js:latest\n```\n\n### Raspberry Pi (4/5 com 64-bit OS)\n\n```bash\n# Raspberry Pi OS 64-bit ou Ubuntu ARM64\ndocker run -d --platform linux/arm64 --name openclaw -p 18789:18789 openclaw-js:latest\n```\n\n## 🚀 Quick Start\n\n### 1. Configure o ambiente\n\n```bash\n# Copie o arquivo de exemplo\ncp .env.example .env\n\n# Edite o .env com suas chaves de API\nnano .env\n```\n\n### 2. Execute com Docker Compose (Recomendado)\n\n```bash\n# Construir e iniciar\ndocker-compose up -d\n\n# Ver logs\ndocker-compose logs -f\n\n# Parar\ndocker-compose down\n```\n\n### 3. Ou use Docker diretamente\n\n```bash\n# Construir a imagem\n./docker-build.sh\n\n# Rodar o container\ndocker run -d \\\n --name openclaw \\\n -p 18789:18789 \\\n -v openclaw-data:/app/.openclaw \\\n --env-file .env \\\n openclaw-js:latest\n```\n\n## ⚙️ Configuração\n\n### Variáveis de Ambiente Obrigatórias\n\nNo mínimo, configure uma chave de AI provider no `.env`:\n\n```bash\n# Escolha pelo menos uma\nANTHROPIC_API_KEY=sk-ant-...\nOPENAI_API_KEY=sk-...\nGOOGLE_API_KEY=...\n```\n\n### Gateway\n\nPor padrão, o gateway escuta em `0.0.0.0:18789` dentro do container.\n\nAcesse de fora do container:\n- WebSocket: `ws://localhost:18789`\n- HTTP API: `http://localhost:18789`\n\n### Persistência de Dados\n\nOs dados são persistidos no volume Docker `openclaw-data`:\n\n- Configurações: `~/.openclaw/config.json`\n- Estado: `~/.openclaw/state/`\n- Logs: `~/.openclaw/logs/`\n- Skills: `~/.openclaw/skills/`\n\nPara backup:\n\n```bash\n# Backup\ndocker run --rm -v openclaw-data:/data -v $(pwd):/backup alpine tar czf /backup/openclaw-backup.tar.gz -C /data .\n\n# Restore\ndocker run --rm -v openclaw-data:/data -v $(pwd):/backup alpine tar xzf /backup/openclaw-backup.tar.gz -C /data\n```\n\n## 🔧 Comandos Úteis\n\n### Docker Compose\n\n```bash\n# Iniciar\ndocker-compose up -d\n\n# Ver logs em tempo real\ndocker-compose logs -f\n\n# Reiniciar\ndocker-compose restart\n\n# Parar e remover containers\ndocker-compose down\n\n# Parar e remover containers + volumes (CUIDADO: apaga dados!)\ndocker-compose down -v\n```\n\n### Docker Puro\n\n```bash\n# Ver containers rodando\ndocker ps\n\n# Ver logs\ndocker logs -f openclaw\n\n# Executar comando no container\ndocker exec -it openclaw sh\n\n# Reiniciar\ndocker restart openclaw\n\n# Parar\ndocker stop openclaw\n\n# Remover container\ndocker rm openclaw\n```\n\n## 🛠️ Build Manual\n\n### Build Simples (Arquitetura Nativa)\n\n```bash\n# Build simples\ndocker build -t openclaw-js .\n\n# Build com script interativo\n./docker-build.sh\n\n# Build com tag específica\n./docker-build.sh v2026.2.14\n```\n\n### Build Multi-Plataforma (AMD64 + ARM64)\n\n```bash\n# Usando docker-bake.hcl (recomendado)\ndocker buildx bake\n\n# Build manual multi-plataforma\n# Nota: requer docker buildx com driver docker-container ou similar\ndocker buildx build \\\n --platform linux/amd64,linux/arm64 \\\n --target production \\\n -t openclaw-js:latest \\\n --push .\n\n# Build específico para ARM64 (Apple Silicon, Raspberry Pi)\ndocker buildx build \\\n --platform linux/arm64 \\\n --target production \\\n -t openclaw-js:latest \\\n --load .\n\n# Build específico para AMD64 (Intel/AMD tradicional)\ndocker buildx build \\\n --platform linux/amd64 \\\n --target production \\\n -t openclaw-js:latest \\\n --load .\n```\n\n### Usando Docker Compose com Buildx\n\n```bash\n# Configurar builder multi-plataforma (primeira vez)\ndocker buildx create --use --name multiplatform-builder\n\n# Build e push para registry\ndocker buildx bake --push\n\n# Build apenas local\ndocker-compose build\n```\n\n### Verificando a Arquitetura da Imagem\n\n```bash\n# Verificar arquitetura da imagem construída\ndocker inspect openclaw-js:latest | grep Architecture\n\n# Ver todas as plataformas disponíveis (imagem multi-arch)\ndocker manifest inspect openclaw-js:latest\n```\n\n## 🌐 Conectando a Serviços Externos\n\n### Ollama Local\n\nPara conectar ao Ollama rodando no host:\n\n```bash\n# No .env, use o IP especial do Docker host\nOLLAMA_BASE_URL=http://host.docker.internal:11434/v1\n```\n\nOu adicione o serviço Ollama no `docker-compose.yml` (já incluído, comentado).\n\n### WhatsApp\n\nO WhatsApp reescaneamento de QR code a cada reinicialização. Para persistir a sessão:\n\n```bash\n# Os dados já são persistidos automaticamente no volume\n# Apenas não remova o volume entre reinicializações\n```\n\n### Custom Providers (OpenAI-Compatible)\n\nPara usar providers customizados com Docker, adicione ao seu `.env`:\n\n```bash\n# Defina os prefixes dos providers customizados\nCUSTOM_PROVIDERS=together,fireworks\n\n# Configure cada provider\nTOGETHER_NAME=\"Together AI\"\nTOGETHER_BASE_URL=https://api.together.xyz/v1\nTOGETHER_API_KEY=sua-chave-aqui\n\nFIREWORKS_NAME=\"Fireworks AI\"\nFIREWORKS_BASE_URL=https://api.fireworks.ai/inference/v1\nFIREWORKS_API_KEY=sua-chave-aqui\n```\n\nOu passe diretamente no `docker run`:\n\n```bash\ndocker run -d \\\n --name openclaw \\\n -p 18789:18789 \\\n -e CUSTOM_PROVIDERS=together \\\n -e TOGETHER_NAME=\"Together AI\" \\\n -e TOGETHER_BASE_URL=https://api.together.xyz/v1 \\\n -e TOGETHER_API_KEY=sua-chave \\\n -v openclaw-data:/app/.openclaw \\\n openclaw-js:latest\n```\n\nUso após configurar:\n```bash\n# Via CLI\nopenclaw agent -m \"Hello\" --model together/llama-3.1-70b\n\n# Ou no chat\n/model together/llama-3.1-70b\n```\n\n## 🔒 Segurança\n\n- O container roda como usuário não-root (`nodejs`)\n- Puppeteer usa Chromium do Alpine (não baixa Chrome)\n- Apenas porta 18789 é exposta\n- Health check configurado\n\n## 🐛 Troubleshooting\n\n### Problema: Container não inicia\n\n```bash\n# Ver logs\ndocker logs openclaw\n\n# Verificar se há erros de configuração\ndocker exec openclaw cat /app/.openclaw/config.json\n```\n\n### Problema: Gateway não responde\n\n```bash\n# Testar conectividade interna\ndocker exec openclaw wget -qO- http://localhost:18789/health\n\n# Verificar portas expostas\ndocker port openclaw\n```\n\n### Problema: Puppeteer/Chrome não funciona\n\nO Chromium já está incluído na imagem. Se houver problemas:\n\n```bash\n# Verificar se Chromium existe\ndocker exec openclaw which chromium-browser\n\n# Testar Puppeteer\ndocker exec openclaw node -e \"const puppeteer = require('puppeteer'); console.log('OK')\"\n```\n\n### Problema: Permissões no volume\n\n```bash\n# Corrigir permissões\ndocker run --rm -v openclaw-data:/data alpine chown -R 1001:1001 /data\n```\n\n## 📊 Monitoramento\n\n```bash\n# Uso de recursos\ndocker stats openclaw\n\n# Inspecionar container\ndocker inspect openclaw\n```\n\n## 📝 Notas\n\n- A imagem usa Node.js 22 Alpine (~180MB base)\n- Com Chromium adicionado, a imagem fica em torno de ~400MB\n- O build multi-stage remove devDependencies da imagem final\n- Use `docker-compose` para ambiente de desenvolvimento\n- Use `docker run` direto para deployment simples\n"}}}}