Skip to content

基于 Docker 安装部署 ​

🎯 系统要求 ​

资源最低要求推荐配置
CPU4 核8 核
内存8 GiB16 GiB
磁盘40 GiB100 GiB
架构x86_64 / ARM64
软件Docker Engine 18.09+、Docker Compose v2使用仍受维护的 Docker Engine 和 Compose v2

💡 注意:推荐配置适合启用完整应用、数据处理和 Docker 沙箱的环境。模型服务通常独立部署,不计入上表资源。

🚀 快速开始 ​

在线部署 ​

1. 下载和设置 ​

bash
git clone https://github.com/ModelEngine-Group/nexent.git
cd nexent

💡 提示:Docker 和 Kubernetes 共用 deploy/env/.env。部署脚本会保留已有配置,并补充 deploy/env/.env.example 中新增的变量。如果 .env 不存在,脚本会优先复用旧版 docker/.env,否则从当前模板创建。部署前请确认 .env.example 可读。

2. 部署选项 ​

运行以下命令开始部署:

bash
bash deploy.sh docker

执行此命令后,系统会通过 Bash TUI 选择部署参数。可使用方向键或 j/k 移动,空格切换多选项,回车确认,b/Backspace 返回上一步,q 退出。

组件组合:

  • infrastructure(必选): Elasticsearch、PostgreSQL、Redis、MinIO
  • application(默认选中,可取消): config、runtime、mcp、northbound、web
  • data-process(默认选中,可选): 数据处理服务
  • supabase(默认选中,可选): 启用用户、租户和认证能力
  • terminal(可选): 启用 OpenSSH 终端工具
  • monitoring(可选): 启用观测组件,选择后会继续选择 provider

application 会同时准备 nexent-sandbox 镜像。v2.5.0 的 Docker 部署默认在系统级 Docker 沙箱中执行模型生成的代码和 Skill 脚本;沙箱不是固定的 Compose 服务,而是由 Runtime 按运行策略创建和复用。

端口策略:

  • development(默认): 暴露调试和内部服务端口,便于本地排查
  • production: 仅发布生产入口端口

镜像来源:

  • general(默认): 使用标准公开镜像仓库
  • mainland: 使用中国大陆镜像源
  • local-latest: 使用本地 latest 镜像,避免拉取 Nexent 应用镜像

您也可以通过参数跳过交互:

bash
# 使用已保存的 deploy.options 或内置默认值,不进入 TUI
bash deploy.sh docker --defaults

# 默认组件组合,development 端口策略,标准镜像源
bash deploy.sh docker --components infrastructure,application,data-process,supabase --port-policy development --image-source general

# 启用用户/租户能力、数据处理和终端工具
bash deploy.sh docker --components infrastructure,application,data-process,supabase,terminal

# 使用中国大陆镜像源
bash deploy.sh docker --image-source mainland

# 使用本地 latest 镜像
bash deploy.sh docker --image-source local-latest

部署成功后,非敏感部署选项会保存到 deploy/docker/deploy.options。--defaults 会优先复用该文件;文件不存在时使用内置默认值。下次交互部署时可选择复用本地配置或重新全量配置。

⚠️ 重要提示 ​

1️⃣ 首次部署 v1.8.0 及以上版本时,系统会创建 suadmin@nexent.com 超级管理员账号,默认密码为 Nexent@123,无需交互输入,创建成功后会在终端显示。可在首次部署前通过 deploy/env/.env 中的 NEXENT_SUPER_ADMIN_PASSWORD 覆盖默认值,非交互创建时终端会显示实际使用的密码。使用离线部署包并显式指定 --config 时例外:部署脚本会要求输入并确认密码,并以本次输入为准;手动输入的密码不会在终端显示。

该账号仅用于权限管理,无权开发智能体或创建知识库。请登录该账号,依次完成:访问租户资源→创建租户→创建租户管理员,然后使用租户管理员账号登录,即可使用全部功能。角色权限详情参见 用户管理

