Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
566 changes: 566 additions & 0 deletions DATABASE-RESET-AND-IMPORT-GUIDE.md

Large diffs are not rendered by default.

279 changes: 279 additions & 0 deletions DOMAIN-UPDATE-GUIDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,279 @@
# Hướng Dẫn Cập Nhật Domain Thủ Công (Command Line)

Hướng dẫn từng bước để cập nhật domain từ `elearningspace.online` sang `api.elearningspace.online` trên VPS bằng command line.

---

## 📋 Các Bước Thực Hiện

### Bước 1: SSH vào VPS

```bash
ssh deploy@your-vps-ip
# hoặc
ssh root@your-vps-ip
```

---

### Bước 2: Backup file cấu hình Nginx

```bash
sudo cp /etc/nginx/sites-available/elearning-backend /etc/nginx/sites-available/elearning-backend.backup
```

---

### Bước 3: Mở file cấu hình Nginx để chỉnh sửa

```bash
sudo nano /etc/nginx/sites-available/elearning-backend
```

**Trong file, bạn cần:**

1. **Thay đổi domain trong `server_name`:**
- **Tìm:** `server_name elearningspace.online www.elearningspace.online;`
- **Thay thành:** `server_name api.elearningspace.online;`

2. **Nếu có block SSL (listen 443) và gặp lỗi certificate:**
- **Tạm thời comment out toàn bộ block SSL** (block có `listen 443` và các dòng `ssl_certificate`)
- Hoặc xóa các dòng liên quan đến SSL certificate:
- `ssl_certificate /etc/letsencrypt/live/api.elearningspace.online/fullchain.pem;`
- `ssl_certificate_key /etc/letsencrypt/live/api.elearningspace.online/privkey.pem;`
- **Chỉ giữ lại block HTTP (listen 80)** để test trước

**Hoặc nếu muốn dùng sed (tự động thay domain):**

```bash
sudo sed -i 's/elearningspace\.online/api.elearningspace.online/g' /etc/nginx/sites-available/elearning-backend
sudo sed -i 's/www\.elearningspace\.online/api.elearningspace.online/g' /etc/nginx/sites-available/elearning-backend
```

**Lưu file (nếu dùng nano):**
- Nhấn `Ctrl + O` để lưu
- Nhấn `Enter` để xác nhận
- Nhấn `Ctrl + X` để thoát

---

### Bước 4: Kiểm tra cấu hình Nginx

```bash
sudo nginx -t
```

**Kết quả mong đợi:**
```
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
```

**Nếu gặp lỗi SSL certificate (như lỗi bạn đang gặp):**

Lỗi: `cannot load certificate "/etc/letsencrypt/live/api.elearningspace.online/fullchain.pem"`

**Giải pháp:** Tạm thời comment out hoặc xóa block SSL trong file cấu hình:

```bash
# Mở file cấu hình
sudo nano /etc/nginx/sites-available/elearning-backend

# Tìm block có dạng:
# server {
# listen 443 ssl;
# server_name api.elearningspace.online;
# ssl_certificate /etc/letsencrypt/live/api.elearningspace.online/fullchain.pem;
# ...
# }

# Comment out toàn bộ block này (thêm # ở đầu mỗi dòng)
# Hoặc xóa các dòng ssl_certificate và ssl_certificate_key

# Chỉ giữ lại block HTTP (listen 80)
```

**Hoặc dùng sed để comment out các dòng SSL:**

```bash
# Comment out các dòng ssl_certificate
sudo sed -i 's/^[[:space:]]*ssl_certificate/# &/' /etc/nginx/sites-available/elearning-backend
sudo sed -i 's/^[[:space:]]*ssl_certificate_key/# &/' /etc/nginx/sites-available/elearning-backend

# Comment out listen 443
sudo sed -i 's/^[[:space:]]*listen[[:space:]]*443/# &/' /etc/nginx/sites-available/elearning-backend
```

Sau đó test lại: `sudo nginx -t`

---

### Bước 5: Restart Nginx

```bash
sudo systemctl restart nginx
```

---

### Bước 6: Kiểm tra Nginx đang chạy

```bash
sudo systemctl status nginx
```

**Nhấn `q` để thoát khỏi status view.**

---

### Bước 7: Test domain mới

```bash
curl -I http://api.elearningspace.online
```

**Kết quả mong đợi:** Thấy `HTTP/1.1 200 OK` hoặc response từ backend.

