Hướng dẫn cài đặt n8n trên VPS Ubuntu – Nhanh chóng, dễ dàng

n8n là gì ?

n8n là nền tảng workflow automation mã nguồn mở, giúp bạn kết nối và tự động hóa công việc giữa các ứng dụng, API, mail, database… Với giao diện trực quan kéo-thả và khả năng self-host (tự lưu trữ), n8n là giải pháp linh hoạt, bảo mật, chi phí chỉ còn một phần nhỏ so với các công cụ như Zapier hay Make.com

Tự đặt trên VPS Ubuntu giúp toàn quyền kiểm soát dữ liệu, dễ dàng mở rộng và tiết kiệm chi phí đáng kể.

Yêu cầu hệ thống & cấu hình DNS

  • CPU: 2 vCPU
  • RAM: 4 GB
  • SSD: 40 GB trở lên
  • OS: Ubuntu 22.04
  • DNS: Tạo bản ghi A tại nhà cung cấp DNS:
    • Loại: A
    • Tênn8n.yourdomain.com
    • Giá trị: địa chỉ IPv4 của VPS bạn
    • TTL: mặc định (mỗi nhà cung cấp)

Hướng dẫn cài đặt n8n trên máy chủ Ubuntu

Cài đặt Docker & Docker Compose

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

Đảm bảo hệ thống của bạn đang ở trạng thái mới nhất và tránh lỗi khi cài đặt Docker.

sudo apt update && sudo apt upgrade -y

2. Cài đặt gói phụ trợ (cần thiết để cài Docker đúng cách)

sudo apt install ca-certificates curl gnupg lsb-release -y

3. Tạo thư mục chứa khóa GPG của Docker

Đây là nơi lưu trữ khóa bảo mật (keyring) dùng để xác minh phần mềm từ kho Docker.

sudo mkdir -p /etc/apt/keyrings

4. Tải và lưu khóa GPG của Docker

Giúp xác minh tính toàn vẹn và nguồn gốc của phần mềm Docker.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

5. Thêm kho Docker chính thức vào hệ thống

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

6. Cập nhật danh sách gói sau khi thêm kho Docker

sudo apt update

7. Cài đặt Docker và Docker Compose plugin

Đây là cách cài chính thức, mới nhất, dùng lệnh docker compose (thay vì công cụ rời docker-compose trước đây).

sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y

8. Kích hoạt Docker & khởi chạy

sudo systemctl enable --now docker

Tạo script cài tự động toàn bộ

1. Tạo file script

nano install-docker.sh

2. Copy toàn bộ script bên dưới và dán vào file script

Nhấn Ctrl + O → Enter → Ctrl + X để lưu và thoát

#!/bin/bash
sudo apt update && sudo apt upgrade -y
sudo apt install ca-certificates curl gnupg lsb-release -y
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
"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 update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
sudo systemctl enable --now docker
docker --version
docker compose version

3. Cấp quyền thực thi

chmod +x install-docker.sh

4. Chạy script

./install-docker.sh

5. Sau khi chạy xong bạn có thể kiểm tra

docker --version
docker compose version

Tạo cấu hình Docker Compose mới nhất (v3.7+)

Tạo thư mục làm việc

mkdir ~/n8n && cd ~/n8n

Tạo file .env

  • Sửa yourdomain.com thành tên miền của bạn.
  • Sửa SUBDOMAIN=n8n thành SUBDOMAIN=subdomain của bạn
  • SSL_EMAIL nếu không có email tên miền vẫn có thể sử dụng Gmail để nhận thông báo cấu hình với Let’s Encrypt
cat <<EOF > .env
DOMAIN_NAME=yourdomain.com
SUBDOMAIN=n8n
SSL_EMAIL=you@domain.com
GENERIC_TIMEZONE=Asia/Ho_Chi_Minh
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
N8N_DEFAULT_BINARY_DATA_MODE=filesystem
EOF

Tạo file docker-compose.yml

nano docker-compose.yml

Copy nội dung bên dưới vào file docker-compose.yml, sau đó nhấn Ctrl + O → Enter → Ctrl + X để lưu và thoát

YAML

version: "3.7"

services:
  traefik:
    image: traefik:v2.10
    restart: always
    command:
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.mytls.acme.tlschallenge=true"
      - "--certificatesresolvers.mytls.acme.email=${SSL_EMAIL}"
      - "--certificatesresolvers.mytls.acme.storage=/letsencrypt/acme.json"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - traefik_letsencrypt:/letsencrypt
      - /var/run/docker.sock:/var/run/docker.sock:ro

  n8n:
    image: n8nio/n8n:latest
    restart: always
    ports:
      - "127.0.0.1:5678:5678"
    environment:
      - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
      - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=${N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS}
      - N8N_DEFAULT_BINARY_DATA_MODE=${N8N_DEFAULT_BINARY_DATA_MODE}
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`)"
      - "traefik.http.routers.n8n.entrypoints=websecure"
      - "traefik.http.routers.n8n.tls.certresolver=mytls"
      - "traefik.http.middlewares.n8n-headers.headers.SSLRedirect=true"
      - "traefik.http.middlewares.n8n-headers.headers.STSSeconds=31536000"

volumes:
  traefik_letsencrypt:

Phiên bản Docker Compose trên (v3.7+) đảm bảo tính tương thích với label nâng cao và Traefik 2.x. Đây là cấu hình mới nhất, dài và đầy đủ hơn các phiên bản cũ chỉ chạy qua Nginx.

Khởi động toàn bộ

docker compose up -d

Trỏ DNS & vào n8n

Sau khi DNS đã lan truyền (~5–15 phút), bạn chỉ cần truy cập:
https://n8n.yourdomain.com để bắt đầu.

Traefik tự động cấp SSL miễn phí qua Let’s Encrypt.

Mở rộng & vận hành ổn định dài hạn

  • DB production: chuyển sang PostgreSQL/MySQL để quản lý dữ liệu tốt hơn
  • Queue: bật Redis queue nếu dùng nhiều workflow
  • Backup: sử dụng snapshot định kỳ hoặc backup volume .n8n
  • Giám sát: kết nối Prometheus/Grafana hoặc sử dụng plugin traefik + n8n
  • Autoscaling: nâng cấp dễ dàng – CPU, RAM, Storage
4.6/5 - (100 bình chọn)