2️⃣ 如需重建 suadmin 账号,请按照以下步骤操作:

bash
# Step1: 在supabase容器中删除su账号记录
docker exec -it supabase-db-mini bash
psql -U postgres
select id, email from auth.users;
# 获取 suadmin@nexent.com 账号的 user_id
delete from auth.users where id = 'your_user_id';
delete from auth.identities where user_id = 'your_user_id';

# Step 2: 在 nexent 数据库中删除 su 账号记录
docker exec -it nexent-postgresql bash
psql -U root -d nexent
delete from nexent.user_tenant_t where user_id = 'your_user_id';

# Step 3: 重新部署;非交互模式将使用配置值或默认密码

离线部署 ​

目标服务器无法访问公网镜像仓库时,可从 GitHub Actions 获取已经打包好的离线部署包:

  1. 登录 GitHub,打开 Build Offline Deployment Package。
  2. 选择目标版本对应的成功运行记录,在页面底部的 Artifacts 中下载与服务器架构匹配的压缩包。
  3. amd64 服务器下载 nexent-<version>-amd64.zip,ARM64 服务器下载 nexent-<version>-arm64.zip。

GitHub Actions 构建产物默认保留 30 天。如果目标版本的产物已过期,请联系维护者重新运行工作流。

下载后,将压缩包复制到离线服务器并解压。压缩包内直接包含离线包文件,无需再次解压内层归档:

bash
unzip nexent-<version>-amd64.zip -d nexent
cd nexent
bash deploy.sh --load-images docker

离线包默认安装Nexent全部组件,若需要重新选择组件、端口策略、镜像源或监控 provider 时,添加 --config:

bash
bash deploy.sh --load-images --config docker

如果服务器上保留了此前已部署的离线包,可通过 --reuse-from 复用其中的环境配置和部署选项:

bash
bash deploy.sh \
  --reuse-from /path/to/previous/nexent \
  --load-images \
  docker

指定目录必须是已解压的旧部署包根目录,并包含 deploy/env/.env。该参数会导入旧 .env、保留其已有值,并立即追加当前包 .env.example 新增的变量。存在 monitoring.env 和 Docker deploy.options 时也会复用;Docker 派生配置由新版本脚本重新生成。--reuse-from 可与 --config、--defaults 或 --push-images 组合使用。

首次创建 suadmin@nexent.com 时,非交互部署使用 NEXENT_SUPER_ADMIN_PASSWORD,默认值为 Nexent@123,创建成功后会在终端显示实际密码。离线部署使用 --config 时会要求手动输入并确认密码,输入值不会写入配置文件,也不会在终端显示。

如果需要先将镜像推送到目标环境可访问的内部仓库:

bash
bash deploy.sh \
  --push-images \
  --image-registry-prefix registry.example.com/nexent \
  docker

未传入仓库前缀时,脚本会先询问前缀;随后 push-images.sh 会在推送前询问仓库用户名和密码。

访问您的安装 ​

部署成功完成后:

获取管理员密码:超级管理员账号为 suadmin@nexent.com。首次非交互创建成功时,终端会显示实际使用的密码;未额外配置时,默认密码为 Nexent@123。离线部署使用 --config 时,手动输入的密码不会保存或显示。如果密码已忘记,请按本文前面的“重建 suadmin 账号”步骤重建账号。

  1. 在浏览器中打开 http://localhost:3000
  2. 登录超级管理员账号
  3. 访问租户资源 → 创建租户及租户管理员
  4. 登录租户管理员账号
  5. 参考 用户指南 进行智能体的开发

📦 服务架构 ​

Nexent 采用微服务架构,通过 Docker Compose 进行部署。

应用服务:

服务描述默认端口
nexent-config配置与管理 API5010
nexent-runtime智能体运行时 API5014
nexent-mcpMCP 管理与工具服务5011/5015
nexent-webWeb 前端3000
nexent-data-process数据处理服务5012
nexent-northbound北向 API 服务5013

基础设施服务:

服务描述
nexent-postgresql关系型数据库
nexent-elasticsearch搜索引擎和索引服务
nexent-minioS3 兼容对象存储
redis缓存、分布式锁和任务消息代理

Supabase 服务(选择 supabase 组件时):

服务描述
supabase-kongAPI 网关
supabase-auth认证服务
supabase-db-mini数据库服务

可选服务:

服务描述
nexent-openssh-serverAI 智能体 SSH 终端
nexent-monitoring可选观测组件

按需执行环境:

组件描述
nexent-sandboxRuntime 按策略创建的隔离执行环境,用于运行模型生成的代码和 Skill 脚本

💾 数据持久化 ​

Nexent 使用 Docker volumes 进行数据持久化:

数据类型Volume 名称默认宿主机路径
PostgreSQLnexent-postgresql-data{dataDir}/postgresql
Elasticsearchnexent-elasticsearch-data{dataDir}/elasticsearch
Redisnexent-redis-data{dataDir}/redis
MinIOnexent-minio-data{dataDir}/minio
智能体运行工作区nexent-agent-workspaceDocker 命名卷,由 NEXENT_SANDBOX_WORKSPACE_VOLUME 配置
Supabase DB(选择 supabase 时)nexent-supabase-db-data{dataDir}/supabase-db

默认 dataDir 为 ./volumes(可在 deploy/env/.env 中配置 ROOT_DIR)。

卸载 Docker 部署 ​

请在仓库根目录使用统一卸载入口:

bash
# 停止并删除容器;是否删除持久化数据由交互确认
bash uninstall.sh docker

# 非交互卸载并保留数据
bash uninstall.sh docker --keep-volumes

# 删除 Docker volumes 和 ROOT_DIR 下的 Nexent 数据
bash uninstall.sh docker --delete-volumes true

# 完整清理:容器和持久化数据都会删除
bash uninstall.sh docker delete-all

Docker 卸载脚本会读取 deploy/env/.env 中的 ROOT_DIR 并清理 Compose 资源。删除数据时会移除 postgresql、elasticsearch、redis、minio、volumes、openssh-server、scripts、skills 等服务目录;如果后续要复用已有数据,请选择保留 volumes。

🔌 端口映射 ​

服务内部端口外部端口描述
Web 界面30003000主应用程序访问
后端 API50105010后端服务
Runtime API50145014智能体运行时服务
MCP API5011/50155011/5015MCP 管理与工具服务
数据处理50125012数据处理 API
北向 API50135013北向接口服务 (A2A/MCP 集成)
PostgreSQL54325434数据库连接
Elasticsearch92009210搜索引擎 API
MinIO API90009010对象存储 API
MinIO 控制台90019011存储管理 UI
Redis63796379缓存服务
SSH 服务器222222终端工具访问

有关完整的端口映射详细信息,请参阅我们的 开发容器指南。

🔧 高级配置 ​

v2.5.0 的部署模板默认使用 Docker 沙箱,并复用系统级容器以减少冷启动时间。Runtime 通过独立工作区卷交换上传文件和生成文件;运行结束后,需要保留的产物会同步到 MinIO。

常用配置位于 deploy/env/.env:

变量默认值说明
NEXENT_SANDBOX_DEFAULT_LEVELdocker隔离级别,可选 local、docker、wasm
NEXENT_SANDBOX_DEFAULT_SCOPEsystem容器生命周期,可选 session 或 system
NEXENT_SANDBOX_DOCKER_IMAGEnexent/nexent-sandbox:latestDocker 沙箱镜像
NEXENT_SANDBOX_WORKSPACE_VOLUMEnexent-agent-workspaceRuntime 与沙箱共享的 Docker 卷
NEXENT_SANDBOX_MEMORY_LIMIT_MB2048沙箱内存上限,单位为 MiB
NEXENT_SANDBOX_CPU_QUOTA1.0沙箱 CPU 配额
NEXENT_SANDBOX_TIMEOUT_S30单步执行超时,单位为秒
NEXENT_SANDBOX_NETWORKdisabled是否允许沙箱访问网络
NEXENT_SANDBOX_SHELL_POLICYdisabledShell 调用策略,可选 disabled、restricted、boxed
NEXENT_SANDBOX_AUTO_SYNC_OUTPUTStrue是否自动将输出文件同步到 MinIO
AGENT_WORKSPACE_ROOT/mnt/nexent/workdir每次运行的临时文件工作区

