Stack Docker: OpenClaw + Ollama em Containers (100% Local)

Docker Compose com OpenClaw e Ollama rodando juntos em containers. Setup robusto, reproduzível, fácil de gerenciar. Zero dependência de cloud.

⏱️ 20 minutos · 🎯 Intermediário · 🐳 Docker · 🔒 100% Local

OpenClaw + Ollama rodando juntos em containers Docker. Um docker compose up e tudo sobe. Mais robusto que a instalação direta, fácil de atualizar, reinicia automaticamente.

Primeira vez com Docker? Recomendamos o Setup Simples — sem Docker, sem complicação. Volte aqui quando quiser mais controle.

TL;DR — Só os Comandos
# 1. Crie a pasta e o docker-compose.yml (conteúdo abaixo)
mkdir -p ~/openclaw-local && cd ~/openclaw-local

# 2. Suba tudo
docker compose up -d

# 3. Baixe o modelo de IA
docker exec ollama ollama pull llama3.2:3b

# 4. Configure o OpenClaw
docker exec -it openclaw openclaw onboard

Por Que Docker?
VantagemDescrição
IsolamentoNada instalado no sistema. Remove tudo com docker compose down -v
ReproduzívelMesmo docker-compose.yml funciona em qualquer máquina
Auto-restartReinicia sozinho se cair ou se o PC reiniciar
GPU passthroughSuporte nativo a GPUs NVIDIA via Container Toolkit
Atualizaçõesdocker compose pull && docker compose up -d — pronto

Requisitos
  • Docker 20.10+ com Docker Compose v2+
  • RAM: 8GB+ (16GB recomendado)
  • Disco: 10GB+ livres
  • GPU (opcional): NVIDIA com Container Toolkit
Instalar Docker

Ubuntu/Debian:

curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
# Faça logout e login novamente

macOS/Windows: Baixe o Docker Desktop


Passo 1: Criar o docker-compose.yml
mkdir -p ~/openclaw-local && cd ~/openclaw-local

Crie o arquivo docker-compose.yml:

# docker-compose.yml — OpenClaw + Ollama 100% Local
version: '3.8'

services:
  # Motor de IA local
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    restart: unless-stopped
    volumes:
      - ollama-data:/root/.ollama
    ports:
      - "11434:11434"
    # Descomente para GPU NVIDIA:
    # deploy:
    #   resources:
    #     reservations:
    #       devices:
    #         - driver: nvidia
    #           count: 1
    #           capabilities: [gpu]

  # OpenClaw Gateway
  openclaw:
    image: node:22-slim
    container_name: openclaw
    restart: unless-stopped
    depends_on:
      - ollama
    volumes:
      - openclaw-workspace:/app/workspace
      - openclaw-config:/app/config
    environment:
      - NODE_ENV=production
      - OLLAMA_HOST=http://ollama:11434
    working_dir: /app
    command: >
      sh -c "
        npm install -g openclaw@latest &&
        openclaw gateway start --foreground
      "
    ports:
      - "3434:3434"

volumes:
  ollama-data:      # Modelos de IA ficam aqui
  openclaw-workspace:  # Memória e configurações
  openclaw-config:     # Config do OpenClaw

Passo 2: Subir os Containers
docker compose up -d

Aguarde 1-2 minutos para o OpenClaw instalar na primeira vez. Acompanhe:

# Ver logs do OpenClaw
docker compose logs -f openclaw

# Ver logs do Ollama
docker compose logs -f ollama

Passo 3: Baixar o Modelo de IA
# Baixar modelo (dentro do container Ollama)
docker exec ollama ollama pull llama3.2:3b
Modelos recomendados
# Leve e rápido (2GB) — para PCs com 8GB RAM
docker exec ollama ollama pull llama3.2:3b

# Equilibrado (4.7GB) — para PCs com 16GB RAM
docker exec ollama ollama pull llama3.1:8b

# Alta qualidade (8.9GB) — para PCs com GPU
docker exec ollama ollama pull qwen2.5:14b

Passo 4: Configurar OpenClaw
docker exec -it openclaw openclaw onboard

Quando perguntar o provider:

  • Provider: Ollama
  • URL do Ollama: http://ollama:11434 (nome do serviço Docker, não localhost!)
  • Modelo: llama3.2:3b
  • Canal: Escolha WhatsApp, Telegram, etc.
Configuração manual

Se preferir editar diretamente:

docker exec -it openclaw sh -c 'cat > /app/workspace/config.yaml << EOF
agents:
  defaults:
    model:
      primary: "ollama/llama3.2:3b"

ollama:
  baseUrl: "http://ollama:11434"
  timeout: 120
EOF'

# Reiniciar para aplicar
docker compose restart openclaw

Importante: Use http://ollama:11434 (nome do serviço Docker) e não http://localhost:11434. Os containers se comunicam pelo nome do serviço na rede Docker.


Passo 5: Testar

Envie uma mensagem pelo canal configurado:

“Olá! Quem é você?”

Verificar status:

docker exec openclaw openclaw gateway status
🎉 Stack Local Funcionando!

OpenClaw + Ollama rodando em containers. Auto-restart, isolamento, zero cloud.


GPU NVIDIA (Opcional)

Se tem uma GPU NVIDIA, a inferência fica 5-10x mais rápida:

1. Instalar NVIDIA Container Toolkit
# Ubuntu/Debian
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | \
  sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
  sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
  sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
2. Ativar no docker-compose.yml

Descomente o bloco deploy no serviço ollama:

  ollama:
    image: ollama/ollama:latest
    # ... restante igual ...
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]
3. Recriar container
docker compose up -d ollama

Verifique que a GPU está sendo usada:

docker exec ollama ollama ps
# Deve mostrar "gpu" no processador

Gerenciamento Diário
# Ver status
docker compose ps

# Ver logs em tempo real
docker compose logs -f

# Parar tudo
docker compose stop

# Reiniciar
docker compose restart

# Atualizar imagens
docker compose pull && docker compose up -d

# Remover tudo (dados mantidos nos volumes)
docker compose down

# Remover tudo INCLUINDO dados
docker compose down -v

Backup e RestauraçãoFazer backup
# Backup dos dados do OpenClaw
docker run --rm -v openclaw-local_openclaw-workspace:/data \
  -v $(pwd):/backup alpine tar czf /backup/openclaw-backup.tar.gz -C /data .

# Backup dos modelos (grande!)
docker run --rm -v openclaw-local_ollama-data:/data \
  -v $(pwd):/backup alpine tar czf /backup/ollama-backup.tar.gz -C /data .
Restaurar
docker run --rm -v openclaw-local_openclaw-workspace:/data \
  -v $(pwd):/backup alpine sh -c "cd /data && tar xzf /backup/openclaw-backup.tar.gz"

Auto-Iniciar com o Sistema

O restart: unless-stopped no compose já garante reinício automático. Para iniciar o Docker no boot:

# Linux
sudo systemctl enable docker

# macOS: Ative no Docker Desktop > Settings > General > "Start Docker Desktop when you log in"

Troubleshooting
OpenClaw não conecta ao Ollama

O problema mais comum é usar localhost em vez do nome do serviço Docker:

# ERRADO
ollama:
  baseUrl: "http://localhost:11434"

# CORRETO
ollama:
  baseUrl: "http://ollama:11434"

Verifique a rede Docker:

docker exec openclaw curl -s http://ollama:11434/api/version
Container reinicia em loop

Veja os logs para identificar o erro:

docker compose logs openclaw --tail 50
docker compose logs ollama --tail 50

Causas comuns:

  • Porta 3434 ou 11434 já em uso no host
  • Memória insuficiente (Ollama precisa de RAM para o modelo)
Modelo lento no container
  • Verifique se GPU está ativada: docker exec ollama ollama ps
  • Aumente memória do container (Docker Desktop > Settings > Resources)
  • Use modelo menor: docker exec ollama ollama pull phi3:mini
Espaço em disco cheio
# Ver uso por volume
docker system df -v

# Limpar imagens não usadas
docker image prune -a

# Remover modelos grandes do Ollama
docker exec ollama ollama rm nome-do-modelo

Próximos Passos