EQVPS

Docker Compose за AI агенти: пълен самохостван стек на един VPS

6.09.2026 г. · 3 мин четене · EQVPS Team

AI агентът рядко е един процес. Има самия цикъл на агента, векторно хранилище за памет, кеш, обикновено база данни за състояние, и може би малко табло. Да пускаш всяко от тях ръчно — да ги стартираш, да ги рестартираш след рестартиране, да помниш кой порт кой е — бързо омръзва. Docker Compose описва цялото нещо в един файл и го пуска с една команда. Това е стекът за копиране-поставяне, за да сложиш агент на VPS по подредения начин.

Ако искаш само версията за деплой-без-Docker, ръководството за пускане на AI агент 24/7 вместо това покрива systemd. Тази страница е контейнер-нативната версия.

Стекът

Типичен самохостван агент иска четири неща до себе си: процеса на агента, Qdrant (векторна памет), Redis (кеш / опашки) и Postgres (състояние). Ето един docker-compose.yml, който пуска всичко това, с вътрешни услуги, държани далеч от публичния интернет:

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

Тайните живеят в .env, не в compose файла:

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

Вдигни го:

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

Всяка вътрешна услуга (Qdrant, Redis, Postgres) е достъпна само в compose мрежата по име на услуга — нито една не е публикувана в интернет. Агентът говори с тях през тази частна мрежа, и нищо на тези портове не гледа към света.

Детайлите, които имат значение

Частта, която наистина е наша: агентът може да си построи собствена машина

Тъй като EQVPS предоставя MCP сървър, агент, пускащ този стек, може сам да осигури друг чист VPS — да го поръча, да получи root, да го събори — плащайки от предплатен крипто баланс. Compose стек, който се нуждае от нов sandbox, може да вдигне един без човек в цикъла.

Защо EQVPS за докеризиран агент

VPS за AI агенти (прегледът) → · VPS за Docker → · Хоствай векторна БД за паметта на агента →

Въпроси

Защо да пускам AI агент с Docker Compose вместо голи процеси?

Агентът рядко е само един процес — той е цикълът на агента плюс векторно хранилище, кеш и обикновено база данни. Compose описва целия стек в един файл, вдига всичко с една команда, рестартира всяка част при срив или рестартиране, и държи вътрешните услуги (Postgres, Redis, Qdrant) в частна мрежа, така че се излага само това, което избереш. Това е най-подреденият начин да самохостнеш агент с движещи се части.

Какъв план е нужен на стек на агент?

За агент, базиран на API (моделът работи при доставчика ти), стекът е лек — цикълът на агента, Qdrant, Redis и Postgres се събират удобно на нашия Small ($8/мес) или плана AI-Agent ($10/мес, 4 GB). Повече RAM ти трябва само ако държиш голям векторен индекс в паметта или пускаш локален модел, което е различна, по-тежка настройка.

Къде да сложа API ключовете — в compose файла?

Не. Дръж тайните в .env файл (игнориран от git) и ги реферирай като променливи на средата в compose, или използвай Docker secrets. Никога не комитвай ключове в docker-compose.yml. Обвържи вътрешните услуги само към compose мрежата; публикувай само порта на агента (или нищо, ако прави само изходящи повиквания).

Връщат ли се контейнерите след рестартиране?

Само ако им кажеш. Задай restart: unless-stopped (или always) на всяка услуга и включи Docker при зареждане; тогава docker compose up -d преживява рестартирания и сривове. Без политика за рестарт контейнерът остава спрян след рестарт на сървъра.

Искате ли KYC или карта?

Не. Имейл за регистрация, плащане в USDC или USDT — без документи, без карта. Root за около минута.

← Обратно към блогаВиж планове и цени →

Коментари

Още няма коментари. Бъди първият.

Остави коментар

Коментарите се модерират преди да се появят.