PentAGI 安装与配置实战指南:从环境变量到 LLM / Embedding / 搜索提供商验证
2026/9/13 6:41:58 网站建设 项目流程

PentAGI 安装与配置实战指南:从环境变量到 LLM / Embedding / 搜索提供商验证

【免费下载链接】pentagiFully autonomous AI Agents system capable of performing complex penetration testing tasks项目地址: https://gitcode.com/GitHub_Trending/pe/pentagi

本篇指南是 PentAGI(Penetration Testing Artificial General Intelligence,自动化渗透测试系统)"安装完成"与"正式使用"之间的桥梁:它按顺序带你完成首次部署全流程——选择安装方式、设置核心服务端变量、配置并通过ctester/etester验证至少一个 LLM 提供商与 Embedding 提供商、按需接入搜索与可观测性,最后启动整个栈并完成首次登录。读完本文,你将掌握一套可复现、可验证的 PentAGI 上线操作清单,并能读懂.env中每个关键变量的作用与底层实现。本文以仓库内 安装与配置指南 为主体,结合 .env.example、ctester、etester 等源码补充实现细节。

开始之前:前置条件

在动手之前,请确认运行环境满足以下最低要求(与仓库 README.md 中的 System Requirements 一致):

  • Docker 与 Docker Compose(或 Podman,rootless 模式需按 README 的 Podman 章节调整 scraper 端口);
  • 2+ vCPU、4+ GB RAM、20+ GB 可用磁盘
  • 可访问外网:用于拉取镜像以及连接 LLM 提供商;
  • 至少一个可完成认证的 LLM 提供商:OpenAI、Anthropic、Gemini、AWS Bedrock,或本地 / Ollama / OpenAI 兼容后端。PentAGI 没有 LLM 提供商就无法运行(README 明确要求 "You have to set at least one Language Model provider ... to use PentAGI");
  • 决定安装方式:交互式安装器(推荐)手动 Docker Compose 部署

提示:交互式安装器可以带你完成下文步骤 2–6 的大部分操作,本文依然可以作为核对清单使用。

第一步:选择安装方式

方式 A:交互式安装器(推荐)

安装器是一个终端 UI 程序,执行系统检查、生成合理的.env、协助配置 LLM 与搜索提供商、加固凭据并自动启动整个栈。其实现位于 backend/cmd/installer,涵盖 checker(系统检查)、hardening(凭据加固)、processor(compose 处理)等模块。

安装器的典型执行流程(对应 README.md 的 "Using Installer" 章节):

mkdir -p pentagi && cd pentagi wget -O installer.zip https://pentagi.com/downloads/linux/amd64/installer-latest.zip unzip installer.zip ./installer

安装器通过/var/run/docker.sock与 Docker API 交互,需要相应权限:

  • 生产环境推荐sudo ./installer
  • 开发环境:将用户加入docker组(sudo usermod -aG docker $USER后重新登录或执行newgrp docker)。注意:加入docker组等同于授予 root 级权限,仅在受控环境使用。

安装器会依次完成:系统检查(Docker、网络、资源)→ 生成.env→ 配置 LLM 提供商 → 配置搜索引擎 → 安全加固与 SSL → 通过 docker-compose 启动。

方式 B:手动 Docker Compose 部署

创建工作目录并把.env.example复制为.env,填入密钥后启动栈。完整序列(含示例 provider 配置文件和docker compose up -d命令)见 README.md 的 "Manual Installation" 章节。仓库根目录的 .env.example 就是可复制的变量模板,示例 provider 配置存放在 examples/configs(例如 custom-openai.provider.yml、ollama-llama318b.provider.yml)。

第二步:设置核心服务端变量

无论采用哪种方式,在把实例暴露到 localhost 之外前,请务必在.env中确认以下变量(对应.env.example的 "PentAGI security settings" 区块):

