跳至主要內容

設定

環境變數

用法

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

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

因此,系統環境變數會覆蓋 .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 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。提供 BOTH(兩者) 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 子類型)