跳到主要内容

配置

环境变量

用法

Logto 按如下顺序处理环境变量:

  • 系统环境变量
  • 项目根目录下符合 dotenv 格式的 .env 文件

因此,系统环境变量会覆盖 .env 文件中的值。

变量

警告:

如果你在项目根目录通过 npm start 运行 Logto,NODE_ENV 将始终为 production

在默认值中,protocol 会根据你的 HTTPS 配置为 httphttps

Key默认值类型描述
NODE_ENVundefined'production' | 'test' | undefinedLogto 运行的环境类型。
PORT3001numberLogto 监听的本地端口。
ADMIN_PORT3002numberLogto 管理控制台监听的本地端口。
ADMIN_DISABLE_LOCALHOSTN/Astring | boolean | number设置为 1true 可禁用管理控制台端口。如果未设置 ADMIN_ENDPOINT,将完全禁用管理控制台。
DB_URLN/AstringLogto 数据库的 Postgres DSN
HTTPS_CERT_PATHundefinedstring | undefined详见 启用 HTTPS
HTTPS_KEY_PATHundefinedstring | undefined同上。
TRUST_PROXY_HEADERfalseboolean同上。
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_USERNAMEtrueboolean指定用户名是否区分大小写。修改此值时需谨慎;更改不会自动调整现有数据库数据,需要手动管理。
SECRET_VAULT_KEKundefinedstring用于加密 Secret Vault 中数据加密密钥 (DEK) 的密钥加密密钥 (KEK)。Secret Vault 正常工作时必需。必须为 base64 编码字符串。推荐使用 AES-256(32 字节)。示例:crypto.randomBytes(32).toString('base64')

启用 HTTPS

使用 Node

Node 原生支持 HTTPS。通过提供 HTTPS_CERT_PATHHTTPS_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.cookieKeysstring[]签名 Cookie 密钥 的字符串数组。
oidc.privateKeysstring[]用于 OIDC JWT 签名 的私钥内容字符串数组。

支持的私钥类型

  • EC(P-256、secp256k1、P-384 和 P-521 曲线)
  • RSA
  • OKP(Ed25519、Ed448、X25519、X448 子类型)