VPS Master7 · Módulo 06 · Brain

Brain Docker
Compose

O lado AI da Dual Architecture: Ollama (LLMs locais) + Supabase self-hosted + Caddy reverso. Docker Compose puro, controle total, zero dependência de painel.

Duração25 min
NívelAvançado
EntregávelBrain online
Pré-módulo04 (Ops done)
Targetvps02-brain7

Arquitetura Dual — onde rodar?

💡 Cenário recomendado: SEGUNDA VPS dedicada pro Brain (vps02-hostinger-brain7-ghost). RAM do Ollama é alta (Gemma 2:2b pede 4GB+, Llama 3.1:8b pede 16GB). Separa concerns, facilita scale, permite especializar recursos.
⚡ Alternativa econômica: se tua VPS01 Ops tem RAM sobrando (KVM4 = 16GB), pode rodar Brain na mesma VPS. Porta 11434 (Ollama) + 8000 (Supabase Kong). Sacrifício: competição de recursos. Só faz isso como POC.
01

Criar estrutura de pastas

ssh ghost@SEU_IP_BRAIN  # ou mesma VPS se single-host

mkdir -p ~/brain7/{ollama,supabase,caddy}
cd ~/brain7
02

docker-compose.yml — stack brain completa

cat > ~/brain7/docker-compose.yml << 'EOF'
services:
  ollama:
    image: ollama/ollama:latest
    container_name: brain7-ollama
    restart: unless-stopped
    volumes:
      - ./ollama:/root/.ollama
    ports:
      - "127.0.0.1:11434:11434"
    environment:
      - OLLAMA_HOST=0.0.0.0
      - OLLAMA_KEEP_ALIVE=24h

  caddy:
    image: caddy:2-alpine
    container_name: brain7-caddy
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./caddy/Caddyfile:/etc/caddy/Caddyfile
      - caddy_data:/data
      - caddy_config:/config

volumes:
  caddy_data:
  caddy_config:
EOF
03

Caddyfile do Brain

cat > ~/brain7/caddy/Caddyfile << 'EOF'
ollama.ghostlab77.com.br {
    reverse_proxy brain7-ollama:11434
    encode gzip
}

brain.ghostlab77.com.br {
    reverse_proxy brain7-supabase-kong:8000
    encode gzip
}
EOF
04

Subir o stack + puxar modelos Ollama

cd ~/brain7
docker compose up -d

# Aguarda containers subirem (~10s)
docker compose ps

# Puxa modelos locais (pode demorar 3-10 min cada)
docker exec brain7-ollama ollama pull gemma2:2b
docker exec brain7-ollama ollama pull llama3.1:8b
docker exec brain7-ollama ollama pull nomic-embed-text

# Teste rápido:
curl http://localhost:11434/api/generate -d '{
  "model": "gemma2:2b",
  "prompt": "Diga oi em portugues",
  "stream": false
}'

Supabase self-hosted

Supabase é o "Firebase open-source" — Postgres + Auth + Storage + Realtime + Edge Functions + Kong gateway. Self-host te dá controle total sem subscription mensal.

05

Clone repo oficial + copy env

cd ~/brain7
git clone --depth 1 https://github.com/supabase/supabase
cp -r supabase/docker supabase-self
cd supabase-self
cp .env.example .env

# IMPORTANTE: edita .env e troca TODAS as senhas default
nano .env
# Altere: POSTGRES_PASSWORD, JWT_SECRET, ANON_KEY, SERVICE_ROLE_KEY, DASHBOARD_USERNAME, DASHBOARD_PASSWORD
🚨 JWT_SECRET e chaves: use valores aleatórios fortes. Gerador oficial: https://supabase.com/docs/guides/self-hosting/docker#generate-api-keys. NÃO use defaults — são públicos e dão acesso admin.
06

Subir Supabase

docker compose pull
docker compose up -d

# Aguarda ~2 min (primeira vez baixa muita coisa)
docker compose ps

# Dashboard em:
# http://SEU_IP:8000
# ou via Caddy proxy depois:
# https://brain.ghostlab77.com.br
07

Integração com Ops (via n8n)

O brain serve os apps ops. Exemplo: workflow n8n na VPS Ops chama Ollama da VPS Brain:

# No n8n, node HTTP Request:
URL: https://ollama.ghostlab77.com.br/api/generate
Method: POST
Body JSON:
{
  "model": "gemma2:2b",
  "prompt": "{{ $json.input }}",
  "stream": false
}

Pronto: seu workflow n8n tem acesso a LLM local sem pagar OpenAI.

✅ Brain online: Ollama com 3 modelos, Supabase self-hosted, Caddy proxy SSL. Integração Ops↔Brain funcionando via rede interna. Dual Architecture completa.

Próximo passo

Módulo 07 — Cloudflare + SSL: ativar proxy (laranja), Full Strict SSL, Page Rules e Worker routing pros 6 subdomínios.