n8n có chạy được trên server riêng không? Hướng dẫn cài đặt và deploy nhanh chóng

n8n có chạy được trên server riêng không? Hướng dẫn cài đặt và deploy nhanh chóng

n8n có chạy được trên server riêng không? Hướng dẫn cài đặt và deploy nhanh chóng

Trong thế giới tự động hóa quy trình làm việc ngày càng phát triển, n8n nổi lên như một giải pháp mã nguồn mở mạnh mẽ và linh hoạt. Một trong những câu hỏi phổ biến nhất về n8n là: liệu nó có thể chạy trên server riêng hay không? Câu trả lời là Có! n8n hoàn toàn có thể chạy trên server riêng, mang đến cho bạn toàn quyền kiểm soát dữ liệu, bảo mật và khả năng tùy chỉnh.

Bài viết này sẽ đi sâu vào việc triển khai n8n trên server riêng, cung cấp hướng dẫn chi tiết từng bước, giúp bạn cài đặt và deploy n8n một cách nhanh chóng và hiệu quả.

1. Tại sao nên chạy n8n trên server riêng?

Trước khi đi vào chi tiết cài đặt, hãy cùng điểm qua những lợi ích khi chạy n8n trên server riêng:

  • Kiểm soát dữ liệu: Bạn có toàn quyền kiểm soát dữ liệu và quy trình làm việc của mình, không phụ thuộc vào các dịch vụ bên thứ ba. Điều này đặc biệt quan trọng đối với các doanh nghiệp xử lý thông tin nhạy cảm.
  • Bảo mật: Bạn có thể tự mình thiết lập các biện pháp bảo mật phù hợp với nhu cầu của mình, đảm bảo an toàn cho dữ liệu và quy trình làm việc.
  • Khả năng tùy chỉnh: Bạn có thể tùy chỉnh n8n theo ý muốn, cài đặt các module mở rộng, chỉnh sửa mã nguồn và tích hợp với các hệ thống khác một cách dễ dàng.
  • Hiệu suất: Chạy n8n trên server riêng cho phép bạn tận dụng tối đa tài nguyên của server, đảm bảo hiệu suất tối ưu cho các quy trình làm việc phức tạp.
  • Chi phí: Về lâu dài, việc chạy n8n trên server riêng có thể tiết kiệm chi phí hơn so với việc sử dụng các dịch vụ đám mây trả phí, đặc biệt khi bạn có nhu cầu sử dụng lớn.
  • Tuân thủ: Nếu doanh nghiệp của bạn phải tuân thủ các quy định về dữ liệu (ví dụ như GDPR), việc chạy n8n trên server riêng sẽ giúp bạn dễ dàng đáp ứng các yêu cầu này.

2. Các yêu cầu hệ thống để chạy n8n

Trước khi bắt đầu cài đặt, hãy đảm bảo server của bạn đáp ứng các yêu cầu hệ thống tối thiểu sau:

  • Hệ điều hành: Linux (Ubuntu, Debian, CentOS), macOS hoặc Windows (sử dụng WSL2). Ubuntu Server được khuyến nghị.
  • Node.js: Phiên bản LTS (Long Term Support) ổn định nhất. Khuyến nghị sử dụng phiên bản 16.x hoặc 18.x.
  • npm (Node Package Manager): Đi kèm với Node.js.
  • PostgreSQL: Phiên bản 9.6 trở lên.
  • Redis: Khuyến nghị sử dụng để quản lý queue và caching, cải thiện hiệu suất.
  • RAM: Tối thiểu 1GB, khuyến nghị 2GB hoặc hơn tùy thuộc vào độ phức tạp của workflow.
  • CPU: Tối thiểu 1 lõi, khuyến nghị 2 lõi hoặc hơn.
  • Ổ cứng: Tối thiểu 10GB dung lượng trống.

3. Hướng dẫn cài đặt n8n trên server riêng

Hướng dẫn này sẽ tập trung vào việc cài đặt n8n trên Ubuntu Server. Các bước tương tự có thể được áp dụng cho các hệ điều hành Linux khác.

3.1. Cập nhật hệ thống

Đầu tiên, hãy cập nhật hệ thống lên phiên bản mới nhất:

sudo apt update
sudo apt upgrade

3.2. Cài đặt Node.js và npm

