ခြုံငုံသုံးသပ်ချက်
base/backend/.env.sample ကို .env သို့ ကူးယူရပါသည် (သို့မဟုတ် Compose environment တွင် တူညီသော key များ ထည့်ရပါသည်)။ Plugin-scoped key များအတွက် PluginEnv ကို ကြည့်ပါ။ အမှန်တကယ်သော secret များကို git ထဲ မတင်ရပါ။
| အကြောင်းအရာ | အသေးစိတ် |
|---|---|
| File | base/backend/.env (template: base/backend/.env.sample) |
| Compose | Backend service environment တွင်လည်း key များ ထည့်နိုင်ပါသည် |
| PluginEnv | Plugin-scoped key များ — ဤစာမျက်နှာနှင့် မတူပါ |
| Secrets | Sample တန်ဖိုးများ — local/dev သာ၊ staging/production တွင် rotate လုပ်ရပါသည် |
Runtime နှင့် identity
| Variable | ဖော်ပြချက် | Example |
|---|---|---|
| NODE_ENV | Node runtime mode | production |
| MODE | App mode (template often uses dev) | dev |
| BASE_VERSION | Base platform version — keep aligned with @quan-erp/* and image tags | 1.0.0 |
| ORGANIZATION_ID | Organization identifier for this deployment | quan-erp |
| DEBUG_LOG | Optional debug scope | plugin-manager |
Service URLs
| Variable | ဖော်ပြချက် | Example |
|---|---|---|
| FRONTEND_URL | Public frontend origin | http://localhost |
| BACKEND_URL | Backend API base | http://localhost:8080 |
| DEV_TOOL_URL | Base dev tools | http://localhost:8081 |
| PLUGIN_SERVER_URL | Plugin server | http://localhost:8082 |
| CORS_ALLOWED_ORIGINS | Comma-separated browser origins allowed to call the API | http://localhost:3000,... |
Auth tokens
Shared သို့မဟုတ် production deploy မတိုင်မီ token secret အားလုံးကို rotate လုပ်ရပါသည်။
| Variable | ဖော်ပြချက် | Example |
|---|---|---|
| ACCESS_TOKEN_SECRET | JWT access-token signing secret | change-me |
| ACCESS_TOKEN_SECRET_EXPIRATION_TIME | Access token TTL | 15m |
| REFRESH_TOKEN_SECRET | JWT refresh-token signing secret | change-me |
| REFRESH_TOKEN_SECRET_EXPIRATION_TIME | Refresh token TTL | 30d |
OpenAI-compatible AI
| Variable | ဖော်ပြချက် | Example |
|---|---|---|
| OPENAI_BASE_URL | API base URL | https://api.deepseek.com |
| OPENAI_API_KEY | Provider API key (leave empty if unused) | — |
Database
Compose အတွင်း host သည် service name (pgbouncer / db) ဖြစ်ပါသည်။ PgBouncer သုံးပါက DB_PORT သည် များသောအားဖြင့် 6432 ဖြစ်ပါသည်။
| Variable | ဖော်ပြချက် | Example |
|---|---|---|
| DATABASE_HOST | Postgres or PgBouncer host (alias used by some entrypoints) | pgbouncer |
| DB_HOST | Postgres or PgBouncer host | pgbouncer |
| DB_PORT | Database port (6432 via PgBouncer, 5432 direct) | 6432 |
| DB_USERNAME | Database username | postgres |
| DB_PASSWORD | Database password | change-me |
| DB_SCHEMA | Schema name | quan-erp |
| DB_SYNC | TypeORM synchronize — local/dev only; use migrations in staging/production | true |
Redis
| Variable | ဖော်ပြချက် | Example |
|---|---|---|
| REDIS_HOST | Redis service name | redis |
| REDIS_PORT | Redis port | 6379 |
| REDIS_PASSWORD | Redis auth password | change-me |
Cluster
| Variable | ဖော်ပြချက် | Example |
|---|---|---|
| CLUSTER_MODE | Enable multi-process cluster | false |
| CLUSTER_MAX_COUNT | Max worker processes when cluster is on | 2 |
Encryption နှင့် Firebase
Production private key များကို git / docs / chat ထဲ မထည့်ရပါ — secret store သို့မဟုတ် local .env မှသာ ရယူရပါသည်။
| Variable | ဖော်ပြချက် | Example |
|---|---|---|
| ENV_ENCRYPTION_KEY | Key used to encrypt sensitive env values at rest | change-me-… |
| FIREBASE_CONFIG | Single-line JSON string for the Firebase Admin service account (push / auth) | {"type":"service_account",…} |
Folders နှင့် files
| Variable | ဖော်ပြချက် | Example |
|---|---|---|
| AVAILABLE_PLUGINS_FOLDER | Staged plugin builds | /app/available-plugins |
| INSTALLED_PLUGINS_FOLDER | Active installed plugins | /app/installed-plugins |
| APP_DATA_FOLDER | Persistent app data root | /app/data/data/ |
| UPLOAD_FILE_TEMP_FOLDER | Temporary upload staging | /app/data/temp |
| UPLOAD_FILE_FOLDER | Persisted uploads | /app/data/data/ |
| PLUGINS_ENV_FILE | Plugin env JSON file path | /app/data/data/plugin.env.json |
| RUNNER_FLOW_FILE | Workflow definitions directory | /app/data/data/workflows/ |
Admin၊ limits နှင့် subscription
| Variable | ဖော်ပြချက် | Example |
|---|---|---|
| ROOT_ADMIN_USERNAME | Bootstrap root admin username | admin |
| ROOT_ADMIN_PASSWORD | Bootstrap root admin password — change outside local template | change-me |
| MAX_USER_LIMIT | Max users for the org | 5 |
| MAX_ACTIVE_USER_LIMIT | Max concurrently active users | 5 |
| MAX_USER_SESSION_LIMIT_PER_USER | Sessions per user | 1 |
| MAX_ORGANIZATION_BRANCH | Max branches | 1 |
| MAX_ROLE_LIMIT | Max roles | 5 |
| MAX_SUBSCRIPTION_GRACE_PERIOD_DAYS | Grace days after subscription end | 14 |
| DEVELOPER_CONFIG_PASSWORD | Password gate for developer config UI / APIs | change-me |
| SUBSCRIPTION_END_DATE | Subscription end date | 2026-01-01 |
နမူနာ (.env.sample ပုံစံ)
base/backend/.env.sample နှင့် ပုံစံတူပါသည်။ change-me များကို အစားထိုးရပါသည်။ အောက်ပါ secret များသည် placeholder သာ ဖြစ်ပါသည်။
1NODE_ENV=production
2
3MODE=dev
4BASE_VERSION=1.0.0
5ORGANIZATION_ID=quan-erp
6
7FRONTEND_URL=http://localhost
8BACKEND_URL=http://localhost:8080
9DEV_TOOL_URL=http://localhost:8081
10PLUGIN_SERVER_URL=http://localhost:8082
11
12DEBUG_LOG=plugin-manager
13
14ACCESS_TOKEN_SECRET=change-me
15ACCESS_TOKEN_SECRET_EXPIRATION_TIME=15m
16REFRESH_TOKEN_SECRET=change-me
17REFRESH_TOKEN_SECRET_EXPIRATION_TIME=30d
18
19OPENAI_BASE_URL=https://api.deepseek.com
20OPENAI_API_KEY=
21
22# database
23DATABASE_HOST=pgbouncer
24DB_HOST=pgbouncer
25DB_USERNAME=postgres
26DB_PASSWORD=change-me
27DB_PORT=6432
28DB_SCHEMA=quan-erp
29DB_SYNC=true
30
31# redis
32REDIS_HOST=redis
33REDIS_PORT=6379
34REDIS_PASSWORD=change-me
35
36CLUSTER_MODE=false
37CLUSTER_MAX_COUNT=2
38
39ENV_ENCRYPTION_KEY=change-me-32-char-hex-or-secret
40
41CORS_ALLOWED_ORIGINS=http://localhost:3000,http://127.0.0.1:3000,http://localhost,https://localhost
42
43AVAILABLE_PLUGINS_FOLDER=/app/available-plugins
44INSTALLED_PLUGINS_FOLDER=/app/installed-plugins
45
46APP_DATA_FOLDER=/app/data/data/
47UPLOAD_FILE_TEMP_FOLDER=/app/data/temp
48UPLOAD_FILE_FOLDER=/app/data/data/
49PLUGINS_ENV_FILE=/app/data/data/plugin.env.json
50RUNNER_FLOW_FILE=/app/data/data/workflows/
51
52FIREBASE_CONFIG={"type":"service_account","project_id":"your-project",...}
53
54ROOT_ADMIN_USERNAME=admin
55ROOT_ADMIN_PASSWORD=change-me
56
57MAX_USER_LIMIT=5
58MAX_ACTIVE_USER_LIMIT=5
59MAX_USER_SESSION_LIMIT_PER_USER=1
60MAX_ORGANIZATION_BRANCH=1
61MAX_ROLE_LIMIT=5
62MAX_SUBSCRIPTION_GRACE_PERIOD_DAYS=14
63DEVELOPER_CONFIG_PASSWORD=change-me
64SUBSCRIPTION_END_DATE=2026-01-01အရေးကြီးသော စည်းမျဉ်းများ
| စည်းမျဉ်း | အသေးစိတ် |
|---|---|
| Start from sample | .env.sample မှ စတင်ရပါသည် |
| No secrets in git | အမှန်တကယ်သော .env / Firebase private key ကို commit မလုပ်ရပါ |
| Version alignment | BASE_VERSION ကို images / @quan-erp/* နှင့် ညှိရပါသည် |
| Production harden | Production မတိုင်မီ DB_SYNC ပိတ်ပြီး secret များကို rotate လုပ်ရပါသည် |
| Two layers | Plugin config → PluginEnv; host infra → ဤဖိုင် |