Hướng dẫn · n8n
Cài n8n trên VPS Ubuntu 24.04 bằng Docker, có HTTPS tự động
Từng bước dựng n8n tự lưu trữ trên VPS: Docker Compose, tên miền riêng, chứng chỉ HTTPS tự gia hạn, cách cập nhật và sao lưu workflow an toàn.
Chuẩn bị
- VPS chạy Ubuntu 24.04, tối thiểu 2 vCPU và 2 GB RAM. Nhiều workflow chạy song song nên dùng từ 4 vCPU, 6 GB RAM.
- Một tên miền con dành cho n8n, ví dụ
n8n.tenmien.vn. - Tài khoản có quyền
sudotrên VPS và một phần mềm SSH như Terminal, PowerShell hoặc Termius.
Nếu chọn ứng dụng n8n khi đặt máy tại thuevpsmanh, n8n đã chạy sẵn. Bạn chỉ cần làm bước gắn tên miền và có thể bỏ qua phần cài đặt.
Bước 1: Trỏ tên miền về VPS
Vào trang quản lý DNS của tên miền (nhà đăng ký hoặc Cloudflare), tạo bản ghi:
| Loại | Tên | Giá trị |
|---|---|---|
| A | n8n | Địa chỉ IPv4 của VPS |
Sau vài phút, kiểm tra từ máy tính hoặc ngay trên VPS. Lệnh phải trả về đúng IP của VPS:
dig +short n8n.tenmien.vnĐể trạng thái DNS only (đám mây xám) cho tới khi cài xong. Nếu bật proxy sau đó, chọn chế độ SSL Full (strict) để tránh lỗi chuyển hướng lặp.
Bước 2: Cài Docker
Đăng nhập VPS qua SSH, cập nhật hệ thống rồi cài Docker bằng script chính thức:
sudo apt update && sudo apt -y upgrade
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USERĐăng xuất rồi đăng nhập lại để quyền nhóm docker có hiệu lực, sau đó kiểm tra:
docker compose versionBước 3: Tạo file cấu hình
Tạo thư mục riêng cho n8n và file compose.yaml:
mkdir -p ~/n8n && cd ~/n8n
nano compose.yamlDán nội dung sau, thay n8n.tenmien.vn bằng tên miền của bạn:
services:
n8n:
image: docker.n8n.io/n8nio/n8n
restart: unless-stopped
environment:
- N8N_HOST=n8n.tenmien.vn
- N8N_PROTOCOL=https
- N8N_PROXY_HOPS=1
- WEBHOOK_URL=https://n8n.tenmien.vn/
- GENERIC_TIMEZONE=Asia/Ho_Chi_Minh
- TZ=Asia/Ho_Chi_Minh
volumes:
- n8n_data:/home/node/.n8n
caddy:
image: caddy:2
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- caddy_data:/data
volumes:
n8n_data:
caddy_data:Tạo file Caddyfile cùng thư mục. Caddy tự xin chứng chỉ Let's Encrypt và tự gia hạn:
n8n.tenmien.vn {
reverse_proxy n8n:5678
}Cổng 5678 của n8n không mở ra internet; mọi truy cập đi qua Caddy bằng HTTPS.
Bước 4: Khởi động và tạo tài khoản
docker compose up -d
docker compose logs -f caddyKhi log báo certificate obtained successfully, nhấn Ctrl+C để thoát log, rồi mở https://n8n.tenmien.vn và tạo tài khoản chủ sở hữu. Tài khoản đầu tiên có toàn quyền, nên tạo ngay sau khi khởi động.
Nếu VPS bật tường lửa ufw, mở hai cổng web:
sudo ufw allow 80,443/tcpCập nhật n8n
n8n ra bản mới thường xuyên. Trong thư mục ~/n8n:
docker compose pull
docker compose up -d
docker image prune -fDữ liệu nằm trong volume n8n_data nên không mất khi cập nhật. Trước khi lên bản lớn, nên sao lưu theo mục dưới và đọc ghi chú phát hành của n8n.
Sao lưu workflow
Xuất toàn bộ workflow và thông tin xác thực ra tệp, rồi chép về thư mục hiện tại:
docker compose exec n8n n8n export:workflow --all --output=/home/node/.n8n/workflows.json
docker compose exec n8n n8n export:credentials --all --output=/home/node/.n8n/credentials.json
docker compose cp n8n:/home/node/.n8n/workflows.json .
docker compose cp n8n:/home/node/.n8n/credentials.json .Thông tin xác thực được mã hoá bằng khoá lưu trong tệp /home/node/.n8n/config. Mất khoá này thì không khôi phục được credentials, nên sao lưu cả tệp config và cất ở nơi an toàn, tách khỏi VPS.
Có thể đặt lệnh trên vào cron chạy hằng ngày, hoặc dựng một workflow n8n tự đẩy bản sao lên Google Drive.
Lỗi thường gặp
Webhook hiện địa chỉ localhost:5678
Thiếu biến WEBHOOK_URL hoặc ghi sai. Sửa trong compose.yaml rồi chạy lại docker compose up -d.
Caddy không xin được chứng chỉ
Kiểm tra bản ghi A đã trỏ đúng IP bằng dig, và cổng 80, 443 đã mở. Let's Encrypt cần truy cập cổng 80 để xác thực tên miền.
Workflow chạy theo lịch bị lệch giờ
Đặt GENERIC_TIMEZONE=Asia/Ho_Chi_Minh như cấu hình trên. Mỗi workflow cũng có thể chọn múi giờ riêng trong phần Settings.