N8N cho người mới - Hướng dẫn cài đặt và chạy workflow tự động

N8N là gì, công cụ tự động hóa mã nguồn mở cho người mới
Nếu bạn từng copy-paste dữ liệu giữa các ứng dụng, gửi email thủ công sau mỗi đơn hàng mới, hoặc chạy script Python lẻ tẻ để đồng bộ dữ liệu giữa Google Sheets và cơ sở dữ liệu, bạn đang lãng phí thời gian. N8N (phát âm là "n-eight-n") là một workflow automation engine mã nguồn mở, thay thế cho Zapier hay Make (Integromat), nhưng tự host được trên VPS NVMe có IPv4 Việt Nam của bạn. Điều này có nghĩa: dữ liệu không qua trung gian, bạn toàn quyền kiểm soát, không giới hạn số lượng workflow theo pricing của bên thứ ba.
Bài viết này dành cho người mới: bạn sẽ cài N8N trên VPS Ubuntu 24.04 với Docker, chạy workflow đầu tiên từ trigger HTTP request đến ghi log, và hiểu nguyên lý hoạt động cốt lõi. Nếu bạn cần một VPS Ubuntu ổn định để chạy N8N lâu dài, các gói VPS NVMe từ thueVPS đáp ứng tốt với cấu hình tối thiểu 2GB RAM và 50GB SSD.
Yêu cầu trước khi bắt đầu
- Một VPS chạy Ubuntu 24.04 LTS (hoặc Debian 12). Tối thiểu 1GB RAM, khuyến nghị 2GB.
- User sudo non-root (cách tạo:
adduser youruser && usermod -aG sudo youruser). - SSH key pair đã cấu hình (không dùng password root). Nếu chưa có, tham khảo bài bảo mật SSH cơ bản.
- Docker và Docker Compose v2 (bài cài Docker trên VPS Ubuntu đã hướng dẫn chi tiết).
- Domain trỏ đến IP VPS (tùy chọn, nếu muốn HTTPS cho N8N editor).
Bước 1, Cài đặt Docker và Docker Compose
N8N chạy hàng đầu trong container Docker. Cài đặt phiên bản mới nhất từ kho chính thức của Docker:
# Cài đặt các gói phụ thuộc
sudo apt update && sudo apt install -y ca-certificates curl gnupg lsb-release
# Thêm key GPG và repo Docker
sudo install -m 0755 -d /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
# Cài Docker Engine và Docker Compose plugin
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Thêm user hiện tại vào group docker để chạy không cần sudo
sudo usermod -aG docker $USER
newgrp docker # áp dụng ngay trong phiên hiện tạiVerify: docker --version && docker compose version, bạn thấy output như "Docker version 27.x.x" và "Docker Compose version v2.x.x".
Bước 2, Triển khai N8N với Docker Compose
Tạo thư mục làm việc và file docker-compose.yml:
mkdir ~/n8n && cd ~/n8n
nano docker-compose.ymlDán nội dung sau (lưu ý thay yourdomain.com nếu có domain):
version: '3.8'
services:
n8n:
image: n8nio/n8n:latest
container_name: n8n
restart: unless-stopped
ports:
- "127.0.0.1:5678:5678" # chỉ listen localhost, dùng reverse proxy để expose
environment:
- N8N_HOST=yourdomain.com
- N8N_PROTOCOL=https
- N8N_PORT=5678
- DB_TYPE=sqlite # dùng SQLite cho người mới; production nên chuyển PostgreSQL
- DB_SQLITE_DATABASE=/home/node/.n8n/database.sqlite
volumes:
- n8n_data:/home/node/.n8n
networks:
- n8n_network
volumes:
n8n_data:
networks:
n8n_network:
driver: bridgeGiải thích: restart: unless-stopped giúp container tự khởi động lại sau reboot VPS. Volume n8n_data lưu database và credentials, nếu xóa container, dữ liệu vẫn còn. Chưa expose port 5678 ra internet, ta sẽ dùng Nginx làm reverse proxy ở bước sau để có HTTPS.
Khởi chạy:
docker compose up -d
docker compose logs -f # xem log lần đầu, Ctrl+C để thoátVerify: docker ps | grep n8n, thấy container "n8n" với status "Up". Hoặc gõ curl http://127.0.0.1:5678/healthz, nhận về {"status":"ok"}.
Bước 3, Cấu hình reverse proxy Nginx + Let's Encrypt (tùy chọn nhưng khuyến nghị)
Nếu muốn truy cập N8N editor qua trình duyệt với HTTPS, cài Nginx và Certbot:
sudo apt install -y nginx certbot python3-certbot-nginxTạo file cấu hình cho N8N:
sudo nano /etc/nginx/sites-available/n8nserver {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://127.0.0.1:5678;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
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_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
}
}sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
sudo nginx -t # kiểm tra cú pháp
sudo systemctl reload nginxCấp chứng chỉ SSL:
sudo certbot --nginx -d yourdomain.comSau đó truy cập https://yourdomain.com, bạn thấy trang đăng ký N8N. Tạo tài khoản admin đầu tiên.
Lưu ý firewall: Nếu đang dùng UFW, mở port 80 và 443:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Bước 4, Workflow đầu tiên: HTTP Trigger + ghi log
Đây là bài tập "Hello World" của N8N. Ta tạo workflow nhận webhook HTTP, ghi dữ liệu vào file log (thực chất là dùng nút "NoOp" và console log để dễ hiểu).
- Mở N8N editor → click "New Workflow".
- Kéo node Webhook vào canvas. Chọn "GET" method, copy Webhook URL (vd
https://yourdomain.com/webhook/abc123). - Kéo node Set để cấu trúc hóa output, click "Add Value" → field name = "message", value = "Hello from N8N!".
- Kéo node NoOp (hoặc Slack nếu bạn nối), mục đích chỉ để workflow có điểm kết thúc. Nhưng để ghi log thấy được, dùng node Wait với 0 giây, hoặc thêm Execute Command chạy
echo(tùy chọn). Đơn giản nhất: kết nối trực tiếp Webhook → Set → NoOp. - Nhấn Activate workflow (nút toggle ở góc trên).
Test: Mở tab terminal khác, chạy:
curl -X GET https://yourdomain.com/webhook/abc123Quay lại N8N editor → tab "Execution" → bạn thấy một execution thành công, output trả về {"message":"Hello from N8N!"}.
Mở rộng: Node HTTP Request cho phép gọi API Google, Slack, Telegram, database… Cứ thế kéo thả xây dựng chuỗi tự động hóa.
Bước 5, Bảo mật và vận hành cơ bản
- Không expose port 5678 trực tiếp: Luôn dùng reverse proxy Nginx hoặc Caddy. Nếu bạn muốn một giải pháp nhẹ hơn, dùng Caddy tự động HTTPS, chỉ cần 1 dòng cấu hình.
- Backup volume dữ liệu: Dùng lệnh
docker run --rm -v n8n_data:/data -v $(pwd):/backup alpine tar czf /backup/n8n_backup_$(date +%Y%m%d).tar.gz -C /data ., chạy cron hàng ngày. - Cập nhật N8N:
docker compose pull && docker compose up -d, kiểm tra changelog trước khi update. - Giám sát: Dùng
docker compose logs --tail=50 -fhoặc thiết lập Prometheus + Grafana theo dõi tài nguyên.
Xử lý lỗi thường gặp
- Lỗi "port already in use" khi chạy Nginx: Kiểm tra
sudo ss -tlnp | grep :80, nếu có process Apache khác, tắt bằngsudo systemctl stop apache2 && sudo systemctl disable apache2. - Lỗi "Cannot connect to SQLite database" khi khởi động container: Kiểm tra quyền thư mục volume:
docker exec -it n8n ls -la /home/node/.n8n. Nếu file database không tồn tại, xóa container và chạy lạidocker compose up -d. - Lỗi 502 Bad Gateway từ Nginx: Kiểm tra container N8N đang chạy:
docker ps | grep n8n. Và Nginx có proxy đúng backend127.0.0.1:5678, dùngcurl http://127.0.0.1:5678/healthztừ chính VPS để kiểm tra upstream.
Câu hỏi thường gặp
N8N có miễn phí không?
N8N Community Edition (tự host) hoàn toàn miễn phí, mã nguồn mở, không giới hạn số workflow hay user. Bạn chỉ trả phí VPS để host, với VPS giá rẻ từ thueVPS khoảng 189.000đ/tháng là có thể chạy ổn định.
N8N khác Zapier thế nào?
Zapier là SaaS: bạn thuê ngoài, giới hạn số task/tháng, dữ liệu qua server của họ. N8N tự host: bạn kiểm soát dữ liệu, không giới hạn task, nhưng tự lo bảo trì VPS. Với người mới, N8N có UI kéo thả dễ dùng tương đương.
Tôi cần cấu hình VPS thế nào để chạy N8N?
Tối thiểu 1GB RAM, 20GB ổ cứng. Khuyến nghị 2GB RAM và thuê VPS Linux dùng NVMe SSD để tốc độ I/O tốt. Hệ điều hành Ubuntu 24.04 LTS hoặc Debian 12 là lựa chọn ổn định.
Có thể chạy N8N trên Windows Server không?
Có thể qua Docker Desktop trên Windows Server 2022, nhưng khuyến nghị dùng Linux để tránh overhead và tương thích Docker tốt hơn. Nếu bạn muốn RDP, có thể chọn VPS Windows nhưng sẽ tốn nhiều RAM hơn.
Làm sao để kết nối N8N với Google Sheets?
Trong editor, thêm node "Google Sheets" → OAuth2 → bạn cần tạo project trên Google Cloud Console, bật API Google Sheets, lấy credentials. N8N sẽ redirect bạn qua trình duyệt để xác thực. Có hướng dẫn chi tiết trong docs của N8N.
N8N có bị mất dữ liệu khi tắt VPS không?
Dữ liệu workflow và credentials lưu trong volume Docker (SQLite). Nếu VPS tắt đột ngột, dữ liệu vẫn còn trên ổ cứng. Nên backup volume định kỳ vào Google Drive hoặc S3, bài dùng rclone backup lên Google Drive hướng dẫn cách đó.
Bài viết liên quan
- N8N là gì, những ai nên sử dụng N8N
- Cách cài Docker trên VPS Ubuntu từ A-Z
- Cấu hình Nginx làm reverse proxy trên Ubuntu 24.04
- Gửi cảnh báo hệ thống VPS qua Telegram Bot