Sử dụng Node Version Manager (nvm) để cài đặt Node.js:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
. ~/.nvm/nvm.sh
nvm install --lts
nvm use --lts

Kiểm tra phiên bản Node.js và npm:

node -v
npm -v

3.3. Cài đặt PostgreSQL

sudo apt install postgresql postgresql-contrib

Khởi động và kích hoạt PostgreSQL:

sudo systemctl start postgresql
sudo systemctl enable postgresql

Tạo user và database cho n8n:

sudo -u postgres psql

Trong PostgreSQL shell, thực hiện các lệnh sau (thay thế n8npassword bằng thông tin của bạn):

CREATE USER n8n WITH PASSWORD 'password';
CREATE DATABASE n8n OWNER n8n;
GRANT ALL PRIVILEGES ON DATABASE n8n TO n8n;
\q

3.4. Cài đặt Redis (Tùy chọn)

sudo apt install redis-server

Khởi động và kích hoạt Redis:

sudo systemctl start redis-server
sudo systemctl enable redis-server

3.5. Cài đặt n8n

sudo npm install -g n8n

3.6. Cấu hình n8n

Tạo một thư mục để lưu trữ dữ liệu và cấu hình của n8n:

mkdir ~/.n8n
cd ~/.n8n

Tạo file .env để lưu trữ các biến môi trường:

nano .env

Thêm các biến môi trường sau vào file .env (thay thế các giá trị placeholder bằng thông tin của bạn):

N8N_HOST=your_domain.com # Thay bằng tên miền của bạn
N8N_PORT=5678
N8N_PROTOCOL=https # Hoặc http nếu bạn chưa có SSL
N8N_ENCRYPTION_KEY=your_encryption_key # Tạo một chuỗi ngẫu nhiên mạnh
DB_TYPE=postgresdb
DB_POSTGRESDB_HOST=localhost
DB_POSTGRESDB_PORT=5432
DB_POSTGRESDB_DATABASE=n8n
DB_POSTGRESDB_USER=n8n
DB_POSTGRESDB_PASSWORD=password # Mật khẩu bạn đã đặt cho user n8n
EXECUTIONS_PROCESS=main
QUEUE_MODE=redis
REDIS_HOST=localhost
REDIS_PORT=6379

Lưu ý: Thay thế your_domain.com bằng tên miền của bạn hoặc địa chỉ IP của server nếu bạn chưa có tên miền. Thay thế your_encryption_key bằng một chuỗi ngẫu nhiên mạnh.

3.7. Khởi động n8n

n8n start

n8n sẽ khởi động và lắng nghe trên cổng bạn đã cấu hình trong file .env (mặc định là 5678). Truy cập vào http://your_domain.com:5678 hoặc http://your_server_ip:5678 để sử dụng n8n.

4. Deploy n8n với Docker (Phương pháp được khuyến nghị)

Sử dụng Docker là một cách đơn giản và hiệu quả để deploy n8n trên server riêng. Docker giúp bạn đóng gói ứng dụng và các dependencies của nó vào một container, đảm bảo tính nhất quán và dễ dàng triển khai trên nhiều môi trường khác nhau.

4.1. Cài đặt Docker và Docker Compose

sudo apt update
sudo apt install docker.io docker-compose

Khởi động và kích hoạt Docker:

sudo systemctl start docker
sudo systemctl enable docker

4.2. Tạo file docker-compose.yml

Tạo một file docker-compose.yml trong thư mục bạn muốn đặt n8n:

nano docker-compose.yml

Thêm nội dung sau vào file docker-compose.yml (thay thế các giá trị placeholder bằng thông tin của bạn):

version: "3.9"

