Skip to content

Tham khảo Biến Môi trường

Cách thức file môi trường hoạt động

Mỗi package backend dùng dotenv-flow. Giá trị NODE_ENV quyết định file nào được nạp:

FileMục đíchBị gitignore
.env.developmentDev server (bun run server:dev)Thường là không
.env.localOverride cá nhân
.env.testTest suite (bun run test)Thường là có

Để cài đặt một package mới, hãy sao chép từ một package đã hoạt động và điều chỉnh cổng / tên dịch vụ / Snowflake ID.

Các script npm của mỗi package truyền file env một cách tường minh:

json
"server:dev": "NODE_ENV=development bun run start --env-file=.env.development"

Biến chung (Tất cả dịch vụ)

Các biến này được dùng chung cho mọi dịch vụ backend.

Application

BiếnBắt buộcMô tảVí dụ
APP_ENV_APPLICATION_NAMETên dịch vụ (dùng trong logging, service discovery)identity
APP_ENV_APPLICATION_CODEMã dịch vụ duy nhấtSVC-00010-IDENTITY
APP_ENV_APPLICATION_ROLESTag vai trò dịch vụidentity
APP_ENV_APPLICATION_TIMEZONEMúi giờAsia/Ho_Chi_Minh
APP_ENV_APPLICATION_SECRETSecret dùng chung cho mã hóa payload AES-256-GCM (hệ thống chứng chỉ, mã hóa thông tin xác thực). Phải giống hệt nhau giữa tất cả các dịch vụ.
APP_ENV_APPLICATION_DS_MIGRATIONKhôngTên datasource migrationpg_core
APP_ENV_APPLICATION_DS_AUTHORIZEKhôngTên datasource authorizationpg_core

Server

BiếnBắt buộcMô tảVí dụ
APP_ENV_SERVER_HOSTHost bindlocalhost
APP_ENV_SERVER_PORTCổng bind (duy nhất theo từng dịch vụ)31010
APP_ENV_SERVER_BASE_PATHBase path API/v1/api/identity

Snowflake ID

BiếnBắt buộcMô tảVí dụ
APP_ENV_SNOWFLAKE_WORKER_IDWorker ID duy nhất (0-1023). Phải duy nhất theo từng instance đang chạy — trùng lặp sẽ gây ID trùng.1
APP_ENV_SNOWFLAKE_EPOCH_CHECKPOINTMốc bắt đầu epoch (ms tính từ Unix epoch)1735689600000

PostgreSQL

BiếnBắt buộcMô tảVí dụ
APP_ENV_POSTGRES_HOSTHost databaselocalhost
APP_ENV_POSTGRES_PORTCổng database5432
APP_ENV_POSTGRES_DATABASETên databasenx_seller
APP_ENV_POSTGRES_USERNAMEUser DBpostgres
APP_ENV_POSTGRES_PASSWORDMật khẩu DB

Redis (Cache)

BiếnBắt buộcMô tảVí dụ
APP_ENV_CACHE_REDIS_MODEsingle hoặc clustercluster
APP_ENV_CACHE_REDIS_IDENTIFIERTên logiccache
APP_ENV_CACHE_REDIS_PASSWORDKhôngMật khẩu Redis
APP_ENV_CACHE_REDIS_HOSTChế độ singleHost Redislocalhost
APP_ENV_CACHE_REDIS_PORTChế độ singleCổng Redis6379
APP_ENV_CACHE_REDIS_CLUSTER_NODESChế độ clusterhost:port cách nhau bằng dấu phẩynode1:6379,node2:6380

Redis (BullMQ / Queue)

BiếnBắt buộcMô tảVí dụ
APP_ENV_BULLMQ_REDIS_HOSTNếu dùng queueHost Redis cho BullMQlocalhost
APP_ENV_BULLMQ_REDIS_PORTNếu dùng queueCổng Redis6379
APP_ENV_BULLMQ_REDIS_PASSWORDKhôngMật khẩu Redis

Dịch vụ Bên ngoài

BiếnBắt buộcMô tảVí dụ
APP_ENV_IDENTITY_SERVICE_BASE_URLCó (tất cả verifier)URL dịch vụ identity cho JWKShttp://localhost:31010/v1/api/identity
APP_ENV_JWKS_REST_PATHKhôngĐường dẫn endpoint JWKS/jw-certs (mặc định)
APP_ENV_BASIC_AUTH_USERNAMEKhôngUser HTTP Basic authsuperadmin
APP_ENV_BASIC_AUTH_PASSWORDKhôngMật khẩu HTTP Basic auth

Logging

BiếnBắt buộcMô tảVí dụ
APP_ENV_LOGGER_FOLDER_PATHKhôngThư mục output file log./app_data/logs
APP_ENV_PARSE_RESULT_FOLDER_PATHKhôngOutput kết quả parse./app_data/parse_result

Khác

