Hướng dẫn chi tiết cài đặt N8N trên VPS Ubuntu 2025

Yêu cầu kiến thức trước khi tự cài đặt n8n trên Ubuntu (Self-hosting)

Tự cài đặt n8n trên VPS Ubuntu yêu cầu kiến thức kỹ thuật, bao gồm:

  • Thiết lập và cấu hình máy chủ cũng như container
  • Quản lý tài nguyên ứng dụng và mở rộng quy mô
  • Bảo mật máy chủ và ứng dụng
  • Cấu hình n8n
  • Quản lý VPS
  • Cấu hình tên miền & DNS

Việc đăng ký VPS và tên miền có thể thực hiện tại nhiều nhà cung cấp khác nhau. Tuy nhiên, để đảm bảo hiệu suất và tính ổn định, Giáp Phạm khuyến nghị bạn có thể tham khảo dịch vụ của HostHatch, một trong những nhà cung cấp uy tín với chất lượng tốt và hỗ trợ nhanh chóng.

Chi phí để sử dụng VPS tại HostHatch rất rẻ, chỉ với $6 là bạn có ngay một VPS với 2 core và 4GB Ram để chạy n8n rất ngon rồi, nếu bạn mua theo năm thì sẽ chỉ mất $60 mà thôi (được tặng free 2 tháng sử dụng).
Bạn có thể đăng ký dịch vụ của HostHatch tại đây.

Yêu cầu kỹ thuật cho VPS

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ểu4GB (để đảm bảo n8n hoạt động ổn định).
  • Hệ điều hànhUbuntu 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.

1. 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

2. 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

3. 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>

4. 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:
      - "YOUR-IP: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

Anh em nhớ thay “YOUR-IP” trong file trên thành IP của VPS mà anh em đang cài đặt nhé.

5. 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=giappham.com

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

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

# 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=contact@giappham.com

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

Tạo Docker volume được định nghĩa là n8n_datan8n 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

7. 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

8. Hoàn tất

Bây giờ, n8n có thể được truy cập bằng tên miền phụ (subdomain) và tên miền chính (domain) đã cấu hình.

Ví dụ trên sẽ dẫn đến địa chỉ: https://n8n.giappham.com

Lưu ý: n8n chỉ có thể được truy cập qua https, không hỗ trợ http.

Qua bài viết trên mình vừa hướng dẫn các bạn cài đặt N8N trên VPS chạy hệ điều hành Ubuntu, nếu có điều gì thắc mắc hoặc muốn mình hướng dẫn thêm gì thì hãy liên hệ với mình thông qua Facebook của mình tại đây nhé.

Bài viết liên quan