Установка MultiAgent в Docker

Не хотите читать всё это?

Просто скиньте в любой ИИ-чат (Claude, ChatGPT и т.д.) ссылку на https://pastukhov.com/agents/multiagent/docker.md или на https://pastukhov.com/llms.txt и попросите сгенерировать конфигурационные файлы и команды. Он прочитает документацию, задаст несколько вопросов о вашей настройке и выдаст готовую конфигурацию. Экономьте время — пусть модель читает за вас.

Вы также можете связаться со мной через Telegram — я всегда рад помочь. И это не просто вежливость — мне действительно нравится общаться с единомышленниками, особенно если вы так же увлечены программированием, как и я.

Pastukhov MultiAgent — центральный пульт управления флотом ИИ-агентов. Он разворачивается одним Docker-контейнером, а управляемые серверы подключаются по SSH: MultiAgent сам установит на них Docker и всё необходимое. Ничего настраивать на серверах вручную не требуется. Приложения каждого сервера раздаются по подпапкам одного домена — например, https://ваш-домен/agent1/, https://ваш-домен/research/ — благодаря Nginx-контейнеру (agents-nginx) на самом сервере: отдельные домены, сертификаты и веб-сервер под каждое приложение не нужны (см. Nginx-роутинг).

Минимальные требования

Сам контейнер MultiAgent лёгкий: по умолчанию он использует встроенный SQLite, а PostgreSQL подключается опционально через переменную окружения. Достаточно любого Docker-хоста с 1 ГБ RAM.

Для каждого управляемого сервера требуется:

  • Linux (Ubuntu/Debian) с SSH-доступом;
  • доступ root или sudo — Docker и зависимости установит сам MultiAgent;
  • подключение по паролю или приватному PEM-ключу.

Docker Compose

Создайте файл compose.yml и запустите docker compose up -d:

services:
  multiagent:
    image: maxpastukhov/multiagent:min-latest
    container_name: multiagent
    ports:
      - "3990:80"
    volumes:
      - multiagent-data:/data
    environment:
      - ASPNETCORE_ENVIRONMENT=Production
      - ASPNETCORE_URLS=http://+:80
      - MULTIAGENT_BRAND=pastukhov
      - MULTIAGENT_DATA=/data
      # опционально: собственный ассистент (Own Agent) и программный API
      # - AGENT_API_URL=https://agents.example.com/my-agent
      # - AGENT_API_KEY=your-agent-key
      # - MULTIAGENT_API_KEY=<sha256 hex of the same key>
    restart: unless-stopped
    sysctls:
      fs.inotify.max_user_watches: "524288"
      fs.inotify.max_user_instances: "512"

volumes:
  multiagent-data:

После запуска интерфейс будет доступен на порту 3990: http://localhost:3990.

