# HƯỚNG DẪN UPLOAD VÀ TỰ TRIỂN KHAI PHẦN MỀM QUẢN LÝ XUẤT NHẬP TỒN LÊN HOSTING / VPS

Tài liệu này hướng dẫn chi tiết cách triển khai (deploy) phần mềm **Quản lý xuất nhập tồn** (Web App phát triển bằng Next.js 14 & SQLite) lên các dịch vụ Hosting, Server VPS (Linux/Windows) hoặc Cloud Platforms.

---

## MỤC LỤC
1. [Chuẩn Bị Mã Nguồn & Build Sản Xuất](#1-chuẩn-bị-mã-nguồn--build-sản-xuất)
2. [Phương Án 1: Triển Khai Trên VPS Linux (Ubuntu / CentOS) Với PM2 & Nginx (Khuyên Dùng)](#2-phương-án-1-triển-khai-trên-vps-linux-ubuntu--centos-với-pm2--nginx-khuyên-dùng)
3. [Phương Án 2: Triển Khai Trên Cloud Hosting Miễn Phí (Vercel / Render / Railway)](#3-phương-án-2-triển-khai-trên-cloud-hosting-miễn-phí-vercel--render--railway)
4. [Phương Án 3: Triển Khai Trên cPanel / Plesk (Node.js App Manager)](#4-phương-án-3-triển-khai-trên-cpanel--plesk-nodejs-app-manager)
5. [Cấu Hình Tên Miền (Domain) & Chứng Chỉ SSL (HTTPS)](#5-cấu-hình-tên-miền-domain--chứng-chỉ-ssl-https)

---

## 1. CHUẨN BỊ MÃ NGUỒN & BUILD SẢN XUẤT

Trước khi đưa lên máy chủ, bạn cần kiểm tra và đóng gói mã nguồn:

### Bước 1.1: Đóng gói project thành file nén `.zip`
Mở Terminal tại thư mục mã nguồn project (`d:\DEV\antigravity\dunghoa`) và nén các thư mục sau (bỏ qua `node_modules` và `.next`):
- `src/`
- `public/`
- `package.json`
- `package-lock.json`
- `next.config.js` / `tsconfig.json` / `tailwind.config.ts`

---

## 2. PHƯƠNG ÁN 1: TRIỂN KHAI TRÊN VPS LINUX (UBUNTU / CENTOS) VỚI PM2 & NGINX (KHUYÊN DÙNG)

Đây là phương án chạy ổn định nhất cho doanh nghiệp, đảm bảo dữ liệu SQLite hoạt động mượt mà và bảo mật cao.

### Bước 2.1: Cài đặt Node.js 20+ trên VPS Ubuntu
Mở SSH truy cập vào VPS và chạy lệnh:
```bash
sudo apt update && sudo apt upgrade -y
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs build-essential git
node -v # Kiểm tra Node.js >= 20.x.x
```

### Bước 2.2: Cài đặt Quản lý tiến trình PM2
```bash
sudo npm install -g pm2
```

### Bước 2.3: Upload và Chạy ứng dụng trên VPS
1. Upload file `.zip` mã nguồn lên thư mục `/var/www/quanlyxuatnhapton`.
2. Giải nén và tiến hành cài đặt:
   ```bash
   cd /var/www/quanlyxuatnhapton
   npm install
   npm run build
   ```
3. Khởi chạy ứng dụng bằng PM2 tại cổng `3080`:
   ```bash
   PORT=3080 pm2 start npm --name "quan-ly-xuat-nhap-ton" -- start
   pm2 save
   pm2 startup
   ```

### Bước 2.4: Cấu hình Nginx làm Reverse Proxy
Cài đặt Nginx:
```bash
sudo apt install nginx -y
```

Tạo file cấu hình tên miền tại `/etc/nginx/sites-available/quanlyxuatnhapton`:
```nginx
server {
    listen 80;
    server_name kho.yourdomain.com; # Thay bằng tên miền của bạn

    location / {
        proxy_pass http://127.0.0.1:3080;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}
```

Kích hoạt cấu hình và khởi động lại Nginx:
```bash
sudo ln -s /etc/nginx/sites-available/quanlyxuatnhapton /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
```

---

## 3. PHƯƠNG ÁN 2: TRIỂN KHAI TRÊN CLOUD HOSTING MIỄN PHÍ (RAILWAY / RENDER / VERCEL)

### Với Render.com / Railway.app:
1. Đẩy mã nguồn lên **GitHub** (Private Repository).
2. Đăng nhập vào [Render.com](https://render.com) hoặc [Railway.app](https://railway.app).
3. Tạo **Web Service** mới ➔ Chọn Repository GitHub vừa đẩy.
4. Cấu hình môi trường:
   - **Build Command**: `npm install && npm run build`
   - **Start Command**: `npm run start`
   - **Environment Variables**: `PORT=3080`
5. Nhấn **Deploy** ➔ Render/Railway sẽ tự động cấp một URL công khai dạng `https://quanlyxuatnhapton.onrender.com`.

---

## 4. PHƯƠNG ÁN 3: TRIỂN KHAI TRÊN cPANEL / PLESK (NODE.JS APP MANAGER)

Nếu bạn mua Hosting có giao diện cPanel tích hợp sẵn tính năng **Setup Node.js App**:

1. Đăng nhập vào cPanel ➔ Tìm mục **Setup Node.js App**.
2. Chọn **Create Application**:
   - **Node.js Version**: Chọn `20.x` trở lên.
   - **Application mode**: `Production`
   - **Application root**: `quanlyxuatnhapton`
   - **Application URL**: `kho.yourdomain.com`
   - **Application startup file**: `node_modules/next/dist/bin/next` (hoặc `server.js`)
3. Upload toàn bộ file dự án vào folder `quanlyxuatnhapton`.
4. Nhấn **Run NPM Install** và **Build**.
5. Nhấn **Restart Application**.

---

## 5. CẤU HÌNH TÊN MIỀN (DOMAIN) & CHỨNG CHỈ SSL (HTTPS)

Để trang web hiển thị khóa bảo mật xanh (HTTPS), cài đặt Let's Encrypt Certbot trên VPS:

```bash
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d kho.yourdomain.com
```
Lắng nghe theo hướng dẫn trên màn hình ➔ Hệ thống tự động gia hạn SSL miễn phí trọn đời!

---

## THÔNG TIN TÀI KHOẢN ĐĂNG NHẬP MẶC ĐỊNH HỆ THỐNG
- **Tên phần mềm**: Quản lý xuất nhập tồn
- **Đường dẫn**: `http://localhost:3080/login`
- **Tên đăng nhập**: `admin`
- **Mật khẩu**: `admin123`
- **Hotline hỗ trợ kỹ thuật**: `0987481888`
- **Bản quyền thuộc về**: `Bach Khoa Tech`
