
Hướng dẫn cài đặt n8n trên VPS là chủ đề được rất nhiều người làm automation, marketing, vận hành hệ thống và doanh nghiệp nhỏ quan tâm khi muốn tiết kiệm chi phí nhưng vẫn kiểm soát hoàn toàn dữ liệu. Thay vì dùng n8n Cloud với chi phí cao hơn và giới hạn executions theo gói, nhiều người chọn self-host n8n trên VPS để chủ động hơn trong quá trình triển khai, mở rộng và tối ưu hệ thống.
Nếu bạn đang muốn cài n8n để chạy workflow tự động 24/7, bài viết này sẽ giúp bạn hiểu rõ từ kiến trúc hoạt động, cấu hình VPS phù hợp, cách cài bằng Docker, cấu hình domain, SSL, backup, cập nhật phiên bản cho đến cách xử lý các lỗi thường gặp khi vận hành thực tế.
Kiến trúc n8n hoạt động trên máy chủ như thế nào?
Trước khi cài đặt, bạn nên hiểu n8n hoạt động trên VPS ra sao để dễ xử lý khi gặp lỗi.
Mô hình cơ bản
Khi self-host, n8n thường hoạt động theo mô hình:
- VPS/Cloud VPS làm hạ tầng chạy hệ thống
- Docker hoặc Node.js để chạy dịch vụ n8n
- Volume hoặc thư mục data để lưu workflow, credentials, executions
- Nginx hoặc Caddy làm reverse proxy
- SSL certificate để mã hóa kết nối HTTPS
- Domain/Subdomain để truy cập giao diện và webhook ổn định
Luồng hoạt động phổ biến
Thông thường, hệ thống sẽ chạy theo chuỗi:
Người dùng truy cập domain → Nginx/Caddy nhận request → chuyển tiếp về n8n chạy ở cổng 5678 → n8n xử lý giao diện, workflow và webhook → dữ liệu được lưu lại trong thư mục hoặc volume.
Hiểu mô hình này sẽ giúp bạn dễ xử lý các lỗi như:
- Timeout khi truy cập
- Webhook không nhận request
- SSL không hợp lệ
- Sai domain hoặc biến môi trường
- Lỗi quyền ghi dữ liệu

Cần chuẩn bị gì trước khi cài n8n trên VPS?
Muốn hệ thống chạy mượt và ít lỗi, bạn nên chuẩn bị đủ 4 phần sau.
VPS phù hợp
Với nhu cầu cơ bản, n8n không cần cấu hình quá cao. Tuy nhiên, nếu chạy nhiều workflow, webhook, cron hoặc tích hợp nhiều ứng dụng cùng lúc thì bạn nên chọn cấu hình rộng hơn để tránh chậm và restart.
Mức tối thiểu nên có:
- 1 vCPU
- 2 GB RAM
- 20 GB SSD
- Ubuntu 20.04 trở lên
Mức nên dùng để ổn định hơn:
- 2 vCPU
- 4 GB RAM
- 40 GB NVMe
- Ubuntu 22.04 LTS
Nếu bạn cần chạy automation liên tục, chọn Cloud VPS NVMe sẽ hợp lý hơn nhờ tốc độ đọc ghi tốt, phản hồi nhanh và dễ nâng cấp khi workflow tăng dần.
Domain hoặc subdomain
Bạn nên dùng một subdomain riêng như:
- n8n.tenmiencuaban.com
- automation.tenmiencuaban.com
Việc gắn domain giúp:
- Truy cập chuyên nghiệp hơn
- Cấu hình SSL dễ hơn
- Webhook hoạt động ổn định
- Dễ tích hợp với hệ thống khác
SSL certificate
Nếu chạy production mà không có SSL, dữ liệu truyền giữa người dùng và máy chủ sẽ không được mã hóa đầy đủ. Đây là điểm rất quan trọng vì n8n thường lưu và xử lý nhiều thông tin nhạy cảm như token, API key, credentials.
Giải pháp backup
Self-host giúp bạn chủ động dữ liệu, nhưng đồng thời cũng phải tự chịu trách nhiệm sao lưu. Chỉ cần một lần update lỗi hoặc thao tác nhầm, toàn bộ workflow có thể bị ảnh hưởng nếu không backup trước.
Hướng dẫn cài đặt n8n trên VPS bằng Docker
Đây là cách phổ biến, dễ quản lý và phù hợp nhất với đa số người dùng hiện nay.
Bước 1: Cập nhật hệ thống và cài Docker
SSH vào VPS, sau đó cập nhật hệ thống và cài Docker. Cách này giúp bạn tách biệt môi trường n8n với hệ điều hành, dễ cập nhật và giảm xung đột.
sudo apt update && sudo apt upgrade -y
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
sudo systemctl enable docker
sudo systemctl start docker
Sau khi cài xong, logout rồi SSH lại để quyền docker được áp dụng.
Bước 2: Tạo thư mục lưu dữ liệu n8n
Bạn cần tạo thư mục lưu trữ dữ liệu để workflow và credentials không bị mất khi container restart hoặc update.
mkdir -p ~/.n8n
sudo chown -R 1000:1000 ~/.n8n
Phần phân quyền này rất quan trọng. Nếu bỏ qua, bạn rất dễ gặp lỗi permission denied khi n8n ghi database.
Bước 3: Chạy n8n container
Cách chạy nhanh để test
docker run -d
–name n8n
–restart unless-stopped
-p 5678:5678
-v ~/.n8n:/home/node/.n8n
n8nio/n8n
Cách này phù hợp để thử nhanh trong môi trường test hoặc lab.
Cách chạy đầy đủ để dùng chính thức
docker run -d
–name n8n
–restart unless-stopped
-p 5678:5678
-v ~/.n8n:/home/node/.n8n
-e N8N_HOST=”n8n.yourdomain.com”
-e N8N_PORT=5678
-e N8N_PROTOCOL=https
-e NODE_ENV=production
-e WEBHOOK_URL=”https://n8n.yourdomain.com/”
-e GENERIC_TIMEZONE=”Asia/Ho_Chi_Minh”
-e TZ=”Asia/Ho_Chi_Minh”
n8nio/n8n
Những biến môi trường này giúp n8n hiểu đúng domain, giao thức HTTPS và timezone để webhook, lịch chạy và URL hoạt động chính xác.
Bước 4: Kiểm tra n8n đã chạy chưa
Sau khi khởi động container, kiểm tra bằng các lệnh:
docker ps
docker logs n8n
curl http://localhost:5678
Nếu mọi thứ ổn, bạn có thể truy cập bằng IP VPS ở cổng 5678 để kiểm tra giao diện ban đầu.