services:
  postgres:
    image: postgres:13
    restart: always
    ports:
      - "5432:5432"
    environment:
      POSTGRES_USER: n8n
      POSTGRES_PASSWORD: password # Mật khẩu bạn đã đặt cho user n8n
      POSTGRES_DB: n8n
    volumes:
      - postgres_data:/var/lib/postgresql/data

  redis:
    image: redis:alpine
    restart: always
    ports:
      - "6379:6379"
    volumes:
      - redis_data:/data

  n8n:
    image: n8nio/n8n
    restart: always
    ports:
      - "5678:5678"
    environment:
      N8N_HOST: your_domain.com # Thay bằng tên miền của bạn
      N8N_PORT: 5678
      N8N_PROTOCOL: https # Hoặc http nếu bạn chưa có SSL
      N8N_ENCRYPTION_KEY: your_encryption_key # Tạo một chuỗi ngẫu nhiên mạnh
      DB_TYPE: postgresdb
      DB_POSTGRESDB_HOST: postgres
      DB_POSTGRESDB_PORT: 5432
      DB_POSTGRESDB_DATABASE: n8n
      DB_POSTGRESDB_USER: n8n
      DB_POSTGRESDB_PASSWORD: password # Mật khẩu bạn đã đặt cho user n8n
      EXECUTIONS_PROCESS: main
      QUEUE_MODE: redis
      REDIS_HOST: redis
      REDIS_PORT: 6379
    depends_on:
      - postgres
      - redis
    volumes:
      - n8n_data:/home/node/.n8n

volumes:
  postgres_data:
  redis_data:
  n8n_data:

Lưu ý: Tương tự như trên, thay thế your_domain.comyour_encryption_key bằng thông tin của bạn.

4.3. Khởi động n8n bằng Docker Compose

docker-compose up -d

Lệnh này sẽ tải xuống các image cần thiết, tạo các container và khởi động n8n. Bạn có thể kiểm tra trạng thái của các container bằng lệnh:

docker-compose ps

Truy cập vào http://your_domain.com:5678 hoặc http://your_server_ip:5678 để sử dụng n8n.

5. Cấu hình Reverse Proxy (Nginx)

Để tăng cường bảo mật và hiệu suất, bạn nên cấu hình reverse proxy với Nginx.

5.1. Cài đặt Nginx

sudo apt install nginx

Khởi động và kích hoạt Nginx:

sudo systemctl start nginx
sudo systemctl enable nginx

5.2. Tạo file cấu hình Nginx

Tạo một file cấu hình Nginx mới cho n8n:

sudo nano /etc/nginx/sites-available/n8n

Thêm nội dung sau vào file cấu hình (thay thế your_domain.com bằng tên miền của bạn):

server {
    listen 80;
    server_name your_domain.com;

    access_log /var/log/nginx/n8n.access.log;
    error_log /var/log/nginx/n8n.error.log;

    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;
    }
}

5.3. Kích hoạt cấu hình Nginx

sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

5.4. Cấu hình SSL (HTTPS)

Để sử dụng HTTPS, bạn có thể sử dụng Let's Encrypt để tạo chứng chỉ SSL miễn phí.

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d your_domain.com

Certbot sẽ tự động cấu hình Nginx để sử dụng HTTPS.

6. Cấu hình Persistence (Lưu trữ dữ liệu)

Khi sử dụng Docker, dữ liệu của bạn sẽ được lưu trữ trong các volume. Điều này đảm bảo rằng dữ liệu không bị mất khi container bị xóa hoặc khởi động lại. Nếu bạn không sử dụng Docker, dữ liệu sẽ được lưu trữ trong thư mục ~/.n8n.

7. Cập nhật n8n

Khi sử dụng npm:

sudo npm update -g n8n

Khi sử dụng Docker:

docker-compose pull
docker-compose up -d

8. Khắc phục sự cố

  • Lỗi kết nối database: Kiểm tra lại các thông tin kết nối database trong file .env hoặc docker-compose.yml. Đảm bảo rằng PostgreSQL đang chạy và có thể truy cập được từ server của bạn.
  • Lỗi kết nối Redis: Kiểm tra lại các thông tin kết nối Redis trong file .env hoặc docker-compose.yml. Đảm bảo rằng Redis đang chạy và có thể truy cập được từ server của bạn.
  • Lỗi 502 Bad Gateway: Kiểm tra xem n8n có đang chạy hay không. Kiểm tra lại cấu hình reverse proxy (Nginx) xem có lỗi không.
  • Lỗi khác: Xem log của n8n để biết thêm thông tin về lỗi.

9. Kết luận

Chạy n8n trên server riêng mang đến cho bạn nhiều lợi ích về kiểm soát dữ liệu, bảo mật, khả năng tùy chỉnh và hiệu suất. Với hướng dẫn chi tiết này, bạn có thể dễ dàng cài đặt và deploy n8n trên server riêng của mình. Hãy thử nghiệm và tận dụng sức mạnh của n8n để tự động hóa các quy trình làm việc của bạn!

Chúc bạn thành công!

Read more