变量说明示例值 / 注意事项
PUBLIC_URL用户与浏览器实际访问的 URLhttps://pentagi.example.comhttps://192.168.1.100:8443必须使用真实主机名或 IP,绝不能用0.0.0.0
CORS_ORIGINS允许访问 UI 的所有源,逗号分隔同时使用本地与外部访问时,需同时包含https://localhost:8443和外部 URL
PENTAGI_LISTEN_IP/PENTAGI_LISTEN_PORT监听地址与端口仅本机访问保持默认127.0.0.1;对外连接设为0.0.0.0(端口默认 8443)
COOKIE_SIGNING_SALTCookie 签名盐值必须改掉默认值.env.example中默认是salt
PENTAGI_POSTGRES_PASSWORDNEO4J_PASSWORD数据库密码必须改掉默认值,对应 PostgreSQL 与 Graphiti/Neo4j

外部访问场景下,修改后需重建容器使配置生效(见 README.md "Accessing PentAGI from External Networks" 章节):

docker compose down docker compose up -d --force-recreate

随后用docker ps | grep pentagi验证端口绑定为0.0.0.0:8443->8443/tcp(若仍显示127.0.0.1,需直接在 docker-compose.yml 中把ports改为"0.0.0.0:8443:8443"后重建),并在防火墙上放行 8443 端口(UFW:sudo ufw allow 8443/tcp;firewalld:sudo firewall-cmd --permanent --add-port=8443/tcp后 reload)。通过 IP 访问时会遇到自签名证书告警,属预期现象。

第三步:配置并测试 LLM 提供商

.env中为至少一个提供商设置凭据。.env.example中完整定义了以下提供商的变量(每个提供商还可在 examples/configs 找到带注释的示例配置文件):