Переменные окружения

  • MULTIAGENT_DATABASE — путь к SQLite-файлу или строка подключения PostgreSQL. По умолчанию /data/data.db. Если строка начинается с Host= или Server=, используется PostgreSQL.
  • MULTIAGENT_DATA — корень постоянных данных (по умолчанию /data): база, ключи шифрования, лицензия, шаблоны инструментов.
  • MULTIAGENT_BRAND — брендинг интерфейса: pastukhov для русской версии (значение по умолчанию в RU-образе).
  • MULTIAGENT_LICENSE — путь к файлу лицензии или Base64-ключ. 30-дневный триал уже встроен в образ (переменная AGENT_LICENSE читается тем же механизмом, что у агентов).
  • AGENT_API_URL / AGENT_API_KEY — подключение собственного ассистента (Own Agent): базовый адрес внешнего Xedant Agent и ключ, который агент принимает как X-API-Key.
  • MULTIAGENT_API_KEY — ключ программного API /api/agent/* (Agent API), нижний регистр отпечатка SHA-256 ключа.
  • AGENT_TOOLS — папка библиотеки шаблонов инструментов. Для сохранения при пересоздании контейнера рекомендуется /data/tools.
  • AGENT_PRODUCTS — папка каталога продуктов (по умолчанию /project/products): готовые шаблоны Research, Analytics, Data, Proxy и самого MultiAgent.
  • AGENT_ERROR_REPORTING — отправка ошибок в Sentry. Установите 0 для отключения.
  • ASPNETCORE_URLS — порт внутри контейнера (по умолчанию http://+:80).

Свой агент (Own Agent)

MultiAgent может вести собственного ассистента — внешний Xedant Agent, подключаемый парой переменных окружения. Его интерфейс встроен в каждую страницу: блок в боковой панели, глобальная панель чата, очередь промптов и голосовой ввод. Настройка — это только переменные, никакого экрана в интерфейсе и ничего в базе:

  • AGENT_API_URL / AGENT_API_KEY — исходящее направление (MultiAgent → агент): через них работает встроенный чат (запросы агент пересылает агенту и отдаёт события чатов). Ключ прикрепляется только на сервере и никогда не попадает в браузер;
  • MULTIAGENT_API_KEY — входящее направление (агент → MultiAgent): ключ программного API /api/agent/*, через который ассистент управляет серверами, агентами и инструментами.

Направления работают независимо. Когда MultiAgent сам развёрнут как продукт, обе пары переменных проставляются автоматически (см. Продукты). Подробнее — на странице Собственный ассистент.

Хранение данных

Все постоянные данные живут в volume /data и переживают пересоздание контейнера. Volume обязателен — без него вы потеряете базу, ключи шифрования и активированную лицензию при первом же docker compose down.

  • /data/data.db — база SQLite (если не используется PostgreSQL);
  • /data/keys/ — ключ шифрования и подписи JWT;
  • /data/auth/ — ключи ASP.NET Data Protection;
  • /data/tools/ — шаблоны инструментов (при AGENT_TOOLS=/data/tools);
  • /data/<бренд>/license.txt — активированная лицензия.

Первый вход

В отличие от Pastukhov Agent, логин и пароль не задаются переменными окружения. Первый пользователь регистрируется прямо в веб-интерфейсе: откройте http://localhost:3990 и нажмите «Регистрация» на странице входа. Последующие аккаунты создаются так же — в интерфейсе. Аутентификация работает через JWT-токены сроком 90 дней — снова входить придётся редко.

Добавление первого сервера

После входа добавьте первый сервер: имя, хост, SSH-порт, пользователь и пароль или приватный ключ. MultiAgent проверит подключение, предложит установить Docker и проведёт сервер через onboarding-проверки. Подробнее — в разделе Серверы.

Установка на Windows

MultiAgent ставится на Windows мастером установки PastukhovMultiAgent-Setup-<версия>.exe: приложение работает локально на http://localhost:3991 и подключается к вашим удалённым Linux-серверам по SSH — Docker, WSL и SSH-инструменты на этом компьютере не нужны. Данные хранятся в папке %LOCALAPPDATA%\Pastukhov\MultiAgent\data (база SQLite, ключи, сертификаты, лицензия), среда выполнения .NET не требуется. Подробнее — на странице Установка на Windows.

Docker CLI с файлом .env

Можно запустить MultiAgent и без compose — командой docker run, сохранив переменные окружения в файле .env:

# .env
ASPNETCORE_ENVIRONMENT=Production
ASPNETCORE_URLS=http://+:80
MULTIAGENT_BRAND=pastukhov
MULTIAGENT_DATA=/data
# опционально: собственный ассистент (Own Agent) и программный API
# AGENT_API_URL=https://agents.example.com/my-agent
# AGENT_API_KEY=your-agent-key
# MULTIAGENT_API_KEY=<sha256 hex of the same key>
# опционально: каталог продуктов
# AGENT_PRODUCTS=/data/products
# опционально: PostgreSQL вместо встроенного SQLite
# MULTIAGENT_DATABASE=Host=postgres;Port=5432;User Id=multiagent;Password=secret;Database=multiagent;
# опционально: лицензионный ключ, если он у вас есть
# MULTIAGENT_LICENSE=
docker run -d \
  --name multiagent \
  --env-file .env \
  -p 3990:80 \
  -v multiagent-data:/data \
  --restart unless-stopped \
  --sysctl fs.inotify.max_user_watches=524288 \
  --sysctl fs.inotify.max_user_instances=512 \
  maxpastukhov/multiagent:min-latest

Флаг --env-file считывает все переменные из файла. Отдельные значения можно переопределить дополнительными флагами -e после него, например -e MULTIAGENT_LICENSE=your-key.

← Вернуться на главную раздела MultiAgent