生产环境不建议将隔离级别改为 local。调整资源、网络或 Shell 策略后,需要重新部署 Runtime。

监控配置 ​

部署时在脚本交互界面中选择 monitoring 组件即可启用 OpenTelemetry 监控。脚本会在 deploy/env/monitoring.env 中同步更新 ENABLE_TELEMETRY、MONITORING_PROVIDER、MONITORING_DASHBOARD_URL、OTLP endpoint 和 provider 默认值,并启动 deploy/docker/compose/docker-compose-monitoring.yml 中对应的观测组件。通过 MONITORING_DASHBOARD_ALLOWED_ROLES 可配置哪些角色看到前端监控入口,默认值为 SU,SPEED。

bash
cd nexent
bash deploy.sh docker

如果本地已有 deploy/docker/deploy.options,脚本会询问是否复用本地配置。请选择重新配置/覆盖本地配置,然后在组件选择界面勾选 monitoring,再在 provider 选择界面手动选择 grafana、phoenix、langfuse、langsmith、zipkin 或 otlp。

支持的 provider:

Provider用途默认访问地址
otlp仅启动 OpenTelemetry Collector,适合转发到外部平台无 Dashboard
phoenix本地 Phoenix 追踪分析http://localhost:6006
langfuse本地 Langfuse 观测栈http://localhost:3001
langsmith转发到托管 LangSmithhttps://smith.langchain.com/
grafana本地 Grafana + Tempohttp://localhost:3002/d/nexent-llm-agent/nexent-agent-trace-monitoring?orgId=1
zipkin本地 Zipkinhttp://localhost:9411

如需调整端口、镜像版本或 Langfuse 初始账号,请先复制并编辑监控环境变量:

bash
cp deploy/env/monitoring.env.example deploy/env/monitoring.env

常用变量:

变量说明
MONITORING_PROVIDER默认监控 provider;部署脚本中手动选择 provider 后会同步更新
MONITORING_DASHBOARD_ALLOWED_ROLES可看到监控面板入口的角色,使用逗号分隔,例如 SU,ADMIN,SPEED
OTEL_COLLECTOR_HTTP_PORT / OTEL_COLLECTOR_GRPC_PORTCollector 对外暴露的 OTLP HTTP/gRPC 端口
LANGSMITH_API_KEY / LANGSMITH_PROJECTLangSmith 转发配置
LANGFUSE_INIT_USER_EMAIL / LANGFUSE_INIT_USER_PASSWORD本地 Langfuse 初始管理员账号
GRAFANA_ADMIN_USER / GRAFANA_ADMIN_PASSWORD本地 Grafana 管理员账号

选择 langsmith provider 前,请先在 deploy/env/monitoring.env 中配置 LANGSMITH_API_KEY。如果只需要连接已有外部 Collector,也可以在 deploy/env/monitoring.env 中调整 OTLP 目标地址:

bash
ENABLE_TELEMETRY=true
MONITORING_PROVIDER=otlp
OTEL_EXPORTER_OTLP_ENDPOINT=http://otel-collector:4318
OTEL_EXPORTER_OTLP_PROTOCOL=http
MONITORING_DASHBOARD_URL=

生产建议:请替换示例中的默认密码、密钥和 Langfuse ENCRYPTION_KEY,并通过反向代理或防火墙限制 Dashboard、Collector 端口的访问范围。

OAuth 登录配置 ​

OAuth 登录依赖 supabase 组件。启用第三方登录时,请同时部署 supabase,并将 OAUTH_CALLBACK_BASE_URL 设置为浏览器可访问的 Nexent Web 地址。