提供商核心变量默认端点
OpenAIOPEN_AI_KEYOPEN_AI_SERVER_URLhttps://api.openai.com/v1
AnthropicANTHROPIC_API_KEYANTHROPIC_SERVER_URLhttps://api.anthropic.com/v1
Google AI (Gemini)GEMINI_API_KEYGEMINI_SERVER_URLhttps://generativelanguage.googleapis.com
AWS BedrockBEDROCK_REGION+ 一种认证方式us-east-1
DeepSeekDEEPSEEK_API_KEYDEEPSEEK_SERVER_URLhttps://api.deepseek.com
GLM (Zhipu AI)GLM_API_KEYGLM_SERVER_URLhttps://api.z.ai/api/paas/v4
Kimi (Moonshot)KIMI_API_KEYKIMI_SERVER_URLhttps://api.moonshot.ai/v1
Qwen (Alibaba)QWEN_API_KEYQWEN_SERVER_URLhttps://dashscope-us.aliyuncs.com/compatible-mode/v1
MiniMaxMINIMAX_API_KEYMINIMAX_SERVER_URLhttps://api.minimax.io/v1
Custom / OpenAI 兼容LLM_SERVER_URLLLM_SERVER_KEYLLM_SERVER_MODEL自填,另有LLM_SERVER_CONFIG_PATHLLM_SERVER_PROVIDER
OllamaOLLAMA_SERVER_URL(本地http://ollama-server:11434或云端https://ollama.com)、OLLAMA_SERVER_API_KEYOLLAMA_SERVER_MODEL本地留空 Key

AWS Bedrock 支持三种认证方式(在 ctester 源码 的createProvider中有对应校验):BEDROCK_DEFAULT_AUTH=true(AWS SDK 默认凭据链,推荐 EC2/ECS 场景)、BEDROCK_BEARER_TOKEN(Bearer Token)、或BEDROCK_ACCESS_KEY_ID+BEDROCK_SECRET_ACCESS_KEY(静态凭据),三者至少配置其一。

用 ctester 验证提供商

在启动完整流程之前,先确认提供商能正确应答并支持 PentAGI 所需的 Agent 行为,运行ctester(Provider Configuration Tester):

# 本地 Go 环境(在 backend 目录内运行) go run ./cmd/ctester -verbose # 或在运行中的容器内 docker exec -it pentagi /opt/pentagi/bin/ctester -verbose

ctester的可选参数(来自 backend/cmd/ctester/main.go)远不止-verbose

参数默认值说明
-env.env环境文件路径
-typecustom提供商类型:custom, openai, anthropic, gemini, bedrock, ollama, deepseek, glm, kimi, qwen, minimax
-name作为PROVIDER_NAME/MODEL_NAME参与构建 provider 配置的提供商名
-configprovider 配置文件路径(同时作用于LLM_SERVER_CONFIG_PATHOLLAMA_SERVER_CONFIG_PATH
-tests自定义测试 YAML 文件路径
-report报告写出路径
-agentsall逗号分隔的待测 Agent 类型(如simple, primary_agent, coder, pentester
-groupsall逗号分隔的测试组(basic, advanced, json, knowledge
-workers4并发 worker 数
-verbosefalse详细输出

ctester覆盖 13 类 Agent 的测试(simplesimple_jsonprimary_agentassistantgeneratorrefineradviserreflectorsearcherenrichercoderinstallerpentester),并区分 Basic / Advanced / Capability 测试与成功率、平均延迟统计(见 backend/cmd/ctester/models.go)。若使用 custom、llama.cpp、vLLM、SGLang 后端时报告 tool-call / function-call 问题,通常指向后端本身的 tool-call 解析器而非 PentAGI。完整用法与按 Agent 测试的说明见 README.md 的 "Testing LLM Agents" 章节。

第四步:配置并测试 Embedding 提供商

PentAGI 使用 Embedding 支撑语义搜索、知识存储与记忆系统。相关变量(来自.env.example的 "Embedding" 区块与 config.go 的默认值):

变量默认值说明
EMBEDDING_PROVIDERopenai当前支持openaiollama(见 embedder.go)
EMBEDDING_MODEL使用的 Embedding 模型
EMBEDDING_URL自定义 Embedding 端点;为空且EMBEDDING_PROVIDER=openai时回退到OPEN_AI_SERVER_URL
EMBEDDING_KEY为空时回退到OPEN_AI_KEY
EMBEDDING_BATCH_SIZE512批量向量化的大小
EMBEDDING_MAX_TEXT_BYTES8192单条文本的最大字节数
EMBEDDING_STRIP_NEW_LINEStrue向量化前是否去除换行

从 embedder.go 的源码可以确认回退逻辑:当EMBEDDING_PROVIDER=openaiEMBEDDING_URL/EMBEDDING_KEY为空时,客户端自动改用OPEN_AI_SERVER_URLOPEN_AI_KEYollama提供商则使用EMBEDDING_URL作为服务器地址且不支持 Key 认证。

用 etester 验证 Embedding

# 本地 Go 环境 go run ./cmd/etester test -verbose # 运行中的容器 docker exec -it pentagi /opt/pentagi/bin/etester test -verbose

etester是一个子命令式工具(见 backend/cmd/etester/main.go),支持:

子命令作用示例
test测试 Embedding 提供商与 pgvector 连接./etester test -verbose
info显示 Embedding 数据库统计信息./etester info
flush删除 Embedding 库中所有文档(带交互确认,见 flush.go)./etester flush
reindex为所有文档重算 Embedding./etester reindex
search在 Embedding 库中搜索文档./etester search -query "How to install PostgreSQL"

etester还遵循TENANT_ID租户模式:启动时会先EnsureTenantSchema并校验search_path,与主服务保持一致(见 etester/main.go 的初始化逻辑)。如果之后更换 Embedding 提供商或模型,需先flushreindex知识库,完整命令集见 README.md 的 "Embedding Configuration and Testing" 章节。

第五步(可选):配置搜索提供商

搜索提供商能提升研究质量,但不是必选项。PentAGI 支持以下引擎,对应变量均在.env.example中有定义:

引擎变量
DuckDuckGoDUCKDUCKGO_ENABLED(另有DUCKDUCKGO_REGIONDUCKDUCKGO_SAFESEARCHDUCKDUCKGO_TIME_RANGE
SploitusSPLOITUS_ENABLED
GoogleGOOGLE_API_KEYGOOGLE_CX_KEY(另有GOOGLE_LR_KEY
TavilyTAVILY_API_KEY
FirecrawlFIRECRAWL_API_KEYFIRECRAWL_API_URL可选,默认云 API,也可指向自建实例)
TraversaalTRAVERSAAL_API_KEY
PerplexityPERPLEXITY_API_KEY(另有PERPLEXITY_MODELPERPLEXITY_CONTEXT_SIZE
Searxng(自托管元搜索)SEARXNG_URL(另有SEARXNG_CATEGORIES默认generalSEARXNG_LANGUAGESEARXNG_SAFESEARCH默认0SEARXNG_TIME_RANGESEARXNG_TIMEOUT
内部浏览器分析回退引擎WEB_SEARCH_INTERNAL_ENABLED(默认false)、WEB_SEARCH_INTERNAL_MAX_SITES(默认5)、WEB_SEARCH_INTERNAL_MAX_SITE_BYTES(默认10240

最后一个引擎是web_search工具的免费回退方案:它抓取页面并摘要,替代付费分析 API;需启用开关并配合 scraper 与至少一个链接引擎使用(该引擎在 ftester 的 worker 参数解析 中以internal函数暴露,供调试)。搜索工具的注册与执行逻辑可进一步查看 backend/pkg/tools/search.go 与 backend/pkg/tools/searchers 目录。

第六步(可选):启用 Graphiti、Langfuse 与可观测性

这三个都是独立可选栈,通过额外的 compose 文件拉起:

开启方式对应文件
Graphiti 知识图谱GRAPHITI_ENABLED=trueGRAPHITI_URLGRAPHITI_TIMEOUT,配合NEO4J_USERNEO4J_DATABASENEO4J_PASSWORDNEO4J_URIdocker-compose-graphiti.yml
Langfuse 分析LANGFUSE_BASE_URLLANGFUSE_PROJECT_IDLANGFUSE_PUBLIC_KEYLANGFUSE_SECRET_KEYdocker-compose-langfuse.yml
监控(Grafana / OpenTelemetry)OTEL_HOSTdocker-compose-observability.yml

顺序要求:必须先运行基础 docker-compose.yml 创建共享 Docker 网络(pentagi-networkobservability-networklangfuse-network),再拉起可选栈;否则会报网络不存在的错误。可选栈的具体编排可参考 docker-compose-graphiti.yml、docker-compose-langfuse.yml、docker-compose-observability.yml 及 observability 目录下的配置。

第七步:启动并验证

  1. 启动整个栈:docker compose up -d
  2. 观察日志直至后端就绪:docker compose logs -f pentagi
  3. 若修改过任何提供商配置,重新运行ctesteretester;如需对单个 Agent 函数与工具做更深检查,使用ftester(见 README.md 的 "Function Testing with ftester" 章节);
  4. 打开https://localhost:8443(或你的PUBLIC_URL),使用默认账号admin@pentagi.com/admin登录,并立即修改默认密码

关于登录后的配置边界:Web 控制台的Settings页面管理 Providers(创建、编辑、测试用户定义的 provider 配置,控制各 Agent 的模型选择与运行参数)、Prompts(系统/人类/工具提示词模板)与 PentAGI API tokens;而 LLM 与搜索凭据、Langfuse、Graphiti、MCP 仍属于服务端配置(环境变量 / compose 文件 / 挂载的配置文件),具体划分见 README.md 的 "Current Web Settings Coverage" 与 "Still Server-Managed" 章节。

多用户场景下,PentAGI 不开放自助注册:新实例只有默认本地管理员账号,管理员可通过 Users REST API(/api/v1/users/)管理本地用户,OpenAPI UI 位于https://localhost:8443/api/v1/swagger/index.html

首次运行配置检查清单

  • Docker/Podman、CPU、内存与磁盘满足最低要求
  • 已选定安装方式(安装器或手动 Compose)
  • PUBLIC_URLCORS_ORIGINS设置为真实主机名/IP(不是0.0.0.0
  • COOKIE_SIGNING_SALT与数据库密码已从默认值改掉
  • 至少一个 LLM 提供商已配置并通过ctester
  • Embedding 提供商已配置并通过etester
  • 搜索提供商已配置(可选)
  • 需要时已启用 Graphiti / Langfuse / 可观测性(可选)
  • 栈已启动、日志健康、默认管理员密码已修改

下一步

登录后即可创建第一个 flow、使用提示词模板并查看结果(详见 README.md 的 "How to Use PentAGI After Login" 章节)。如需加固或全本地化部署,请继续阅读 Worker Node 部署指南(双节点隔离架构、Docker-in-Docker 与 TLS 加固)与 vLLM + Qwen3.5-27B-FP8 部署指南(生产级本地 LLM 推理)。

【免费下载链接】pentagiFully autonomous AI Agents system capable of performing complex penetration testing tasks项目地址: https://gitcode.com/GitHub_Trending/pe/pentagi

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询