−25%

la planurile Windows anuale, până pe 31 oct. Vezi planurile

EQVPS
Începe

Docker Compose pentru agenți AI: un stack complet, găzduit de tine, pe un singur VPS

6 sept. 2026 · 3 min de citit · EQVPS Team

Un agent AI e rareori un singur proces. Există bucla agentului în sine, o bază vectorială pentru memorie, un cache, de obicei o bază de date pentru stare și poate un mic dashboard. Să le rulezi pe fiecare de mână — să le pornești, să le repornești după un reboot, să ții minte ce port e al cui — devine repede obositor. Docker Compose descrie totul într-un singur fișier și îl rulează cu o singură comandă. Iată stackul gata de copiat pentru a pune un agent pe un VPS, ordonat.

Dacă vrei doar varianta de deploy fără Docker, ghidul pentru rularea unui agent AI 24/7 folosește în schimb systemd. Pagina asta e varianta nativă pe containere.

Stackul

Un agent găzduit de tine vrea de obicei patru lucruri lângă el: procesul agentului, Qdrant (memorie vectorială), Redis (cache / cozi) și Postgres (stare). Iată un docker-compose.yml care le rulează pe toate, cu serviciile interne ținute departe de internetul public:

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

Secretele stau în .env, nu în fișierul compose:

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

Pornește-l:

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

Fiecare serviciu intern (Qdrant, Redis, Postgres) e accesibil doar pe rețeaua compose, după numele serviciului — niciunul nu e publicat pe internet. Agentul vorbește cu ele prin rețeaua privată, iar nimic de pe porturile acelea nu e expus lumii.

Detaliile care contează

  • restart: unless-stopped pe fiecare serviciu — asta supraviețuiește unei reporniri sau unei căderi. Activează Docker la boot și tot stackul revine singur.
  • Cheile în .env, nu în YAML. Folosește-le ca variabile de mediu; ține .env la chmod 600 și în afara git. Un fișier compose scurs, cu o cheie validă, e greșeala clasică.
  • Nu publica nimic ce nu trebuie. Un agent care doar apelează API-uri de modele și propriile servicii nu are nevoie deloc de port de intrare — deci merge un plan NAT. Adaugă un IP dedicat doar dacă servește webhookuri sau un dashboard.
  • Dimensionează după memorie, nu după nuclee. Agenții pe API sunt ușori. Dacă indexul Qdrant crește mult sau adaugi un model local, abia atunci treci mai sus — vezi VPS cu multă memorie pentru agenți.

Partea care e chiar a noastră: agentul își poate construi singur mașina

Pentru că EQVPS expune un server MCP, un agent care rulează acest stack poate porni singur alt VPS curat — îl comandă, primește root, îl șterge —, plătind dintr-un sold cripto preplătit. Un stack compose care are nevoie de un sandbox nou poate porni unul fără niciun om în buclă.

De ce EQVPS pentru un agent în Docker

  • Imagini curate, root în ~60 de secunde. Ubuntu/Debian; docker compose up și stackul e online.
  • Fără KYC, plată cripto. E-mail la înregistrare, USDC/USDT la plată — nimic care să lege mașina de identitatea ta.
  • NVMe + 1 Gbit/s nelimitat, în UE. Descărcarea imaginilor și trimiterea logurilor nu vor produce o factură surpriză.

VPS pentru agenți AI (prezentarea) → · VPS pentru Docker → · Găzduiește o bază vectorială pentru memoria agentului →

Întrebări frecvente

De ce să rulez un agent AI cu Docker Compose și nu ca procese simple?

Un agent e rareori un singur proces — e bucla agentului plus o bază vectorială, un cache și de obicei o bază de date. Compose descrie tot stackul într-un singur fișier, îl pornește cu o singură comandă, repornește fiecare piesă după o cădere sau o repornire și ține serviciile interne (Postgres, Redis, Qdrant) pe o rețea privată, ca să fie expus doar ce alegi tu. E cea mai ordonată cale de a găzdui un agent cu mai multe piese.

De ce plan are nevoie un stack de agent?

Pentru un agent pe API (modelul rulează la furnizorul tău), stackul e ușor — bucla agentului, Qdrant, Redis și Postgres încap comod pe planul nostru Small ($8/lună) sau pe planul AI-Agent ($10/lună, 4 GB). Îți trebuie mai multă RAM doar dacă ții un index vectorial mare în memorie sau rulezi un model local, ceea ce e o configurare diferită, mai grea.

Unde pun cheile API — în fișierul compose?

Nu. Ține secretele într-un fișier .env (ignorat de git) și folosește-le ca variabile de mediu în compose sau folosește Docker secrets. Nu pune niciodată chei în docker-compose.yml într-un commit. Leagă serviciile interne doar de rețeaua compose; publică doar portul agentului (sau nimic, dacă face doar apeluri spre exterior).

Revin containerele după o repornire?

Doar dacă le spui. Setează restart: unless-stopped (sau always) pe fiecare serviciu și activează Docker la boot; atunci docker compose up -d supraviețuiește repornirilor și căderilor. Fără o politică de repornire, un container rămâne oprit după ce serverul repornește.

Cereți KYC sau card?

Nu. E-mail la înregistrare, plată în USDC sau USDT — fără documente, fără card. Root în aproximativ un minut.

Comentarii

Încă nu există comentarii. Fii primul.

Lasă un comentariu

Comentariile sunt moderate înainte să apară.