suthep 0.1.0 → 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 (72) hide show
  1. package/README.md +172 -71
  2. package/dist/commands/deploy.js +251 -37
  3. package/dist/commands/deploy.js.map +1 -1
  4. package/dist/commands/down.js +179 -0
  5. package/dist/commands/down.js.map +1 -0
  6. package/dist/commands/redeploy.js +59 -0
  7. package/dist/commands/redeploy.js.map +1 -0
  8. package/dist/commands/up.js +213 -0
  9. package/dist/commands/up.js.map +1 -0
  10. package/dist/index.js +36 -1
  11. package/dist/index.js.map +1 -1
  12. package/dist/utils/certbot.js +40 -3
  13. package/dist/utils/certbot.js.map +1 -1
  14. package/dist/utils/config-loader.js +30 -0
  15. package/dist/utils/config-loader.js.map +1 -1
  16. package/dist/utils/deployment.js +49 -16
  17. package/dist/utils/deployment.js.map +1 -1
  18. package/dist/utils/docker.js +396 -25
  19. package/dist/utils/docker.js.map +1 -1
  20. package/dist/utils/nginx.js +167 -8
  21. package/dist/utils/nginx.js.map +1 -1
  22. package/docs/README.md +25 -49
  23. package/docs/english/01-introduction.md +84 -0
  24. package/docs/english/02-installation.md +200 -0
  25. package/docs/english/03-quick-start.md +256 -0
  26. package/docs/english/04-configuration.md +358 -0
  27. package/docs/english/05-commands.md +363 -0
  28. package/docs/english/06-examples.md +456 -0
  29. package/docs/english/07-troubleshooting.md +417 -0
  30. package/docs/english/08-advanced.md +411 -0
  31. package/docs/english/README.md +48 -0
  32. package/docs/thai/01-introduction.md +84 -0
  33. package/docs/thai/02-installation.md +200 -0
  34. package/docs/thai/03-quick-start.md +256 -0
  35. package/docs/thai/04-configuration.md +358 -0
  36. package/docs/thai/05-commands.md +363 -0
  37. package/docs/thai/06-examples.md +456 -0
  38. package/docs/thai/07-troubleshooting.md +417 -0
  39. package/docs/thai/08-advanced.md +411 -0
  40. package/docs/thai/README.md +48 -0
  41. package/example/README.md +286 -53
  42. package/example/suthep-complete.yml +103 -0
  43. package/example/suthep-docker-only.yml +71 -0
  44. package/example/suthep-no-docker.yml +51 -0
  45. package/example/suthep-path-routing.yml +62 -0
  46. package/example/suthep.example.yml +89 -0
  47. package/package.json +1 -1
  48. package/src/commands/deploy.ts +322 -50
  49. package/src/commands/down.ts +240 -0
  50. package/src/commands/redeploy.ts +78 -0
  51. package/src/commands/up.ts +271 -0
  52. package/src/index.ts +62 -1
  53. package/src/types/config.ts +25 -24
  54. package/src/utils/certbot.ts +68 -6
  55. package/src/utils/config-loader.ts +40 -0
  56. package/src/utils/deployment.ts +61 -36
  57. package/src/utils/docker.ts +634 -30
  58. package/src/utils/nginx.ts +187 -4
  59. package/suthep-0.1.0-beta.1.tgz +0 -0
  60. package/suthep-0.1.1.tgz +0 -0
  61. package/suthep.example.yml +34 -0
  62. package/suthep.yml +39 -0
  63. package/test +0 -0
  64. package/docs/api-reference.md +0 -545
  65. package/docs/architecture.md +0 -367
  66. package/docs/commands.md +0 -273
  67. package/docs/configuration.md +0 -347
  68. package/docs/examples.md +0 -537
  69. package/docs/getting-started.md +0 -197
  70. package/docs/troubleshooting.md +0 -441
  71. package/example/docker-compose.yml +0 -72
  72. package/example/suthep.yml +0 -31