bash
bash deploy.sh docker --components infrastructure,application,supabase

Docker 部署在 deploy/env/.env 中配置 OAuth:

bash
# Web 入口地址。回调完整路径会自动拼接为:
# {OAUTH_CALLBACK_BASE_URL}/api/user/oauth/callback?provider=<provider>
OAUTH_CALLBACK_BASE_URL=http://localhost:3000

# GitHub OAuth
GITHUB_OAUTH_CLIENT_ID=
GITHUB_OAUTH_CLIENT_SECRET=

# GDE OAuth
GDE_URL=
GDE_OAUTH_CLIENT_ID=
GDE_OAUTH_CLIENT_SECRET=

# Link App OAuth
LINK_APP_URL=
LINK_APP_OAUTH_CLIENT_ID=
LINK_APP_OAUTH_CLIENT_SECRET=

# WeChat OAuth
ENABLE_WECHAT_OAUTH=false
WECHAT_OAUTH_APP_ID=
WECHAT_OAUTH_APP_SECRET=

# 访问 OAuth provider 时的 TLS 校验
OAUTH_SSL_VERIFY=true
OAUTH_CA_BUNDLE=

# disabled: 隐藏 OAuth 登录入口并禁用自动跳转
# button: 显示已配置的 OAuth 登录按钮
# force: 恰好配置一个 Provider 时,未登录用户自动跳转
OAUTH_LOGIN_MODE=button

Provider 启用规则:

Provider必填变量回调地址
GitHubGITHUB_OAUTH_CLIENT_ID、GITHUB_OAUTH_CLIENT_SECRET{OAUTH_CALLBACK_BASE_URL}/api/user/oauth/callback?provider=github
GDEGDE_URL、GDE_OAUTH_CLIENT_ID、GDE_OAUTH_CLIENT_SECRET{OAUTH_CALLBACK_BASE_URL}/api/user/oauth/callback?provider=gde
Link AppLINK_APP_URL、LINK_APP_OAUTH_CLIENT_ID、LINK_APP_OAUTH_CLIENT_SECRET{OAUTH_CALLBACK_BASE_URL}/api/user/oauth/callback?provider=link_app
WeChatENABLE_WECHAT_OAUTH=true、WECHAT_OAUTH_APP_ID、WECHAT_OAUTH_APP_SECRET{OAUTH_CALLBACK_BASE_URL}/api/user/oauth/callback?provider=wechat

本地默认回调示例为 http://localhost:3000/api/user/oauth/callback?provider=github。生产环境应改为公网 HTTPS 域名,例如 https://nexent.example.com/api/user/oauth/callback?provider=github,并在 OAuth provider 控制台中登记相同地址。

OAUTH_LOGIN_MODE 支持 disabled、button、force,默认为 button。force 模式下,恰好有一个 Provider 满足启用条件时,未登录访问 Nexent 会直接跳转到该 Provider;没有可用 Provider 时禁用 OAuth,多个 Provider 时回退到登录按钮。若同时配置了 CAS force 模式,CAS 优先。

CAS 登录配置 ​

CAS SSO 不依赖 supabase。启用 CAS 时,请将 CAS_CALLBACK_BASE_URL 设置为浏览器可访问的 Nexent Web 地址,且不要带结尾 /。CAS_SERVER_URL 是 CAS Server 根地址,也不要带结尾 /。

Docker 部署在 deploy/env/.env 中配置 CAS:

bash
CAS_ENABLED=true
CAS_SERVER_URL=http://localhost:8080/cas
# 可选:后端容器访问 CAS 的内部地址;为空时复用 CAS_SERVER_URL。
CAS_INTERNAL_SERVER_URL=
CAS_VALIDATE_PATH=/p3/serviceValidate
CAS_CALLBACK_BASE_URL=http://localhost:3000

# disabled: 禁用 CAS 登录入口和自动跳转
# button: 在登录页显示 CAS 登录按钮
# force: 未登录访问 Nexent 时自动跳转到 CAS
CAS_LOGIN_MODE=force

