Demo

Environment variables

Base backend process env သည် base/backend/.env (.env.sample) မှ လာပါသည်။ Infrastructure အတွက်သာ ဖြစ်ပြီး — plugin @InjectEnv နှင့် မတူပါ။

ခြုံငုံသုံးသပ်ချက်

base/backend/.env.sample ကို .env သို့ ကူးယူရပါသည် (သို့မဟုတ် Compose environment တွင် တူညီသော key များ ထည့်ရပါသည်)။ Plugin-scoped key များအတွက် PluginEnv ကို ကြည့်ပါ။ အမှန်တကယ်သော secret များကို git ထဲ မတင်ရပါ။

အကြောင်းအရာအသေးစိတ်
Filebase/backend/.env (template: base/backend/.env.sample)
ComposeBackend service environment တွင်လည်း key များ ထည့်နိုင်ပါသည်
PluginEnvPlugin-scoped key များ — ဤစာမျက်နှာနှင့် မတူပါ
SecretsSample တန်ဖိုးများ — local/dev သာ၊ staging/production တွင် rotate လုပ်ရပါသည်

Runtime နှင့် identity

Variableဖော်ပြချက်Example
NODE_ENVNode runtime modeproduction
MODEApp mode (template often uses dev)dev
BASE_VERSIONBase platform version — keep aligned with @quan-erp/* and image tags1.0.0
ORGANIZATION_IDOrganization identifier for this deploymentquan-erp
DEBUG_LOGOptional debug scopeplugin-manager

Service URLs

Variableဖော်ပြချက်Example
FRONTEND_URLPublic frontend originhttp://localhost
BACKEND_URLBackend API basehttp://localhost:8080
DEV_TOOL_URLBase dev toolshttp://localhost:8081
PLUGIN_SERVER_URLPlugin serverhttp://localhost:8082
CORS_ALLOWED_ORIGINSComma-separated browser origins allowed to call the APIhttp://localhost:3000,...

Auth tokens

Shared သို့မဟုတ် production deploy မတိုင်မီ token secret အားလုံးကို rotate လုပ်ရပါသည်။

Variableဖော်ပြချက်Example
ACCESS_TOKEN_SECRETJWT access-token signing secretchange-me
ACCESS_TOKEN_SECRET_EXPIRATION_TIMEAccess token TTL15m
REFRESH_TOKEN_SECRETJWT refresh-token signing secretchange-me
REFRESH_TOKEN_SECRET_EXPIRATION_TIMERefresh token TTL30d

OpenAI-compatible AI

Variableဖော်ပြချက်Example
OPENAI_BASE_URLAPI base URLhttps://api.deepseek.com
OPENAI_API_KEYProvider API key (leave empty if unused)

Database

Compose အတွင်း host သည် service name (pgbouncer / db) ဖြစ်ပါသည်။ PgBouncer သုံးပါက DB_PORT သည် များသောအားဖြင့် 6432 ဖြစ်ပါသည်။

Variableဖော်ပြချက်Example
DATABASE_HOSTPostgres or PgBouncer host (alias used by some entrypoints)pgbouncer
DB_HOSTPostgres or PgBouncer hostpgbouncer
DB_PORTDatabase port (6432 via PgBouncer, 5432 direct)6432
DB_USERNAMEDatabase usernamepostgres
DB_PASSWORDDatabase passwordchange-me
DB_SCHEMASchema namequan-erp
DB_SYNCTypeORM synchronize — local/dev only; use migrations in staging/productiontrue

Redis

Variableဖော်ပြချက်Example
REDIS_HOSTRedis service nameredis
REDIS_PORTRedis port6379
REDIS_PASSWORDRedis auth passwordchange-me

Cluster

Variableဖော်ပြချက်Example
CLUSTER_MODEEnable multi-process clusterfalse
CLUSTER_MAX_COUNTMax worker processes when cluster is on2

Encryption နှင့် Firebase

Production private key များကို git / docs / chat ထဲ မထည့်ရပါ — secret store သို့မဟုတ် local .env မှသာ ရယူရပါသည်။

Variableဖော်ပြချက်Example
ENV_ENCRYPTION_KEYKey used to encrypt sensitive env values at restchange-me-…
FIREBASE_CONFIGSingle-line JSON string for the Firebase Admin service account (push / auth){"type":"service_account",…}

Folders နှင့် files

Variableဖော်ပြချက်Example
AVAILABLE_PLUGINS_FOLDERStaged plugin builds/app/available-plugins
INSTALLED_PLUGINS_FOLDERActive installed plugins/app/installed-plugins
APP_DATA_FOLDERPersistent app data root/app/data/data/
UPLOAD_FILE_TEMP_FOLDERTemporary upload staging/app/data/temp
UPLOAD_FILE_FOLDERPersisted uploads/app/data/data/
PLUGINS_ENV_FILEPlugin env JSON file path/app/data/data/plugin.env.json
RUNNER_FLOW_FILEWorkflow definitions directory/app/data/data/workflows/

Admin၊ limits နှင့် subscription

Variableဖော်ပြချက်Example
ROOT_ADMIN_USERNAMEBootstrap root admin usernameadmin
ROOT_ADMIN_PASSWORDBootstrap root admin password — change outside local templatechange-me
MAX_USER_LIMITMax users for the org5
MAX_ACTIVE_USER_LIMITMax concurrently active users5
MAX_USER_SESSION_LIMIT_PER_USERSessions per user1
MAX_ORGANIZATION_BRANCHMax branches1
MAX_ROLE_LIMITMax roles5
MAX_SUBSCRIPTION_GRACE_PERIOD_DAYSGrace days after subscription end14
DEVELOPER_CONFIG_PASSWORDPassword gate for developer config UI / APIschange-me
SUBSCRIPTION_END_DATESubscription end date2026-01-01

နမူနာ (.env.sample ပုံစံ)

base/backend/.env.sample နှင့် ပုံစံတူပါသည်။ change-me များကို အစားထိုးရပါသည်။ အောက်ပါ secret များသည် placeholder သာ ဖြစ်ပါသည်။

TSbase/backend/.env
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 alignmentBASE_VERSION ကို images / @quan-erp/* နှင့် ညှိရပါသည်
Production hardenProduction မတိုင်မီ DB_SYNC ပိတ်ပြီး secret များကို rotate လုပ်ရပါသည်
Two layersPlugin config → PluginEnv; host infra → ဤဖိုင်