Перейти к содержимому
PentAGI
Конфигурация

Безопасность

Учётные данные, HTTPS, вход в систему и сетевая доступность установки PentAGI.

Изменение настроек по умолчанию

При новой установке создаётся локальный администратор [email protected] с паролем admin, который необходимо изменить при первом входе. Если пароль утерян, его можно сбросить через меню обслуживания установщика, пока для учётной записи используется адрес [email protected].

Укажите эти значения в .env перед первым запуском; установщик генерирует для вас соль и пароли. PostgreSQL и Neo4j принимают учётные данные только при создании томов данных, поэтому их последующее изменение нарушит подключение:

ПеременнаяНазначение
COOKIE_SIGNING_SALTПодпись сессионных cookie и API-токенов — задайте случайное значение
PENTAGI_POSTGRES_USER, PENTAGI_POSTGRES_PASSWORDУчётные данные PostgreSQL
NEO4J_PASSWORDПароль Neo4j для knowledge graph; NEO4J_USER должен оставаться neo4j
PUBLIC_URLURL, по которому пользователи открывают систему, например https://pentagi.example.com

На работающей установке сначала измените пароль базы данных внутри PostgreSQL или Neo4j, а затем в .env.

HTTPS

PentAGI предоставляет HTTPS на порту 8443 с самоподписанным сертификатом. Чтобы использовать собственный сертификат, задайте SERVER_SSL_CRT и SERVER_SSL_KEY и смонтируйте файлы в docker-compose.yml.

Пользователи и аутентификация

Форма самостоятельной регистрации отсутствует. Администраторы управляют локальными пользователями через Users API (/api/v1/users/) из авторизованной сессии браузера — API-токен там получает ошибку 403, — а роли ограничивают доступ каждого пользователя к просмотру и изменению данных. Локальные пользователи могут изменить свой адрес электронной почты и пароль в разделе Settings → Account.

При настроенной аутентификации через GitHub или Google вход с адресом электронной почты, подтверждённым провайдером и совпадающим с существующей учётной записью (включая локальные), выполняется в эту учётную запись с её ролью; любой другой вход создаёт новую учётную запись с ролью пользователя по умолчанию. Каждая установка начинается с администратора [email protected], поэтому перед включением аутентификации перенесите её на адрес, который вы контролируете, в разделе Settings → Account, и включайте эту возможность только там, где создание новых учётных записей допустимо, например при использовании приложения Google Workspace, ограниченного вашим доменом.

Аутентификация через GitHub и Google доступна по протоколу OAuth. Зарегистрируйте приложение с callback-адресом ${PUBLIC_URL}/api/v1/auth/login-callback и добавьте его учётные данные:

PUBLIC_URL=https://pentagi.example.com
OAUTH_GITHUB_CLIENT_ID=your_github_client_id
OAUTH_GITHUB_CLIENT_SECRET=your_github_client_secret

Сетевая экспозиция

По умолчанию веб-интерфейс PentAGI прослушивает только 127.0.0.1. Чтобы получить к нему доступ с других машин:

PENTAGI_LISTEN_IP=0.0.0.0
PENTAGI_LISTEN_PORT=8443
PUBLIC_URL=https://192.168.1.100:8443
CORS_ORIGINS=https://localhost:8443,https://192.168.1.100:8443

В PUBLIC_URL и CORS_ORIGINS указывайте реальный адрес, никогда не используйте 0.0.0.0. Пересоздайте контейнеры командой docker compose up -d --force-recreate и откройте порт 8443 в межсетевом экране.

За обратным прокси-сервером установите TRUSTED_PROXIES в адрес или CIDR прокси-сервера, разделив значения запятыми. В противном случае каждый запрос будет выглядеть так, как будто он исходит от прокси-сервера, и лимит попыток входа на один адрес — 30 неудачных попыток за пять минут, после чего следует блокировка на 15 минут — будет общим для всех пользователей.

Контейнер sandbox каждого flow также открывает два порта для обратных вызовов вне канала, таких как reverse shells. Они берутся из 2000 портов, начиная с DOCKER_PORTS_BASE (по умолчанию 28000), и привязываются к DOCKER_PUBLIC_IP — адресу, который agents также предоставляют целям для обратного вызова.

По умолчанию DOCKER_PUBLIC_IP имеет значение 0.0.0.0: порты прослушиваются на всех интерфейсах хоста Docker, и agents самостоятельно определяют свой публичный адрес. Указывайте конкретный адрес только в том случае, если он принадлежит хосту и цели тестирования могут его достичь; за NAT оставьте значение по умолчанию. Порты, публикуемые Docker, обходят правила ufw и firewalld на хосте, поэтому ограничьте диапазон с помощью межсетевого экрана перед хостом, например группы безопасности облачного провайдера, или с помощью правил в цепочке DOCKER-USER Docker.

PROXY_URL направляет вызовы бэкенда к провайдерам моделей, провайдеру эмбеддингов, API поиска и проверку обновлений через прокси, что помогает изолировать установку от внешних сетей. Саморазвёрнутые конечные точки, такие как Ollama, vLLM или SearXNG, также проходят через него, поскольку исключений для NO_PROXY нет, поэтому прокси должен иметь возможность достигать их. Sandbox-контейнеры flow, в которых agents выполняют свои команды, скрапер, открывающий веб-страницы для инструмента браузера, и сервис Graphiti не используют его, поэтому ограничьте их исходящий трафик на сетевом уровне. Вход через GitHub или Google и вызовы к конечным точкам Langfuse или OpenTelemetry за пределами поставляемых стеков также не используют его, а демон Docker загружает образы с использованием собственных настроек прокси.

Проверка обновлений

В течение двух минут после запуска и затем каждые три часа сервер спрашивает update.pentagi.com, доступна ли более новая сборка. Запрос содержит идентификатор установки, ключ лицензии (если он задан), версию и платформу, а также сводку по установке: настроенные provider и типы входа, несколько переключателей функций, количество пользователей, flows, tasks, контейнеров, промптов, токенов API и tool calls, а также общие суммы токенов и затрат по каждому типу provider — без имён, адресов, промптов или содержимого flow. UPDATE_CHECK_INTERVAL=0 отключает эту функцию. При каждом запуске установщика и после каждого выполняемого им действия, такого как Apply Changes, Update, Start или Stop, он отправляет установленные образы и состояние каждого стека, а также ту же сводку, пока PentAGI работает; UPDATE_CHECK_INTERVAL на это не влияет.

Контейнер pentagi работает от имени root, поскольку управляет контейнерами через сокет Docker. Для более строгой изоляции запустите tools на отдельном worker node.

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