EQVPS

Docker Compose para agentes de IA: un stack autohospedado completo en un solo VPS

6 sept 2026 · 3 min de lectura · EQVPS Team

Un agente de IA rara vez es un solo proceso. Está el bucle del agente en sí, un almacén vectorial para la memoria, una caché, normalmente una base de datos para el estado, y quizás un pequeño panel. Correr cada uno a mano — arrancarlos, reiniciarlos tras un reboot, recordar qué puerto es cuál — cansa rápido. Docker Compose describe todo eso en un archivo y lo corre con un comando. Este es el stack copia-pega para poner un agente en un VPS de forma ordenada.

Si solo quieres la versión desplegada-sin-Docker, la guía de correr un agente de IA 24/7 cubre systemd en su lugar. Esta página es la versión nativa de contenedores.

El stack

Un agente autohospedado típico quiere cuatro cosas a su lado: el proceso del agente, Qdrant (memoria vectorial), Redis (caché / colas) y Postgres (estado). Aquí va un docker-compose.yml que corre todo eso, con los servicios internos mantenidos fuera de la 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: {} }

Los secretos viven en .env, no en el archivo compose:

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

Levántalo:

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 servicio interno (Qdrant, Redis, Postgres) es accesible solo en la red compose por nombre de servicio — ninguno está publicado a internet. El agente habla con ellos por esa red privada, y nada en esos puertos da a la calle.

Los detalles que importan

La parte que sí es nuestra: el agente puede construir su propia máquina

Como EQVPS expone un servidor MCP, un agente que corre este stack puede aprovisionar otro VPS limpio por su cuenta — pedirlo, obtener root, destruirlo — pagando desde un saldo cripto prepagado. Un stack compose que necesita un sandbox nuevo puede levantar uno sin humano en el bucle.

Por qué EQVPS para un agente dockerizado

VPS para agentes de IA (la visión general) → · VPS para Docker → · Alojar una base vectorial para la memoria del agente →

Preguntas frecuentes

¿Por qué correr un agente de IA con Docker Compose en vez de procesos sueltos?

Un agente rara vez es un solo proceso — es el bucle del agente más un almacén vectorial, una caché y normalmente una base de datos. Compose describe todo el stack en un archivo, lo levanta con un comando, reinicia cada pieza ante caída o reboot, y mantiene los servicios internos (Postgres, Redis, Qdrant) en una red privada para que solo se exponga lo que elijas. Es la forma más ordenada de autohospedar un agente con piezas móviles.

¿Qué plan necesita un stack de agente?

Para un agente respaldado por API (el modelo corre en tu proveedor) el stack es ligero — el bucle del agente, Qdrant, Redis y Postgres caben cómodos en nuestro Small (8 $/mes) o el plan AI-Agent (10 $/mes, 4 GB). Solo necesitas más RAM si mantienes un índice vectorial grande en memoria o corres un modelo local, que es una configuración distinta y más pesada.

¿Dónde pongo las claves API — en el archivo compose?

No. Guarda los secretos en un archivo .env (ignorado por git) y refiérete a ellos como variables de entorno en compose, o usa Docker secrets. Nunca subas claves a docker-compose.yml. Vincula los servicios internos solo a la red compose; publica solo el puerto del agente (o nada, si solo hace llamadas salientes).

¿Vuelven los contenedores tras un reboot?

Solo si se lo dices. Pon restart: unless-stopped (o always) en cada servicio y habilita Docker al arranque; entonces docker compose up -d sobrevive a reboots y caídas. Sin política de reinicio, un contenedor queda caído tras reiniciar el servidor.

¿Piden KYC o tarjeta?

No. Un correo para registrarte, pago en USDC o USDT — sin documentos, sin tarjeta. Root en un minuto aproximadamente.

← Volver al blogVer planes y precios →

Comentarios

Aún no hay comentarios. Sé el primero.

Deja un comentario

Los comentarios se moderan antes de aparecer.