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,336 @@
1
+ # คำสั่งอ้างอิง
2
+
3
+ คู่มือนี้ครอบคลุมคำสั่ง Suthep ทั้งหมดที่มีและตัวเลือกของพวกเขา
4
+
5
+ ## ภาพรวมคำสั่ง
6
+
7
+ Suthep ให้คำสั่งต่อไปนี้:
8
+
9
+ - `suthep init` - เริ่มต้นไฟล์การตั้งค่า
10
+ - `suthep setup` - ตั้งค่าสิ่งที่จำเป็น
11
+ - `suthep deploy` - Deploy บริการ
12
+ - `suthep down` - หยุดบริการ
13
+ - `suthep up` - เริ่มบริการ
14
+
15
+ ## suthep init
16
+
17
+ เริ่มต้นไฟล์การตั้งค่า deployment ใหม่พร้อมพร้อมต์แบบโต้ตอบ
18
+
19
+ ### การใช้งาน
20
+
21
+ ```bash
22
+ suthep init [options]
23
+ ```
24
+
25
+ ### ตัวเลือก
26
+
27
+ | ตัวเลือก | ตัวย่อ | คำอธิบาย | ค่าเริ่มต้น |
28
+ |---------|--------|----------|-----------|
29
+ | `--file` | `-f` | Path ไฟล์การตั้งค่า | `suthep.yml` |
30
+
31
+ ### ตัวอย่าง
32
+
33
+ ```bash
34
+ # สร้างไฟล์การตั้งค่าเริ่มต้น
35
+ suthep init
36
+
37
+ # สร้างไฟล์การตั้งค่าแบบกำหนดเอง
38
+ suthep init -f my-config.yml
39
+ ```
40
+
41
+ ### พร้อมต์แบบโต้ตอบ
42
+
43
+ คำสั่ง `init` จะถามคุณเกี่ยวกับ:
44
+
45
+ 1. **ข้อมูลโปรเจกต์**
46
+ - ชื่อโปรเจกต์
47
+ - เวอร์ชันโปรเจกต์
48
+
49
+ 2. **การตั้งค่าบริการ** (สำหรับแต่ละบริการ)
50
+ - ชื่อบริการ
51
+ - พอร์ตบริการ
52
+ - ชื่อโดเมน (คั่นด้วยเครื่องหมายจุลภาค)
53
+ - การใช้ Docker
54
+ - Docker image (หากใช้ Docker)
55
+ - ชื่อ container
56
+ - พอร์ต container
57
+ - การตั้งค่า health check
58
+ - Health check path
59
+ - ช่วงเวลา health check
60
+
61
+ 3. **ใบรับรอง SSL**
62
+ - อีเมลสำหรับ Let's Encrypt
63
+ - สภาพแวดล้อม staging (สำหรับการทดสอบ)
64
+
65
+ ## suthep setup
66
+
67
+ ติดตั้งและตั้งค่า Nginx และ Certbot บนระบบของคุณ
68
+
69
+ ### การใช้งาน
70
+
71
+ ```bash
72
+ suthep setup [options]
73
+ ```
74
+
75
+ ### ตัวเลือก
76
+
77
+ | ตัวเลือก | คำอธิบาย |
78
+ |---------|----------|
79
+ | `--nginx-only` | ติดตั้งและตั้งค่าเฉพาะ Nginx |
80
+ | `--certbot-only` | ติดตั้งและตั้งค่าเฉพาะ Certbot |
81
+
82
+ ### ตัวอย่าง
83
+
84
+ ```bash
85
+ # ตั้งค่าทั้ง Nginx และ Certbot
86
+ suthep setup
87
+
88
+ # ตั้งค่าเฉพาะ Nginx
89
+ suthep setup --nginx-only
90
+
91
+ # ตั้งค่าเฉพาะ Certbot
92
+ suthep setup --certbot-only
93
+ ```
94
+
95
+ ### สิ่งที่มันทำ
96
+
97
+ 1. **ตรวจสอบการติดตั้งที่มีอยู่**
98
+ 2. **ติดตั้งส่วนประกอบที่หายไป:**
99
+ - Nginx (ผ่าน apt-get, yum, หรือ Homebrew)
100
+ - Certbot (ผ่าน apt-get, yum, หรือ Homebrew)
101
+ 3. **เริ่มและเปิดใช้งานบริการ**
102
+
103
+ **หมายเหตุ:** ต้องการสิทธิ์ sudo
104
+
105
+ ## suthep deploy
106
+
107
+ Deploy โปรเจกต์ของคุณโดยใช้ไฟล์การตั้งค่า
108
+
109
+ ### การใช้งาน
110
+
111
+ ```bash
112
+ suthep deploy [service-name] [options]
113
+ ```
114
+
115
+ ### อาร์กิวเมนต์
116
+
117
+ | อาร์กิวเมนต์ | คำอธิบาย |
118
+ |------------|----------|
119
+ | `service-name` | ชื่อของบริการที่จะ deploy (ไม่บังคับ, จะ deploy บริการทั้งหมดหากไม่ระบุ) |
120
+
121
+ ### ตัวเลือก
122
+
123
+ | ตัวเลือก | ตัวย่อ | คำอธิบาย | ค่าเริ่มต้น |
124
+ |---------|--------|----------|-----------|
125
+ | `--file` | `-f` | Path ไฟล์การตั้งค่า | `suthep.yml` |
126
+ | `--no-https` | - | ข้ามการตั้งค่า HTTPS/SSL certificate | `false` |
127
+ | `--no-nginx` | - | ข้ามการตั้งค่า Nginx | `false` |
128
+ | `--env` | `-e` | ตั้งค่า environment variables (สามารถใช้หลายครั้ง เช่น `-e KEY1=value1 -e KEY2=value2`) | - |
129
+
130
+ ### ตัวอย่าง
131
+
132
+ ```bash
133
+ # Deploy บริการทั้งหมดด้วยการตั้งค่าเริ่มต้น
134
+ suthep deploy
135
+
136
+ # Deploy บริการเฉพาะ
137
+ suthep deploy api
138
+
139
+ # Deploy ด้วยไฟล์ config แบบกำหนดเอง
140
+ suthep deploy -f production.yml
141
+
142
+ # Deploy บริการเฉพาะโดยไม่มี HTTPS (สำหรับการทดสอบ)
143
+ suthep deploy api --no-https
144
+
145
+ # Deploy โดยไม่มี Nginx (สำหรับการทดสอบ)
146
+ suthep deploy --no-nginx
147
+
148
+ # Deploy โดยไม่มีทั้งสอง
149
+ suthep deploy --no-https --no-nginx
150
+
151
+ # Deploy พร้อม environment variables
152
+ suthep deploy api -e NODE_ENV=production -e API_KEY=secret123
153
+
154
+ # Deploy พร้อม environment variables และ config แบบกำหนดเอง
155
+ suthep deploy -f production.yml -e DATABASE_URL=postgres://localhost/db -e REDIS_URL=redis://localhost
156
+ ```
157
+
158
+ ### สิ่งที่มันทำ
159
+
160
+ 1. **โหลดการตั้งค่า** จาก `suthep.yml`
161
+ 2. **เริ่ม Docker containers** (หากตั้งค่าแล้ว)
162
+ 3. **ตั้งค่า Nginx** reverse proxy
163
+ 4. **รับใบรับรอง SSL** (หากเปิดใช้งาน)
164
+ 5. **อัปเดต Nginx** ด้วยการตั้งค่า HTTPS
165
+ 6. **Reload Nginx** เพื่อใช้การเปลี่ยนแปลง
166
+ 7. **ทำ health checks** (หากตั้งค่าแล้ว)
167
+
168
+ ## suthep down
169
+
170
+ หยุดบริการ (หยุด containers และปิดการใช้งาน Nginx configs)
171
+
172
+ ### การใช้งาน
173
+
174
+ ```bash
175
+ suthep down [service-name] [options]
176
+ ```
177
+
178
+ ### อาร์กิวเมนต์
179
+
180
+ | อาร์กิวเมนต์ | คำอธิบาย |
181
+ |------------|----------|
182
+ | `service-name` | ชื่อของบริการที่จะหยุด (ไม่บังคับ) |
183
+
184
+ ### ตัวเลือก
185
+
186
+ | ตัวเลือก | ตัวย่อ | คำอธิบาย | ค่าเริ่มต้น |
187
+ |---------|--------|----------|-----------|
188
+ | `--file` | `-f` | Path ไฟล์การตั้งค่า | `suthep.yml` |
189
+ | `--all` | - | หยุดบริการทั้งหมด | `false` |
190
+
191
+ ### ตัวอย่าง
192
+
193
+ ```bash
194
+ # หยุดบริการเฉพาะ
195
+ suthep down api
196
+
197
+ # หยุดบริการทั้งหมด
198
+ suthep down --all
199
+
200
+ # หยุดด้วย config แบบกำหนดเอง
201
+ suthep down api -f production.yml
202
+ ```
203
+
204
+ ### สิ่งที่มันทำ
205
+
206
+ 1. **หยุด Docker containers** (หากตั้งค่าแล้ว)
207
+ 2. **ปิดการใช้งานการตั้งค่า Nginx**
208
+ 3. **Reload Nginx** เพื่อใช้การเปลี่ยนแปลง
209
+
210
+ ## suthep up
211
+
212
+ เริ่มบริการ (เริ่ม containers และเปิดใช้งาน Nginx configs)
213
+
214
+ ### การใช้งาน
215
+
216
+ ```bash
217
+ suthep up [service-name] [options]
218
+ ```
219
+
220
+ ### อาร์กิวเมนต์
221
+
222
+ | อาร์กิวเมนต์ | คำอธิบาย |
223
+ |------------|----------|
224
+ | `service-name` | ชื่อของบริการที่จะเริ่ม (ไม่บังคับ) |
225
+
226
+ ### ตัวเลือก
227
+
228
+ | ตัวเลือก | ตัวย่อ | คำอธิบาย | ค่าเริ่มต้น |
229
+ |---------|--------|----------|-----------|
230
+ | `--file` | `-f` | Path ไฟล์การตั้งค่า | `suthep.yml` |
231
+ | `--all` | - | เริ่มบริการทั้งหมด | `false` |
232
+ | `--no-https` | - | ข้ามการตั้งค่า HTTPS | `false` |
233
+ | `--no-nginx` | - | ข้ามการตั้งค่า Nginx | `false` |
234
+
235
+ ### ตัวอย่าง
236
+
237
+ ```bash
238
+ # เริ่มบริการเฉพาะ
239
+ suthep up api
240
+
241
+ # เริ่มบริการทั้งหมด
242
+ suthep up --all
243
+
244
+ # เริ่มโดยไม่มี HTTPS
245
+ suthep up api --no-https
246
+ ```
247
+
248
+ ### สิ่งที่มันทำ
249
+
250
+ 1. **เริ่ม Docker containers** (หากตั้งค่าแล้ว)
251
+ 2. **เปิดใช้งานการตั้งค่า Nginx**
252
+ 3. **ตั้งค่า HTTPS** (หากเปิดใช้งาน)
253
+ 4. **Reload Nginx** เพื่อใช้การเปลี่ยนแปลง
254
+
255
+ ## ตัวเลือก Global
256
+
257
+ คำสั่งทั้งหมดรองรับ:
258
+
259
+ - `--help` หรือ `-h` - แสดงข้อความช่วยเหลือ
260
+ - `--version` หรือ `-V` - แสดงหมายเลขเวอร์ชัน
261
+
262
+ ### ตัวอย่าง
263
+
264
+ ```bash
265
+ # แสดงความช่วยเหลือสำหรับคำสั่ง deploy
266
+ suthep deploy --help
267
+
268
+ # แสดงเวอร์ชัน
269
+ suthep --version
270
+ ```
271
+
272
+ ## Workflow คำสั่ง
273
+
274
+ ### Workflow การ Deploy ทั่วไป
275
+
276
+ ```bash
277
+ # 1. เริ่มต้นการตั้งค่า
278
+ suthep init
279
+
280
+ # 2. ตั้งค่าสิ่งที่จำเป็น (ครั้งแรกเท่านั้น)
281
+ suthep setup
282
+
283
+ # 3. Deploy บริการ
284
+ suthep deploy
285
+ ```
286
+
287
+ ### Workflow การอัปเดต
288
+
289
+ ```bash
290
+ # 1. แก้ไข suthep.yml
291
+ nano suthep.yml
292
+
293
+ # 2. Redeploy (หยุดและ deploy อีกครั้ง)
294
+ suthep down api && suthep deploy api
295
+
296
+ # หรือ redeploy บริการทั้งหมด
297
+ suthep down --all && suthep deploy
298
+ ```
299
+
300
+ ### Workflow การบำรุงรักษา
301
+
302
+ ```bash
303
+ # หยุดบริการเพื่อการบำรุงรักษา
304
+ suthep down --all
305
+
306
+ # ... ทำการบำรุงรักษา ...
307
+
308
+ # เริ่มบริการอีกครั้ง
309
+ suthep up --all
310
+ ```
311
+
312
+ ## Exit Codes
313
+
314
+ Suthep ใช้ exit codes ต่อไปนี้:
315
+
316
+ - `0` - สำเร็จ
317
+ - `1` - ข้อผิดพลาด (ข้อผิดพลาดการตั้งค่า, การ deploy ล้มเหลว, ฯลฯ)
318
+
319
+ ## การจัดการข้อผิดพลาด
320
+
321
+ หากคำสั่งล้มเหลว:
322
+
323
+ 1. **ตรวจสอบข้อความข้อผิดพลาด** - มักจะระบุสิ่งที่ผิดพลาด
324
+ 2. **ตรวจสอบการตั้งค่า** - ตรวจสอบว่า `suthep.yml` ถูกต้อง
325
+ 3. **ตรวจสอบสิ่งที่จำเป็น** - ตรวจสอบว่า Nginx และ Certbot ติดตั้งแล้ว
326
+ 4. **ตรวจสอบ logs** - ตรวจสอบ logs ของ Nginx และ Docker สำหรับรายละเอียด
327
+
328
+ ## ขั้นตอนถัดไป
329
+
330
+ - [ตัวอย่าง](./06-examples.md) - ดูคำสั่งในการทำงาน
331
+ - [การแก้ปัญหา](./07-troubleshooting.md) - ปัญหาที่พบบ่อยและวิธีแก้ไข
332
+
333
+ ---
334
+
335
+ **ก่อนหน้า:** [คู่มือการตั้งค่า](./04-configuration.md) | **ถัดไป:** [ตัวอย่าง →](./06-examples.md)
336
+