跳到主要内容
PentAGI
部署

生产环境

为团队运行 PentAGI——加固、隔离、Podman 及多实例部署。

检查清单

  • 在首次启动前设置所有凭据,包括 COOKIE_SIGNING_SALT — 请参阅安全。安装程序会生成盐值和服务密码,但不会生成 Langfuse 和 Grafana 管理员密码:请在 Langfuse 首次启动前,在模板中设置 LANGFUSE_INIT_USER_PASSWORD、password,并在 Grafana 首次启动后更改其默认 admin / admin。对于正在运行的安装,请先在数据库中更改 PostgreSQL 和 Neo4j 密码,然后再在 .env 中更改它们。
  • 使用正式证书并提供稳定的 PUBLIC_URL。
  • 在反向代理后面,将 TRUSTED_PROXIES 设置为代理的地址或 CIDR。否则,所有用户将共享代理的地址,且在 5 分钟内出现 30 次失败的登录尝试会导致所有人被锁定 15 分钟。
  • 将 tool 执行迁移到专用的 worker node。
  • 启用可观测性,以便您跟踪成本和故障情况。
  • 将 knowledge graph 和 Langfuse 部署在私有网络中。

Podman

PentAGI 既可在 Docker 上运行,也可在 Podman 上运行。在无根模式下,scraper 服务需要额外配置,因为无根容器无法绑定特权端口;仓库的 README 中描述了无根和有根模式的设置方法。

多实例(TENANT_ID)

对于单实例安装,请将 TENANT_ID 留空;在现有安装中也请保持其为空:稍后设置该值会将实例迁移到一个新的、空的 schema,该 schema 以默认的 [email protected] 账户开始,其原有的 flow、用户和设置将不再显示。当多个 PentAGI 实例共享外部资源(例如同一个 PostgreSQL 服务器、同一个 worker node、同一个 Neo4j 或同一个 Langfuse)时,请在您添加的实例上设置该值:

领域TENANT_ID=acme 的影响
PostgreSQL在模式 acme 内运行,而非 public
工作容器命名为 acme-pentagi-terminal-<flow>
Knowledge graph组 ID 变为 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。

最后更新于