跳转至

运行时配置与品牌定制

1. 配置分类

PE Agent 前端将配置分为:

  1. 浏览器可见的运行时配置;
  2. Next.js 服务端私密配置;
  3. Docker Compose 和部署流水线变量。

不要因为变量写在 .env 中就默认它是秘密。被注入 window.__RUNTIME_CONFIG__ 的值,浏览器用户都能查看。

2. 浏览器可见运行时配置

以下名称由当前前端运行时配置机制读取:

分组 变量名
路径与静态资源 APP_BASE_PATHSTATIC_BASE_URL
品牌 BRAND_NAMEBRAND_LOGO_PATHBRAND_FAVICON_PATH
外部前端服务 SANDPACK_BUNDLER_URLONLYOFFICE_URL
显示与诊断 DEBUGANNOUNCEMENTENABLE_VERSION_CHECK
功能开关 ENABLE_INVITE_CODEENABLE_REDEEM_CODEENABLE_USER_LLM_SETTINGSENABLE_USER_PASSWORD_CHANGEENABLE_ADMIN_SECTIONENABLE_VERIFICATION_CODEENABLE_CLAW
请求兼容 ENABLE_HTTP_METHOD_OVERRIDE
Cookie 策略 AUTH_COOKIE_ACCESS_TOKEN_KEYAUTH_COOKIE_REFRESH_TOKEN_KEYAUTH_COOKIE_REFRESH_TOKEN_MAX_AGEAUTH_COOKIE_DOMAIN

浏览器配置由根布局注入,不依赖 NEXT_PUBLIC_* 构建时替换。同一个镜像可以在不同部署环境中通过修改运行时 .env 和重启容器复用。

3. 服务端配置

当前 server-only 配置包括:

分组 变量名
应用和 API APP_DOMAINAPI_SERVER_URLPUBLIC_SITE_ORIGIN
搜索引擎 DISABLE_ROBOTS
ONLYOFFICE ONLYOFFICE_JWT_SECRETONLYOFFICE_ALLOWED_FILE_URL_PREFIXES
OpenSandbox OPEN_SANDBOX_API_URLOPEN_SANDBOX_API_KEYOPEN_SANDBOX_PREVIEW_IMAGE
站点访问 BASIC_AUTH_USERBASIC_AUTH_PASS
历史入口 PEAGENT_REDIRECT_BASE_URL

其中 Secret、Key 和密码必须通过受控的密钥管理或配置文件下发,不能写入浏览器配置、Markdown、截图或镜像层。

4. APP_BASE_PATH

该变量控制前端部署在域名根路径或二级路径。

有效值必须:

  • 为空或以 / 开头;
  • 不以 / 结尾;
  • 不包含连续斜杠、反斜杠、query 或 hash;
  • 不包含 ... 路径段。

它会影响:

  • 页面链接和跳转;
  • /server/*/api/*
  • public 资源;
  • Cookie Path;
  • ONLYOFFICE 回调;
  • 项目预览路径;
  • 健康检查地址。

修改后需要重启或重新创建容器,但不需要重建镜像。

5. 静态资源

STATIC_BASE_URL 为空时,public/static/* 随应用路径提供;配置后可指向项目 CDN 或独立静态站点。

业务代码通过 staticUrl() 生成静态资源地址,避免硬编码 /static/...

品牌 Logo 和 Favicon 通过 public 资源路径函数处理,不与普通静态资源完全相同。根布局还会加载 public/branding/theme.css

6. 品牌定制

推荐分层处理:

  1. 名称、Logo、Favicon:运行时变量;
  2. 品牌色和 CSS 变量:public/branding/theme.css
  3. 组件级设计 Token:src/theme/antd-theme.ts
  4. 通用 Tailwind Token:src/styles/globals.css

Compose 中可以启用只读 volume 挂载品牌文件,从而在不重建镜像的情况下替换项目品牌资源。

品牌配置至少检查:

  • 登录、注册和找回密码;
  • 顶部 Logo;
  • 浏览器标题和 Favicon;
  • 浅色与深色主题;
  • 404、错误页和空状态;
  • 二级路径和静态资源;
  • 高分辨率屏幕清晰度。

7. 功能开关

功能 前端开关
注册邀请码 ENABLE_INVITE_CODE
兑换口令 ENABLE_REDEEM_CODE
用户大模型配置 ENABLE_USER_LLM_SETTINGS
用户修改密码 ENABLE_USER_PASSWORD_CHANGE
批量账号导入入口 ENABLE_ADMIN_SECTION
注册验证码 ENABLE_VERIFICATION_CODE
本地工具 ENABLE_CLAW

Important

功能开关只控制前端显示和路由行为,不是授权边界。批量导入、模型配置、兑换等接口必须由服务端校验身份和权限。

8. Basic Auth

同时配置 BASIC_AUTH_USERBASIC_AUTH_PASS 时,前端代理可以启用站点级 Basic Auth。当前实现对 /api/server/static/_next 有豁免,因此 Basic Auth 不能代替后端认证和接口授权。

9. HTTP Method Override

启用 ENABLE_HTTP_METHOD_OVERRIDE 后,Axios 的 DELETE、PUT、PATCH 请求会改为 POST,并通过 X-HTTP-Method-Override 表示原始方法。

项目网关和后端必须同时支持该约定。流式 fetch 不参与改写。

10. 配置变更流程

  1. 在配置模板中记录变量名、作用域、是否必填和保密级别;
  2. 通过安全渠道生成目标环境值;
  3. 更新容器运行时 .env
  4. 重启或重新创建容器;
  5. 检查 /api/health
  6. 验证登录、接口代理、静态资源和可选功能;
  7. 不在日志和工单中粘贴完整 .env