Hướng dẫn cài đặt N8N trên Ubuntu chi tiết từ A – Z

N8N là một công cụ tự động hóa quy trình làm việc mã nguồn mở mạnh mẽ, cho phép bạn kết nối các ứng dụng và tự động hóa các tác vụ mà không cần viết code phức tạp. Việc cài đặt N8N trên một máy chủ Ubuntu mang lại sự linh hoạt và kiểm soát tối đa. Bài viết này cung cấp hướng dẫn cài đặt N8N trên Ubuntu một cách chi tiết nhất, bao gồm tất cả các bước cần thiết từ khâu chuẩn bị đến cấu hình cuối cùng, đảm bảo bạn có thể thiết lập và vận hành N8N một cách suôn sẻ. Hãy cùng bắt đầu!

Yêu cầu kỹ thuật

Khi lựa chọn VPS để chạy n8n, bạn không cần quá chú trọng vào CPU, nhưng RAM là yếu tố quan trọng. Cấu hình khuyến nghị:

  • RAM tối thiểu: 4GB (để đảm bảo n8n hoạt động ổn định).
  • Hệ điều hành: Ubuntu 22.04 (phiên bản được khuyến nghị để triển khai n8n).

Sau khi đã có VPS và tên miền, bạn có thể tiến hành cài đặt n8n theo hướng dẫn chi tiết dưới đây.

Cài đặt Docker

Quá trình cài đặt có thể khác nhau tùy vào bản phân phối Linux bạn đang sử dụng. Bạn có thể tìm hướng dẫn chi tiết trong tài liệu chính thức của Docker.

Dưới đây là hướng dẫn cài đặt Docker trên Ubuntu:

sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

Cài đặt Docker-Compose

Quá trình cài đặt có thể khác nhau tùy vào bản phân phối Linux bạn đang sử dụng. Bạn có thể tìm hướng dẫn chi tiết trong tài liệu chính thức của Docker.

Dưới đây là ví dụ cài đặt Docker-Compose trên Ubuntu:

sudo apt-get install docker-compose-plugin

Cấu hình DNS

Thêm bản ghi A record để định tuyến tên miền phụ (subdomain) đến địa chỉ IP tương ứng.

Type: A
Name: n8n (or the desired subdomain)
IP address: <IP_SERVER_CỦA_BẠN>

Tạo tệp Docker Compose

Tạo một tệp docker-compose.yml, sau đó dán nội dung sau vào tệp:

version: "3.7"

services:
  traefik:
    image: "traefik"
    restart: always
    command:
      - "--api=true"
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.web.http.redirections.entryPoint.to=websecure"
      - "--entrypoints.web.http.redirections.entrypoint.scheme=https"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.mytlschallenge.acme.tlschallenge=true"
      - "--certificatesresolvers.mytlschallenge.acme.email=${SSL_EMAIL}"
      - "--certificatesresolvers.mytlschallenge.acme.storage=/letsencrypt/acme.json"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - traefik_data:/letsencrypt
      - /var/run/docker.sock:/var/run/docker.sock:ro

  n8n:
    image: docker.n8n.io/n8nio/n8n
    restart: always
    ports:
      - "127.0.0.1:5678:5678"
    labels:
      - traefik.enable=true
      - traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`)
      - traefik.http.routers.n8n.tls=true
      - traefik.http.routers.n8n.entrypoints=web,websecure
      - traefik.http.routers.n8n.tls.certresolver=mytlschallenge
      - traefik.http.middlewares.n8n.headers.SSLRedirect=true
      - traefik.http.middlewares.n8n.headers.STSSeconds=315360000
      - traefik.http.middlewares.n8n.headers.browserXSSFilter=true
      - traefik.http.middlewares.n8n.headers.contentTypeNosniff=true
      - traefik.http.middlewares.n8n.headers.forceSTSHeader=true
      - traefik.http.middlewares.n8n.headers.SSLHost=${DOMAIN_NAME}
      - traefik.http.middlewares.n8n.headers.STSIncludeSubdomains=true
      - traefik.http.middlewares.n8n.headers.STSPreload=true
      - traefik.http.routers.n8n.middlewares=n8n@docker
    environment:
      - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
      - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
    volumes:
      - n8n_data:/home/node/.n8n
      - /local-files:/files

volumes:
  traefik_data:
    external: true
  n8n_data:
    external: true

Tạo tệp .env

Tạo một tệp .env và chỉnh sửa nội dung theo yêu cầu của bạn.

# Tên miền cấp cao nhất để phục vụ dịch vụ 
DOMAIN_NAME=shost.vn

# Tên miền phụ để phục vụ dịch vụ
SUBDOMAIN=n8n

# DOMAIN_NAME và SUBDOMAIN kết hợp lại sẽ xác định địa chỉ truy cập của n8n  
# Ví dụ trên sẽ dẫn đến: https://n8n.shost.vn  

# Cấu hình múi giờ chung 
GENERIC_TIMEZONE=Asia/Ho_Chi_Minh

# Cấu hình chế độ lưu trữ dữ liệu nhị phân mặc định của n8n  
N8N_DEFAULT_BINARY_DATA_MODE=filesystem

# Bật chế độ kiểm soát quyền truy cập tệp cấu hình  
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true

# Kích hoạt tính năng dọn dẹp dữ liệu thực thi  
EXECUTIONS_DATA_PRUNE=true

# Giới hạn thời gian lưu trữ dữ liệu thực thi (tính theo giờ)  
EXECUTIONS_DATA_MAX_AGE=168

# Giới hạn số lượng bản ghi dữ liệu thực thi được lưu trữ  
EXECUTIONS_DATA_PRUNE_MAX_COUNT=50000

# Địa chỉ email sử dụng để tạo chứng chỉ SSL 
SSL_EMAIL=admin@shost.vn

Tạo thư mục dữ liệu

Tạo Docker volume được định nghĩa là n8n_data . N8n sẽ lưu trữ tệp cơ sở dữ liệu SQLite và khóa mã hóa trong volume này.

sudo docker volume create n8n_data

Tạo một Docker volume cho dữ liệu của Traefik, được định nghĩa là traefik_data.

sudo docker volume create traefik_data

Khởi động Docker Compose

Bây giờ bạn có thể khởi động n8n bằng lệnh sau:

sudo docker compose up -d

Để dừng container, chạy lệnh sau:

sudo docker compose stop

Để cập nhật container, dùng lệnh sau:

sudo docker compose pull

Kết luận

Quá trình cài đặt n8n lên Ubuntu đã hoàn tất, bạn có thể truy cập n8n theo đường dẫn https://n8n.tenmiencuaban hoặc https://tenmiencuaban.

5/5 - (1 bình chọn)