Đang tải…
Flag
VN Tiếng Việt
EN English
ZH 简体中文
KO 한국어
JA 日本語
Dùng thử VPS

Chạy ứng dụng Node.js 24/7 trên VPS với PM2 và Nginx reverse proxy

Hướng dẫn 2026-11-06 15:31:40 1 lượt xem

Chạy Node.js 24/7 trên VPS cần ba thứ: cài đúng phiên bản Node.js, một trình quản lý tiến trình để ứng dụng tự chạy lại khi lỗi hoặc khi khởi động lại máy, và Nginx đứng trước để nhận tên miền và HTTPS. Bài viết hướng dẫn đầy đủ với PM2 và Nginx trên Ubuntu.

Bước 1: Cài Node.js bản LTS

Dùng kho NodeSource để có bản Node.js LTS mới (ví dụ bản 20):

curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt install nodejs -y
node -v
npm -v

Nếu cần nhiều phiên bản Node.js trên cùng VPS, có thể dùng công cụ quản lý phiên bản như nvm thay cho cách trên.

Bước 2: Đưa mã nguồn lên VPS

mkdir -p /var/www/app && cd /var/www/app
git clone https://github.com/ten-ban/du-an.git .
npm ci --omit=dev

Ứng dụng nên đọc cổng từ biến môi trường và chỉ lắng nghe ở 127.0.0.1, ví dụ cổng 3000. Biến môi trường bí mật (khoá API, mật khẩu cơ sở dữ liệu) để trong file .env, không đưa lên Git.

Bước 3: Chạy bằng PM2

npm install -g pm2
pm2 start server.js --name myapp
pm2 status
pm2 logs myapp

Cho ứng dụng tự chạy lại khi VPS khởi động lại:

pm2 startup     # in ra một lệnh, sao chép và chạy lệnh đó
pm2 save

Các lệnh hay dùng: pm2 restart myapp sau khi cập nhật mã nguồn, pm2 reload myapp để khởi động lại không gián đoạn (khi chạy nhiều tiến trình), pm2 monit để theo dõi CPU, RAM.

Bước 4: Nginx làm reverse proxy

apt install nginx -y
nano /etc/nginx/sites-available/app.tenmien.com
server {
    listen 80;
    server_name app.tenmien.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
ln -s /etc/nginx/sites-available/app.tenmien.com /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx

Hai dòng Upgrade / Connection cần cho ứng dụng dùng WebSocket (chat, thông báo thời gian thực).

Bước 5: Bật HTTPS

apt install certbot python3-certbot-nginx -y
certbot --nginx -d app.tenmien.com

Tên miền phải trỏ bản ghi A về IP VPS trước, xem cách trỏ tên miền.

Cập nhật phiên bản mới

cd /var/www/app
git pull
npm ci --omit=dev
pm2 restart myapp

Câu hỏi thường gặp

Tại sao không chạy thẳng node server.js?

Khi bạn thoát SSH, tiến trình có thể dừng theo; ứng dụng lỗi cũng không tự chạy lại. PM2 lo cả hai việc và lưu log giúp bạn.

Có cần mở cổng 3000 trên tường lửa không?

Không. Nginx nhận yêu cầu ở cổng 80/443 rồi chuyển vào cổng 3000 trong máy, nên chỉ cần mở 80 và 443.

Kết luận

Node.js + PM2 + Nginx là bộ ba ổn định để chạy API, bot, website Node.js trên VPS. Xem thêm 10 bước bảo mật VPS Linux và các gói Cloud VPS phù hợp.


Bạn thấy bài viết này hữu ích?

Chia sẻ lên Facebook

Liên hệ hỗ trợ

Chọn kênh liên hệ phù hợp với bạn

Đang trực tuyến

Telegram

Nhắn tin nhanh qua Telegram

Zalo

Zalo

Chat trực tiếp qua Zalo