VPS Cho NodeJS: Hướng Dẫn Deploy API Chạy 24/7 Với PM2 Từ A-Z

Theo dõi Thuevpsgiare.vn trên Google News
Th7 30, 2026

VPS cho nodejs là một trong những quyết định hạ tầng quan trọng đầu tiên khi bạn nhận ra môi trường Shared Hosting truyền thống không cho phép chạy các tiến trình ngầm liên tục. Để một ứng dụng hoặc API viết bằng NodeJS hoạt động mượt mà, bạn cần toàn quyền quản trị (root access) để cài đặt môi trường, mở port và cấu hình service tự động khởi động lại khi gặp sự cố. Bài viết này sẽ hướng dẫn bạn từ cách chọn cấu hình, cài đặt môi trường đến việc thiết lập PM2 và Nginx để ứng dụng chạy 24/7 một cách ổn định nhất.

1. Tại sao Shared Hosting không phù hợp mà phải dùng VPS cho NodeJS?

Bản chất của NodeJS là một môi trường runtime hoạt động dựa trên một tiến trình (process) chạy liên tục để lắng nghe các request. Điều này hoàn toàn đi ngược lại cơ chế của Shared Hosting truyền thống vốn được thiết kế cho PHP (chỉ thực thi khi có request và tắt đi ngay sau đó).

Khi bạn tìm kiếm các dịch vụ hosting nodejs, thực chất đó thường là môi trường cPanel được cài thêm plugin hỗ trợ, đi kèm rất nhiều hạn chế về quyền can thiệp hệ thống.

VPS Cho NodeJS

Việc sử dụng một VPS chạy NodeJS mang lại những khác biệt cốt lõi về mặt kỹ thuật:

  • Quyền Root (Administrator): Bạn được phép cài đặt bất kỳ phiên bản Node nào, sử dụng NVM (Node Version Manager) để switch version giữa các project khác nhau. Trên hosting, bạn thường bị khóa chết ở một vài phiên bản cố định.
  • Quản lý tiến trình ngầm: Bạn có thể sử dụng PM2 để chạy app nodejs 24/7. PM2 sẽ giám sát mức tiêu thụ RAM, CPU và tự động khởi động lại ứng dụng nếu xảy ra lỗi crash code.
  • Kiểm soát Port mạng: NodeJS thường khởi chạy ở các port như 3000, 4000, 8080. Với VPS, bạn toàn quyền thiết lập tường lửa (UFW/iptables), quyết định cách mở port trên vps và dùng Nginx để map các port này ra port 80 (HTTP) hoặc 443 (HTTPS) tiêu chuẩn.
  • Không bị giới hạn Execution Time: Nếu bạn đang viết một API là gì đó cần crawl dữ liệu, xử lý file nặng hoặc chạy cronjob liên tục, hosting sẽ tự động “kill” process của bạn sau 30-60 giây. VPS thì không.

2. Tiêu chí chọn cấu hình VPS Node JS giá rẻ chuẩn xác

Khi lần đầu tìm một server cho NodeJS, nhiều lập trình viên thường phân vân không biết cần bao nhiêu RAM và CPU là đủ. Chọn cấu hình quá thấp sẽ khiến ứng dụng văng lỗi OOM (Out of Memory) ngay lúc chạy lệnh `npm install`, nhưng mua cấu hình quá cao khi chưa có traffic lại gây lãng phí ngân sách.

Dưới đây là bảng phân loại nhu cầu và cấu hình vps nodejs tương ứng mang tính thực chiến:

Mục đích triển khai RAM Đề xuất Ghi chú kỹ thuật
Học tập, Bot Telegram/Discord, Cronjob nhỏ 1GB – 2GB Đủ chạy 1-2 app nhỏ. Bắt buộc tạo thêm Swap file để tránh lỗi thiếu RAM khi cài thư viện.
Deploy API NodeJS vừa (Express/NestJS) kèm Database 2GB – 4GB Phù hợp để host chung backend Node và MongoDB/MySQL trên cùng một server.
Next.js, Nuxt.js (SSR) hoặc Project dùng Docker Từ 4GB trở lên Các framework SSR hoặc Docker là gì thường ngốn rất nhiều RAM trong quá trình build (npm run build).

