配置
环境变量
用法
Logto 按如下顺序处理环境变量:
- 系统环境变量
- 项目根目录下符合 dotenv 格式的
.env
文件
因此,系统环境变量会覆盖 .env
文件中的值。
变量
警告:
如果你在项目根目录通过 npm start
运行 Logto,NODE_ENV
将始终为 production
。
在默认值中,protocol
会根据你的 HTTPS 配置为 http
或 https
。
Key | 默认值 | 类型 | 描述 |
---|---|---|---|
NODE_ENV | undefined | 'production' | 'test' | undefined | Logto 运行的环境类型。 |
PORT | 3001 | number | Logto 监听的本地端口。 |
ADMIN_PORT | 3002 | number | Logto 管理控制台监听的本地端口。 |
ADMIN_DISABLE_LOCALHOST | N/A | string | boolean | number | 设置为 1 或 true 可禁用管理控制台端口。如果未设置 ADMIN_ENDPOINT ,将完全禁用管理控制台。 |
DB_URL | N/A | string | Logto 数据库的 Postgres DSN。 |
HTTPS_CERT_PATH | undefined | string | undefined | 详见 启用 HTTPS。 |
HTTPS_KEY_PATH | undefined | string | undefined | 同上。 |
TRUST_PROXY_HEADER | false | boolean | 同上。 |
ENDPOINT | 'protocol://localhost:$PORT' | string | 你可以为在线测试或生产环境指定自定义域名的 URL。这也会影响 OIDC 发行者 (Issuer) 标识符 的值。 |
ADMIN_ENDPOINT | 'protocol://localhost:$ADMIN_PORT' | string | 你可以为生产环境指定自定义域名的 URL(例如 ADMIN_ENDPOINT=https://admin.domain.com )。这也会影响管理控制台重定向 URI 的值。 |
CASE_SENSITIVE_USERNAME | true | boolean | 指定用户名是否区分大小写。修改此值时需谨慎;更改不会自动调整现有数据库数据,需要手动管理。 |
SECRET_VAULT_KEK | undefined | string | 用于加密 Secret Vault 中数据加密密钥 (DEK) 的密钥加密密钥 (KEK)。Secret Vault 正常工作时必需。必须为 base64 编码字符串。推荐使用 AES-256(32 字节)。示例:crypto.randomBytes(32).toString('base64') |
启用 HTTPS
使用 Node
Node 原生支持 HTTPS。通过提供 HTTPS_CERT_PATH 和 HTTPS_KEY_PATH,即可通过 Node 启用 HTTPS。
HTTPS_CERT_PATH
表示你的 HTTPS 证书路径,HTTPS_KEY_PATH
表示你的 HTTPS 密钥路径。
使用 HTTPS 代理
另一种常见做法是在 Node 前面放置一个 HTTPS 代理(如 Nginx)。
在这种情况下,你可能需要将 TRUST_PROXY_HEADER
设置为 true
,表示是否信任代理头字段。Logto 会将该值传递给 Koa 应用设置。
关于何时配置此字段,请参见 信任 TLS 卸载代理。
数据库配置
管理过多的环境变量既低效又不灵活,因此我们的大部分通用配置都存储在数据库表 logto_configs
中。
该表是一个简单的键值存储,key 可枚举如下:
Key | 类型 | 描述 |
---|---|---|
oidc.cookieKeys | string[] | 签名 Cookie 密钥 的字符串数组。 |
oidc.privateKeys | string[] | 用于 OIDC JWT 签名 的私钥内容字符串数组。 |
支持的私钥类型
- EC(P-256、secp256k1、P-384 和 P-521 曲线)
- RSA
- OKP(Ed25519、Ed448、X25519、X448 子类型)