EQVPS

Docker Compose para agentes de IA: um stack auto-hospedado completo num só VPS

6 de set. de 2026 · 3 min de leitura · EQVPS Team

Um agente de IA raramente é um único processo. Tem o loop do agente em si, um armazenamento vetorial para memória, um cache, normalmente um banco de dados para estado, e talvez um pequeno painel. Rodar cada um à mão — iniciá-los, reiniciá-los após um reboot, lembrar qual porta é qual — cansa rápido. O Docker Compose descreve tudo isso num arquivo e roda com um comando. Este é o stack copiar-colar para pôr um agente num VPS de forma organizada.

Se você quer só a versão implantada-sem-Docker, o guia de rodar um agente de IA 24/7 cobre systemd. Esta página é a versão nativa de contêineres.

O stack

Um agente auto-hospedado típico quer quatro coisas ao seu lado: o processo do agente, Qdrant (memória vetorial), Redis (cache / filas) e Postgres (estado). Aqui vai um docker-compose.yml que roda tudo isso, com os serviços internos mantidos fora da internet pública:

# /opt/agent/docker-compose.yml
services:
  agent:
    build: .                      # your agent image (or image: your/agent:latest)
    restart: unless-stopped
    env_file: [.env]              # OPENAI/ANTHROPIC keys etc. — never in this file
    environment:
      QDRANT_URL: http://qdrant:6333
      REDIS_URL: redis://redis:6379
      DATABASE_URL: postgres://agent:${DB_PASSWORD}@postgres:5432/agent
    depends_on: [qdrant, redis, postgres]
    # no ports: — this agent only makes outbound calls. Publish one only if it serves webhooks.

  qdrant:
    image: qdrant/qdrant:latest
    restart: unless-stopped
    volumes: ["qdrant:/qdrant/storage"]   # internal only — not published

  redis:
    image: redis:7-alpine
    restart: unless-stopped
    command: ["redis-server", "--save", "60", "1"]
    volumes: ["redis:/data"]

  postgres:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      POSTGRES_USER: agent
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_DB: agent
    volumes: ["pg:/var/lib/postgresql/data"]

volumes: { qdrant: {}, redis: {}, pg: {} }

Os segredos vivem no .env, não no arquivo compose:

# /opt/agent/.env  (chmod 600, never committed)
ANTHROPIC_API_KEY=sk-ant-...
DB_PASSWORD=a-long-random-string

Suba:

apt update && apt install -y docker.io docker-compose-v2
systemctl enable --now docker
cd /opt/agent && docker compose up -d
docker compose logs -f agent

Cada serviço interno (Qdrant, Redis, Postgres) é acessível apenas na rede compose pelo nome do serviço — nenhum deles é publicado na internet. O agente fala com eles por essa rede privada, e nada nessas portas dá para o mundo.

Os detalhes que importam

A parte que é de fato nossa: o agente pode construir sua própria máquina

Como o EQVPS expõe um servidor MCP, um agente rodando este stack pode provisionar outro VPS limpo sozinho — pedi-lo, obter root, destruí-lo — pagando de um saldo cripto pré-pago. Um stack compose que precisa de um sandbox novo pode subir um sem humano no loop.

Por que EQVPS para um agente dockerizado

VPS para agentes de IA (a visão geral) → · VPS para Docker → · Hospedar um banco vetorial para a memória do agente →

FAQ

Por que rodar um agente de IA com Docker Compose em vez de processos soltos?

Um agente raramente é um só processo — é o loop do agente mais um armazenamento vetorial, um cache e normalmente um banco de dados. O Compose descreve todo o stack num arquivo, sobe tudo com um comando, reinicia cada peça em caso de queda ou reboot, e mantém os serviços internos (Postgres, Redis, Qdrant) numa rede privada para que só se exponha o que você escolher. É a forma mais organizada de auto-hospedar um agente com peças móveis.

Que plano um stack de agente precisa?

Para um agente apoiado em API (o modelo roda no seu provedor) o stack é leve — o loop do agente, Qdrant, Redis e Postgres cabem confortavelmente no nosso Small (US$ 8/mês) ou no plano AI-Agent (US$ 10/mês, 4 GB). Você só precisa de mais RAM se mantiver um índice vetorial grande em memória ou rodar um modelo local, que é uma configuração diferente e mais pesada.

Onde ponho as chaves de API — no arquivo compose?

Não. Guarde os segredos num arquivo .env (ignorado pelo git) e referencie-os como variáveis de ambiente no compose, ou use Docker secrets. Nunca faça commit de chaves no docker-compose.yml. Vincule os serviços internos apenas à rede compose; publique só a porta do agente (ou nada, se ele só faz chamadas de saída).

Os contêineres voltam após um reboot?

Só se você mandar. Ponha restart: unless-stopped (ou always) em cada serviço e habilite o Docker no boot; aí docker compose up -d sobrevive a reboots e quedas. Sem política de reinício, um contêiner fica desligado após o servidor reiniciar.

Vocês pedem KYC ou cartão?

Não. Um e-mail para cadastrar, pagamento em USDC ou USDT — sem documentos, sem cartão. Root em cerca de um minuto.

← Voltar ao blogVer planos e preços →

Comentários

Nenhum comentário ainda. Seja o primeiro.

Deixe um comentário

Os comentários são moderados antes de aparecerem.