On-Premises 配置
On-Premises 部署可通过 Docker Compose .env 文件或 Helm 配置值进行配置,具体取决于控制面的安装方式。
需要查看或自定义生成的部署配置时,请结合 On-Premises 安装 阅读本参考。
请将这些设置与匹配的数据库备份一起保留 。完整恢复集和恢复顺序请参阅备份与恢复。
这些设置用于配置私有化控制面部署包,与 AISIX 网关运行时环境变量不同。网关运行时变量请参见环境变量。
部署模式
cp-api 以两种部署模式之一运行。该模式在 cp-api 配置文件中为 deployment.mode,对应环境变量 AISIX_CLOUD_DEPLOYMENT_MODE 和 Helm 配置值 api.deploymentMode。默认值为 on-premises,这也是自托管部署唯一支持的模式。另一个取值 saas 是 API7 托管服务使用的模式,不支持在你自己托管的部署中使用。设置为其他任何值时,cp-api 会拒绝启动。
在 on-premises 模式下,cp-api 会强制执行以下规则,控制台也会隐藏不适用的内容:
- 任何人都不能自行注册。账号只能通过邀请创建:受邀者通过邀请中的链接注册。参见邀请成员。没有有效邀请的注册请求会被拒绝,返回
403 SIGN_UP_DISABLED或403 INVITATION_INVALID。 - 任何人都不能创建组织。第一个组织随首个管理员一同创建。创建其他组织的请求会被拒绝,返回
403 ORG_CREATION_DISABLED。从 1.5.x 或更早版本升级、仍包含多个组织的控制面,会以403 ORG_CONSOLIDATION_REQUIRED拒绝控制台请求,直到某个 Owner 保留其中一个组织并删除其余组织。参见将多个组织合并为一个。 - 没有计费页面和套餐。
- 注册时不要求受邀者接受托管服务条款。
cp-api自身的出站调用可以访问私有地址,除非你禁止。参见私有网络访问。
Docker Compose 部署包不会把该变量传给 cp-api,因此部署包安装始终以 on-premises 模式运行。
saas 模式有其自身的要求和配置项,它们不适用于 on-premises 控制面:
- 它要求配置 SMTP 中继,因为每个新账号都必须验证邮箱地址。
saas模式下smtp.host(AISIX_CLOUD_SMTP_HOST)为空时,cp-api拒绝启动;api.smtp.host为空时,Helm Chart 拒绝渲染。 domain_verification.dns_server(AISIX_CLOUD_DOMAIN_VERIFICATION_DNS_SERVER,Helm 配置值api.domainVerification.dnsServer)是组织域名验证发送 TXT 查询所用的 DNS 服务器,格式为host:port。该项可选,默认为空,表示使用系统解析器。on-premises控制面没有组织域名,会忽略该项;但如果设置了该值且不是host:port形式,cp-api仍会拒绝启动。
Docker Compose 环境变量
Docker Compose 部署包会从 ./aisix-self-hosted/.env 读取环境变量。快速开始脚本和离线包会在首次启动时生成该文件。请将它与数据库一同备份:其中包含数据库密码和主密钥,后续发布的部署包归档中不会包含该文件。
在常规的原地升级中,run.sh 会更新 AISIX_VERSION,使其与解压后的部署包一致。.env 中的其他设置和密钥会保留。
请在 ./aisix-self-hosted 目录中运行本页的 Docker Compose 命令。
镜像和发布版本
| 变量 | 作用 |
|---|---|
AISIX_VERSION | 部署包拥有的镜像发布版本标签;除非设置了单独的镜像覆盖项,否则各镜像使用此标签。run.sh 会在升级时更新该值。 |
AISIX_API_IMAGE | cp-api 的可选镜像覆盖项。cp-api 镜像同时包含控制台。 |
AISIX_DPM_IMAGE | dp-manager 的可选镜像覆盖项。 |
AISIX_CLOUD_DP_IMAGE | 生成网关安装片段时使用的可选 AISIX 网关镜像覆盖项。未设置时,部署包会下发 docker.io/api7/aisix:${AISIX_VERSION},即同一版本的网关。 |
单独设置的镜像覆盖项会在部署包升级后继续生效。
数据库
| 变量 | 作用 |
|---|---|
POSTGRES_USER | 随包 PostgreSQL 使用的用户名。 |
POSTGRES_PASSWORD | 随包 PostgreSQL 使用的密码。请使用强且 URL 安全的值,因为它会嵌入 postgres:// URL。 |
POSTGRES_DB | PostgreSQL 数据库名称。 |
这些变量仅配置随包提供的 PostgreSQL 服务。部署包不会在 .env 中提供外部数据库 URL 覆盖项。控制面必须连接外部 PostgreSQL 数据库时,请使用 Helm 安装。
密钥
| 变量 | 作用 |
|---|---|
AISIX_CLOUD_MASTER_KEY | Base64 编码的 32 字节 AES 密钥,用于信封加密。dp-manager 也会使用同一个值。 |
AISIX_CLOUD_MASTER_KEY_ID | 与加密数据一起存储的标识,用于让控制面识别包装密钥。 |
AISIX_CLOUD_SMTP_PASSWORD | 可选的 SMTP 中继密码。参见邮件。 |
除非正在执行主密钥轮换流程,否则不要修改已有部署中的 AISIX_CLOUD_MASTER_KEY。如果修改时没有保留旧密钥,已加密数据可能无法读取。
首个管理员
| 变量 | 作用 |
|---|---|
AISIX_CLOUD_BOOTSTRAP_ADMIN_EMAIL | 首个管理员的邮箱地址。run.sh 生成 .env 时写入 admin@example.com。 |
AISIX_CLOUD_BOOTSTRAP_ADMIN_PASSWORD | 首个管理员的初始密码,长度为 12 到 128 个字符。run.sh 生成 .env 时写入一个随机密码。 |
run.sh 在首次启动生成 .env 时写入这两项,并在整套服务启动后打印一次。它不会修改已存在的 .env。当某次启动时数据库中还没有任何用户,cp-api 会创建组织 Default,并把该账号设为其所有者;该账号首次登录时必须修改密码。这在一个数据库的生命周期内最多发生一次:之后再修改任一值都不会产生任何效果。两项要么都设置,要么都不设置:只设置其中一项时,cp-api 会拒绝启动。两项都为空时,cp-api 可以启动,但会记录一条警告,且没有人能够登录。参见以首个管理员身份登录。
恢复缺失的 CA 根证书
仅当 cp-api 或 dp-manager 因 ca_root row missing but dp_certificates has rows 错误而拒绝启动,并且已经确 认控制面连接的是预期数据库时,才使用此恢复覆盖项。生成新的根 CA 会使所有现有网关 mTLS 链失效,无法恢复丢失的根证书。
如果无法从完整数据库备份中恢复缺失的根证书,并且确定要替换它,请将以下设置添加到 .env:
AISIX_CLOUD_ALLOW_FRESH_BOOTSTRAP=1
重新创建两个服务,使任一进程都能引导生成替代 CA:
docker compose up -d --wait api dpm
两个服务都健康后,从 .env 中删除 AISIX_CLOUD_ALLOW_FRESH_BOOTSTRAP,再运行同一命令,以不带覆盖项的方式重新创建服务。两个服务再次恢复健康后,请重新注册每个 AISIX 网关;由缺失根证书签发的证书将无法再通过身份验证。
运行时 URL
| 变量 | 作用 |
|---|---|
AISIX_CLOUD_PUBLIC_BASE_URL | 面向浏览器的控制面源站,例如 https://aisix.example.com。登录始终信任该源站,邀请链接和密码重置链接也指向它。单点登录用它生成服务提供方 URL,因此它必须是浏览器实际使用的 URL。 |
AISIX_CLOUD_DPMGR_BASE_URL | AISIX 网关主机可访问的 dp-manager mTLS 端点,需为 https:// URL,例如 https://dpm.example.com:7944,其主机可以是 DNS 名称或 IP 地址。 |
AISIX_TRUSTED_ORIGINS | 允许登录的其他浏览器源站,以逗号分隔,取值为裸源站或 https://*<后缀> 模式。公共基础 URL 及其回环对应地址会自动受信任。cp-api 无法识别为源站的条目会被记录到日志并忽略。 |
AISIX_TRUSTED_PROXIES | 位于 cp-api 前方的反向代理,以逗号分隔的 CIDR 表示。cp-api 按客户端对登录和密码重置限流时,会信任这些代理传入的 X-Forwarded-For 请求头。默认为空。参见反向代理后的限流。 |
AISIX_CLOUD_CORS_ALLOWED_ORIGINS | 允许跨域调用 cp-api /api/* 路由(包括 /api/auth/*)的浏览器源站,以逗号分隔。默认为空,此时完全不写出 CORS 响应头。跨域登录还需将源站添加到 AISIX_TRUSTED_ORIGINS。可接受的取值参见跨域浏览器访问。 |
在将部署暴露到本地主机或容器网络之外前,请设置 AISIX_CLOUD_PUBLIC_BASE_URL 和 AISIX_CLOUD_DPMGR_BASE_URL。
Compose 还会把 AISIX_CLOUD_DPMGR_BASE_URL 传递给 dpm 服务,因为 dp-manager 会为该主机签发 TLS 服务器证书。修改后请重新创建 api 和 dpm。
价格目录
打包的 Docker Compose 文件默认以离线定价模式运行 cp-api。它在 api 服务上把 AISIX_CLOUD_PRICESYNC_SNAPSHOT_PATH 设置为 cp-api 镜像内置的快照,使控制面无需访问 models.dev 即可初始化模型价格。
在在线模式下,如果价格目录仍为空时同步失败(例如主机无法访问 models.dev),cp-api 会改为加载这份镜像内置快照。它不会用快照替换已有的价格目录,并且会继续每 24 小时尝试一次在线同步。
部署包通过 .env 暴露定价模式,Compose 会将这些变量传给 api 服务:
| 变量 | 作用 |
|---|---|
AISIX_CLOUD_PRICESYNC_SNAPSHOT_PATH | 值为快照路径时选择离线模式。未设置该变量时,Compose 使用镜像内置快照;显式设置为空值时选择在线模式。 |
AISIX_CLOUD_PRICESYNC_URL | 在在线模式下覆盖 models.dev 目录 URL,例如改用内部镜像。值为空时,在线模式使用 https://models.dev/api.json。 |
如需使用在线定价,请在部 署目录的 .env 中添加空的快照路径赋值。只有需要改用其他目录端点时才添加 URL:
AISIX_CLOUD_PRICESYNC_SNAPSHOT_PATH=
修改任一设置后,重新创建 cp-api:
docker compose up -d api
请将这些覆盖项保留在 .env 中,而不是写入 docker-compose.yaml,因为解压后续部署包时会替换 Compose 文件。
私有网络访问
默认情况下,on-premises 控制面的以下出站连接可以访问私有、内部和回环地址,因此位于内网的模型、Webhook 接收器和文档无需额外配置即可使用。每个变量为一类连接覆盖该默认值。当控制面的操作者不应能借助它访问你 的内网时,将其设置为 false 以拒绝私有目标,作为服务端请求伪造(SSRF)防护。
| 变量 | 作用 |
|---|---|
AISIX_PLAYGROUND_ALLOW_PRIVATE_IPS | 控制台 Playground 是否可以访问位于私有地址上的服务提供方密钥的 api_base。参见 Playground。 |
AISIX_CLOUD_NOTIFY_ALLOW_PRIVATE_URLS | 预算通知是否可以访问私有 Webhook 接收器或 Slack 代理。 |
AISIX_CLOUD_MCP_SPEC_ALLOW_PRIVATE_URLS | 控制面是否可以从私有 spec_url 获取 MCP 服务器的 OpenAPI 文档。不允许时,请改为提供 spec_content。 |
AISIX_GUARDRAIL_TEST_CONNECTION_ALLOW_INSECURE | 护栏连接测试是否可以访问明文 HTTP 端点、私有地址以及 Azure 以外的主机,例如内部端点或 Private Link 端点。 |
每个变量接受 true、false、1、0、yes、no、on 或 off,不区分大小写。值为空或未设置时跟随部署模式,其他任何值都会使 cp-api 在启动时报错退出。
在 .env 中设置所需变量,然后重新创建 cp-api:
docker compose up -d api
邮件
cp-api 通过 SMTP 中继发送邀请邮件、密码重置邮件和设置密码链接。在设置 AISIX_CLOUD_SMTP_HOST 之前,邮件功能处于关闭状态。各项设置的行为参见配置邮件(SMTP)。
| 变量 | 作用 |
|---|---|
AISIX_CLOUD_SMTP_HOST | 中继主机名。留空表示关闭邮件功能。 |
AISIX_CLOUD_SMTP_TLS | starttls(默认)、smtps 或 none。 |
AISIX_CLOUD_SMTP_PORT | 中继端口。默认按 TLS 模式取 587、465 或 25。 |
AISIX_CLOUD_SMTP_FROM | 发件人地址。设置了主机时必填。 |
AISIX_CLOUD_SMTP_USERNAME、AISIX_CLOUD_SMTP_PASSWORD | 中继凭据。两者都设置表示进行身份认证,都不设置表示不认证直接发送。 |
AISIX_CLOUD_SMTP_INVITATION_LIMIT_PER_HOUR | 单个账号每个滚动小时最多可发送的邀请邮件数。默认为 50。 |
修改后重建 cp-api:
docker compose up -d api
审计日志保留
cp-api 每天删除一次超出保留期的审计事件。控制台和 Admin API 中的审计日志只显示仍保留的记录。该保留期对整个部署生效,无法在控制台或 Admin API 中设置。
| 变量 | 作用 |
|---|---|
AISIX_CLOUD_AUDIT_RETENTION_DAYS | 审计事件被删除前保留的天数。默认为 730。0 表示永久保留审计事件。必须是大于或等于 0 的整数;取其他值时 cp-api 无法启动。 |
首次删除会在 cp-api 以支持该设置的版本启动时执行。如需保留超过 730 天的审计事件,请在升级前设置更大的值或 0。修改后重建 cp-api:
docker compose up -d api