การกำหนดค่า
ตัวแปรสภาพแวดล้อม
การใช้งาน
Logto จัดการตัวแปรสภาพแวดล้อมตามลำดับดังนี้:
- ตัวแปรสภาพแวดล้อมของระบบ
- ไฟล์
.envใน root ของโปรเจกต์ ซึ่งเป็นไปตามรูปแบบ dotenv
ดังนั้น ตัวแปรสภาพแวดล้อมของระบบจะมีสิทธิ์แทนที่ค่าที่อยู่ใน .env
ตัวแปร
หากคุณรัน Logto ผ่าน npm start ที่ root ของโปรเจกต์ NODE_ENV จะเป็น production เสมอ
ในค่าเริ่มต้น protocol จะเป็น http หรือ https ตามการตั้งค่า HTTPS ของคุณ
| Key | ค่าเริ่มต้น | ประเภท | คำอธิบาย |
|---|---|---|---|
| NODE_ENV | undefined | 'production' | 'test' | undefined | ประเภทของสภาพแวดล้อมที่ Logto ทำงานอยู่ |
| PORT | 3001 | number | พอร์ตภายในเครื่องที่ Logto รับฟัง |
| ADMIN_PORT | 3002 | number | พอร์ตภายในเครื่องที่ Logto Admin Console รับฟัง |
| ADMIN_DISABLE_LOCALHOST | N/A | string | boolean | number | ตั้งค่าเป็น 1 หรือ true เพื่อปิดพอร์ตสำหรับ Admin Console หาก ADMIN_ENDPOINT ไม่ถูกตั้งค่า จะปิด Admin Console ทั้งหมด |
| DB_URL | N/A | string | Postgres DSN สำหรับฐานข้อมูล Logto |
| DATABASE_STATEMENT_TIMEOUT | N/A | string | (v1.36.0+) PostgreSQL statement_timeout หน่วยเป็นมิลลิวินาที ใช้ string ตัวเลข (เช่น 5000) เพื่อกำหนด หรือ DISABLE_TIMEOUT เพื่อข้ามพารามิเตอร์นี้ (แนะนำสำหรับ PgBouncer/RDS Proxy) หากไม่ตั้งค่าหรือไม่ถูกต้อง ค่าเริ่มต้นฝั่ง client คือ 60000 ms |
| HTTPS_CERT_PATH | undefined | string | undefined | ดูรายละเอียดที่ การเปิดใช้งาน HTTPS |
| HTTPS_KEY_PATH | undefined | string | undefined | เช่นเดียวกัน |
| TRUST_PROXY_HEADER | false | boolean | เช่นเดียวกัน |
| ENDPOINT | 'protocol://localhost:$PORT' | string | คุณสามารถระบุ URL ด้วยโดเมนของคุณเองสำหรับการทดสอบออนไลน์หรือ production ค่านี้จะมีผลต่อ OIDC issuer identifier ด้วย |
| ADMIN_ENDPOINT | 'protocol://localhost:$ADMIN_PORT' | string | คุณสามารถระบุ URL ด้วยโดเมนของคุณเองสำหรับ production (เช่น ADMIN_ENDPOINT=https://admin.domain.com) ค่านี้จะมีผลต่อค่า Admin Console Redirect URIs ด้วย |
| CASE_SENSITIVE_USERNAME | true | boolean | ระบุว่า username จะต้องแยกตัวพิมพ์เล็ก-ใหญ่หรือไม่ โปรดระวังเมื่อเปลี่ยนค่า เพราะจะไม่ปรับข้อมูลในฐานข้อมูลเดิมโดยอัตโนมัติ ต้องจัดการเอง |
| SECRET_VAULT_KEK | undefined | string | Key Encryption Key (KEK) ที่ใช้เข้ารหัส Data Encryption Keys (DEK) ใน Secret Vault จำเป็นสำหรับการทำงานของ Secret Vault ต้องเป็น string ที่เข้ารหัส base64 แนะนำให้ใช้ AES-256 (32 bytes) ตัวอย่าง: crypto.randomBytes(32).toString('base64') |
การเปิดใช้งาน HTTPS
ใช้งานผ่าน Node
Node รองรับ HTTPS โดยตรง ให้ระบุ ทั้ง HTTPS_CERT_PATH และ HTTPS_KEY_PATH เพื่อเปิดใช้งาน HTTPS ผ่าน Node
HTTPS_CERT_PATH คือ path ไปยัง certificate ของคุณ ส่วน HTTPS_KEY_PATH คือ path ไปยัง key ของคุณ
ใช้งานผ่าน HTTPS proxy
อีกแนวทางที่นิยมคือมี HTTPS proxy อยู่หน้า Node (เช่น Nginx)
ในกรณีนี้ คุณควรตั้งค่า TRUST_PROXY_HEADER เป็น true เพื่อระบุว่าควรเชื่อ header จาก proxy หรือไม่ Logto จะส่งค่าดังกล่าวไปยัง Koa app settings
ดู Trusting TLS offloading proxies เพื่อดูว่าเมื่อใดควรตั้งค่านี้
การตั้งค่าฐานข้อมูล
การจัดการตัวแปรสภาพแวดล้อมจำนวนมากไม่สะดวกและยืดหยุ่น ดังนั้นการตั้งค่าทั่วไปส่วนใหญ่ของเราจะถูกเก็บไว้ในตารางฐานข้อมูล logto_configs
ตารางนี้เป็น key-value storage แบบง่าย ๆ โดย key ที่ใช้ได้มีดังนี้:
| Key | ประเภท | คำอธิบาย |
|---|---|---|
| oidc.cookieKeys | string[] | อาร์เรย์ string ของ signing cookie keys |
| oidc.privateKeys | string[] | อาร์เรย์ string ของเนื้อหา private key สำหรับ OIDC JWT signing |
ประเภทของ private key ที่รองรับ
- EC (P-256, secp256k1, P-384, และ P-521 curves)
- RSA
- OKP (Ed25519, Ed448, X25519, X448 sub types)