suthep 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/.editorconfig +17 -0
  2. package/.github/workflows/publish.yml +42 -0
  3. package/.prettierignore +6 -0
  4. package/.prettierrc +7 -0
  5. package/.scannerwork/.sonar_lock +0 -0
  6. package/.scannerwork/report-task.txt +6 -0
  7. package/.vscode/settings.json +19 -0
  8. package/LICENSE +21 -0
  9. package/README.md +317 -0
  10. package/dist/commands/deploy.js +371 -0
  11. package/dist/commands/deploy.js.map +1 -0
  12. package/dist/commands/down.js +179 -0
  13. package/dist/commands/down.js.map +1 -0
  14. package/dist/commands/init.js +188 -0
  15. package/dist/commands/init.js.map +1 -0
  16. package/dist/commands/setup.js +90 -0
  17. package/dist/commands/setup.js.map +1 -0
  18. package/dist/commands/up.js +213 -0
  19. package/dist/commands/up.js.map +1 -0
  20. package/dist/index.js +66 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/utils/certbot.js +64 -0
  23. package/dist/utils/certbot.js.map +1 -0
  24. package/dist/utils/config-loader.js +127 -0
  25. package/dist/utils/config-loader.js.map +1 -0
  26. package/dist/utils/deployment.js +85 -0
  27. package/dist/utils/deployment.js.map +1 -0
  28. package/dist/utils/docker.js +425 -0
  29. package/dist/utils/docker.js.map +1 -0
  30. package/dist/utils/env-loader.js +53 -0
  31. package/dist/utils/env-loader.js.map +1 -0
  32. package/dist/utils/nginx.js +378 -0
  33. package/dist/utils/nginx.js.map +1 -0
  34. package/docs/README.md +38 -0
  35. package/docs/english/01-introduction.md +84 -0
  36. package/docs/english/02-installation.md +200 -0
  37. package/docs/english/03-quick-start.md +258 -0
  38. package/docs/english/04-configuration.md +433 -0
  39. package/docs/english/05-commands.md +336 -0
  40. package/docs/english/06-examples.md +456 -0
  41. package/docs/english/07-troubleshooting.md +417 -0
  42. package/docs/english/08-advanced.md +411 -0
  43. package/docs/english/README.md +48 -0
  44. package/docs/thai/01-introduction.md +84 -0
  45. package/docs/thai/02-installation.md +200 -0
  46. package/docs/thai/03-quick-start.md +258 -0
  47. package/docs/thai/04-configuration.md +433 -0
  48. package/docs/thai/05-commands.md +336 -0
  49. package/docs/thai/06-examples.md +456 -0
  50. package/docs/thai/07-troubleshooting.md +417 -0
  51. package/docs/thai/08-advanced.md +411 -0
  52. package/docs/thai/README.md +48 -0
  53. package/example/suthep-complete.yml +103 -0
  54. package/example/suthep-docker-only.yml +71 -0
  55. package/example/suthep-env-example.yml +113 -0
  56. package/example/suthep-no-docker.yml +51 -0
  57. package/example/suthep-path-routing.yml +62 -0
  58. package/example/suthep.example.yml +88 -0
  59. package/package.json +51 -0
  60. package/src/commands/deploy.ts +488 -0
  61. package/src/commands/down.ts +240 -0
  62. package/src/commands/init.ts +214 -0
  63. package/src/commands/setup.ts +112 -0
  64. package/src/commands/up.ts +271 -0
  65. package/src/index.ts +109 -0
  66. package/src/types/config.ts +52 -0
  67. package/src/utils/__tests__/certbot.test.ts +222 -0
  68. package/src/utils/__tests__/config-loader.test.ts +419 -0
  69. package/src/utils/__tests__/deployment.test.ts +243 -0
  70. package/src/utils/__tests__/nginx.test.ts +412 -0
  71. package/src/utils/certbot.ts +144 -0
  72. package/src/utils/config-loader.ts +184 -0
  73. package/src/utils/deployment.ts +157 -0
  74. package/src/utils/docker.ts +768 -0
  75. package/src/utils/env-loader.ts +135 -0
  76. package/src/utils/nginx.ts +443 -0
  77. package/suthep-1.0.0.tgz +0 -0
  78. package/suthep.example.yml +98 -0
  79. package/suthep.yml +39 -0
  80. package/todo.md +6 -0
  81. package/tsconfig.json +26 -0
  82. package/vite.config.ts +46 -0
  83. package/vitest.config.ts +21 -0