Ngoài RAM, ổ cứng SSD là bắt buộc. Môi trường Node tạo ra thư mục `node_modules` chứa hàng chục ngàn file nhỏ lẻ. Nếu dùng ổ cứng HDD cơ học cũ, quá trình đọc/ghi file sẽ cực kỳ chậm, dẫn đến tình trạng I/O Wait cao làm treo server. Tại Việt Nam, bạn nên ưu tiên các dòng VPS sử dụng ổ SSD NVMe để tối ưu tốc độ đọc ghi.

Thuê VPS giá rẻ

CPU Intel Gold, SSD NVMe U.2, giá từ 50K/tháng

Máy chủ riêng cho sinh viên & Developer

Việc thử nghiệm code, chạy bot cá nhân hay deploy API nhỏ không cần đến máy chủ cấu hình hàng triệu đồng. Với nền tảng VPS từ Fast Byte sử dụng ổ SSD NVMe U.2 tốc độ cao, bạn hoàn toàn làm chủ hệ điều hành Linux với chi phí khởi điểm rất thấp. Bạn được cấp quyền root, thoải mái cài đặt NodeJS, PM2 và database theo ý muốn mà không lo bị giới hạn như hosting.

Tham khảo VPS giá rẻ

3. Cấu hình VPS NodeJS bao nhiêu là đủ cho API vừa và nhỏ

NodeJS là ngôn ngữ single-threaded, ưu tiên xử lý I/O không đồng bộ. Vì vậy, nó không tiêu thụ CPU quá mạnh trừ khi bạn chạy các tác vụ tính toán phức tạp (xử lý ảnh, mã hóa video). RAM mới là yếu tố quyết định số lượng request cùng lúc mà server cho nodejs có thể xử lý trước khi bị tràn bộ nhớ.

Quy mô ứng dụng CPU RAM Ghi chú thực tế
API test, học tập, bot đơn giản 1 – 2 core 0.5 – 1 GB Chạy được 1 process Node, không nên chạy kèm database nặng trên cùng VPS này
Web/blog nhỏ, API phục vụ vài chục user 1 – 2 core 1 – 2 GB Chạy được Node + Nginx + MySQL/PostgreSQL nhẹ. Nên bật thêm swap 1GB
API production, nhiều endpoint, traffic trung bình 2 core 2 – 4 GB Dùng PM2 cluster mode chạy nhiều instance, chịu tải tốt hơn

4. Chuẩn bị trước khi deploy NodeJS lên VPS

Để quá trình deploy nodejs lên vps diễn ra suôn sẻ, bạn cần chuẩn bị sẵn sàng các công cụ và thông tin sau:

  • Hệ điều hành: Bài viết này lấy ví dụ trên Ubuntu 22.04 LTS hoặc 24.04 LTS. Đây là hệ điều hành phổ biến nhất và được cộng đồng NodeJS hỗ trợ tốt nhất.
  • Phần mềm SSH: Bạn cần một Terminal (trên macOS/Linux) hoặc phần mềm như PuTTY, MobaXterm, PowerShell (trên Windows) để điều khiển VPS.
  • Source Code: Đã được đẩy lên Github, Gitlab hoặc nén thành file zip. Khuyên dùng Git để kéo code về VPS một cách chuyên nghiệp.
  • Tên miền (Domain): Nếu bạn muốn người dùng truy cập qua tên miền (ví dụ api.domain.com) thay vì địa chỉ IP trần, hãy trỏ bản ghi A của tên miền về IP của VPS.

5. Hướng dẫn cài NodeJS trên VPS Linux chi tiết bằng NVM

