跳至主要內容

設定

環境變數

用法

Logto 依照以下順序處理環境變數:

  • 系統環境變數
  • 專案根目錄下符合 dotenv 格式的 .env 檔案

因此,系統環境變數會覆蓋 .env 中的值。

變數

警告:

如果你在專案根目錄下透過 npm start 執行 Logto,NODE_ENV 會永遠是 production

在預設值中,protocol 會根據你的 HTTPS 設定為 httphttps

Key預設值Type說明
NODE_ENVundefined'production' | 'test' | undefinedLogto 執行時所處的環境類型。
PORT3001numberLogto 監聽的本地埠號。
ADMIN_PORT3002numberLogto 管理主控台監聽的本地埠號。
ADMIN_DISABLE_LOCALHOSTN/Astring | boolean | number設為 1true 可停用管理主控台的埠。若未設定 ADMIN_ENDPOINT,將完全停用管理主控台。
DB_URLN/AstringLogto 資料庫的 Postgres DSN
DATABASE_STATEMENT_TIMEOUTN/Astring(v1.36.0+)PostgreSQL statement_timeout,單位為毫秒。請使用數字字串(如 5000)設定,或用 DISABLE_TIMEOUT 省略啟動參數(建議用於 PgBouncer / RDS Proxy)。若未設定或無效,預設為 60000 ms。
HTTPS_CERT_PATHundefinedstring | undefined詳情請參閱 啟用 HTTPS
HTTPS_KEY_PATHundefinedstring | undefined同上。
TRUST_PROXY_HEADERfalseboolean同上。
ENDPOINT'protocol://localhost:$PORT'string可指定自訂網域的 URL 以進行線上測試或正式環境。這也會影響 OIDC 簽發者識別碼 (Issuer Identifier) 的值。
ADMIN_ENDPOINT'protocol://localhost:$ADMIN_PORT'string可指定正式環境下自訂網域的 URL(如 ADMIN_ENDPOINT=https://admin.domain.com)。這也會影響管理主控台重新導向 URI 的值。
CASE_SENSITIVE_USERNAMEtrueboolean指定使用者名稱是否區分大小寫。修改此值時請謹慎,變更不會自動調整現有資料庫資料,需手動管理。
SECRET_VAULT_KEKundefinedstring用於加密 Secret Vault 中資料加密金鑰(DEK, Data Encryption Keys)的金鑰加密金鑰(KEK, Key Encryption Key)。Secret Vault 正常運作必須設定。必須為 base64 編碼字串。建議使用 AES-256(32 bytes)。範例: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 可列舉如下:

KeyType說明
oidc.cookieKeysstring[]簽署 Cookie 金鑰 的字串陣列。
oidc.privateKeysstring[]用於 OIDC JWT 簽署 的私鑰內容字串陣列。

支援的私鑰類型

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