BiếnMô tảVí dụ
DEBUGBật output debugtrue
NODE_ENVMôi trường runtimedevelopment
RUN_MODEstartup hoặc migratestartup
TZMúi giờ hệ thốngAsia/Ho_Chi_Minh

Chỉ Dịch vụ Identity (JWKS Issuer)

Các biến này chỉ cần cho @nx/identity — JWKS issuer.

BiếnBắt buộcMô tảVí dụ
APP_ENV_JWT_EXPIRES_INThời gian sống của JWT tính bằng giây86400 (1 ngày)
APP_ENV_JWKS_ALGORITHMThuật toán kýES256
APP_ENV_JWKS_PRIVATE_KEYPrivate key ECDSA (PEM, định dạng PKCS#8)-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----
APP_ENV_JWKS_PUBLIC_KEYPublic key ECDSA (PEM)-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----

Bắt buộc PKCS#8

Private key phải dùng định dạng PKCS#8 (-----BEGIN PRIVATE KEY-----), không phải SEC1 (-----BEGIN EC PRIVATE KEY-----). Tạo bằng:

bash
openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 \
  | tee private.pem | openssl pkey -pubout > public.pem

Dịch vụ Licensing

BiếnBắt buộcMô tảMặc định
APP_ENV_LICENSING_ED25519_PRIVATE_KEYKhông*Private key Ed25519 PEM để ký chứng chỉ
APP_ENV_LICENSING_ED25519_PUBLIC_KEYKhông*Public key Ed25519 PEM để xác thực
APP_ENV_LICENSING_CERT_TTL_SECONDSKhôngTTL chứng chỉ (ghi vào Redis + payload)86400

* Nếu thiếu, publishCertificate() sẽ bỏ qua một cách im lặng — license vẫn được phát hành nhưng không có chứng chỉ.

Dịch vụ Signal (WebSocket)

BiếnBắt buộcMô tảVí dụ
APP_ENV_WEBSOCKET_REDIS_MODEsingle hoặc clustersingle
APP_ENV_WEBSOCKET_REDIS_HOSTChế độ singleHost Redis WebSocketlocalhost
APP_ENV_WEBSOCKET_REDIS_PORTChế độ singleCổng Redis WebSocket6379
APP_ENV_WEBSOCKET_ECDH_INFOChuỗi info HKDF cho mã hóa E2E

Dịch vụ Asset (S3 / MinIO)

BiếnBắt buộcMô tảVí dụ
APP_ENV_MINIO_HOSTHost lưu trữ tương thích S3localhost
APP_ENV_MINIO_API_PORTCổng API S39000
APP_ENV_MINIO_ACCESS_KEYAccess key S3
APP_ENV_MINIO_SECRET_KEYSecret key S3

Dịch vụ Search (Typesense)

BiếnBắt buộcMô tảVí dụ
APP_ENV_TYPESENSE_API_KEYAPI key Typesense
APP_ENV_TYPESENSE_NODESDanh sách node (protocol:host:port)http:localhost:8108

Commerce / URL Liên dịch vụ

BiếnMục đíchVí dụ
APP_ENV_COMMERCE_SERVICE_BASE_URLBase API Commerce cho các cuộc gọi liên dịch vụhttp://localhost:31020/v1/api/commerce

Dịch vụ Payment

BiếnMô tả
APP_ENV_MQ_PAY_MODEChế độ triển khai: full (mặc định), api (chỉ REST), worker (chỉ BullMQ)

Tham khảo Nhanh Danh mục Dịch vụ

Dịch vụAPPLICATION_NAMEAPPLICATION_CODESERVER_PORTSNOWFLAKE_WORKER_IDSERVER_BASE_PATH
identityidentitySVC-00010-IDENTITY310101/v1/api/identity
commercecommerceSVC-00020-COMMERCE310202/v1/api/commerce
salesaleSVC-00030-SALE310303/v1/api/sale
financefinanceSVC-00040-FINANCE310404/v1/api/finance
inventoryinventorySVC-00050-INVENTORY310505/v1/api/inventory
ledgerledgerSVC-00060-LEDGER310606/v1/api/ledger
pricingpricingSVC-00070-PRICING310707/v1/api/pricing
paymentpaymentSVC-00080-PAYMENT310808/v1/api/payment
signalsignalSVC-00090-SIGNAL310909/v1/api/signal
outreachoutreachSVC-00110-OUTREACH3111010/v1/api/outreach
licensinglicensingSVC-00140-LICENSING3112011/v1/api/licensing
taxationtaxationSVC-00130-TAXATION3113013/v1/api/taxation

Trang Liên quan

TrangMô tả
Bắt đầuHướng dẫn cài đặt
Hệ thống BuildTarget Make
IGNIS PatternsPattern cấu hình framework
Licensing — Chứng chỉCách APP_ENV_APPLICATION_SECRET được dùng cho mã hóa chứng chỉ

Proprietary and Confidential. Unauthorized copying, distribution, or use of this software is strictly prohibited.