@@ -0,0 +1,417 @@
1
+ # คู่มือการแก้ปัญหา
2
+
3
+ คู่มือนี้ช่วยให้คุณแก้ปัญหาที่พบบ่อยเมื่อใช้ Suthep
4
+
5
+ ## ปัญหาที่พบบ่อย
6
+
7
+ ### ไม่พบไฟล์การตั้งค่า
8
+
9
+ **ข้อผิดพลาด:**
10
+ ```
11
+ Configuration file not found: suthep.yml
12
+ ```
13
+
14
+ **วิธีแก้ไข:**
15
+ 1. ตรวจสอบว่าคุณอยู่ในไดเรกทอรีที่ถูกต้อง
16
+ 2. ตรวจสอบว่า `suthep.yml` มีอยู่:
17
+ ```bash
18
+ ls -la suthep.yml
19
+ ```
20
+ 3. สร้างไฟล์การตั้งค่า:
21
+ ```bash
22
+ suthep init
23
+ ```
24
+ 4. หรือระบุ path แบบกำหนดเอง:
25
+ ```bash
26
+ suthep deploy -f /path/to/config.yml
27
+ ```
28
+
29
+ ### พอร์ตถูกใช้งานอยู่แล้ว
30
+
31
+ **ข้อผิดพลาด:**
32
+ ```
33
+ Error: Port 3000 is already in use
34
+ ```
35
+
36
+ **วิธีแก้ไข:**
37
+ 1. ค้นหาสิ่งที่ใช้พอร์ต:
38
+ ```bash
39
+ sudo lsof -i :3000
40
+ # หรือ
41
+ sudo netstat -tulpn | grep 3000
42
+ ```
43
+
44
+ 2. หยุดบริการที่ขัดแย้งหรือเปลี่ยนพอร์ตใน `suthep.yml`:
45
+ ```yaml
46
+ services:
47
+ - name: api
48
+ port: 3001 # เปลี่ยนจาก 3000
49
+ ```
50
+
51
+ ### การสร้างใบรับรอง SSL ล้มเหลว
52
+
53
+ **ข้อผิดพลาด:**
54
+ ```
55
+ Failed to obtain SSL certificate for example.com
56
+ ```
57
+
58
+ **วิธีแก้ไข:**
59
+
60
+ 1. **ตรวจสอบการตั้งค่า DNS**
61
+ ```bash
62
+ nslookup example.com
63
+ # ตรวจสอบว่าโดเมนชี้ไปที่ IP เซิร์ฟเวอร์ของคุณ
64
+ ```
65
+
66
+ 2. **ตรวจสอบว่าพอร์ตเปิดอยู่**
67
+ ```bash
68
+ # ตรวจสอบว่าพอร์ต 80 และ 443 เปิดอยู่
69
+ sudo ufw status
70
+ # หรือ
71
+ sudo iptables -L
72
+ ```
73
+
74
+ 3. **ใช้โหมด Staging สำหรับการทดสอบ**
75
+ ```yaml
76
+ certbot:
77
+ staging: true # ใช้ staging เพื่อหลีกเลี่ยง rate limits
78
+ ```
79
+
80
+ 4. **ตรวจสอบการเข้าถึงโดเมน**
81
+ ```bash
82
+ curl -I http://example.com
83
+ # ควรคืนค่า HTTP response
84
+ ```
85
+
86
+ 5. **ตรวจสอบ Logs ของ Certbot**
87
+ ```bash
88
+ sudo tail -f /var/log/letsencrypt/letsencrypt.log
89
+ ```
90
+
91
+ ### ข้อผิดพลาดการตั้งค่า Nginx
92
+
93
+ **ข้อผิดพลาด:**
94
+ ```
95
+ nginx: configuration file /etc/nginx/nginx.conf test failed
96
+ ```
97
+
98
+ **วิธีแก้ไข:**
99
+
100
+ 1. **ทดสอบการตั้งค่า Nginx**
101
+ ```bash
102
+ sudo nginx -t
103
+ ```
104
+
105
+ 2. **ตรวจสอบ Error Logs ของ Nginx**
106
+ ```bash
107
+ sudo tail -f /var/log/nginx/error.log
108
+ ```
109
+
110
+ 3. **ตรวจสอบไฟล์ Config ที่สร้างขึ้น**
111
+ ```bash
112
+ ls -la /etc/nginx/sites-available/
113
+ cat /etc/nginx/sites-available/example_com.conf
114
+ ```
115
+
116
+ 4. **ตรวจสอบไวยากรณ์ Nginx**
117
+ ```bash
118
+ sudo nginx -t -c /etc/nginx/nginx.conf
119
+ ```
120
+
121
+ ### ปัญหา Docker Container
122
+
123
+ **ข้อผิดพลาด:**
124
+ ```
125
+ Error: Docker container failed to start
126
+ ```
127
+
128
+ **วิธีแก้ไข:**
129
+
130
+ 1. **ตรวจสอบสถานะ Docker**
131
+ ```bash
132
+ docker ps
133
+ docker ps -a # แสดง containers ทั้งหมด
134
+ ```
135
+
136
+ 2. **ตรวจสอบ Logs ของ Container**
137
+ ```bash
138
+ docker logs <container-name>
139
+ ```
140
+
141
+ 3. **ตรวจสอบ Docker Image**
142
+ ```bash
143
+ docker images
144
+ docker pull <image-name> # Pull image ล่าสุด
145
+ ```
146
+
147
+ 4. **ตรวจสอบความขัดแย้งของพอร์ต**
148
+ ```bash
149
+ docker ps | grep <port>
150
+ ```
151
+
152
+ 5. **ลบ Containers เก่า**
153
+ ```bash
154
+ docker rm <container-name>
155
+ ```
156
+
157
+ ### Health Check ล้มเหลว
158
+
159
+ **ข้อผิดพลาด:**
160
+ ```
161
+ Health check failed for service api
162
+ ```
163
+
164
+ **วิธีแก้ไข:**
165
+
166
+ 1. **ตรวจสอบ Health Check Endpoint**
167
+ ```bash
168
+ curl http://localhost:3000/health
169
+ ```
170
+
171
+ 2. **ตรวจสอบว่าบริการกำลังรัน**
172
+ ```bash
173
+ # สำหรับ Docker
174
+ docker ps
175
+ docker logs <container-name>
176
+
177
+ # สำหรับ non-Docker
178
+ ps aux | grep <service>
179
+ ```
180
+
181
+ 3. **เพิ่ม Health Check Timeout**
182
+ ```yaml
183
+ deployment:
184
+ healthCheckTimeout: 60000 # เพิ่มเป็น 60 วินาที
185
+ ```
186
+
187
+ 4. **ตรวจสอบ Health Check Path**
188
+ ```yaml
189
+ services:
190
+ - name: api
191
+ healthCheck:
192
+ path: /health # ตรวจสอบว่า path นี้มีอยู่
193
+ ```
194
+
195
+ ### ข้อผิดพลาด Permission Denied
196
+
197
+ **ข้อผิดพลาด:**
198
+ ```
199
+ Permission denied: /etc/nginx/sites-available/example.conf
200
+ ```
201
+
202
+ **วิธีแก้ไข:**
203
+
204
+ 1. **ใช้ Sudo**
205
+ ```bash
206
+ sudo suthep deploy
207
+ ```
208
+
209
+ 2. **ตรวจสอบสิทธิ์ไฟล์**
210
+ ```bash
211
+ ls -la /etc/nginx/sites-available/
212
+ ```
213
+
214
+ 3. **ตรวจสอบสิทธิ์ผู้ใช้**
215
+ ```bash
216
+ groups # ตรวจสอบกลุ่มผู้ใช้ของคุณ
217
+ ```
218
+
219
+ ### บริการไม่สามารถเข้าถึงได้
220
+
221
+ **ปัญหา:** บริการ deploy แล้วแต่ไม่สามารถเข้าถึงผ่านโดเมนได้
222
+
223
+ **วิธีแก้ไข:**
224
+
225
+ 1. **ตรวจสอบสถานะ Nginx**
226
+ ```bash
227
+ sudo systemctl status nginx
228
+ ```
229
+
230
+ 2. **ตรวจสอบว่า Site เปิดใช้งาน**
231
+ ```bash
232
+ ls -la /etc/nginx/sites-enabled/
233
+ # ควรมี symlink ไปยัง sites-available config
234
+ ```
235
+
236
+ 3. **ตรวจสอบ DNS Resolution**
237
+ ```bash
238
+ nslookup example.com
239
+ dig example.com
240
+ ```
241
+
242
+ 4. **ทดสอบการเชื่อมต่อ Local**
243
+ ```bash
244
+ curl http://localhost:3000
245
+ ```
246
+
247
+ 5. **ตรวจสอบ Firewall**
248
+ ```bash
249
+ sudo ufw status
250
+ sudo ufw allow 80/tcp
251
+ sudo ufw allow 443/tcp
252
+ ```
253
+
254
+ ### ปัญหา Zero-Downtime Deployment
255
+
256
+ **ปัญหา:** การ deploy ทำให้เกิด downtime
257
+
258
+ **วิธีแก้ไข:**
259
+
260
+ 1. **ตรวจสอบกลยุทธ์การ Deploy**
261
+ ```yaml
262
+ deployment:
263
+ strategy: rolling # หรือ blue-green
264
+ ```
265
+
266
+ 2. **ตรวจสอบสุขภาพ Container**
267
+ ```bash
268
+ docker ps
269
+ # ทั้ง container เก่าและใหม่ควรกำลังรันระหว่างการ deploy
270
+ ```
271
+
272
+ 3. **ตรวจสอบ Nginx Reload**
273
+ ```bash
274
+ sudo nginx -t # ทดสอบก่อน reload
275
+ sudo systemctl reload nginx # Graceful reload
276
+ ```
277
+
278
+ ### หลายบริการบนโดเมนเดียวกัน
279
+
280
+ **ปัญหา:** Path-based routing ไม่ทำงาน
281
+
282
+ **วิธีแก้ไข:**
283
+
284
+ 1. **ตรวจสอบการตั้งค่า Path**
285
+ ```yaml
286
+ services:
287
+ - name: api
288
+ path: /api # ตรวจสอบว่า path ถูกตั้งค่า
289
+ - name: ui
290
+ path: / # Root path
291
+ ```
292
+
293
+ 2. **ตรวจสอบ Nginx Config**
294
+ ```bash
295
+ cat /etc/nginx/sites-available/example_com.conf
296
+ # ควรมี location blocks สำหรับแต่ละ path
297
+ ```
298
+
299
+ 3. **ทดสอบ Paths**
300
+ ```bash
301
+ curl http://example.com/api/health
302
+ curl http://example.com/
303
+ ```
304
+
305
+ ## เคล็ดลับการ Debug
306
+
307
+ ### เปิดใช้งาน Verbose Output
308
+
309
+ คำสั่งบางคำสั่งรองรับ verbose output ตรวจสอบ logs:
310
+
311
+ ```bash
312
+ # ตรวจสอบ logs ของ Nginx
313
+ sudo tail -f /var/log/nginx/error.log
314
+ sudo tail -f /var/log/nginx/access.log
315
+
316
+ # ตรวจสอบ logs ของ Docker
317
+ docker logs <container-name>
318
+
319
+ # ตรวจสอบ system logs
320
+ sudo journalctl -u nginx -f
321
+ ```
322
+
323
+ ### ทดสอบการตั้งค่า
324
+
325
+ ก่อน deploy ทดสอบการตั้งค่าของคุณ:
326
+
327
+ ```bash
328
+ # ตรวจสอบความถูกต้องของไวยากรณ์ YAML
329
+ yamllint suthep.yml
330
+
331
+ # ทดสอบ config ของ Nginx
332
+ sudo nginx -t
333
+
334
+ # ทดสอบ Docker image
335
+ docker run --rm <image-name>
336
+ ```
337
+
338
+ ### การ Deploy แบบทีละขั้นตอน
339
+
340
+ Deploy ทีละขั้นตอนเพื่อแยกปัญหา:
341
+
342
+ ```bash
343
+ # 1. Deploy โดยไม่มี Nginx
344
+ suthep deploy --no-nginx
345
+
346
+ # 2. Deploy โดยไม่มี HTTPS
347
+ suthep deploy --no-https
348
+
349
+ # 3. Full deployment
350
+ suthep deploy
351
+ ```
352
+
353
+ ## ขอความช่วยเหลือ
354
+
355
+ หากคุณยังพบปัญหา:
356
+
357
+ 1. **ตรวจสอบ Logs**
358
+ - Nginx: `/var/log/nginx/`
359
+ - Certbot: `/var/log/letsencrypt/`
360
+ - Docker: `docker logs <container>`
361
+
362
+ 2. **ตรวจสอบการตั้งค่า**
363
+ - ตรวจสอบไวยากรณ์ `suthep.yml`
364
+ - ตรวจสอบว่าฟิลด์ที่จำเป็นทั้งหมดมีอยู่
365
+ - ตรวจสอบความถูกต้องของหมายเลขพอร์ตและโดเมน
366
+
367
+ 3. **ทดสอบส่วนประกอบทีละอย่าง**
368
+ - ทดสอบ Nginx ด้วยตนเอง
369
+ - ทดสอบ Docker containers
370
+ - ทดสอบใบรับรอง SSL
371
+
372
+ 4. **ตรวจสอบทรัพยากรระบบ**
373
+ ```bash
374
+ # ตรวจสอบพื้นที่ดิสก์
375
+ df -h
376
+
377
+ # ตรวจสอบหน่วยความจำ
378
+ free -h
379
+
380
+ # ตรวจสอบ CPU
381
+ top
382
+ ```
383
+
384
+ ## การป้องกัน
385
+
386
+ เพื่อหลีกเลี่ยงปัญหาที่พบบ่อย:
387
+
388
+ 1. **ใช้ Staging สำหรับการทดสอบ**
389
+ ```yaml
390
+ certbot:
391
+ staging: true
392
+ ```
393
+
394
+ 2. **ตรวจสอบความถูกต้องของการตั้งค่า**
395
+ ```bash
396
+ suthep init # การตรวจสอบแบบโต้ตอบ
397
+ ```
398
+
399
+ 3. **ทดสอบก่อน Production**
400
+ - ทดสอบในสภาพแวดล้อม staging ก่อน
401
+ - ตรวจสอบว่าบริการทั้งหมดทำงานแยกกัน
402
+ - ทดสอบกระบวนการ deploy
403
+
404
+ 4. **ตรวจสอบ Health Checks**
405
+ - ตั้งค่าช่วงเวลาที่เหมาะสม
406
+ - ตรวจสอบ health check endpoints
407
+ - ตั้งค่า timeout ที่สมเหตุสมผล
408
+
409
+ ## ขั้นตอนถัดไป
410
+
411
+ - [หัวข้อขั้นสูง](./08-advanced.md) - การตั้งค่าและเพิ่มประสิทธิภาพขั้นสูง
412
+ - [ตัวอย่าง](./06-examples.md) - ตรวจสอบตัวอย่างที่ทำงาน
413
+
414
+ ---
415
+
416
+ **ก่อนหน้า:** [ตัวอย่าง](./06-examples.md) | **ถัดไป:** [หัวข้อขั้นสูง →](./08-advanced.md)
417
+