Có nhiều cách để cài nodejs trên vps, chẳng hạn như dùng apt-get. Tuy nhiên, cách đó thường cài đặt bản Node quá cũ hoặc gây ra lỗi phân quyền (permission denied) khi cài các package global (như PM2, nodemon). Giới vps cho lập trình viên luôn ưu tiên sử dụng NVM (Node Version Manager).

Bước 1: Cài đặt cURL và NVM

Truy cập vào VPS thông qua SSH, sau đó chạy lệnh sau để tải script cài đặt NVM:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

Sau khi chạy xong, hãy nạp lại cấu hình môi trường bằng lệnh:

source ~/.bashrc

Bước 2: Chọn và cài đặt phiên bản NodeJS

Kiểm tra danh sách các bản Node có sẵn và cài đặt bản LTS (Long Term Support – Khuyên dùng cho môi trường production):

nvm install –lts
nvm use –lts

Kiểm tra lại xem Node và NPM đã được cài thành công chưa:

node -v
npm -v

6. Cấu hình PM2 NodeJS VPS: Chạy App NodeJS 24/7 và Auto Restart

Khi bạn chạy code bằng lệnh thông thường như node index.js, ứng dụng sẽ hoạt động. Nhưng ngay khi bạn đóng cửa sổ SSH, tiến trình này sẽ bị hệ điều hành tắt theo. Đó là lý do chúng ta cần đến PM2 – một Process Manager mạnh mẽ dành riêng cho NodeJS (thậm chí vps chạy python cũng có thể dùng PM2 để quản lý script).

Bước 1: Cài đặt PM2 Global

npm install pm2 -g

Bước 2: Khởi chạy dự án bằng PM2

Di chuyển vào thư mục chứa source code của bạn (ví dụ cd /var/www/my-api), sau đó chạy lệnh:

pm2 start index.js –name “my-backend-api”

Lúc này, PM2 sẽ đưa app của bạn xuống chạy ngầm. Bạn có thể xem danh sách các ứng dụng đang chạy bằng lệnh pm2 list hoặc xem log realtime bằng lệnh pm2 logs.

Bước 3: Thiết lập tự động khởi chạy cùng hệ điều hành (Startup Script)

Để đảm bảo mỗi khi VPS bị khởi động lại (reboot), các API của bạn cũng tự động bật lên mà không cần bạn phải vào gõ lệnh thủ công, hãy tạo startup script:

pm2 startup

PM2 sẽ in ra một đoạn mã trên màn hình. Hãy copy toàn bộ đoạn mã đó và dán lại vào Terminal, rồi nhấn Enter. Cuối cùng, lưu lại danh sách ứng dụng hiện tại:

pm2 save

Thuê VPS giá rẻ

Băng thông Unlimited, Network port 100 Mbps

Hạ tầng mạng ổn định cho API

Khi deploy api nodejs, tính liên tục của kết nối mạng là yếu tố cực kỳ quan trọng. VPS tại Fast Byte hỗ trợ Network port 100 Mbps kèm băng thông không giới hạn hàng tháng. Dù bạn chạy tool xử lý dữ liệu liên tục hay host API cho Frontend gọi về, bạn sẽ không phải lo lắng về việc bị bóp băng thông do quá cước, giúp ứng dụng duy trì kết nối 24/7 ổn định.

Tham khảo VPS giá rẻ

7. Cài đặt Nginx làm Reverse Proxy cho NodeJS API

Bạn có tự hỏi web server là gì và tại sao lại cần nó khi Node đã tự tạo được server? Trong thực tế, các ứng dụng Node thường chạy ở port cục bộ như 3000 hoặc 5000. Bạn không thể bắt người dùng gõ http://domain.com:3000 vào trình duyệt. Hơn nữa, việc để hở port Node ra trực tiếp internet là một rủi ro bảo mật.

Giải pháp chuẩn mực là dùng Nginx đứng trước làm “cổng bảo vệ” (Reverse Proxy). Nginx lắng nghe ở port 80 (HTTP) và 443 (HTTPS), sau đó chuyển tiếp (forward) các request này vào bên trong port 3000 của NodeJS một cách âm thầm.