# 为空时使用 <cas:user>;填写 userName 时从 <cas:attributes><cas:userName> 取用户标识
CAS_USER_ATTRIBUTE=
CAS_EMAIL_ATTRIBUTE=email
CAS_ROLE_ATTRIBUTE=role
CAS_DEFAULT_ROLE=USER
CAS_TENANT_ATTRIBUTE=tenant_id
CAS_DEFAULT_TENANT_ID=tenant_id
CAS_ROLE_MAP_JSON={"cas-admin":"ADMIN","cas-user":"USER"}
CAS_SESSION_MAX_AGE_SECONDS=3600
LOCAL_SESSION_MAX_AGE_SECONDS=3600
CAS_HEARTBEAT_URL=
CAS_HEARTBEAT_INTERVAL_SECONDS=300
CAS_HEARTBEAT_COOKIE_NAME=
CAS_RENEW_BEFORE_SECONDS=300
CAS_RENEW_TIMEOUT_SECONDS=10
CAS_SYNTHETIC_EMAIL_DOMAIN=cas.local

# 为空时 Nexent 主动退出不会调用 CAS Server 登出接口。
# 可配置为 /logout,系统会基于 CAS_SERVER_URL 拼接。
CAS_LOGOUT_URL=/logout
CAS_SSL_VERIFY=true
CAS_CA_BUNDLE=

CAS 未返回 CAS_ROLE_ATTRIBUTE 指定的角色属性、属性为空或映射后的角色不受支持时,使用 CAS_DEFAULT_ROLE。支持的默认角色为 SU、ADMIN、DEV 和 USER;配置无效时回退到 USER。

CAS 未返回 CAS_TENANT_ATTRIBUTE 指定的租户属性或属性为空时,使用 CAS_DEFAULT_TENANT_ID。

CAS_HEARTBEAT_URL 用于启用独立的 CAS 用户活动心跳。页面可见时,首次用户活动立即发送 GET;之后点击、键盘、鼠标、触摸、窗口聚焦或页面可见性变化在所有浏览器标签页中每 CAS_HEARTBEAT_INTERVAL_SECONDS 最多发送一次。若配置的 Cookie 可被前端读取,请求会携带 X-Auth-Token: <cookie-name>=<cookie-value>;读取不到时仍发送心跳,但不带该 Header。由于浏览器直接访问心跳地址,认证源必须通过 CORS 允许 Nexent Origin、GET、OPTIONS 和 X-Auth-Token。心跳只保活认证源会话,现有无感续期仍负责刷新 Nexent 本地会话。

常用 CAS 地址:

用途地址
Nexent 登录入口{CAS_CALLBACK_BASE_URL}/api/user/cas/login?redirect=/
CAS service 回调{CAS_CALLBACK_BASE_URL}/api/user/cas/callback
CAS 无感续期回调{CAS_CALLBACK_BASE_URL}/api/user/cas/renew_callback
CAS 单点登出回调POST {CAS_CALLBACK_BASE_URL}/api/user/cas/logout_callback

Apereo CAS 使用 JSON Service Registry 时,可以新增一个服务注册文件,例如 Nexent-10001.json。文件需要放到 CAS 部署配置的 service registry 目录中,id 必须全局唯一。下面是本地 Docker 示例:

json
{
  "@class": "org.apereo.cas.services.RegexRegisteredService",
  "serviceId": "http://localhost:3000.*",
  "name": "Nexent CAS Client",
  "id": 10001,
  "description": "Nexent CAS SSO client",
  "evaluationOrder": 1,
  "logoutType": "BACK_CHANNEL",
  "logoutUrl": "http://localhost:3000/api/user/cas/logout_callback"
}

生产环境建议保持 CAS_SSL_VERIFY=true;自签名证书优先配置 CAS_CA_BUNDLE,仅本地验证时再临时设置 CAS_SSL_VERIFY=false。

CAS对接ModelEngine ​

当使用CAS协议对接ModelEngine时,可以使用如下配置部署Nexent:

bash
CAS_ENABLED=true
CAS_SERVER_URL=https://<ModelEngine IP>:5443/SSOSvr
CAS_VALIDATE_PATH=/p3/serviceValidate
CAS_CALLBACK_BASE_URL=http://<Nexent IP>:3000
CAS_LOGIN_MODE=force
CAS_USER_ATTRIBUTE=userName
CAS_EMAIL_ATTRIBUTE=email
CAS_ROLE_ATTRIBUTE=userType
CAS_DEFAULT_ROLE=USER
CAS_TENANT_ATTRIBUTE=tenant_id
CAS_DEFAULT_TENANT_ID=tenant_id
CAS_ROLE_MAP_JSON={"1":"ADMIN","3":"DEV"}
CAS_SESSION_MAX_AGE_SECONDS=3600
LOCAL_SESSION_MAX_AGE_SECONDS=3600
CAS_HEARTBEAT_URL=https://<ModelEngine IP>:5443/<heartbeat-path>
CAS_HEARTBEAT_INTERVAL_SECONDS=300
CAS_HEARTBEAT_COOKIE_NAME=<cookie-name>
CAS_RENEW_BEFORE_SECONDS=300
CAS_RENEW_TIMEOUT_SECONDS=10
CAS_SYNTHETIC_EMAIL_DOMAIN=cas.local
CAS_LOGOUT_URL=/logout?service=http://<Nexent IP>:3000
CAS_SSL_VERIFY=false
CAS_CA_BUNDLE=

同时,需要进入oms容器添加cas client的注册配置文件,参考如下步骤:

bash
# 创建注册配置文件,将json部分输入文件并保存
vim Nexent-10000001.json
{
  "@class": "org.apereo.cas.services.CasRegisteredService",
  "serviceId": "http://<Nexent IP>:3000.*",
  "name": "Nexent CAS Client",
  "id": 1000001,
  "description": "Nexent CAS SSO client",
  "evaluationOrder": 1,
  "logoutType": "BACK_CHANNEL",
  "logoutUrl": "http://<Nexent IP>:3000/api/user/cas/logout_callback"
}

# 执行如下命令,将配置文件拷贝到容器中
kubectl cp Nexent-10000001.json model-engine/$(kubectl get pods -n model-engine -l app=oms --no-headers | awk '{print $1}'):/opt/huawei/fce/apps/platform/webapps/SSOSvr/WEB-INF/classes/services/Nexent-10000001.json
kubectl exec -i -n model-engine $(kubectl get pods -n model-engine -l app=oms --no-headers | awk '{print $1}') -- chown tomcat:fusioncube /opt/huawei/fce/apps/platform/webapps/SSOSvr/WEB-INF/classes/services/Nexent-10000001.json

北向接口配置 (NORTHBOUND_EXTERNAL_URL) ​

如果您需要使用以下功能,需要配置 NORTHBOUND_EXTERNAL_URL 环境变量:

  1. A2A 协议集成 - 第三方系统通过 A2A 协议调用 Nexent 智能体
  2. MCP 工具访问 - 使用第三方 MCP 工具访问 Nexent 文档文件等资源

配置方法:

在 deploy/env/.env 文件中设置公网可访问的 URL:

bash
# 格式:协议://主机:端口/api
# 本地开发(默认):
NORTHBOUND_EXTERNAL_URL=http://localhost:5013/api

# 生产环境 - 使用您的公网 IP 或域名:
NORTHBOUND_EXTERNAL_URL=http://your-public-ip:5013/api
# 或
NORTHBOUND_EXTERNAL_URL=https://api.yourdomain.com/api

重要: URL 必须包含 /api 后缀,因为 Northbound 服务使用 FastAPI 的 root_path="/api" 配置。

💡 需要帮助 ​

🔧 从源码构建 ​

想要从源码构建或添加新功能?查看 Docker 构建指南 获取详细说明。

有关详细的安装说明和自定义选项,请查看我们的 开发者指南。