suthep 0.1.0-beta.1 → 0.2.0-beta.1

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 (69) hide show
  1. package/README.md +167 -69
  2. package/dist/commands/down.js +179 -0
  3. package/dist/commands/down.js.map +1 -0
  4. package/dist/commands/redeploy.js +59 -0
  5. package/dist/commands/redeploy.js.map +1 -0
  6. package/dist/commands/up.js +213 -0
  7. package/dist/commands/up.js.map +1 -0
  8. package/dist/index.js +28 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/utils/deployment.js +10 -1
  11. package/dist/utils/deployment.js.map +1 -1
  12. package/dist/utils/docker.js +35 -0
  13. package/dist/utils/docker.js.map +1 -1
  14. package/dist/utils/nginx.js +10 -0
  15. package/dist/utils/nginx.js.map +1 -1
  16. package/docs/README.md +25 -82
  17. package/docs/english/01-introduction.md +84 -0
  18. package/docs/english/02-installation.md +200 -0
  19. package/docs/english/03-quick-start.md +256 -0
  20. package/docs/english/04-configuration.md +358 -0
  21. package/docs/english/05-commands.md +363 -0
  22. package/docs/english/06-examples.md +456 -0
  23. package/docs/english/07-troubleshooting.md +417 -0
  24. package/docs/english/08-advanced.md +411 -0
  25. package/docs/english/README.md +48 -0
  26. package/docs/thai/01-introduction.md +84 -0
  27. package/docs/thai/02-installation.md +200 -0
  28. package/docs/thai/03-quick-start.md +256 -0
  29. package/docs/thai/04-configuration.md +358 -0
  30. package/docs/thai/05-commands.md +363 -0
  31. package/docs/thai/06-examples.md +456 -0
  32. package/docs/thai/07-troubleshooting.md +417 -0
  33. package/docs/thai/08-advanced.md +411 -0
  34. package/docs/thai/README.md +48 -0
  35. package/example/README.md +282 -53
  36. package/example/suthep-complete.yml +103 -0
  37. package/example/suthep-docker-only.yml +71 -0
  38. package/example/suthep-no-docker.yml +51 -0
  39. package/example/{muacle.yml → suthep-path-routing.yml} +20 -5
  40. package/example/suthep.example.yml +89 -0
  41. package/package.json +1 -1
  42. package/src/commands/down.ts +240 -0
  43. package/src/commands/redeploy.ts +78 -0
  44. package/src/commands/up.ts +271 -0
  45. package/src/index.ts +53 -0
  46. package/suthep-0.1.0-beta.1.tgz +0 -0
  47. package/suthep.example.yml +5 -0
  48. package/suthep.yml +39 -0
  49. package/docs/TRANSLATIONS.md +0 -211
  50. package/docs/en/README.md +0 -76
  51. package/docs/en/api-reference.md +0 -545
  52. package/docs/en/architecture.md +0 -369
  53. package/docs/en/commands.md +0 -273
  54. package/docs/en/configuration.md +0 -347
  55. package/docs/en/developer-guide.md +0 -588
  56. package/docs/en/docker-ports-config.md +0 -333
  57. package/docs/en/examples.md +0 -537
  58. package/docs/en/getting-started.md +0 -202
  59. package/docs/en/port-binding.md +0 -268
  60. package/docs/en/troubleshooting.md +0 -441
  61. package/docs/th/README.md +0 -64
  62. package/docs/th/commands.md +0 -202
  63. package/docs/th/configuration.md +0 -325
  64. package/docs/th/getting-started.md +0 -203
  65. package/example/docker-compose.yml +0 -76
  66. package/example/docker-ports-example.yml +0 -81
  67. package/example/port-binding-example.yml +0 -45
  68. package/example/suthep.yml +0 -46
  69. package/example/suthep=1.yml +0 -46