Cài đặt và cấu hình cơ bản:

sudo apt update
sudo apt install nginx -y

Tạo một file cấu hình mới cho domain của bạn:

sudo nano /etc/nginx/sites-available/api.domain.com

Dán cấu hình Reverse Proxy vào file (thay đổi server_name và port 3000 cho đúng với app của bạn):

server {
listen 80;
server_name api.domain.com;location / {
proxy_pass http://localhost:3000;
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:

sudo ln -s /etc/nginx/sites-available/api.domain.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

Từ thời điểm này, API của bạn đã có thể truy cập qua HTTP tiêu chuẩn mà không cần gõ kèm Port.

8. Xử lý lỗi thiếu RAM (OOM) khi deploy trên VPS giá rẻ bằng Swap Space

Một trong những vấn đề đau đầu nhất với các bạn sinh viên hoặc người mới dùng vps node js giá rẻ (cấu hình 1GB – 2GB RAM) là tiến trình bị “Killed” giữa chừng khi gõ lệnh npm install hoặc npm run build. Nguyên nhân do server cạn kiệt bộ nhớ vật lý. Thủ thuật ở đây là tạo một tệp tin Swap trên ổ cứng SSD để làm RAM ảo tạm thời.

Chạy lần lượt các lệnh sau để tạo 2GB Swap:

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo ‘/swapfile none swap sw 0 0’ | sudo tee -a /etc/fstab

Sau khi bật Swap, bạn sẽ thấy tiến trình cài đặt thư viện mượt mà hơn hẳn, loại bỏ hoàn toàn lỗi crash do tràn RAM trên các dòng máy chủ nhỏ.

8. Các lỗi thường gặp khi deploy API NodeJS

Trong quá trình vận hành server cho nodejs, bạn có thể gặp một số lỗi kỹ thuật. Dưới đây là cách bắt bệnh và xử lý:

  • Lỗi EADDRINUSE: Port is already in use: Lỗi này xảy ra do có một tiến trình Node khác đang chiếm dụng port (ví dụ port 3000) mà bạn không biết. Dùng lệnh lsof -i :3000 để tìm PID của tiến trình đó, sau đó dùng lệnh kill -9 [PID] để tắt nó đi trước khi chạy lại pm2.
  • Lỗi rò rỉ bộ nhớ (Memory Leak) làm treo VPS: Nếu code của bạn có bug khiến RAM tăng liên tục, hãy cấu hình giới hạn RAM cho PM2. Sử dụng tham số --max-memory-restart 500M. PM2 sẽ tự động reload app ngầm nếu mức tiêu thụ RAM vượt quá 500MB, giữ cho VPS không bị sập hoàn toàn.
  • Downtime trong lúc cập nhật code (Zero-downtime deploy): Thay vì dùng pm2 restart app (sẽ gây gián đoạn vài giây để Node khởi động lại), hãy sử dụng lệnh pm2 reload app. Reload cho phép PM2 khởi động một tiến trình mới hoàn toàn song song, nhận request vào tiến trình mới rồi mới tắt tiến trình cũ đi.

Thuê VPS giá rẻ

Quyền quản trị Root, tự do cài đặt OS

Môi trường linh hoạt cho mọi Project

Dù bạn cần chạy môi trường PM2 thuần túy hay đóng gói ứng dụng qua Docker, một VPS có quyền Root đầy đủ là bắt buộc. Fast Byte cung cấp cho bạn một máy chủ sạch, tự do tùy biến OS (Ubuntu, CentOS, Debian, Almalinux) và cấu hình tường lửa tùy ý. Đây là lựa chọn hoàn hảo cho website cá nhân, hệ thống backend nhỏ hoặc môi trường Test/Staging với mức giá vô cùng hợp lý.

Tham khảo VPS giá rẻ

10. Câu hỏi thường gặp (FAQ)

VPS 512MB RAM có chạy được NodeJS không?

Về mặt lý thuyết là có, bạn có thể chạy một API ExpressJS đơn giản. Tuy nhiên, nó sẽ rất dễ bị crash khi thực hiện lệnh tải package qua npm. Nếu ngân sách hạn hẹp, bạn bắt buộc phải tạo ít nhất 1GB Swap file. Dù vậy, mức đề xuất tối thiểu cho trải nghiệm ổn định nên từ 1GB – 2GB RAM.

Có nên cài Web Panel (aaPanel, CyberPanel) để quản lý NodeJS không?

Đối với người mới hoàn toàn, dùng Panel có tích hợp module Node sẽ dễ dàng hơn vì có giao diện. Nhưng Panel tiêu tốn khá nhiều RAM (thường ăn mất 400-600MB). Nếu bạn dùng VPS cấu hình thấp, việc quản trị qua giao diện dòng lệnh (CLI) bằng PM2 là cách tối ưu nhất để tiết kiệm tài nguyên.

PM2 khác gì so với dùng Docker để deploy?

PM2 tập trung vào việc quản lý tiến trình (process) ngay trên máy chủ thật, rất dễ tiếp cận và nhẹ. Docker tạo ra các container biệt lập chứa toàn bộ môi trường chạy, giúp code “chạy ở mọi nơi đều giống nhau”. Docker chuyên nghiệp hơn cho việc mở rộng quy mô, nhưng PM2 lại thân thiện và tốn ít RAM hơn cho người mới.

Hệ điều hành Windows Server có chạy được NodeJS không?

Có, NodeJS hỗ trợ đầy đủ nền tảng Windows và bạn vẫn có thể dùng PM2. Tuy nhiên, Windows Server tốn rất nhiều RAM (riêng hệ điều hành đã cần khoảng 2GB) và tài liệu cộng đồng deploy Node trên Windows rất ít. Linux (đặc biệt là Ubuntu) luôn là tiêu chuẩn công nghiệp cho vấn đề này.

Tệp ecosystem.config.js của PM2 dùng để làm gì?

Thay vì gõ chuỗi lệnh dài trên Terminal, bạn định nghĩa các tham số như tên app, số lượng bản sao (cluster mode), và đặc biệt là các biến môi trường (Environment Variables) phân biệt giữa môi trường Dev và Production vào file này. Nó giúp việc deploy bài bản và bảo mật key/token hơn.

Lời kết

Triển khai một dự án lên môi trường thực tế luôn mang đến nhiều thử thách hơn việc chạy code trên localhost. Việc trang bị một vps cho nodejs là bước đi căn bản để bạn làm chủ toàn bộ vòng đời của ứng dụng, từ thiết lập môi trường, quản lý RAM/CPU, sử dụng PM2 duy trì tiến trình đến việc cấu hình Nginx Reverse Proxy phân luồng traffic. Dù bạn chạy API nhẹ nhàng hay một website hoàn chỉnh, mấu chốt nằm ở việc hiểu rõ luồng hoạt động thay vì phụ thuộc vào các công cụ tự động bị giới hạn quyền năng.

Cần một VPS giá rẻ để bắt đầu?

Chọn cấu hình vừa đủ nhu cầu, ưu tiên chi phí dễ tiếp cận, ổ cứng SSD NVMe tốc độ cao và khả năng quản trị riêng biệt cho mọi dự án của bạn.

Xem bảng giá VPS

Lưu ý kỹ thuật: Nội dung hướng dẫn trên mang tính tham khảo và được kiểm chứng trên nền tảng Ubuntu 22.04/24.04. Các tập lệnh, đường dẫn cài đặt và cấu hình có thể thay đổi tùy thuộc vào hệ điều hành, phiên bản phần mềm hoặc can thiệp cá nhân vào môi trường thực tế. Hãy luôn chủ động sao lưu (backup) dữ liệu, kiểm thử trên môi trường staging và đánh giá rủi ro an toàn thông tin trước khi áp dụng cấu hình cho máy chủ production.

Để lại một bình luận