n8n: Hướng dẫn Automation Workflow & Integration
I. Giới thiệu n8n
n8n (Node-based Execution Engine) là công cụ tự động hóa workflow và tích hợp dữ liệu giữa các ứng dụng. Điều này rất hữu ích khi:
- Bạn muốn tự động hóa các tác vụ lặp đi lặp lại
- Cần kết nối & đồng bộ dữ liệu giữa các app (Slack, email, databases, APIs)
- Muốn trigger actions dựa trên events (webhook, schedule, ...)
- Cần workflow phức tạp mà không viết code
- Muốn self-hosted automation thay vì Zapier/Make
Chức năng chính n8n:
- Visual Workflow Builder: Kéo thả để tạo workflows
- 500+ Integrations: Kết nối với hầu hết ứng dụng
- Webhooks & HTTP Requests: Trigger từ external sources
- Scheduling: Chạy workflows định kỳ
- Error Handling: Xử lý lỗi tự động
- Data Transformation: Xử lý & chuyển đổi dữ liệu
- Self-hosted: Toàn quyền kiểm soát dữ liệu
- Collaborative: Chia sẻ workflows với team
So sánh n8n với các tool khác:
| Tính năng | n8n | Zapier | Make (Integromat) |
|---|---|---|---|
| Giá | Miễn phí (self-hosted) | Trả phí ($monthly) | Trả phí (freemium) |
| Self-hosted | Có | Không | Không |
| Integrations | 500+ | 6000+ | 1000+ |
| Ease of use | Dễ | Rất dễ | Trung bình |
| Data privacy | 100% control | Cloud only | Cloud only |
II. Triển khai n8n với Docker
1. Docker Compose
version: '3.8'
services:
n8n:
image: n8nio/n8n:latest
container_name: n8n-apps
restart: always
ports:
- "5678:5678"
environment:
- GENERIC_TIMEZONE=Asia/Ho_Chi_Minh
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=secure_password_here
- N8N_HOST=n8n.lab
- WEBHOOK_URL=http://n8n:5678/
- N8N_LOG_LEVEL=info
volumes:
- /root/n8n:/home/node/.n8n
mem_limit: 512m
cpus: 0.3
networks:
- docker-net
networks:
docker-net:
external: true
Giải thích cấu hình:
- image: n8nio/n8n:latest (official image)
- ports: 5678 (host) → 5678 (container)
- GENERIC_TIMEZONE: Asia/Ho_Chi_Minh (múi giờ)
- N8N_BASIC_AUTH_ACTIVE: true (bật authentication)
- N8N_BASIC_AUTH_USER/PASSWORD: Credentials để đăng nhập
- N8N_HOST: Tên host/domain của n8n
- WEBHOOK_URL: URL để triggers từ bên ngoài
- volumes: Lưu workflows & data
- networks: Sử dụng docker-net (external)
2. Deploy qua Portainer
- SSH vào server & tạo thư mục:
mkdir -p /root/n8n
- Vào Portainer Dashboard
- Chọn Stacks → Add stack
- Đặt tên Stack:
n8n - Copy/paste docker-compose vào Web editor
- Thay đổi password admin
- Chọn network:
docker-net - Click Deploy the stack
3. Kiểm tra hoạt động
Vào Portainer → Stacks → n8n → Container → n8n-apps → Logs.
Bạn sẽ thấy dòng như:
n8n ready on 0.0.0.0, port 5678 Listening on 0.0.0.0:5678
Truy cập http://your-ip:5678 để vào n8n dashboard.
4. Đăng nhập
Đăng nhập với credentials:
Username: admin Password: secure_password_here (từ config)
III. Tạo Workflow cơ bản
1. Tạo Webhook Trigger
Để trigger workflow từ external source:
- Vào n8n Dashboard → Click + New Workflow
- Đặt tên:
My First Workflow - Click + để thêm node
- Chọn Webhook
- Chọn method: POST
- Copy webhook URL
Webhook URL sẽ có dạng: http://your-ip:5678/webhook/xxx
2. Thêm HTTP Request Node
Để gửi HTTP request:
- Click + để thêm node sau Webhook
- Chọn HTTP Request
- Method: GET/POST
- URL:
https://api.example.com/endpoint - Headers: Thêm authentication nếu cần
3. Thêm Data Transform Node
Để xử lý dữ liệu:
- Click + để thêm node
- Chọn Merge hoặc Function
- Viết code hoặc cấu hình transform logic
4. Thêm Notification (Slack/Email)
Để gửi notification:
- Click + để thêm node
- Chọn Slack hoặc Send Email
- Cấu hình credentials:
- Slack: Cần Bot Token
- Email: SMTP configuration
- Viết message template
5. Activate & Test Workflow
Sau khi xây dựng workflow:
- Click Save
- Click Activate (button bên trên)
- Test bằng cách gửi request đến webhook
IV. Ví dụ Workflows thực tế
1. Auto Email Notification Workflow
Mô tả: Khi webhook nhận được data, gửi email notification.
Nodes:
- Webhook (trigger)
- Set (format data)
- Send Email
2. Database Sync Workflow
Mô tả: Đồng bộ dữ liệu từ API vào MySQL database.
Nodes:
- HTTP Request (fetch data từ API)
- Set (transform data)
- MySQL (insert/update)
3. Slack Alert Workflow
Mô tả: Khi có lỗi, gửi alert qua Slack.
Nodes:
- Webhook (trigger from monitoring)
- IF (check error status)
- Slack Send Message
4. Schedule Report Workflow
Mô tả: Hàng ngày gửi report qua email.
Nodes:
- Schedule (trigger hàng ngày 8AM)
- MySQL (query data từ database)
- Set (format report)
- Send Email
V. Cấu hình Advanced
1. Proxy qua Nginx Proxy Manager
Để expose n8n qua domain public:
- Vào Nginx Proxy Manager → Hosts → Proxy Hosts
- Click Add Proxy Host
- Điền:
- Domain Names:
automation.yourdomain.com - Scheme:
http - Forward Hostname/IP:
n8n(tên container) - Forward Port:
5678 - Tab SSL: Request Let's Encrypt
- Click Save
Truy cập https://automation.yourdomain.com
2. Kết nối Slack
Để dùng Slack integration:
- Tạo Slack App tại https://api.slack.com/
- Lấy Bot Token
- Trong n8n, thêm Slack node → Create new credential
- Paste Bot Token
- Test connection
3. Kết nối Database
Để query MySQL:
- Thêm MySQL node
- Cấu hình connection:
- Host: mysql_aio (hoặc IP)
- Port: 3306 (hoặc 3366 từ Docker)
- User: n8n_user
- Password: n8n_password
- Database: n8n_db
- Viết SQL queries
4. Error Handling
Để handle lỗi:
- Thêm Try/Catch node
- Hoặc thêm IF node để check conditions
- Thêm Error notification workflow
5. Scheduling Workflows
Để chạy workflow định kỳ:
- Thay vì Webhook, chọn Schedule node
- Cấu hình:
- Mode: Every hour / Every day / Every week
- Time: 8:00 AM
- Day: Monday (nếu weekly)
VI. Backup & Management
1. Backup Workflows
Dữ liệu workflows lưu ở /root/n8n:
#!/bin/bash BACKUP_DIR=/root/backups DATE=$(date +%Y%m%d_%H%M%S) # Backup n8n data tar -czf $BACKUP_DIR/n8n_$DATE.tar.gz /root/n8n # Keep 7 days find $BACKUP_DIR -name "n8n_*.tar.gz" -mtime +7 -delete
2. Export/Import Workflows
Để share hoặc backup workflows:
- Click workflow → Download
- File JSON sẽ được tải về
- Để import: Click + → Upload JSON
VII. Troubleshooting
n8n không khởi động
- Kiểm tra port 5678 có mở không
- Xem logs:
docker logs n8n-apps - Kiểm tra volume mount đúng chưa
- Restart container
Workflow không trigger
- Kiểm trace workflow có activate không
- Kiểm tra webhook URL format đúng chưa
- Test webhook bằng curl:
curl -X POST http://your-ip:5678/webhook/xxx - Xem logs của workflow để debug
Connection error đến external services
- Kiểm tra credentials đúng chưa
- Kiểm trace network connectivity (firewall, routing)
- Test manual API call bằng Postman
VIII. Lưu ý quan trọng
- Authentication: Bật N8N_BASIC_AUTH để bảo vệ access
- Password mạnh: Sử dụng password phức tạp, không mặc định
- Webhook URL: Nên sử dụng HTTPS cho production
- Credentials: Lưu API keys, tokens an toàn trong n8n credentials
- Resource limits: Tuning mem_limit & cpus tùy workload
- Logging: Bật N8N_LOG_LEVEL=info để debug
- Backup workflows: Backup workflows định kỳ tránh mất
- SSL/TLS: Sử dụng HTTPS qua Nginx Proxy Manager
IX. Best Practice
- Tổ chức workflows theo categories/folders
- Đặt tên workflows rõ ràng (descriptive names)
- Sử dụng error handling trong workflows
- Test workflows trước khi activate
- Thêm logging/debugging nodes để troubleshoot
- Tài liệu hoá workflows (tính năng, trigger, outputs)
- Sử dụng credentials credentials (không hardcode)
- Version control workflows (export JSON)
- Monitor workflow executions (check logs)
- Update n8n image định kỳ (security updates)
X. Tích hợp với các tool khác
1. Monitor n8n qua Uptime Kuma
Vào Uptime Kuma → Add Monitor Type: HTTP(s) URL: https://automation.yourdomain.com Interval: 300
2. Backup qua Cron
Tự động backup /root/n8n hằng ngày.
3. Logging to Memos
Các important workflow events có thể log vào Memos.
XI. Ví dụ Workflow JSON
Ví dụ workflow đơn giản (Webhook → Email):
{
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "webhook"
},
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"typeVersion": 1,
"position": [100, 300]
},
{
"parameters": {
"toEmail": "[email protected]",
"subject": "Notification from n8n",
"textContent": "Data received: {{$json.body}}"
},
"name": "Send Email",
"type": "n8n-nodes-base.emailSend",
"typeVersion": 1,
"position": [300, 300]
}
],
"connections": {
"Webhook": {
"main": [
[
{
"node": "Send Email",
"type": "main",
"index": 0
}
]
]
}
}
}
Vậy là bạn đã hoàn thành cấu hình n8n để tự động hóa workflows & tích hợp dữ liệu!