@@ -0,0 +1,358 @@
1
+ # คู่มือการตั้งค่า
2
+
3
+ คู่มือนี้ครอบคลุมตัวเลือกการตั้งค่าทั้งหมดที่มีในไฟล์ `suthep.yml` ของ Suthep
4
+
5
+ ## โครงสร้างไฟล์การตั้งค่า
6
+
7
+ ไฟล์ `suthep.yml` ใช้รูปแบบ YAML และประกอบด้วยหลายส่วน:
8
+
9
+ ```yaml
10
+ project:
11
+ # ข้อมูลโปรเจกต์
12
+
13
+ services:
14
+ # คำจำกัดความบริการ
15
+
16
+ nginx:
17
+ # การตั้งค่า Nginx
18
+
19
+ certbot:
20
+ # การตั้งค่าใบรับรอง SSL
21
+
22
+ deployment:
23
+ # การตั้งค่ากลยุทธ์การ deploy
24
+ ```
25
+
26
+ ## การตั้งค่าโปรเจกต์
27
+
28
+ ส่วน `project` ประกอบด้วยข้อมูลเกี่ยวกับโปรเจกต์ของคุณ:
29
+
30
+ ```yaml
31
+ project:
32
+ name: my-app # ชื่อโปรเจกต์
33
+ version: 1.0.0 # เวอร์ชันโปรเจกต์
34
+ ```
35
+
36
+ ### ฟิลด์
37
+
38
+ | ฟิลด์ | จำเป็น | คำอธิบาย |
39
+ |-------|--------|----------|
40
+ | `name` | ใช่ | ตัวระบุเฉพาะสำหรับโปรเจกต์ของคุณ |
41
+ | `version` | ใช่ | เวอร์ชันโปรเจกต์ (สำหรับการติดตาม) |
42
+
43
+ ## การตั้งค่าบริการ
44
+
45
+ อาร์เรย์ `services` กำหนดบริการทั้งหมดที่จะ deploy แต่ละบริการสามารถมีการตั้งค่าหลายอย่าง
46
+
47
+ ### บริการพื้นฐาน
48
+
49
+ ```yaml
50
+ services:
51
+ - name: api
52
+ port: 3000
53
+ domains:
54
+ - api.example.com
55
+ ```
56
+
57
+ ### ฟิลด์บริการ
58
+
59
+ | ฟิลด์ | จำเป็น | ประเภท | คำอธิบาย |
60
+ |-------|--------|--------|----------|
61
+ | `name` | ใช่ | string | ตัวระบุบริการเฉพาะ |
62
+ | `port` | ใช่ | number | หมายเลขพอร์ตที่บริการรัน (host port) |
63
+ | `domains` | ใช่ | array | อาร์เรย์ของชื่อโดเมนสำหรับบริการนี้ |
64
+ | `path` | ไม่ | string | คำนำหน้า URL path (ค่าเริ่มต้น: `/`) |
65
+ | `docker` | ไม่ | object | การตั้งค่า Docker (ดูด้านล่าง) |
66
+ | `healthCheck` | ไม่ | object | การตั้งค่า health check (ดูด้านล่าง) |
67
+ | `environment` | ไม่ | object | ตัวแปรสภาพแวดล้อมเป็นคู่ key-value |
68
+
69
+ ### การตั้งค่า Docker
70
+
71
+ ตั้งค่า deployment ของ Docker container:
72
+
73
+ ```yaml
74
+ services:
75
+ - name: webapp
76
+ port: 8080
77
+ docker:
78
+ image: nginx:latest # Docker image ที่จะ pull
79
+ container: webapp-container # ชื่อ container
80
+ port: 80 # พอร์ตภายใน container
81
+ ```
82
+
83
+ #### ฟิลด์ Docker
84
+
85
+ | ฟิลด์ | จำเป็น | คำอธิบาย |
86
+ |-------|--------|----------|
87
+ | `image` | ไม่* | Docker image ที่จะ pull และรัน |
88
+ | `container` | ใช่ | ชื่อสำหรับ Docker container |
89
+ | `port` | ใช่ | พอร์ตภายในที่ container ฟัง |
90
+
91
+ \* `image` ไม่บังคับหากเชื่อมต่อกับ container ที่มีอยู่แล้ว
92
+
93
+ #### เชื่อมต่อกับ Container ที่มีอยู่
94
+
95
+ เพื่อเชื่อมต่อกับ container ที่กำลังรันอยู่แล้ว ให้ละเว้นฟิลด์ `image`:
96
+
97
+ ```yaml
98
+ services:
99
+ - name: database-proxy
100
+ port: 5432
101
+ docker:
102
+ container: postgres-container
103
+ port: 5432
104
+ ```
105
+
106
+ ### การตั้งค่า Health Check
107
+
108
+ ตั้งค่าการตรวจสอบสุขภาพสำหรับบริการของคุณ:
109
+
110
+ ```yaml
111
+ services:
112
+ - name: api
113
+ healthCheck:
114
+ path: /health # Health check endpoint
115
+ interval: 30 # ช่วงเวลาการตรวจสอบเป็นวินาที
116
+ ```
117
+
118
+ #### ฟิลด์ Health Check
119
+
120
+ | ฟิลด์ | จำเป็น | ค่าเริ่มต้น | คำอธิบาย |
121
+ |-------|--------|------------|----------|
122
+ | `path` | ใช่ | - | HTTP endpoint path สำหรับ health checks |
123
+ | `interval` | ไม่ | 30 | เวลาระหว่าง health checks (วินาที) |
124
+
125
+ ### ตัวแปรสภาพแวดล้อม
126
+
127
+ ตั้งค่าตัวแปรสภาพแวดล้อมสำหรับบริการของคุณ:
128
+
129
+ ```yaml
130
+ services:
131
+ - name: api
132
+ environment:
133
+ NODE_ENV: production
134
+ DATABASE_URL: postgresql://localhost:5432/mydb
135
+ API_KEY: your-api-key
136
+ ```
137
+
138
+ ### Path-Based Routing
139
+
140
+ กำหนดเส้นทางบริการต่างๆ บนโดเมนเดียวกันโดยใช้ paths:
141
+
142
+ ```yaml
143
+ services:
144
+ # บริการ API บน path /api
145
+ - name: api
146
+ port: 3001
147
+ path: /api
148
+ domains:
149
+ - example.com
150
+
151
+ # บริการ UI บน root path
152
+ - name: ui
153
+ port: 3000
154
+ path: /
155
+ domains:
156
+ - example.com
157
+ ```
158
+
159
+ ## การตั้งค่า Nginx
160
+
161
+ ตั้งค่าการตั้งค่า Nginx:
162
+
163
+ ```yaml
164
+ nginx:
165
+ configPath: /etc/nginx/sites-available
166
+ reloadCommand: sudo nginx -t && sudo systemctl reload nginx
167
+ ```
168
+
169
+ ### ฟิลด์ Nginx
170
+
171
+ | ฟิลด์ | จำเป็น | ค่าเริ่มต้น | คำอธิบาย |
172
+ |-------|--------|------------|----------|
173
+ | `configPath` | ไม่ | `/etc/nginx/sites-available` | Path ที่เก็บ configs ของ Nginx |
174
+ | `reloadCommand` | ไม่ | `sudo nginx -t && sudo systemctl reload nginx` | คำสั่งเพื่อ reload Nginx |
175
+
176
+ ## การตั้งค่า Certbot
177
+
178
+ ตั้งค่าการตั้งค่าใบรับรอง SSL:
179
+
180
+ ```yaml
181
+ certbot:
182
+ email: admin@example.com # อีเมลสำหรับ Let's Encrypt
183
+ staging: false # ใช้สภาพแวดล้อม staging (สำหรับการทดสอบ)
184
+ ```
185
+
186
+ ### ฟิลด์ Certbot
187
+
188
+ | ฟิลด์ | จำเป็น | คำอธิบาย |
189
+ |-------|--------|----------|
190
+ | `email` | ใช่ | ที่อยู่อีเมลสำหรับการแจ้งเตือน Let's Encrypt |
191
+ | `staging` | ไม่ | ใช้สภาพแวดล้อม staging (ค่าเริ่มต้น: `false`) |
192
+
193
+ **หมายเหตุ:** ใช้ `staging: true` สำหรับการทดสอบเพื่อหลีกเลี่ยง rate limits
194
+
195
+ ## การตั้งค่า Deployment
196
+
197
+ ตั้งค่ากลยุทธ์การ deploy:
198
+
199
+ ```yaml
200
+ deployment:
201
+ strategy: rolling # กลยุทธ์การ deploy
202
+ healthCheckTimeout: 30000 # Health check timeout (ms)
203
+ ```
204
+
205
+ ### ฟิลด์ Deployment
206
+
207
+ | ฟิลด์ | จำเป็น | ค่าเริ่มต้น | คำอธิบาย |
208
+ |-------|--------|------------|----------|
209
+ | `strategy` | ไม่ | `rolling` | กลยุทธ์การ deploy (`rolling` หรือ `blue-green`) |
210
+ | `healthCheckTimeout` | ไม่ | `30000` | เวลาสูงสุดในการรอ health check (มิลลิวินาที) |
211
+
212
+ ### กลยุทธ์การ Deploy
213
+
214
+ #### Rolling Deployment
215
+
216
+ แทนที่ containers เก่าด้วยใหม่ทีละน้อย:
217
+
218
+ ```yaml
219
+ deployment:
220
+ strategy: rolling
221
+ ```
222
+
223
+ #### Blue-Green Deployment
224
+
225
+ สร้าง containers ใหม่, สลับ traffic, จากนั้นลบ containers เก่า:
226
+
227
+ ```yaml
228
+ deployment:
229
+ strategy: blue-green
230
+ ```
231
+
232
+ ## ตัวอย่างการตั้งค่าที่สมบูรณ์
233
+
234
+ นี่คือตัวอย่างที่สมบูรณ์พร้อมตัวเลือกทั้งหมด:
235
+
236
+ ```yaml
237
+ project:
238
+ name: my-app
239
+ version: 1.0.0
240
+
241
+ services:
242
+ # บริการ API แบบง่าย
243
+ - name: api
244
+ port: 3000
245
+ domains:
246
+ - api.example.com
247
+ healthCheck:
248
+ path: /health
249
+ interval: 30
250
+ environment:
251
+ NODE_ENV: production
252
+
253
+ # Docker webapp
254
+ - name: webapp
255
+ port: 8080
256
+ docker:
257
+ image: nginx:latest
258
+ container: webapp-container
259
+ port: 80
260
+ domains:
261
+ - example.com
262
+ - www.example.com
263
+ healthCheck:
264
+ path: /
265
+ interval: 30
266
+
267
+ # หลายบริการบนโดเมนเดียวกัน
268
+ - name: api-v2
269
+ port: 3001
270
+ path: /api
271
+ domains:
272
+ - example.com
273
+ docker:
274
+ image: myapp/api:latest
275
+ container: api-v2-container
276
+ port: 3001
277
+
278
+ nginx:
279
+ configPath: /etc/nginx/sites-available
280
+ reloadCommand: sudo nginx -t && sudo systemctl reload nginx
281
+
282
+ certbot:
283
+ email: admin@example.com
284
+ staging: false
285
+
286
+ deployment:
287
+ strategy: rolling
288
+ healthCheckTimeout: 30000
289
+ ```
290
+
291
+ ## วิธีปฏิบัติที่ดีในการตั้งค่า
292
+
293
+ ### 1. ใช้ชื่อบริการที่อธิบายได้
294
+
295
+ ```yaml
296
+ # ดี
297
+ - name: user-api
298
+ - name: payment-service
299
+
300
+ # หลีกเลี่ยง
301
+ - name: service1
302
+ - name: app
303
+ ```
304
+
305
+ ### 2. ตั้งค่าช่วงเวลา Health Check ที่เหมาะสม
306
+
307
+ ```yaml
308
+ # สำหรับบริการที่สำคัญ
309
+ healthCheck:
310
+ interval: 15 # ตรวจสอบทุก 15 วินาที
311
+
312
+ # สำหรับบริการที่สำคัญน้อยกว่า
313
+ healthCheck:
314
+ interval: 60 # ตรวจสอบทุกนาที
315
+ ```
316
+
317
+ ### 3. ใช้ Staging สำหรับการทดสอบ
318
+
319
+ ```yaml
320
+ certbot:
321
+ staging: true # ใช้ staging สำหรับการทดสอบ
322
+ ```
323
+
324
+ ### 4. จัดระเบียบบริการตามโดเมน
325
+
326
+ จัดกลุ่มบริการที่เกี่ยวข้องกันในการตั้งค่าของคุณ:
327
+
328
+ ```yaml
329
+ services:
330
+ # บริการ API
331
+ - name: api
332
+ domains: [api.example.com]
333
+ - name: api-v2
334
+ domains: [api-v2.example.com]
335
+
336
+ # บริการเว็บ
337
+ - name: webapp
338
+ domains: [example.com, www.example.com]
339
+ ```
340
+
341
+ ## การตรวจสอบความถูกต้อง
342
+
343
+ Suthep ตรวจสอบความถูกต้องของการตั้งค่าของคุณก่อน deploy ข้อผิดพลาดการตรวจสอบที่พบบ่อย:
344
+
345
+ - **ฟิลด์ที่จำเป็นหายไป** - ตรวจสอบว่าฟิลด์ที่จำเป็นทั้งหมดมีอยู่
346
+ - **หมายเลขพอร์ตไม่ถูกต้อง** - พอร์ตต้องอยู่ระหว่าง 1 และ 65535
347
+ - **ชื่อบริการซ้ำ** - แต่ละบริการต้องมีชื่อเฉพาะ
348
+ - **รูปแบบโดเมนไม่ถูกต้อง** - โดเมนต้องเป็น hostname ที่ถูกต้อง
349
+
350
+ ## ขั้นตอนถัดไป
351
+
352
+ - [คำสั่งอ้างอิง](./05-commands.md) - เรียนรู้เกี่ยวกับคำสั่งทั้งหมดที่มี
353
+ - [ตัวอย่าง](./06-examples.md) - ดูตัวอย่างการตั้งค่าในโลกจริง
354
+
355
+ ---
356
+
357
+ **ก่อนหน้า:** [เริ่มต้นใช้งาน](./03-quick-start.md) | **ถัดไป:** [คำสั่งอ้างอิง →](./05-commands.md)
358
+