Cài n8n trên VPS Ubuntu/Debian bằng Node.js: chỉ 6 bước, tự có Nginx + SSL

Bạn muốn tự host n8n để tự động hóa công việc mà không phụ thuộc vào gói cloud trả phí? Bài viết này sẽ hướng dẫn bạn cài đặt n8n trên VPS Ubuntu/Debian bằng Node.js — cách làm gọn nhẹ, dễ kiểm soát và rất hợp với những ai đã quen với dòng lệnh Linux. Toàn bộ quy trình chỉ gồm 6 bước: cài Node.js, cài n8n, chạy bằng PM2, dựng Nginx reverse proxy và bật SSL miễn phí.

Tại sao nên cài n8n bằng Node.js thay vì Docker?

n8n là nền tảng tự động hóa mã nguồn mở rất được ưa chuộng, cho phép bạn kéo-thả để tạo workflow kết nối hàng trăm dịch vụ. Nhiều người chọn cài n8n bằng Docker cho nhanh, nhưng cách cài trực tiếp bằng Node.js + npm lại có những lợi thế riêng:

  • Nhẹ và tiết kiệm tài nguyên: không cần Docker engine, VPS chỉ 1 core / 1GB RAM là chạy mượt.
  • Dễ nâng cấp: một lệnh npm update -g n8n là xong, không phải pull image hay rebuild container.
  • Quản lý tiến trình bằng PM2: n8n tự khởi động lại khi crash hoặc khi VPS reboot.
  • Ra domain chuẩn qua Nginx: reverse proxy kết hợp SSL Let’s Encrypt miễn phí, truy cập n8n qua subdomain riêng như n8n.domain.com.

Nhược điểm duy nhất là bạn cần làm quen với vài lệnh terminal — nhưng bài này hướng dẫn từng bước cụ thể nên người mới vẫn làm theo được.

Chuẩn bị trước khi cài đặt

Theo tài liệu gốc của BNIX, bạn cần chuẩn bị:

  • VPS cấu hình tối thiểu: 1 CPU core, 1GB RAM, ổ đĩa trống ít nhất 10GB.
  • Hệ điều hành: Ubuntu 22.04, Ubuntu 24.04 hoặc Debian 12 — VPS phải mới, chưa cài webserver nào khác để tránh xung đột port 80/443.
  • Một subdomain (ví dụ n8n.domain.com) đã trỏ bản ghi A về IP của VPS — đây là điều kiện bắt buộc để xin chứng chỉ SSL.
  • Quyền SSH root vào VPS.

Các bước cài đặt n8n trên Ubuntu/Debian

Bước 1: Cập nhật hệ điều hành

Đăng nhập SSH với quyền root, cập nhật toàn bộ gói hệ thống trước khi bắt đầu:

apt -y update && apt -y upgrade
reboot

Lệnh reboot giúp VPS khởi động lại để áp dụng kernel mới (nếu có). Sau khi VPS lên lại, bạn SSH vào và tiếp tục bước 2.

Bước 2: Cài đặt Node.js 20 LTS

n8n chạy trên nền Node.js, vì vậy ta cài bản 20 LTS thông qua kho NodeSource chính thức:

# Thêm NodeSource repository (Node.js 20 LTS)
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -

# Cài Node.js và npm
apt -y install nodejs

# Kiểm tra phiên bản
node -v
npm -v

Nếu hai lệnh kiểm tra in ra số phiên bản (ví dụ v20.x.x) nghĩa là bạn đã cài đặt thành công.

Bước 3: Cài đặt n8n và PM2

Cài n8n ở chế độ toàn cục bằng npm, đồng thời cài PM2 để quản lý tiến trình chạy nền:

npm install n8n -g
npm install -g pm2

Bước 4: Khởi động n8n bằng PM2

Chạy n8n dưới sự quản lý của PM2, nhớ thay sub.domain.com bằng subdomain thật của bạn:

# thay sub.domain.com thành subdomain của bạn
WEBHOOK_URL=https://sub.domain.com pm2 start n8n
pm2 save && pm2 startup

Biến môi trường WEBHOOK_URL rất quan trọng: nó cho n8n biết địa chỉ công khai để sinh URL webhook chính xác. Cặp lệnh pm2 save && pm2 startup đảm bảo n8n tự chạy lại mỗi khi VPS reboot.

Bước 5: Cài đặt và cấu hình Nginx làm reverse proxy

Mặc định n8n chỉ lắng nghe ở localhost:5678. Ta dùng Nginx “đứng trước” để nhận request từ domain và chuyển tiếp vào n8n:

# Cài đặt nginx
apt -y install nginx

# Khởi động nginx
systemctl start nginx

# Cho nginx khởi động cùng hệ thống
systemctl enable nginx

Tiếp theo, tạo file cấu hình riêng cho subdomain:

nano /etc/nginx/conf.d/sub.domain.com.conf

Dán nội dung sau vào file (nhớ thay sub.domain.com bằng subdomain của bạn), bấm Ctrl + O để lưu và Ctrl + X để thoát:

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

Các header Upgrade và Connection là bắt buộc để WebSocket của n8n hoạt động ổn định qua proxy. Xong, khởi động lại Nginx để nhận cấu hình mới:

systemctl restart nginx

Bước 6: Cài đặt SSL miễn phí bằng Certbot

Bước cuối cùng là bật HTTPS cho subdomain bằng chứng chỉ Let’s Encrypt:

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d sub.domain.com

Certbot sẽ tự động sửa file cấu hình Nginx và thiết lập gia hạn chứng chỉ định kỳ. Khi thấy thông báo thành công như ảnh dưới đây là bạn đã hoàn tất:

Cài n8n trên VPS Ubuntu/Debian bằng Node.js: chỉ 6 bước, tự có Nginx + SSL

Bây giờ hãy mở https://sub.domain.com trên trình duyệt — bạn sẽ thấy giao diện n8n với biểu tượng ổ khóa xanh. Ở lần truy cập đầu tiên, hãy tạo tài khoản owner để bắt đầu tạo workflow.

Một số lưu ý quan trọng

  • Dùng VPS mới, sạch: nếu VPS đã cài Apache, Nginx hoặc control panel khác, port 80/443 có thể đã bị chiếm — nên dùng VPS mới hoặc gỡ webserver cũ trước khi cài.
  • DNS phải trỏ đúng IP: kiểm tra nhanh bằng lệnh dig +short sub.domain.com — kết quả phải trả về đúng IP VPS, nếu không Certbot sẽ báo lỗi không cấp được chứng chỉ.
  • Sao lưu dữ liệu n8n: toàn bộ workflow và credentials nằm trong thư mục ~/.n8n — hãy backup thư mục này định kỳ để tránh mất dữ liệu.
  • Nâng cấp n8n: khi có phiên bản mới, chỉ cần chạy npm update -g n8n rồi pm2 restart n8n là xong.
  • Muốn dùng Docker thay vì Node.js? BNIX có bài hướng dẫn riêng cho bản Docker — lựa chọn này phù hợp nếu bạn thích môi trường cô lập hoàn toàn.

Chúc các bạn cài đặt thành công! Nếu gặp lỗi ở bước nào, hãy kiểm tra lại hai điểm hay sai nhất: subdomain đã trỏ đúng IP VPS chưa và VPS có đúng hệ điều hành được hỗ trợ không.

👉 Cần VPS để thực hành? Đăng ký VPS BNIX tại đây: https://my.bnix.one/aff.php?aff=82

🏢 Chuyên thiết kế web cho doanh nghiệp và cá nhân
🤖 Giải pháp tự động hóa cho Doanh nghiệp và cá nhân
📞 0925045760 → https://zalo.me/0925045760
🌐 thietkewebdian.com → https://thietkewebdian.com

4.8/5 - (69 bình chọn)
Đăng ký
Thông báo về
guest
0 Bình Luận
Oldest
Newest Most Voted
Inline Feedbacks
Xem tất cả
0
Rất thích suy nghĩ của bạn, hãy bình luận.x
()
x