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.
- package/README.md +172 -71
- package/dist/commands/deploy.js +251 -37
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/down.js +179 -0
- package/dist/commands/down.js.map +1 -0
- package/dist/commands/redeploy.js +59 -0
- package/dist/commands/redeploy.js.map +1 -0
- package/dist/commands/up.js +213 -0
- package/dist/commands/up.js.map +1 -0
- package/dist/index.js +36 -1
- package/dist/index.js.map +1 -1
- package/dist/utils/certbot.js +40 -3
- package/dist/utils/certbot.js.map +1 -1
- package/dist/utils/config-loader.js +30 -0
- package/dist/utils/config-loader.js.map +1 -1
- package/dist/utils/deployment.js +49 -16
- package/dist/utils/deployment.js.map +1 -1
- package/dist/utils/docker.js +396 -25
- package/dist/utils/docker.js.map +1 -1
- package/dist/utils/nginx.js +167 -8
- package/dist/utils/nginx.js.map +1 -1
- package/docs/README.md +25 -49
- package/docs/english/01-introduction.md +84 -0
- package/docs/english/02-installation.md +200 -0
- package/docs/english/03-quick-start.md +256 -0
- package/docs/english/04-configuration.md +358 -0
- package/docs/english/05-commands.md +363 -0
- package/docs/english/06-examples.md +456 -0
- package/docs/english/07-troubleshooting.md +417 -0
- package/docs/english/08-advanced.md +411 -0
- package/docs/english/README.md +48 -0
- package/docs/thai/01-introduction.md +84 -0
- package/docs/thai/02-installation.md +200 -0
- package/docs/thai/03-quick-start.md +256 -0
- package/docs/thai/04-configuration.md +358 -0
- package/docs/thai/05-commands.md +363 -0
- package/docs/thai/06-examples.md +456 -0
- package/docs/thai/07-troubleshooting.md +417 -0
- package/docs/thai/08-advanced.md +411 -0
- package/docs/thai/README.md +48 -0
- package/example/README.md +286 -53
- package/example/suthep-complete.yml +103 -0
- package/example/suthep-docker-only.yml +71 -0
- package/example/suthep-no-docker.yml +51 -0
- package/example/suthep-path-routing.yml +62 -0
- package/example/suthep.example.yml +89 -0
- package/package.json +1 -1
- package/src/commands/deploy.ts +322 -50
- package/src/commands/down.ts +240 -0
- package/src/commands/redeploy.ts +78 -0
- package/src/commands/up.ts +271 -0
- package/src/index.ts +62 -1
- package/src/types/config.ts +25 -24
- package/src/utils/certbot.ts +68 -6
- package/src/utils/config-loader.ts +40 -0
- package/src/utils/deployment.ts +61 -36
- package/src/utils/docker.ts +634 -30
- package/src/utils/nginx.ts +187 -4
- package/suthep-0.1.0-beta.1.tgz +0 -0
- package/suthep-0.1.1.tgz +0 -0
- package/suthep.example.yml +34 -0
- package/suthep.yml +39 -0
- package/test +0 -0
- package/docs/api-reference.md +0 -545
- package/docs/architecture.md +0 -367
- package/docs/commands.md +0 -273
- package/docs/configuration.md +0 -347
- package/docs/examples.md +0 -537
- package/docs/getting-started.md +0 -197
- package/docs/troubleshooting.md +0 -441
- package/example/docker-compose.yml +0 -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
|
+
|