Skip to content

A.6 Environment variables

รวบรวม environment variable ของ 3 backend service — regener จาก .env.example / configuration.ts ณ กรกฎาคม 2026

ที่มา

  • vtrc-api/api/.env.example
  • cu-central-api/main-api/.env.example
  • centralize-api/config/configuration.ts (+ .env จริงใช้ DB_USER / DB_NAME / DB_NAME_NBC)

หมายเหตุ: Vol 12.6 มี env table แบบ environment-specific — Vol 17 นี้เป็น canonical reference ของชื่อตัวแปร


vtrc-api

แหล่ง: vtrc-api/api/.env.example + defaults ใน api/src/config.js

Database

Variableค่าใน .env.exampleหมายเหตุ
DB_SCHEMAmariadbdialect
DB_USERNAMErootไม่ใช่ DB_USER
DB_PASSWORD"1q2w3e4r00"weak — เปลี่ยนใน production
DB_HOSTvtrc-databaseMariaDB host
DB_PORT3306
DB_NAMEvtrcschema หลัก
DB2_SCHEMAmariadb
DB2_USERNAMEroot
DB2_PASSWORD"1q2w3e4r00"
DB2_HOSTvtrc-database
DB2_PORT3306
DB2_NAMEvtrc-centralizeschema bridge

Authentication / crypto

Variableค่าใน .env.exampleหมายเหตุ
JWT_SECRET"ENTER_SOME_TEXT"default ใน config.js คือ 'secret' (SEC-4) ถ้าไม่ตั้ง
DATA_ENCRYPT_KEY(64-hex)อยู่ใน example เหมือน key จริง — ต้อง rotate

Centralize bridge (→ cu-central-api)

Variableค่าใน .env.exampleหมายเหตุ
END_POINT_CENTRALIZEhttp://localhost:8082/api/graphqlCLIENT_TARGET ตัวอย่าง — ไม่ใช่ CODE_DEFAULT ของ cu-central (APP_PORT=8080) และไม่ใช่ NestJS :3000
END_POINT_CENTRALIZE_AUTHhttp://localhost:8082/authREST auth ของ cu-central
API_CENTRALIZE_KEY(long hex)apiKey ส่งไป cu-central
CLIENT_ID_CENTRALIZE"chowrai"

Transfer / storage / runtime

Variableค่าใน .env.exampleหมายเหตุ
TRANSFER_PROTOTAL"scp"Typo ของ PROTOCOL — เก็บไว้เพราะ backward compatibility
TRANSFER_HOST / TRANSFER_PORT / TRANSFER_USERNAME / TRANSFER_PASSWORD(ว่าง)
TRANSFER_DIRECT_DEBIT_PATH / TRANSFER_PAYROLL_PATH(ว่าง)
FILE_STORAGE_PATH/root_path/storage
LOG_PATH/root_path/logs
WEB_URLhttp://localhost:8081
API_PREFIX_PATH/graphql
NODE_ENVdevelopment
TIME_ZONE'Asia/Bangkok'(มีช่องว่างรอบ = ใน example)

Defaults ใน config.js ที่ไม่มีใน .env.example

VariableDefault ใน codeหมายเหตุ
APP_PORT8081listen port ของ vtrc-api
APP_NO0cron gate
JWT_EXP'15m'hardcoded
JWT_ISSUER'redcross.or.th:vtrc'hardcoded
DB_MORE_DATABASE['vtrc-centralize']hardcoded array
API_DEVICE_KEYconfig.jsSEC-3 — ไม่ใช่ env

Enum / master ใน source (ไม่ใช่ env)

Itemที่อยู่หมายเหตุ
statusKcashconfig.js:488+K-Cash status map — ไม่ใช่ KBANK connection block ที่ 488–518
relationHrmi / statusHrmiconfig.js:392+ / :430+HRMI code maps

cu-central-api

แหล่ง: cu-central-api/main-api/.env.example + main-api/src/config.js

Runtime

Variableค่าใน .env.exampleหมายเหตุ
APP_PORT8080CODE_DEFAULT — ไม่ใช่ 8082; CLIENT_TARGET ของ vtrc อาจชี้ 8082; compose มัก 8000; Dockerfile EXPOSE 9000 ≠ listen
NODE_ENVdevelopment
TIME_ZONE"+07:00"

