Не хотите читать всё это?
Просто скиньте в любой ИИ-чат (Claude, ChatGPT и т.д.) ссылку на https://pastukhov.com/multiagent/docker.md или на https://pastukhov.com/llms.txt и попросите сгенерировать конфигурационные файлы и команды. Он прочитает документацию, задаст несколько вопросов о вашей настройке и выдаст готовую конфигурацию. Экономьте время — пусть модель читает за вас.
Вы также можете связаться со мной через Telegram — я всегда рад помочь. И это не просто вежливость — мне действительно нравится общаться с единомышленниками, особенно если вы так же увлечены программированием, как и я.
Pastukhov MultiAgent — центральный пульт управления флотом ИИ-агентов. Он разворачивается одним Docker-контейнером, а управляемые серверы подключаются по SSH: MultiAgent сам установит на них Docker и всё необходимое. Ничего настраивать на серверах вручную не требуется.
Минимальные требования
Сам контейнер 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: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
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_TOOLS — папка библиотеки шаблонов инструментов. Для сохранения при пересоздании контейнера рекомендуется
/data/tools. - AGENT_ERROR_REPORTING — отправка ошибок в Sentry. Установите
0для отключения. - ASPNETCORE_URLS — порт внутри контейнера (по умолчанию
http://+:80).
Хранение данных
Все постоянные данные живут в 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 и нажмите «Register» на странице входа. Последующие аккаунты создаются так же — в UI. Аутентификация работает через JWT-токены сроком 90 дней.
Добавление первого сервера
После входа добавьте первый сервер: имя, хост, SSH-порт, пользователь и пароль или приватный ключ. MultiAgent проверит подключение, предложит установить Docker и проведёт сервер через onboarding-проверки. Подробнее — в разделе Серверы.
Docker CLI с файлом .env
Можно запустить MultiAgent и без compose — командой docker run, сохранив переменные окружения в файле .env:
# .env
ASPNETCORE_ENVIRONMENT=Production
ASPNETCORE_URLS=http://+:80
MULTIAGENT_BRAND=pastukhov
MULTIAGENT_DATA=/data
# опционально: 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:latest
Флаг --env-file считывает все переменные из файла. Отдельные значения можно переопределить дополнительными флагами -e после него, например -e MULTIAGENT_LICENSE=your-key.