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ể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.
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 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.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_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
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é.