Перейти к содержимому
PentAGI
Развёртывание

Продакшн

Запуск PentAGI для команды — харденинг, изоляция, Podman и несколько инстансов.

Контрольный список

  • Задайте все учётные данные, включая COOKIE_SIGNING_SALT, перед первым запуском — см. Безопасность. Установщик генерирует соль и пароли сервисов, но не пароли администраторов Langfuse и Grafana: задайте LANGFUSE_INIT_USER_PASSWORD и password в шаблоне до первого запуска Langfuse и измените стандартные admin / admin Grafana после его первого запуска. На работающей установке измените пароли PostgreSQL и Neo4j внутри баз данных прежде, чем менять их в .env.
  • Используйте настоящий сертификат и стабильный PUBLIC_URL.
  • За обратным прокси задайте TRUSTED_PROXIES как адрес или CIDR прокси. В противном случае все пользователи будут использовать один и тот же адрес прокси, и 30 неудачных попыток входа в течение 5 минут заблокируют доступ для всех на 15 минут.
  • Перенесите выполнение tool calls на выделенный worker node.
  • Включите наблюдаемость, чтобы отслеживать затраты и сбои.
  • Разместите knowledge graph и Langfuse в частной сети.

Podman

PentAGI работает как на Podman, так и на Docker. В безрутовом режиме сервису scraper требуется дополнительная настройка, поскольку контейнеры без прав root не могут привязываться к привилегированным портам; в README репозитория описаны варианты развёртывания с правами root и без них.

Несколько экземпляров (TENANT_ID)

Оставьте TENANT_ID пустым при установке единственного экземпляра и не меняйте это значение на уже развёрнутом: установка этого параметра позже перенесёт экземпляр в новую, пустую схему, которая начинается с учётной записи [email protected] по умолчанию, и его flow, пользователи и настройки больше не будут отображаться. Задайте это значение для добавляемых экземпляров, если несколько экземпляров PentAGI используют общие внешние ресурсы, такие как один сервер PostgreSQL, один worker node, один экземпляр Neo4j или Langfuse:

ОбластьВлияние TENANT_ID=acme
PostgreSQLРаботает в схеме acme вместо public
Контейнеры worker nodeИменуются как acme-pentagi-terminal-<flow>
Knowledge graphИдентификаторы групп принимают вид acme-flow-<id>
АутентификацияКлючи cookie и токенов включают идентификатор tenant
ТелеметрияДанные Langfuse и OpenTelemetry помечаются идентификатором tenant

Значение должно совпадать с ^[a-z][a-z0-9_]{0,31}$. Ресурсы хоста не изолированы по пространствам имён. Экземплярам на одном сервере нужны собственные DATA_DIR и опубликованные порты. Экземплярам, чьи sandbox работают на одном Docker-хосте, на одном сервере или общем worker node, нужны собственные DOCKER_PORTS_BASE и, если он задан, собственный DOCKER_WORK_DIR; в противном случае их sandbox займут одни и те же порты, и flow не смогут запуститься. Каждое base задаёт диапазон из 2000 портов, по умолчанию начиная с 28000, поэтому используйте, например, 28000 и 30000.

Последнее обновление: