Hướng dẫn self-host tự cài n8n trên hosting VPS dễ dàng trong 5 phút

Hướng dẫn self-host tự cài n8n trên hosting VPS dễ dàng trong 5 phút

n8n là một công cụ tốt cho việc phát triển Agent AI, tuy nhiên, nếu dùng cloud của n8n thì chi phí rất mắc, băng thông giới hạn. Vì vậy, việc tự triển khai (self-host) n8n trên hosting là điều có nhiều thuận lợi và tốt hơn. Điểm đáng chú ý là làm sao để triển khai tự cài đặt, nhiều bạn đã làm và dễ bị phát sinh lỗi. Hướng dẫn sau đây giúp bạn làm dễ dàng hơn

Bài viết này mình hướng dẫn các bạn cài đặt n8n trên hosting VPS dễ dàng nhanh chóng chỉ bằng vài câu lệnh.

Video hướng dẫn chi tiết

1.1. Một hosting vps (có thể mua con nào rẻ rẻ tầm 4GB RAM là tốt nhất rồi)

1.2. Tên miền (Domain) hoặc tên miền phụ (subdomain) đã được cấu hình trỏ về địa chỉ IP của VPS ở 1.1

1.3. Tải và cài đặt Bitvise SSH Client (miễn phí) là trình chạy terminal cho hosting của mình, tại địa chỉ chính chủ : https://bitvise.com/ssh-client-download

Đây là giao diện của Bitvise sau khi đã cài đặt trên máy tính cá nhân xong

Mở Bitvise lên và điền thông tin để đăng nhập

Chúng ta điền các thông tin và và bấm Login, sau đó chọn New Terminal console để bắt đầu nha

Hướng dẫn này sẽ tập trung vào việc cài đặt n8n bằng npm (Node Package Manager) và sử dụng pm2 để quản lý tiến trình, giúp n8n chạy nền và tự khởi động lại. Đây là phương pháp phổ biến và tương đối dễ dàng cho người mới bắt đầu.

Trong cửa sổ Terminal Console của Bitvise, gõ các lệnh sau để đảm bảo VPS của bạn được cập nhật các gói phần mềm mới nhất.

sudo apt update && sudo apt upgrade -y
  • sudo: Thực thi lệnh với quyền quản trị cao nhất (superuser). Bạn có thể cần nhập lại mật khẩu user. Nếu bạn đang đăng nhập bằng root, bạn có thể bỏ sudo.
  • apt update: Cập nhật danh sách các gói phần mềm từ kho lưu trữ.
  • apt upgrade -y: Nâng cấp các gói phần mềm đã cài đặt lên phiên bản mới nhất. -y tự động đồng ý với các câu hỏi xác nhận.

n8n được xây dựng trên Node.js, vì vậy bạn cần cài đặt Node.js và trình quản lý gói của nó là npm. Chúng ta sẽ cài đặt phiên bản LTS (Long Term Support) mới nhất.

  1. Thêm kho lưu trữ NodeSource:
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -

Lệnh này tải về và chạy script cài đặt kho lưu trữ Node.js LTS.

  1. Cài đặt Node.js và các công cụ build cần thiết:
sudo apt install -y nodejs build-essential

build-essential cần thiết để biên dịch một số gói phụ thuộc gốc nếu có.

  1. Kiểm tra cài đặt:
node -v
npm -v

Các lệnh này sẽ hiển thị phiên bản Node.js và npm đã được cài đặt.

Bây giờ bạn có thể cài đặt n8n trên toàn hệ thống bằng npm:

sudo npm install -g n8n
  • npm install: Lệnh cài đặt gói.
  • -g: Cài đặt gói ở phạm vi toàn cục (global), cho phép bạn chạy lệnh n8n từ bất kỳ đâu.
  • n8n: Tên gói cần cài đặt.

Quá trình này có thể mất vài phút tùy thuộc vào tốc độ mạng và cấu hình VPS của bạn.

Để kiểm tra xem n8n đã cài đặt thành công chưa, bạn có thể chạy thử:

n8n

Nếu thành công, bạn sẽ thấy các dòng log xuất hiện và thông báo tương tự như:

Editor is now available on:

http://localhost:5678

Lúc này, n8n đang chạy ở chế độ foreground. Nếu bạn đóng cửa sổ Terminal Console này, n8n sẽ dừng lại. Nhấn Ctrl + C để dừng n8n.

PM2 là một trình quản lý tiến trình cho Node.js, giúp ứng dụng của bạn chạy liên tục trong nền và tự động khởi động lại nếu gặp lỗi hoặc sau khi VPS khởi động lại.

  1. Cài đặt PM2:
sudo npm install -g pm2
  1. Dùng PM2 để khởi động n8n:
pm2 start n8n

PM2 sẽ khởi động n8n trong nền và hiển thị một bảng trạng thái.

  1. Thiết lập PM2 tự khởi động cùng hệ thống:
pm2 startup

PM2 sẽ đưa ra một lệnh. Bạn cần sao chép và dán lệnh đó vào Terminal Console rồi nhấn Enter để thực thi. Lệnh này thường có dạng sudo env PATH=$PATH:/usr/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u <username> –hp /home/<username>.

  1. Lưu cấu hình PM2:
pm2 save

Lệnh này lưu lại danh sách các ứng dụng đang được quản lý bởi PM2 để nó có thể khôi phục lại sau khi khởi động lại.

Các lệnh PM2 hữu ích khác:

  • pm2 list: Xem danh sách các ứng dụng đang chạy dưới PM2.
  • pm2 logs n8n: Xem log (nhật ký) của ứng dụng n8n.
  • pm2 stop n8n: Dừng ứng dụng n8n.
  • pm2 restart n8n: Khởi động lại ứng dụng n8n.
  • pm2 delete n8n: Xóa n8n khỏi danh sách quản lý của PM2.

n8n mặc định chạy trên cổng 5678. Bạn có thể truy cập giao diện web của nó qua trình duyệt bằng cách sử dụng địa chỉ IP của VPS và cổng này:

http://<ĐỊA_CHỈ_IP_VPS_CỦA_BẠN>:5678

Ví dụ: http://192.168.1.100:5678

Bạn có thể sẽ gặp lỗi sau đây do thiếu chuẩn SSL (bảo mật, an toàn)

không sao cả, hãy làm tiếp các bước sau đây:

Cấu hình domain hoặc subdomain (tôi lấy ví dụ ở đây là: cd.dayhoc.id.vn) là điều kiện cần thiết và rất tốt để thực hiện giải pháp số 1 (cài đặt TLS/HTTPS)

Bây giờ, bạn cần thực hiện các bước sau để cấu hình n8n chạy an toàn qua subdomain của mình có https

Bước 1: Trỏ Subdomain vào IP của VPS

Đảm bảo rằng bạn đã cấu hình DNS cho subdomain.

Bạn cần tạo một bản ghi A (A Record) trong trang quản lý DNS của tên miền chính.

Bản ghi A này phải trỏ subdomain đến địa chỉ IP public của VPS của bạn.

Sau khi cấu hình, có thể mất một ít thời gian (từ vài phút đến vài giờ) để DNS cập nhật hoàn toàn. Bạn có thể dùng các công cụ online như dnschecker.org để kiểm tra xem subdomain đã trỏ đúng IP chưa.

Bước 2: Cài đặt Reverse Proxy (Ví dụ: Nginx )

Bạn cần một reverse proxy để nhận yêu cầu HTTPS từ bên ngoài và chuyển tiếp đến n8n đang chạy trên cổng 5678 (HTTP) bên trong VPS.

Cài đặt Nginx: Nếu chưa có, hãy cài Nginx:

sudo apt update
sudo apt install nginx

Nếu có hỏi [Y/N] thì chọn Y nhé.

  • Tạo file cấu hình cho subdomain:
sudo nano /etc/nginx/sites-available/subdomain của bạn

Lưu ý thay thế “subdomain của bạn

Dán nội dung cấu hình cơ bản sau vào file: (Đây là cấu hình ban đầu cho HTTP, Certbot sẽ nâng cấp lên HTTPS sau)

server {
    listen 80;
    listen [::]:80;

    server_name subdomain; # Thay subdomain bằng đúng tên miền của bạn

    location / {
        proxy_pass http://localhost:5678; # Trỏ đến n8n đang chạy nội bộ
        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_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

(Bấm Ctrl+O để lưu, bấm Enter để xác nhận và bấm Ctrl+X để thoát.)

  • Kích hoạt cấu hình:
sudo ln -s /etc/nginx/sites-available/subdomain /etc/nginx/sites-enabled/
sudo nginx -t # Kiểm tra lỗi cú pháp
sudo systemctl restart nginx # Khởi động lại Nginx

(nhớ thay thế subdomain bằng domain hoặc subdomain của bạn nhé)

Bước 3: Lấy chứng chỉ SSL/TLS (Let’s Encrypt)

Cài đặt Certbot:

sudo apt install certbot python3-certbot-nginx

Nếu có hỏi [Y/n] thì chọn Y nha

  • Chạy Certbot để lấy chứng chỉ và tự động cấu hình Nginx:
sudo certbot --nginx -d subdomain

Nhớ thay subdomain bằng subdomain hoặc domain của bạn.

Certbot sẽ hỏi bạn một số thông tin (email, đồng ý điều khoản) và sau đó tự động sửa file cấu hình Nginx bạn tạo ở trên để bật SSL (HTTPS) và tự động chuyển hướng từ HTTP sang HTTPS.

Nhớ bấm Y nha

Certbot cũng sẽ tự động thiết lập gia hạn chứng chỉ.

Xong, bạn có thể truy cập bằng domain và subdomain của mình rồi đó, khi truy cập vào mình sẽ được yêu cầu tạo một tài khoản admin cho trang này nhé

Share

Written by:

le chanduc

113 Posts

View All Posts
Follow Me :
5 1 đánh giá
Article Rating
Theo dõi
Thông báo của
guest

0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận
0
Rất thích suy nghĩ của bạn, hãy bình luận.x

Bạn đã đăng kí thành công, cảm ơn bạn nha

Có một chút lỗi, bạn vui lòng làm lại nha

EDUCATION will use the information you provide on this form to be in touch with you and to provide updates and marketing.