Dùng Docker Compose cho production có tốt hơn không?
Câu trả lời là có. Nếu bạn muốn quản lý dễ hơn, nên dùng Docker Compose.
Lợi ích của Docker Compose
- Dễ chỉnh sửa biến môi trường
- Dễ backup và nâng cấp
- Dễ mở rộng thêm PostgreSQL, Redis hoặc reverse proxy
- Dễ quản lý khi chạy nhiều service
Ví dụ file docker-compose.yml
version: ‘3.8’
services:
n8n:
image: n8nio/n8n
container_name: n8n
restart: unless-stopped
ports:
– “5678:5678”
volumes:
– n8n_data:/home/node/.n8n
environment:
– N8N_HOST=n8n.yourdomain.com
– N8N_PORT=5678
– N8N_PROTOCOL=https
– NODE_ENV=production
– WEBHOOK_URL=https://n8n.yourdomain.com/
– GENERIC_TIMEZONE=Asia/Ho_Chi_Minh
– TZ=Asia/Ho_Chi_Minh
volumes:
n8n_data:
Khởi động:
docker compose up -d
Nếu xác định dùng lâu dài, đây là cách nên ưu tiên.
Cấu hình domain cho n8n trên VPS
Sau khi n8n chạy, bước tiếp theo là trỏ domain hoặc subdomain về VPS.
Tạo bản ghi DNS
Trong phần quản lý DNS, tạo:
- Type: A
- Name: n8n
- Value: IP VPS
- TTL: 300
Sau khi DNS cập nhật, bạn có thể dùng subdomain để truy cập thay vì IP.
Vì sao domain quan trọng?
Domain không chỉ để đẹp hơn. Nó còn giúp:
- Cài SSL dễ dàng
- Webhook ổn định
- Tránh lỗi redirect hoặc callback
- Tăng độ tin cậy khi chia sẻ webhook cho hệ thống khác
Nếu bạn chưa có tên miền, nên đăng ký tại đơn vị có quản lý DNS ổn định, hỗ trợ nhanh và dễ trỏ record khi cần.

