အနှစ်ချုပ်
Quark ERP / Quan ERP သည် base stack (Postgres၊ Redis၊ backend၊ frontend) နှင့် ဗားရှင်းပါ plugin များဖြင့် deploy လုပ်ပါသည်။ Server အသစ်တွင် install script ဖြင့် Docker နှင့် Nginx ကို ပြင်ဆင်ပြီး compose ကို စတင်ပါ။ Plugin များကို plugins/ အောက်တွင် တည်ဆောက်ကာ available-plugins/ သို့ build လုပ်ပြီး၊ ERP UI မှ installed-plugins/ သို့ အသက်ဝင်စေပါသည်။ Base image များနှင့် @quan-erp/* package များသည် တူညီသော ဗားရှင်းလိုင်းတွင် ရှိရပါမည်။
- installation/ — ./install.sh (သို့မဟုတ် installation.sh) ဖြင့် host bootstrap နှင့် compose start/stop
- docker-compose.yaml — Postgres၊ Redis၊ backend၊ frontend
- plugins/ — source; quan-erp CLI က available-plugins/ သို့ တည်ဆောက်ပါသည်
- ERP UI install — installed-plugins/ သို့ ကူးယူ / အသက်ဝင်စေပါသည်
- UAT သို့မဟုတ် production တွင် module ဇယားကို SQL seed မလုပ်ရပါ
1. Host bootstrap (./install.sh)
Server deploy များတွင် production docker-compose.yaml ဘေးရှိ installation/ အောက်တွင် helper script ပါရှိပါသည်။ သာမန် user အဖြစ် run ရပါမည် — sudo / root အဖြစ် မဟုတ်ပါ။ Script သည် Docker Engine၊ Compose plugin နှင့် Nginx ကို သွင်းပြီး၊ stack ကို စတင် သို့မဟုတ် ရပ်တန့်နိုင်ပါသည်။
- Command များ — install | start | stop (./install.sh --help ကို ကြည့်ပါ)
- root အဖြစ် မ run ရပါ — လိုအပ်သည့်နေရာတွင်သာ sudo အသုံးပြုပါသည်
- install — Ubuntu/Debian သို့မဟုတ် RHEL-family ကို ရှာဖွေပြီး Docker + Compose + Nginx သွင်းကာ service များကို ဖွင့်ပေးပါသည်
- start — installation/ ဘေးရှိ stack အတွက် docker compose up -d
- stop — တူညီသော compose ဖိုင်အတွက် docker compose stop
- ပံ့ပိုးသော OS — Ubuntu၊ Debian၊ RHEL၊ CentOS၊ Fedora၊ Rocky၊ AlmaLinux
- install ပြီးနောက် docker group အကျိုးသက်ရောက်ရန် shell အသစ် သို့မဟုတ် re-login လိုအပ်နိုင်ပါသည်
1cd installation
2chmod +x ./install.sh # or ./installation.sh
3
4# One-time host setup (Docker + Compose + Nginx)
5./install.sh install
6
7# Start compose services
8./install.sh start
9
10# Stop compose services
11./install.sh stop2. Base stack (Docker Compose)
ဒေသခံ template အလုပ်အတွက် base/ အောက်တွင် compose ကို တိုက်ရိုက် စတင်နိုင်ပါသည်။ ./install.sh ဖြင့် ပြင်ဆင်ထားသော server တွင် ./install.sh start ကို ဦးစားပေး အသုံးပြုပါ။ နမူနာ stack တွင် shared bridge network ပေါ်ရှိ ဝန်ဆောင်မှု လေးခု — db (Postgres)၊ redis၊ backend၊ frontend — ပါဝင်ပါသည်။ Backend သည် Postgres နှင့် Redis သို့ compose service အမည်ဖြင့် ချိတ်ဆက်ပါသည်။
- Container အတွင်း host များသည် compose service အမည်များ (db၊ redis) ဖြစ်ပါသည် — ဝန်ဆောင်မှုအချင်းချင်းအတွက် localhost မသုံးရပါ
- အသုံးများသော volume များ — ./data၊ ./available-plugins၊ ./backend/installed-plugins၊ ./backend/logs
- BASE_VERSION / image tag များ (base-backend၊ base-frontend) ကို plugin @quan-erp/* ဗားရှင်းများနှင့် ကိုက်ညီအောင် ထားရှိရပါမည်
- Template စကားဝှက်နှင့် token လျှို့ဝှက်ချက်များသည် local/dev သာ ဖြစ်ပါသည် — မျှဝေအသုံးပြုသော ပတ်ဝန်းကျင် မတိုင်မီ ပြောင်းလဲရပါမည်
cd base
docker compose up -d
docker compose pscd installation
./install.sh start
./install.sh stop2b. နမူနာ docker-compose.yaml
အောက်ပါ local/dev template ကို ကူးယူပြီး၊ change-me တန်ဖိုးအားလုံးကို ပြောင်းလဲကာ၊ VITE_BACKEND_API ကို browser ရောက်နိုင်သော URL ထားရှိပြီး၊ image tag / BASE_VERSION ကို သင့် release လိုင်းသို့ ညွှန်ပါ။ Backend သည် Postgres (db:5432) သို့ တိုက်ရိုက် ချိတ်ဆက်ပါသည်။
- DATABASE_HOST / DB_HOST=db၊ DB_PORT=5432 — ဤ template တွင် pooler မပါဝင်ပါ
- OPENAI_* / FIREBASE_CONFIG — လိုအပ်မှသာ ထည့်ပါ; private key များကို git မတင်ရပါ
1services:
2 db:
3 image: postgres:17
4 container_name: postgres
5 restart: always
6 environment:
7 POSTGRES_USER: postgres
8 POSTGRES_PASSWORD: change-me
9 POSTGRES_DB: quan-erp
10 ports:
11 - "5432:5432"
12 volumes:
13 - ./data/db-data:/var/lib/postgresql/data
14 networks:
15 - app-network
16
17 redis:
18 image: redis:7
19 container_name: quanerp-redis
20 restart: unless-stopped
21 ports:
22 - "6379:6379"
23 command: >
24 redis-server
25 --requirepass "change-me"
26 --appendonly yes
27 volumes:
28 - ./data/redis:/data
29 networks:
30 - app-network
31 healthcheck:
32 test: ["CMD", "redis-cli", "ping", "-a", "change-me"]
33 interval: 5s
34 timeout: 2s
35 retries: 5
36
37 backend:
38 build:
39 context: ./backend
40 dockerfile: Dockerfile
41 image: theparadance/quan-erp-base-backend:1.0.0
42 restart: unless-stopped
43 platform: linux/amd64
44 container_name: backend
45 ports:
46 - "8080:8080"
47 - "8081:8081"
48 environment:
49 NODE_ENV: production
50 MODE: dev
51 BASE_VERSION: 1.0.0
52 ORGANIZATION_ID: quan-erp
53
54 FRONTEND_URL: http://localhost
55 BACKEND_URL: http://localhost:8080
56 DEV_TOOL_URL: http://localhost:8081
57 PLUGIN_SERVER_URL: http://localhost:8082
58
59 ACCESS_TOKEN_SECRET: change-me
60 ACCESS_TOKEN_SECRET_EXPIRATION_TIME: 15m
61 REFRESH_TOKEN_SECRET: change-me
62 REFRESH_TOKEN_SECRET_EXPIRATION_TIME: 30d
63
64 DATABASE_HOST: db
65 DB_HOST: db
66 DB_USERNAME: postgres
67 DB_PASSWORD: change-me
68 DB_PORT: 5432
69 DB_SCHEMA: quan-erp
70 DB_SYNC: true
71
72 REDIS_HOST: redis
73 REDIS_PORT: 6379
74 REDIS_PASSWORD: change-me
75
76 CLUSTER_MODE: false
77 CLUSTER_MAX_COUNT: 2
78 ENV_ENCRYPTION_KEY: change-me-32-char-hex-or-secret
79 FIREBASE_CONFIG: ''
80
81 OPENAI_BASE_URL: https://api.deepseek.com
82 OPENAI_API_KEY: <sk-key>
83
84 CORS_ALLOWED_ORIGINS: http://localhost:3000,http://127.0.0.1:3000,http://localhost,https://localhost
85
86 AVAILABLE_PLUGINS_FOLDER: /app/available-plugins
87 INSTALLED_PLUGINS_FOLDER: /app/installed-plugins
88 APP_DATA_FOLDER: /app/data/data/
89 UPLOAD_FILE_TEMP_FOLDER: /app/data/temp
90 UPLOAD_FILE_FOLDER: /app/data/data/
91 PLUGINS_ENV_FILE: /app/data/data/plugin.env.json
92 RUNNER_FLOW_FILE: /app/data/data/workflows/
93
94 ROOT_ADMIN_USERNAME: admin
95 ROOT_ADMIN_PASSWORD: change-me
96 DEVELOPER_CONFIG_PASSWORD: change-me
97
98 MAX_USER_LIMIT: 5
99 MAX_ACTIVE_USER_LIMIT: 5
100 MAX_USER_SESSION_LIMIT_PER_USER: 1
101 MAX_ORGANIZATION_BRANCH: 1
102 MAX_ROLE_LIMIT: 5
103 MAX_SUBSCRIPTION_GRACE_PERIOD_DAYS: 14
104 SUBSCRIPTION_END_DATE: '2099-01-01'
105 volumes:
106 - ./backend/installed-plugins:/app/installed-plugins
107 - ./data:/app/data
108 - ./backend/logs:/app/logs
109 - ./available-plugins:/app/available-plugins
110 depends_on:
111 - db
112 - redis
113 networks:
114 - app-network
115 dns:
116 - 1.1.1.1
117 - 8.8.8.8
118
119 frontend:
120 build:
121 context: ./frontend
122 dockerfile: Dockerfile
123 image: theparadance/quan-erp-base-frontend:1.0.0
124 restart: unless-stopped
125 platform: linux/amd64
126 container_name: frontend
127 environment:
128 VITE_BACKEND_API: http://localhost:8080
129 VITE_MODE: dev
130 ports:
131 - "80:80"
132 volumes:
133 - ./data/frontend/web-env.json:/usr/share/nginx/html/web-env.json
134 networks:
135 - app-network
136
137networks:
138 app-network:
139 driver: bridge3. ဝန်ဆောင်မှုများနှင့် port များ
db:5432 (DB_HOST)၊ redis:6379၊ backend:8080/8081၊ frontend:80 နှင့် host Nginx တို့ ပါဝင်ပါသည်။ Production တွင် db / redis ကို အများပြည်သူသို့ မဖွင့်ရပါ။
- db (postgres:17) — 5432; DB_HOST=db၊ DB_PORT=5432; schema quan-erp; ./data/db-data
- redis — 6379; REDIS_HOST=redis + REDIS_PASSWORD; ./data/redis
- backend — :8080 / :8081; plugin နှင့် data + logs volume များ
- frontend — :80; VITE_BACKEND_API သည် browser ရောက်နိုင်ရပါမည်
- Host Nginx — ./install.sh install ဖြင့် TLS / reverse proxy
4. Plugin တင်သွင်းခြင်း
quan-erp build:prod|watch|pack:prod ဖြင့် stage လုပ်ပြီး၊ ERP UI မှ Install လုပ်ရပါသည်။
- Build → available-plugins/<name>/<version>/
- UI install ပြီးနောက် → installed-plugins/<name>/
- Backend သည် installed=true ဖြစ်သော module များကို တင်သွင်းပါသည်
- Frontend သည် module.js ကို load လုပ်ပြီး register(AppRegistry) ကို ခေါ်ပါသည်
- local/dev တွင်သာ module row INSERT လုပ်ရပါမည် — UAT/prod မလုပ်ရပါ
1# From repo root
2quan-erp build:prod sample-es
3# Continuous during development
4quan-erp watch sample-es
5
6# Distributable zip (frontend + backend + metadata)
7quan-erp pack:prod sample-es
8quan-erp pack:prod sample-es ./dist-archives5. ဗားရှင်း ကိုက်ညီမှု
Base image tag များနှင့် plugin @quan-erp/* ဗားရှင်းများကို တူညီအောင် ထားရှိရပါမည်။
- plugin package.json အတွင်း @quan-erp/* သည် base image နှင့် တူညီရပါမည်
- compose image tag များနှင့် BASE_VERSION ကို sync ထားရှိရပါမည်
- module.metadata.json ရှိ pluginVersion / requiredBasedVersion ကိုက်ညီရပါမည်
- base အဆင့်မြှင့်ပြီးနောက် ကိုက်ညီသော @quan-erp/* ဖြင့် plugin ကို ပြန်လည် တည်ဆောက်ရပါမည်
6. ပတ်ဝန်းကျင် ပြောင်းလဲမှုများ
DB_* → db:5432၊ REDIS_*၊ token များ၊ CORS၊ URL များနှင့် plugin/data folder များကို volume ဖြင့် တည်မြဲအောင် ထားရှိပါ။ Production တွင် migration များကို အသုံးပြုရပါမည်။
- DB_* / DATABASE_HOST — နမူနာ stack တွင် db:5432; DB_SCHEMA = POSTGRES_DB
- REDIS_* — redis service requirepass နှင့် တူညီရပါမည်
- ACCESS_TOKEN_* / REFRESH_TOKEN_* / ENV_ENCRYPTION_KEY — template တန်ဖိုး မသုံးရပါ
- CORS_ALLOWED_ORIGINS — browser origin များကို ထည့်သွင်းပါ
- FRONTEND_URL / BACKEND_URL / VITE_BACKEND_API — ရောက်နိုင်သော URL များ
- plugin / data folder path များ — volume ဖြင့် persist လုပ်ပါ
- BASE_VERSION + image tag များ — plugin ဗားရှင်းများနှင့် ကိုက်ညီရပါမည်
- DB_SYNC — local/dev သာ; staging/prod တွင် migration များ
- MODE — template သည် dev; production mode ကို အသုံးပြုပါ
7. Staging နှင့် production စစ်ဆေးစာရင်း
./install.sh install ကို ဦးစွာ လုပ်ဆောင်ပါ။ ပုံသေ လျှို့ဝှက်ချက်များကို ပြောင်းလဲပါ။ db / redis ကို အများပြည်သူသို့ မဖွင့်ရပါ။ Nginx TLS ကို အသုံးပြုပါ။ Firebase / npm လျှို့ဝှက်ချက်များကို git မတင်ရပါ။ module seed မလုပ်ရပါ။
- ပထမ start မတိုင်မီ ./install.sh install လုပ်ရပါမည်
- Postgres / Redis / ROOT_ADMIN_* / token လျှို့ဝှက်ချက်အားလုံးကို ပြောင်းလဲရပါမည်
- Postgres / Redis port များကို အများပြည်သူသို့ မဖွင့်ရပါ; Nginx TLS ကို အသုံးပြုပါ
- ./data၊ plugin နှင့် log များကို backup လုပ်ပါ
- DB_SYNC=true၊ open CORS နှင့် နမူနာ လျှို့ဝှက်ချက်များကို ပိတ်ပါ
- Plugin များကို UI install ဖြင့် တင်သွင်းပါ — production တွင် SQL seed မလုပ်ရပါ
- Schema ပြောင်းလဲမှုကို migration များဖြင့် လုပ်ဆောင်ရပါမည်
- FRONTEND_URL / BACKEND_URL / VITE_BACKEND_API သည် public hostname နှင့် တူညီရပါမည်
- အဆင့်မြှင့်မီ base နှင့် @quan-erp/* ဗားရှင်းများကို စစ်ဆေးပါ
- FIREBASE / npm လျှို့ဝှက်ချက်များကို git မတင်ရပါ
8. နေ့စဉ် လုပ်ငန်းဆောင်ရွက်မှုများ
./install.sh start|stop၊ base / plugin အဆင့်မြှင့်တင်ခြင်း၊ log၊ backup နှင့် rollback အစီအစဉ် ထားရှိရပါမည်။
- Stack — cd installation && ./install.sh start|stop
- Base update — image tag အသစ် → container များကို recreate
- Plugin update — quan-erp build:prod|pack:prod → available-plugins → UI install
- Health — docker compose ps; backend log များ
- Data — Postgres volume နှင့် APP_DATA_FOLDER ကို backup လုပ်ပါ
- Rollback — plugin ဗားရှင်း folder / image tag ဟောင်းများကို ထားရှိပါ
1cd installation # or cd base for the Node template
2docker compose logs -f backend
3docker compose restart backend frontend
4docker compose down
5./install.sh startပြဿနာဖြေရှင်းခြင်း
- install မအောင်မြင် — OS / sudo / Docker repo ကို စစ်ဆေးပါ
- docker permission — docker group အတွက် re-login လုပ်ပါ
- start မအောင်မြင် — POSTGRES_* / REDIS_* / image tag များကို စစ်ဆေးပါ
- DB မရောက်ရှိ — DB_HOST=db၊ DB_PORT=5432
- VITE_BACKEND_API — browser ရောက်နိုင်သော host ကို အသုံးပြုပါ
- Plugin မပေါ် — available-plugins / ဗားရှင်း / ဒေသခံ module row
- UI ဗလာ — frontend ပြန်လည် တည်ဆောက် + ထပ်မံ Install
- CORS / auth — FRONTEND_URL နှင့် origin များ
- ဗားရှင်း အမှား — base နှင့် @quan-erp/* မတူညီခြင်း
Deployment အကူအညီ လိုအပ်ပါသလား
Quark ERP ကို တင်သွင်းရာတွင် အခက်အခဲရှိပါက The Paradance ထံမှ အကူအညီ ရယူနိုင်ပါသည်။ အခြေအနေအလိုက် အခမဲ့ သို့မဟုတ် အပိုကျသင့်ငွေ ဖြစ်နိုင်ပါသည် — လုပ်ငန်းအတိုင်းအတာ၊ အရေးပေါ်မှုနှင့် ပတ်ဝန်းကျင်ပေါ် မူတည်ပါသည်။
- BASE_VERSION / image tag များ၊ OS၊ compose log နှင့် ပြန်လည် ထပ်မံစမ်းသပ်ရန် အဆင့်များကို ထည့်ပေးပါ
- ရိုးရိုး လမ်းညွှန်မှုသည် အခမဲ့ ဖြစ်နိုင်ပါသည်; hands-on setup / production harden / custom ops များအတွက် ကျသင့်နိုင်ပါသည်
- အခမဲ့ / အခပေး ကို စတင်မလုပ်မီ ရှင်းလင်းစွာ အတည်ပြုပေးပါသည်