跳到主要内容
PentAGI
配置

安全

PentAGI 安装实例的凭据、HTTPS、登录及网络暴露面。

更改默认设置

全新安装会创建本地管理员 [email protected],密码为 admin,您必须在首次登录时修改该密码。如果遗忘密码,只要该账户仍使用 [email protected] 地址,即可通过安装程序的维护菜单进行重置。

请在首次启动前设置 .env 中的这些值;安装程序会为您生成 salt 和密码。PostgreSQL 和 Neo4j 仅在创建数据卷时读取其凭据,因此后续更改会导致连接中断:

变量用途
COOKIE_SIGNING_SALT用于签署会话 Cookie 和 API 令牌 — 请设置为随机值
PENTAGI_POSTGRES_USER、PENTAGI_POSTGRES_PASSWORDPostgreSQL 凭据
NEO4J_PASSWORDknowledge graph 的 Neo4j 密码;NEO4J_USER 必须保持为 neo4j
PUBLIC_URL用户访问的 URL,例如 https://pentagi.example.com

在正在运行的安装中,请先在 PostgreSQL 或 Neo4j 内部更改数据库密码,然后在 .env 中进行更改。

HTTPS

PentAGI 在 8443 端口上提供 HTTPS 服务,并使用自签名证书。如需使用您自己的证书,请设置 SERVER_SSL_CRT 和 SERVER_SSL_KEY,并将文件挂载到 docker-compose.yml 中。

用户与登录

系统不提供注册表单。管理员通过已登录的浏览器会话使用 Users API (/api/v1/users/) 管理本地用户 — API 令牌在此处会返回 403 — 角色用于限制每个用户可以查看和修改的内容。本地用户在 Settings → Account 下修改自己的邮箱和密码。

配置 GitHub 或 Google 登录后,如果登录时 provider 验证的电子邮件与现有账户(包括本地账户)匹配,则会以该账户及其角色登录;其他任何登录都将获得一个具有默认用户角色的新账户。每个安装都从管理员 [email protected] 开始,因此在启用登录之前,请通过 Settings → Account 将其移至您控制的地址,并且仅在可接受新账户的情况下启用此功能,例如使用仅限于您域名的 Google Workspace 应用。

GitHub 和 Google 登录通过 OAuth 实现。请注册一个应用,回调地址设为 ${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 Web 界面仅监听 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 分钟)将由所有用户共享。

每个 flow 的 sandbox 容器还会发布两个端口,用于带外回调(例如反向 shell)。这些端口来自从 DOCKER_PORTS_BASE 开始的 2000 个端口(默认 28000),并绑定到 DOCKER_PUBLIC_IP,即 agent 提供给目标用于回调的地址。

默认情况下,DOCKER_PUBLIC_IP 为 0.0.0.0:端口监听 Docker 主机的所有接口,agents 自行查找其公共地址。仅当主机拥有该地址且目标可以访问它时,才将其设置为特定地址;在 NAT 后面时,请保持默认设置。Docker 发布的端口会绕过主机上的 ufw 和 firewalld 规则,因此请使用主机前方的防火墙(例如云安全组)或 Docker 的 DOCKER-USER 链中的规则来限制范围。

PROXY_URL 通过代理路由后端对模型 provider、嵌入 provider、搜索 API 和更新检查的调用,这有助于将安装与外部网络隔离。自托管端点(如 Ollama、vLLM 或 SearXNG)也通过该代理,因为不存在 NO_PROXY 例外,所以代理必须能够访问它们。flow 的 sandbox 容器(agent 在其中运行命令)、为浏览器 tool 打开网页的 scraper 以及 Graphiti 服务不使用该代理,因此请在网络级别限制它们的出站流量。使用 GitHub 或 Google 登录以及对捆绑栈之外的 Langfuse 或 OpenTelemetry 端点的调用也不使用该代理,Docker 守护进程则使用其自身的代理设置拉取镜像。

更新检查

服务器在启动后两分钟内,随后每隔三小时,会向 update.pentagi.com 查询是否有更新的构建版本可用。该请求携带安装 ID、许可证密钥(如果已设置)、版本和平台信息,以及安装的摘要:已配置的 provider 和登录类型、若干功能开关、用户、flow、task、容器、提示词、API 令牌和 tool call 的数量,以及按 provider 类型统计的令牌和成本总额——不包含任何名称、地址、提示词或 flow 内容。UPDATE_CHECK_INTERVAL=0 可将其关闭。安装程序每次启动时,以及在执行每项操作(如 Apply Changes、Update、Start 或 Stop)之后,都会发送已安装的镜像和每个堆栈的状态;在 PentAGI 运行时,还会发送相同的摘要;UPDATE_CHECK_INTERVAL 不会影响它。

pentagi 容器以 root 身份运行,因为它需要通过 Docker 套接字管理容器。为了获得更强的隔离性,请在独立的 worker node 上运行 tools。

最后更新于