@@ -0,0 +1,200 @@
1
+ # คู่มือการติดตั้ง
2
+
3
+ คู่มือนี้จะแนะนำคุณผ่านการติดตั้ง Suthep บนระบบของคุณ
4
+
5
+ ## ความต้องการของระบบ
6
+
7
+ ก่อนติดตั้ง Suthep ตรวจสอบว่าระบบของคุณตรงตามความต้องการเหล่านี้:
8
+
9
+ - **Node.js** เวอร์ชัน 16 หรือสูงกว่า
10
+ - **npm**, **yarn**, หรือ **pnpm** package manager
11
+ - **สิทธิ์ sudo/administrator** (จำเป็นสำหรับการตั้งค่า Nginx และ Certbot)
12
+ - **ระบบปฏิบัติการ Linux** หรือ **macOS**
13
+
14
+ ## การติดตั้ง Suthep
15
+
16
+ Suthep สามารถติดตั้งแบบ global โดยใช้ package manager ของ Node.js ใดก็ได้
17
+
18
+ ### ใช้ npm
19
+
20
+ ```bash
21
+ npm install -g suthep
22
+ ```
23
+
24
+ ### ใช้ yarn
25
+
26
+ ```bash
27
+ yarn global add suthep
28
+ ```
29
+
30
+ ### ใช้ pnpm
31
+
32
+ ```bash
33
+ pnpm add -g suthep
34
+ ```
35
+
36
+ ## ตรวจสอบการติดตั้ง
37
+
38
+ หลังจากติดตั้ง ตรวจสอบว่า Suthep ติดตั้งถูกต้อง:
39
+
40
+ ```bash
41
+ suthep --version
42
+ ```
43
+
44
+ คุณควรเห็นหมายเลขเวอร์ชัน (เช่น `0.1.0-beta.1`)
45
+
46
+ คุณยังสามารถตรวจสอบเมนูช่วยเหลือ:
47
+
48
+ ```bash
49
+ suthep --help
50
+ ```
51
+
52
+ ## การติดตั้งสิ่งที่จำเป็น
53
+
54
+ Suthep ต้องการ Nginx และ Certbot เพื่อทำงาน คุณสามารถติดตั้งสิ่งเหล่านี้โดยอัตโนมัติโดยใช้คำสั่ง `setup`:
55
+
56
+ ```bash
57
+ suthep setup
58
+ ```
59
+
60
+ คำสั่งนี้จะ:
61
+ - ติดตั้ง Nginx (หากยังไม่ได้ติดตั้ง)
62
+ - ติดตั้ง Certbot (หากยังไม่ได้ติดตั้ง)
63
+ - ตั้งค่าการพึ่งพาระบบ
64
+
65
+ ### การติดตั้งด้วยตนเอง (ไม่บังคับ)
66
+
67
+ หากคุณต้องการติดตั้งสิ่งที่จำเป็นด้วยตนเอง:
68
+
69
+ #### การติดตั้ง Nginx
70
+
71
+ **Ubuntu/Debian:**
72
+ ```bash
73
+ sudo apt-get update
74
+ sudo apt-get install -y nginx
75
+ ```
76
+
77
+ **CentOS/RHEL:**
78
+ ```bash
79
+ sudo yum install -y nginx
80
+ ```
81
+
82
+ **macOS:**
83
+ ```bash
84
+ brew install nginx
85
+ ```
86
+
87
+ #### การติดตั้ง Certbot
88
+
89
+ **Ubuntu/Debian:**
90
+ ```bash
91
+ sudo apt-get update
92
+ sudo apt-get install -y certbot python3-certbot-nginx
93
+ ```
94
+
95
+ **CentOS/RHEL:**
96
+ ```bash
97
+ sudo yum install -y certbot python3-certbot-nginx
98
+ ```
99
+
100
+ **macOS:**
101
+ ```bash
102
+ brew install certbot
103
+ ```
104
+
105
+ ## Docker (ไม่บังคับ)
106
+
107
+ หากคุณวางแผนจะ deploy Docker containers ติดตั้ง Docker:
108
+
109
+ **Ubuntu/Debian:**
110
+ ```bash
111
+ sudo apt-get update
112
+ sudo apt-get install -y docker.io
113
+ sudo systemctl start docker
114
+ sudo systemctl enable docker
115
+ ```
116
+
117
+ **macOS:**
118
+ ```bash
119
+ brew install docker
120
+ ```
121
+
122
+ หรือดาวน์โหลด Docker Desktop จาก [docker.com](https://www.docker.com/products/docker-desktop)
123
+
124
+ ## หลังการติดตั้ง
125
+
126
+ หลังจากติดตั้ง คุณพร้อมที่จะ:
127
+
128
+ 1. **เริ่มต้นการตั้งค่าแรก:**
129
+ ```bash
130
+ suthep init
131
+ ```
132
+
133
+ 2. **หรือไปต่อที่คู่มือเริ่มต้นใช้งาน:**
134
+ ดู [คู่มือเริ่มต้นใช้งาน](./03-quick-start.md)
135
+
136
+ ## การแก้ปัญหาการติดตั้ง
137
+
138
+ ### Command Not Found
139
+
140
+ หากคุณได้รับข้อผิดพลาด "command not found":
141
+
142
+ 1. **ตรวจสอบการติดตั้ง Node.js:**
143
+ ```bash
144
+ node --version
145
+ npm --version
146
+ ```
147
+
148
+ 2. **ตรวจสอบ global bin path:**
149
+ ```bash
150
+ npm config get prefix
151
+ ```
152
+
153
+ 3. **เพิ่ม npm global bin ไปที่ PATH** (หากจำเป็น):
154
+ ```bash
155
+ export PATH="$PATH:$(npm config get prefix)/bin"
156
+ ```
157
+
158
+ ### ข้อผิดพลาดสิทธิ์
159
+
160
+ หากคุณพบข้อผิดพลาดสิทธิ์:
161
+
162
+ 1. **ใช้ sudo สำหรับการติดตั้งแบบ global:**
163
+ ```bash
164
+ sudo npm install -g suthep
165
+ ```
166
+
167
+ 2. **หรือตั้งค่า npm ให้ใช้ไดเรกทอรีอื่น:**
168
+ ```bash
169
+ mkdir ~/.npm-global
170
+ npm config set prefix '~/.npm-global'
171
+ export PATH=~/.npm-global/bin:$PATH
172
+ ```
173
+
174
+ ### ปัญหาการติดตั้ง Nginx/Certbot
175
+
176
+ หาก `suthep setup` ล้มเหลว:
177
+
178
+ 1. **ตรวจสอบ package manager ของคุณ:**
179
+ - Ubuntu/Debian: ตรวจสอบว่า `apt-get` พร้อมใช้งาน
180
+ - CentOS/RHEL: ตรวจสอบว่า `yum` พร้อมใช้งาน
181
+ - macOS: ตรวจสอบว่า Homebrew ติดตั้งแล้ว
182
+
183
+ 2. **รัน setup พร้อม verbose output:**
184
+ ```bash
185
+ suthep setup --verbose
186
+ ```
187
+
188
+ 3. **ติดตั้งสิ่งที่จำเป็นด้วยตนเอง** (ดูการติดตั้งด้วยตนเองด้านบน)
189
+
190
+ ## ขั้นตอนถัดไป
191
+
192
+ ตอนนี้ Suthep ติดตั้งแล้ว:
193
+
194
+ - [คู่มือเริ่มต้นใช้งาน](./03-quick-start.md) - Deploy บริการแรกของคุณ
195
+ - [คู่มือการตั้งค่า](./04-configuration.md) - เรียนรู้เกี่ยวกับตัวเลือกการตั้งค่า
196
+
197
+ ---
198
+
199
+ **ก่อนหน้า:** [บทนำ](./01-introduction.md) | **ถัดไป:** [เริ่มต้นใช้งาน →](./03-quick-start.md)
200
+
@@ -0,0 +1,258 @@
1
+ # คู่มือเริ่มต้นใช้งาน
2
+
3
+ คู่มือนี้จะช่วยให้คุณ deploy บริการแรกของคุณด้วย Suthep ในไม่กี่นาที
4
+
5
+ ## ขั้นตอนที่ 1: เริ่มต้นการตั้งค่า
6
+
7
+ สร้างไฟล์การตั้งค่าใหม่แบบโต้ตอบ:
8
+
9
+ ```bash
10
+ suthep init
11
+ ```
12
+
13
+ คำสั่งนี้จะถามคุณเกี่ยวกับ:
14
+ - ชื่อและเวอร์ชันโปรเจกต์
15
+ - รายละเอียดบริการ (ชื่อ, พอร์ต, โดเมน)
16
+ - การตั้งค่า Docker (หากจำเป็น)
17
+ - การตั้งค่า health check
18
+ - อีเมลสำหรับใบรับรอง SSL
19
+
20
+ หรือคุณสามารถคัดลอกการตั้งค่าตัวอย่าง:
21
+
22
+ ```bash
23
+ cp suthep.example.yml suthep.yml
24
+ ```
25
+
26
+ จากนั้นแก้ไข `suthep.yml` ด้วยการตั้งค่าของคุณ
27
+
28
+ ## ขั้นตอนที่ 2: ตั้งค่าสิ่งที่จำเป็น
29
+
30
+ ติดตั้งและตั้งค่า Nginx และ Certbot:
31
+
32
+ ```bash
33
+ suthep setup
34
+ ```
35
+
36
+ สิ่งนี้จะ:
37
+ - ติดตั้ง Nginx (หากยังไม่ได้ติดตั้ง)
38
+ - ติดตั้ง Certbot (หากยังไม่ได้ติดตั้ง)
39
+ - ตั้งค่าการพึ่งพาระบบ
40
+
41
+ **หมายเหตุ:** คำสั่งนี้ต้องการสิทธิ์ sudo
42
+
43
+ ## ขั้นตอนที่ 3: Deploy บริการของคุณ
44
+
45
+ Deploy โปรเจกต์ของคุณ:
46
+
47
+ ```bash
48
+ suthep deploy
49
+ ```
50
+
51
+ คำสั่งนี้จะ:
52
+ 1. ตั้งค่า Nginx reverse proxy สำหรับบริการทั้งหมด
53
+ 2. รับใบรับรอง SSL ผ่าน Certbot (หากเปิดใช้งาน)
54
+ 3. Deploy บริการด้วยกลยุทธ์ zero-downtime
55
+
56
+ ## ตัวอย่าง: Deploy API แบบง่าย
57
+
58
+ มาดูการ deploy บริการ API Node.js:
59
+
60
+ ### 1. สร้างการตั้งค่า
61
+
62
+ สร้าง `suthep.yml`:
63
+
64
+ ```yaml
65
+ project:
66
+ name: my-api
67
+ version: 1.0.0
68
+
69
+ services:
70
+ - name: api
71
+ port: 3000
72
+ domains:
73
+ - api.example.com
74
+ healthCheck:
75
+ path: /health
76
+ interval: 30
77
+ environment:
78
+ NODE_ENV: production
79
+
80
+ nginx:
81
+ configPath: /etc/nginx/sites-available
82
+ reloadCommand: sudo nginx -t && sudo systemctl reload nginx
83
+
84
+ certbot:
85
+ email: admin@example.com
86
+ staging: false
87
+
88
+ deployment:
89
+ strategy: rolling
90
+ healthCheckTimeout: 30000
91
+ ```
92
+
93
+ ### 2. ตั้งค่าสิ่งที่จำเป็น
94
+
95
+ ```bash
96
+ suthep setup
97
+ ```
98
+
99
+ ### 3. Deploy
100
+
101
+ ```bash
102
+ suthep deploy
103
+ ```
104
+
105
+ ### 4. ตรวจสอบการ Deploy
106
+
107
+ หลังจาก deploy Suthep จะแสดง URL บริการ:
108
+
109
+ ```
110
+ 📋 Service URLs:
111
+ api: https://api.example.com
112
+ ```
113
+
114
+ เยี่ยมชม URL ในเบราว์เซอร์ของคุณเพื่อตรวจสอบว่าบริการทำงานอยู่
115
+
116
+ ## ตัวอย่าง: Deploy Docker Container
117
+
118
+ เพื่อ deploy Docker container:
119
+
120
+ ```yaml
121
+ services:
122
+ - name: webapp
123
+ port: 8080
124
+ docker:
125
+ image: nginx:latest
126
+ container: webapp-container
127
+ port: 80
128
+ domains:
129
+ - example.com
130
+ - www.example.com
131
+ ```
132
+
133
+ จากนั้นรัน:
134
+
135
+ ```bash
136
+ suthep deploy
137
+ ```
138
+
139
+ ## คำสั่งทั่วไป
140
+
141
+ ### ตรวจสอบสถานะบริการ
142
+
143
+ ```bash
144
+ # ดูการตั้งค่า Nginx
145
+ sudo nginx -t
146
+
147
+ # ตรวจสอบ containers ที่กำลังรัน
148
+ docker ps
149
+
150
+ # ดู logs บริการ
151
+ docker logs <container-name>
152
+ ```
153
+
154
+ ### อัปเดตการตั้งค่า
155
+
156
+ 1. แก้ไข `suthep.yml`
157
+ 2. Redeploy (หยุดและ deploy อีกครั้ง):
158
+ ```bash
159
+ suthep down <service-name> && suthep deploy <service-name>
160
+ # หรือสำหรับบริการทั้งหมด:
161
+ suthep down --all && suthep deploy
162
+ ```
163
+
164
+ ### หยุดบริการ
165
+
166
+ ```bash
167
+ # หยุดบริการเฉพาะ
168
+ suthep down <service-name>
169
+
170
+ # หยุดบริการทั้งหมด
171
+ suthep down --all
172
+ ```
173
+
174
+ ### เริ่มบริการ
175
+
176
+ ```bash
177
+ # เริ่มบริการเฉพาะ
178
+ suthep up <service-name>
179
+
180
+ # เริ่มบริการทั้งหมด
181
+ suthep up --all
182
+ ```
183
+
184
+ ## สิ่งที่เกิดขึ้นระหว่างการ Deploy?
185
+
186
+ เมื่อคุณรัน `suthep deploy`, Suthep จะ:
187
+
188
+ 1. **โหลดการตั้งค่า** - อ่านไฟล์ `suthep.yml` ของคุณ
189
+ 2. **เริ่ม Docker Containers** - หากตั้งค่า Docker แล้ว จะเริ่ม containers
190
+ 3. **ตั้งค่า Nginx** - สร้างและเขียนไฟล์การตั้งค่า Nginx
191
+ 4. **เปิดใช้งาน Sites** - สร้าง symlinks เพื่อเปิดใช้งาน Nginx sites
192
+ 5. **รับใบรับรอง SSL** - ขอใบรับรองจาก Let's Encrypt
193
+ 6. **อัปเดต Nginx สำหรับ HTTPS** - เพิ่มการตั้งค่า SSL ไปที่ Nginx
194
+ 7. **Reload Nginx** - ใช้การเปลี่ยนแปลงทั้งหมด
195
+ 8. **ทำ Health Checks** - ตรวจสอบว่าบริการทำงานถูกต้อง
196
+
197
+ ## การแก้ปัญหาเริ่มต้นใช้งาน
198
+
199
+ ### โดเมนไม่ resolve
200
+
201
+ ตรวจสอบว่าโดเมนของคุณชี้ไปที่เซิร์ฟเวอร์ของคุณ:
202
+
203
+ ```bash
204
+ # ตรวจสอบ DNS
205
+ nslookup api.example.com
206
+
207
+ # ตรวจสอบว่า IP เซิร์ฟเวอร์ตรงกัน
208
+ curl -I http://api.example.com
209
+ ```
210
+
211
+ ### พอร์ตถูกใช้งานอยู่แล้ว
212
+
213
+ หากคุณได้รับข้อผิดพลาด "port already in use":
214
+
215
+ 1. **ค้นหาสิ่งที่ใช้พอร์ต:**
216
+ ```bash
217
+ sudo lsof -i :3000
218
+ ```
219
+
220
+ 2. **หยุดบริการที่ขัดแย้ง** หรือ **เปลี่ยนพอร์ต** ใน `suthep.yml`
221
+
222
+ ### ปัญหาใบรับรอง SSL
223
+
224
+ หากการสร้างใบรับรอง SSL ล้มเหลว:
225
+
226
+ 1. **ตรวจสอบ DNS โดเมน** - ตรวจสอบว่าโดเมนชี้ไปที่เซิร์ฟเวอร์ของคุณ
227
+ 2. **ใช้โหมด staging** สำหรับการทดสอบ:
228
+ ```yaml
229
+ certbot:
230
+ staging: true
231
+ ```
232
+
233
+ 3. **ตรวจสอบ firewall** - ตรวจสอบว่าพอร์ต 80 และ 443 เปิดอยู่
234
+
235
+ ### ข้อผิดพลาดการตั้งค่า Nginx
236
+
237
+ หาก Nginx reload ล้มเหลว:
238
+
239
+ ```bash
240
+ # ทดสอบการตั้งค่า Nginx
241
+ sudo nginx -t
242
+
243
+ # ตรวจสอบ error logs ของ Nginx
244
+ sudo tail -f /var/log/nginx/error.log
245
+ ```
246
+
247
+ ## ขั้นตอนถัดไป
248
+
249
+ ตอนนี้คุณได้ deploy บริการแรกของคุณแล้ว:
250
+
251
+ - [คู่มือการตั้งค่า](./04-configuration.md) - เรียนรู้เกี่ยวกับตัวเลือกการตั้งค่าทั้งหมด
252
+ - [คำสั่งอ้างอิง](./05-commands.md) - สำรวจคำสั่งทั้งหมดที่มี
253
+ - [ตัวอย่าง](./06-examples.md) - ดูตัวอย่างการ deploy เพิ่มเติม
254
+
255
+ ---
256
+
257
+ **ก่อนหน้า:** [การติดตั้ง](./02-installation.md) | **ถัดไป:** [คู่มือการตั้งค่า →](./04-configuration.md)
258
+