Database (MSSQL)

Variableค่าใน .env.exampleหมายเหตุ
DB_SCHEMA(ว่าง)
DB_USERNAME(ว่าง)ไม่ใช่ DB_USER
DB_PASSWORD(ว่าง)
DB_HOST(ว่าง)
DB_PORT(ว่าง)
DB_NAME(ว่าง)multi-tenant / SourceDB เพิ่มใน env จริง

Auth / Redis / LDAP

Variableค่าใน .env.exampleหมายเหตุ
HASH_KEY"FOR_HASH_STRING"
JWT_ISSUER"centralizeApi:rcth"
JWT_SECRET"JWT_SECRET_KEY"placeholder
REDIS_HOSTlocalhost
REDIS_PASSWORD"REDIS_PASSWORD"session key pattern: sess:{userUid}_{sessionId}
AD_URL / AD_BASE_DN / AD_USERNAME / AD_PASSWORD(ตัวอย่าง LDAP)

SMTP / HRMI

Variableหมายเหตุ
SMTP_HOST / SMTP_USERNAME / SMTP_PASSWORD / SMTP_PORT / SMTP_SECURE
EMAIL_SEND_FROM / EMAIL_BCC_RECEIVE_BACKUP
HRMI_END_POINT / HRMI_USERNAME / HRMI_PASSWORD

centralize-api (NestJS)

แหล่ง: centralize-api/config/configuration.ts — ใช้ชื่อ env ตามนี้ (ยืนยันจาก .env จริงใน repo)

Variableใช้ใน codeหมายเหตุ
PORTprocess.env.PORTdefault runtime 3000
SECRET_KEYjwtSecretKey
DB_TYPEdb.typeเช่น mssql
DB_HOSTdb.host
DB_PORTdb.port
DB_USERdb.userNest ใช้ DB_USER (ต่างจาก vtrc/cu ที่ใช้ DB_USERNAME)
DB_PASSWORDdb.password
DB_NAMEdb.databaseNameเช่น dbHRMI_Center
DB_NAME_NBCdb.databaseNameNBCเช่น dbHRMI_Center_NBCไม่ใช่ dbHRMI_NBC

Hardcoded ใน source

Itemที่อยู่หมายเหตุ
trustServerCertificate: trueapp.module.tsSEC-6 (Vol 14)
CORS origin: '*'main.tsSEC-5
logging: ['error', 'query']app.module.tsCORR-5

ตัวแปรที่ต้อง rotate ก่อน production

ตาม debt SEC-3, SEC-4, SEC-11 (ดู Vol 14.1):

ตัวแปรเหตุผลWave ที่แก้
JWT_SECRET (vtrc-api)default เป็น 'secret'Wave 0
DATA_ENCRYPT_KEYอยู่ใน .env.example เหมือน key จริงWave 0
DB_PASSWORD (vtrc-api)"1q2w3e4r00" อ่อนแอWave 0
API_DEVICE_KEYอยู่ใน source codeWave 0
API_CENTRALIZE_KEYอยู่ใน .env.exampleWave 0
GCP SA keyอยู่ใน repo (vtrc-gcp-sa-key.json)Wave 0

Pattern ที่ต้องระวัง

ชื่อคล้ายกันแต่คนละอย่าง

ชื่อserviceความหมาย
DB_USERNAMEvtrc-api / cu-central-apiMariaDB / MSSQL user
DB_USERNestJS centralize-apiMSSQL user (configuration.ts)
APP_PORTvtrc-api = 8081; cu-central = 8080คนละ default
PORTNestJS centralize-api3000

CLIENT_TARGET ≠ CODE_DEFAULT

END_POINT_CENTRALIZE=...:8082/... ใน vtrc .env.example เป็น CLIENT_TARGET ตัวอย่าง — อย่าสรุปว่า cu-central default listen ที่ 8082

สรุป

  • vtrc-api ใช้ DB_USERNAME — ไม่ใช่ DB_USER
  • cu-central CODE_DEFAULT APP_PORT=8080
  • NestJS ใช้ DB_USER / DB_NAME / DB_NAME_NBC จาก configuration.ts
  • live bridge = END_POINT_CENTRALIZE (+ _AUTH) → cu-central-api