---

## 🔒 Cập Nhật SSL Certificate

### Bước 1: Đảm bảo HTTP đang hoạt động trước

Trước khi cài SSL, đảm bảo domain đã hoạt động với HTTP:
```bash
curl -I http://api.elearningspace.online
```

### Bước 2: Kiểm tra certificate hiện tại:

```bash
sudo certbot certificates
```

### Bước 3: Tạo SSL certificate mới cho domain mới:

```bash
sudo certbot --nginx -d api.elearningspace.online
```

**Certbot sẽ tự động:**
- Tạo certificate mới
- Cập nhật cấu hình Nginx để dùng HTTPS
- Setup auto-renewal
- Tự động uncomment các dòng SSL đã comment

**Lưu ý:** Certbot cần domain đã trỏ đúng về IP VPS và HTTP đang hoạt động.

### Nếu muốn xóa certificate cũ (tùy chọn):

```bash
# Xem danh sách certificates
sudo certbot certificates

# Xóa certificate cũ (thay tên certificate nếu khác)
sudo certbot delete --cert-name elearningspace.online
```

---

## ✅ Kiểm Tra Cuối Cùng

### 1. Kiểm tra backend đang chạy:

```bash
pm2 list
```

**Nếu không thấy `elearning-backend`, start lại:**
```bash
cd ~/elearning-backend
pm2 start dist/main.js --name elearning-backend
pm2 save
```

### 2. Test API endpoint:

```bash
curl http://api.elearningspace.online/api
```

### 3. Test từ browser:

Mở browser và truy cập:
- `http://api.elearningspace.online` (hoặc `https://` nếu đã có SSL)
- `http://api.elearningspace.online/api` (Swagger docs)

---

## 🔄 Khôi Phục Nếu Có Lỗi

Nếu có vấn đề và muốn khôi phục về cấu hình cũ:

```bash
# Khôi phục từ backup
sudo cp /etc/nginx/sites-available/elearning-backend.backup /etc/nginx/sites-available/elearning-backend

# Test lại
sudo nginx -t

# Restart
sudo systemctl restart nginx
```

---

## 📝 Tóm Tắt Các Lệnh (Copy-Paste Nhanh)

### Nếu gặp lỗi SSL certificate, chạy các lệnh sau:

```bash
# 1. Backup
sudo cp /etc/nginx/sites-available/elearning-backend /etc/nginx/sites-available/elearning-backend.backup

# 2. Cập nhật domain (tự động)
sudo sed -i 's/elearningspace\.online/api.elearningspace.online/g' /etc/nginx/sites-available/elearning-backend
sudo sed -i 's/www\.elearningspace\.online/api.elearningspace.online/g' /etc/nginx/sites-available/elearning-backend

# 3. Tạm thời comment out SSL để tránh lỗi certificate
sudo sed -i 's/^[[:space:]]*ssl_certificate/# &/' /etc/nginx/sites-available/elearning-backend
sudo sed -i 's/^[[:space:]]*ssl_certificate_key/# &/' /etc/nginx/sites-available/elearning-backend
sudo sed -i 's/^[[:space:]]*listen[[:space:]]*443/# &/' /etc/nginx/sites-available/elearning-backend

# 4. Test cấu hình
sudo nginx -t

# 5. Restart Nginx
sudo systemctl restart nginx

# 6. Kiểm tra HTTP
curl -I http://api.elearningspace.online

# 7. Sau khi HTTP hoạt động, cài SSL certificate
sudo certbot --nginx -d api.elearningspace.online
```

### Nếu không có lỗi SSL (chưa có SSL config):

```bash
# 1. Backup
sudo cp /etc/nginx/sites-available/elearning-backend /etc/nginx/sites-available/elearning-backend.backup

# 2. Cập nhật domain
sudo sed -i 's/elearningspace\.online/api.elearningspace.online/g' /etc/nginx/sites-available/elearning-backend
sudo sed -i 's/www\.elearningspace\.online/api.elearningspace.online/g' /etc/nginx/sites-available/elearning-backend

# 3. Test cấu hình
sudo nginx -t

# 4. Restart Nginx
sudo systemctl restart nginx

# 5. Kiểm tra
curl -I http://api.elearningspace.online
```

---

**Lưu ý:** Sau khi cập nhật, DNS có thể mất 5-30 phút để propagate. Nếu không truy cập được ngay, hãy đợi và thử lại.

Loading
Loading