Cấu hình SSL cho n8n bằng Nginx hoặc Caddy
Cách 1: Dùng Nginx reverse proxy
Đây là cách phổ biến, phù hợp nếu bạn quen hệ thống Linux.
Cấu hình Nginx cơ bản
server {
listen 80;
server_name n8n.yourdomain.com;
location / {
proxy_pass http://localhost:5678;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection ‘upgrade’;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
proxy_read_timeout 86400;
chunked_transfer_encoding off;
proxy_buffering off;
}
}
Sau đó kích hoạt site và lấy SSL bằng Certbot.
Khi nào nên chọn Nginx?
Nên dùng nếu bạn:
- Muốn kiểm soát cấu hình chi tiết
- Đang có nhiều website trên cùng VPS
- Quen quản lý reverse proxy
Cách 2: Dùng Caddy
Caddy đơn giản hơn nhiều vì có thể tự lấy và gia hạn SSL gần như tự động.
Caddyfile cơ bản
n8n.yourdomain.com {
reverse_proxy localhost:5678
}
Khi nào nên chọn Caddy?
Phù hợp nếu bạn:
- Muốn cấu hình nhanh, ít lỗi
- Không rành Nginx
- Cần triển khai gọn nhẹ
Với người mới, Caddy thường là lựa chọn dễ tiếp cận hơn.
Cách test webhook sau khi cài xong
Sau khi cấu hình domain và SSL, hãy tạo một workflow có Webhook Trigger rồi kiểm tra URL dạng:
https://n8n.yourdomain.com/webhook/test-webhook
Nếu webhook không hoạt động, phần lớn nguyên nhân nằm ở:
- Sai WEBHOOK_URL
- DNS chưa trỏ đúng
- SSL lỗi
- Firewall đang chặn cổng
- Reverse proxy cấu hình thiếu header
Đây là bước rất quan trọng vì nhiều người thấy giao diện vào được nhưng webhook vẫn lỗi.
Backup dữ liệu n8n như thế nào cho an toàn?
Dữ liệu n8n thường nằm trong thư mục ~/.n8n hoặc volume Docker tương ứng. Đây là phần cần được backup định kỳ.
Những gì cần sao lưu?
Thông thường sẽ gồm:
- Database workflows
- Credentials
- Cấu hình
- Encryption key
- Dữ liệu execution nếu có lưu
Script backup cơ bản
#!/bin/bash
BACKUP_DIR=”/root/backups/n8n”
N8N_DATA=”$HOME/.n8n”
KEEP_DAYS=7
mkdir -p $BACKUP_DIR
BACKUP_FILE=”$BACKUP_DIR/n8n-backup-$(date +%Y%m%d-%H%M%S).tar.gz”
tar -czvf $BACKUP_FILE $N8N_DATA
find $BACKUP_DIR -name “*.tar.gz” -mtime +$KEEP_DAYS -delete
echo “Backup completed: $BACKUP_FILE”
Sau đó đặt cron chạy hằng ngày để tránh quên.
Vì sao backup là bắt buộc?
Rất nhiều sự cố thực tế không nằm ở bước cài đặt, mà nằm ở lúc:
- Update phiên bản mới
- Chỉnh nhầm biến môi trường
- Xóa nhầm volume
- VPS đầy ổ hoặc lỗi hệ thống
Backup tốt giúp bạn rollback nhanh và giảm rủi ro gián đoạn workflow.

Vì sao nên chọn Dhost khi cần triển khai n8n trên VPS?
Nếu bạn đang tìm một giải pháp vừa đủ mạnh để self-host n8n, vừa có hỗ trợ nhanh khi gặp lỗi kỹ thuật, Dhost là lựa chọn đáng cân nhắc.
Hiện Dhost đang cung cấp nhiều nhóm dịch vụ phù hợp cho bài toán triển khai automation như Cloud VPS NVMe, Cloud VPS N8N, dịch vụ SSL, tên miền, email, cùng các nhóm hosting tối ưu cho nhiều nhu cầu vận hành website và ứng dụng. Dhost cung cấp các dòng Cloud VPS có quyền root đầy đủ, khả năng nâng cấp tài nguyên linh hoạt và hạ tầng hướng tới tốc độ, uptime cao, chống DDoS và hỗ trợ kỹ thuật liên tục.
Điểm đáng giá khi chọn một đơn vị như Dhost không chỉ là chỗ thuê VPS, mà là sự đồng bộ:
- Có thể bắt đầu từ VPS phù hợp nhu cầu thực tế
- Dễ mua và quản lý domain/subdomain
- Triển khai SSL thuận tiện
- Kết nối thêm email doanh nghiệp khi cần
- Dễ mở rộng sang website, landing page hoặc hệ thống quản trị sau này
Với người mới, yếu tố hỗ trợ kỹ thuật nhanh và hạ tầng ổn định thường quan trọng không kém giá.
Hướng dẫn cài đặt n8n trên VPS không quá khó nếu bạn đi đúng thứ tự: chọn VPS phù hợp, cài n8n bằng Docker, cấu hình domain, thêm SSL, kiểm tra webhook, thiết lập backup và chuẩn bị sẵn phương án xử lý lỗi phổ biến. Nếu bạn chỉ cần môi trường thử nghiệm, một VPS cơ bản là đủ để bắt đầu. Nhưng nếu xác định dùng n8n lâu dài cho automation doanh nghiệp, bạn nên đầu tư từ đầu vào hạ tầng ổn định, domain chuẩn, SSL đầy đủ và backup định kỳ để tránh gián đoạn về sau.
Nếu bạn đang cần một giải pháp phù hợp để triển khai n8n, Dhost hiện có các nhóm dịch vụ như Cloud VPS NVMe, Cloud VPS N8N, hosting, SSL, tên miền và email, rất phù hợp cho bài toán tự host, mở rộng hệ thống và vận hành lâu dài.
