การกำหนดค่า
ตัวแปรสภาพแวดล้อม
การใช้งาน
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 หน่วยเป็นมิลลิวินาที ใช้สตริงตัวเลข (เช่น 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 | ระบุว่าชื่อผู้ใช้ต้องตรงตามตัวพิมพ์เล็ก / ใหญ่หรือไม่ โปรดระวังเมื่อเปลี่ยนค่า เพราะข้อมูลในฐานข้อมูลเดิมจะไม่ถูกปรับอัตโนมัติ ต้องจัดการเอง |
| SECRET_VAULT_KEK | undefined | string | Key Encryption Key (KEK) ที่ใช้เข้ารหัส Data Encryption Keys (DEK) ใน Secret Vault จำเป็นสำหรับการทำงานของ Secret Vault ต้องเป็นสตริงที่เข้ารหัสแบบ base64 แนะนำให้ใช้ AES-256 (32 ไบต์) ตัวอย่าง: crypto.randomBytes(32).toString('base64') |
การเปิดใช้งาน HTTPS
ใช้งานกับ Node
Node รองรับ HTTPS โดยตรง เพียงระบุ ทั้ง HTTPS_CERT_PATH และ HTTPS_KEY_PATH เพื่อเปิดใช้งาน HTTPS ผ่าน Node
HTTPS_CERT_PATH คือ path ไปยังใบรับรอง HTTPS ของคุณ ส่วน HTTPS_KEY_PATH คือ path ไปยังคีย์ HTTPS ของคุณ
ใช้งานกับ 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[] | อาร์เรย์ของสตริงสำหรับ signing cookie keys |
| oidc.privateKeys | 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)