EQVPS
Inizia

Docker Compose per agenti IA: uno stack self-hosted completo su un VPS

6 set 2026 · 3 min di lettura · EQVPS Team

Un agente IA è raramente un singolo processo. C'è il loop dell'agente stesso, uno store vettoriale per la memoria, una cache, di solito un database per lo stato, e forse una piccola dashboard. Eseguire ciascuno a mano — avviarli, riavviarli dopo un reboot, ricordare quale porta è quale — stanca in fretta. Docker Compose descrive il tutto in un file e lo esegue con un comando. Questo è lo stack copia-incolla per mettere un agente su un VPS in modo ordinato.

Se vuoi solo la versione deploy-senza-Docker, la guida esegui un agente IA 24/7 copre systemd. Questa pagina è la versione container-native.

Lo stack

Un tipico agente self-hosted vuole quattro cose accanto a sé: il processo dell'agente, Qdrant (memoria vettoriale), Redis (cache / code) e Postgres (stato). Ecco un docker-compose.yml che esegue tutto ciò, con i servizi interni tenuti lontani dall'internet pubblico:

# /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: {} }

I segreti vivono in .env, non nel file compose:

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

Tiralo su:

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

Ogni servizio interno (Qdrant, Redis, Postgres) è raggiungibile solo sulla rete compose tramite il nome del servizio — nessuno di essi è pubblicato su internet. L'agente ci parla su quella rete privata, e nulla su quelle porte è rivolto al mondo.

I dettagli che contano

La parte che è davvero nostra: l'agente può costruirsi la propria macchina

Poiché EQVPS espone un server MCP, un agente che esegue questo stack può fornire da sé un altro VPS pulito — ordinarlo, ottenere root, smontarlo — pagando da un saldo cripto prepagato. Uno stack compose che ha bisogno di un sandbox fresco può tirarne su uno senza un umano nel loop.

Perché EQVPS per un agente dockerizzato

VPS per agenti IA (la panoramica) → · VPS per Docker → · Ospita un DB vettoriale per la memoria dell'agente →

FAQ

Perché eseguire un agente IA con Docker Compose invece di processi nudi?

Un agente è raramente un solo processo — è il loop dell'agente più uno store vettoriale, una cache e di solito un database. Compose descrive l'intero stack in un file, lo tira su tutto con un comando, riavvia ogni pezzo in caso di crash o reboot, e tiene i servizi interni (Postgres, Redis, Qdrant) su una rete privata così che venga esposto solo ciò che scegli. È il modo più ordinato di self-hostare un agente con parti in movimento.

Che piano serve a uno stack di agente?

Per un agente basato su API (il modello gira dal tuo provider) lo stack è leggero — il loop dell'agente, Qdrant, Redis e Postgres stanno comodi sul nostro Small (8 $/mese) o sul piano AI-Agent (10 $/mese, 4 GB). Ti serve più RAM solo se tieni un grande indice vettoriale in memoria o esegui un modello locale, che è una configurazione diversa e più pesante.

Dove metto le chiavi API — nel file compose?

No. Tieni i segreti in un file .env (ignorato da git) e referenziali come variabili d'ambiente in compose, oppure usa i Docker secrets. Non committare mai le chiavi in docker-compose.yml. Vincola i servizi interni solo alla rete compose; pubblica solo la porta dell'agente (o nessuna, se fa solo chiamate in uscita).

I container tornano dopo un reboot?

Solo se glielo dici. Metti restart: unless-stopped (o always) su ogni servizio e abilita Docker al boot; allora docker compose up -d sopravvive a reboot e crash. Senza una policy di riavvio, un container resta giù dopo il riavvio del server.

Chiedete KYC o una carta?

No. Un'email per registrarti, pagamento in USDC o USDT — niente documenti, niente carta. Root in circa un minuto.

← Torna al blogVedi piani e prezzi →

Commenti

Ancora nessun commento. Sii il primo.

Lascia un commento

I commenti sono moderati prima di comparire.