EQVPS

Docker Compose для ШІ-агентів: повний self-hosted стек на одному VPS

6 вер. 2026 р. · 3 хв читання · EQVPS Team

ШІ-агент рідко буває одним процесом. Є сам цикл агента, векторне сховище для пам'яті, кеш, зазвичай база даних для стану і, можливо, невелика панель. Запускати кожне з цього вручну — стартувати, перезапускати після перезавантаження, пам'ятати, який порт де — швидко набридає. Docker Compose описує все це в одному файлі й запускає однією командою. Це копійований стек для того, щоб розмістити агента на VPS охайно.

Якщо ви просто хочете версію без Docker, гайд із запуску ШІ-агента 24/7 натомість покриває systemd. Ця сторінка — контейнерно-нативна версія.

Стек

Типовий self-hosted агент хоче поруч чотири речі: процес агента, 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-стек, якому потрібна свіжа пісочниця, може підняти її без людини в циклі.

Чому EQVPS для агента в Docker

VPS для ШІ-агентів (огляд) → · VPS для Docker → · Хостинг векторної БД для пам'яті агента →

Часті питання

Навіщо запускати ШІ-агента через Docker Compose, а не голими процесами?

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

Який тариф потрібен стеку агента?

Для агента на API (модель працює у провайдера) стек легкий — цикл агента, Qdrant, Redis і Postgres комфортно вміщаються на нашому Small ($8/міс) чи тарифі AI-Agent ($10/міс, 4 ГБ). Більше RAM потрібно лише якщо ви тримаєте великий векторний індекс у пам'яті або запускаєте локальну модель, а це інше, важче налаштування.

Куди класти API-ключі — у compose-файл?

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

Чи повертаються контейнери після перезавантаження?

Лише якщо ви їм це скажете. Задайте restart: unless-stopped (або always) на кожному сервісі й увімкніть Docker під час завантаження; тоді docker compose up -d переживає перезавантаження й збої. Без політики рестарту контейнер лишається вимкненим після перезапуску сервера.

Ви просите KYC чи картку?

Ні. Email для реєстрації, оплата в USDC або USDT — без документів, без картки. Root приблизно за хвилину.

← Назад у блогТарифи та ціни →

Коментарі

Поки немає коментарів. Будьте першим.

Залишити коментар

Коментарі проходять модерацію перед публікацією.