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.