# PostgreSQL container judes-note-db (สร้างด้วย docker run ตาม README) DATABASE_URL=postgresql://postgres:postgres@127.0.0.1:54322/ecourt-note # N8 (optional): allowlist โฮสต์ลิงก์ไฟล์รีโมต — ไม่ตั้ง = admincourt.go.th # EXTERNAL_FILE_HOSTS=admincourt.go.th # N10 (optional): API key ของ /api/external/* (backend e-Court เรียก server-to-server) # ไม่ตั้ง/ว่าง = ปฏิเสธทุก request (fail closed) — ตั้งค่ายาวและสุ่ม เช่น 32+ ตัวอักษร # EXTERNAL_API_KEY= # สำหรับตัวอย่างระบบนอกเรียกใช้ API ของ template DOCEDIT_BASE_URL=http://192.168.2.51:3000/docedit # สำหรับตัวอย่างระบบนอกเรียกใช้ API ของ template EXTERNAL_API_KEY='secret-api-key-1234' # ที่เก็บไฟล์เทมเพลต(docx) TMPL_PATH='./public/tmpl' # Sign/Hash ที่ใช้ฝังในเอกสาร(docx) SECRET="super_secret" PRIVATE_KEY_HEX="8f2077b57b39399b6a7828f35da03a63ade8e3a36a6bf437b091a8bdb3d18ee1" PUBLIC_KEY_HEX="66b09b4a1b66271d5728c592c2409657e1c070a7bf371bf9f6ed457855270546" # Optional เวลาหมดอายุที่ฝังไว้ในข้อมูล (ticket_data) TICKET_SEC=300 # MinIO ของ API เอกสาร versioning (docs/PLAN-DOCVER.md §6) — ค่านี้ตรง docker-compose.yml # (MINIO_ENDPOINT/MINIO_ACCESS_KEY/MINIO_SECRET_KEY ไม่ตั้ง = ทุก endpoint ของกลุ่มนี้ตอบ 500) # หมายเหตุ: พอร์ตโฮสต์เป็น 19000 เพราะ 9000/9001 ชนกับโปรเจกต์อื่นในเครื่อง dev # (ใน production ตั้งเป็นพอร์ตจริงที่ deploy) และ presigned URL อ้าง endpoint นี้ตรง ๆ — # production ต้องเป็นโฮสต์ที่เบราว์เซอร์ของผู้ใช้เข้าถึงได้ ไม่ใช่แค่ที่ Next server เข้าถึงได้ MINIO_ENDPOINT=127.0.0.1 MINIO_PORT=19000 MINIO_USE_SSL=false MINIO_ACCESS_KEY=minioadmin MINIO_SECRET_KEY=minioadmin # MINIO_BUCKET=docver # DOCVER_LINK_TTL_SECONDS=900 # docver token (2026-10-22): API key ของ POST /api/documents/token (header x-api-key) # ไม่ตั้ง/ว่าง = ปฏิเสธทุก request (fail closed) — ตั้งค่ายาวและสุ่ม เช่น 32+ ตัวอักษร # (ห้าม log ค่า key ดิบ — เทียบแบบ timing-safe ทุกครั้ง) DOCVER_API_KEY= # secret เซ็น/ตรวจ JWT HS256 ของทุก endpoint /api/documents/* (Authorization: Bearer) # ไม่ตั้ง/ว่าง = ออก token ไม่ได้ (500) และทุก endpoint ตอบ 401 (fail closed) — ห้าม log ค่า secret DOCVER_TOKEN_SECRET= # DOCVER_TOKEN_TTL_SECONDS=3600 # add-in ticket auth (2026-10-27, docs/PLAN-ADDIN-AUTH.md): add-in ใน Word ขอ token # ที่ POST /api/documents/token ด้วย body {ticket_data, HmacSha256} ที่ e-Court stamp # มากับไฟล์ — secret ต้องตรงกับตัว stamp ของ e-Court ทั้งสองฝั่ง # ฝั่ง server ตรวจ HMAC ของ ticket: ADDIN_TICKET_SECRET (ไม่ตั้ง = ใช้ env SECRET # ของกลุ่ม template → ยังไม่ตั้งอีก = "super_secret" ตาม requirement) # ⚠️ production ต้องตั้งค่าจริง — ค่า default รู้กันหมด = ใครก็ปลอม ticket ได้ # ADDIN_TICKET_SECRET=super_secret # ฝั่ง add-in (inline ลง bundle ตอน build — ใช้เป็นแค่ UX gate ตัดเคสไฟล์ถูกแก้ก่อนยิง # network ส่วนความมั่นคงจริงอยู่ที่ฝั่ง server ข้างบน) # NEXT_PUBLIC_ADDIN_TICKET_SECRET=super_secret