Docker Homelab Series - Phần 13: n8n: Hướng dẫn Automation Workflow & Integration

Hướng dẫn n8n

n8n: Hướng dẫn Automation Workflow & Integration

n8n Automation

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 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

  1. SSH vào server & tạo thư mục:
mkdir -p /root/n8n
  1. Vào Portainer Dashboard
  2. Chọn StacksAdd stack
  3. Đặt tên Stack: n8n
  4. Copy/paste docker-compose vào Web editor
  5. Thay đổi password admin
  6. Chọn network: docker-net
  7. 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:

  1. Vào n8n Dashboard → Click + New Workflow
  2. Đặt tên: My First Workflow
  3. Click + để thêm node
  4. Chọn Webhook
  5. Chọn method: POST
  6. 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:

  1. Click + để thêm node sau Webhook
  2. Chọn HTTP Request
  3. Method: GET/POST
  4. URL: https://api.example.com/endpoint
  5. Headers: Thêm authentication nếu cần

3. Thêm Data Transform Node

Để xử lý dữ liệu:

  1. Click + để thêm node
  2. Chọn Merge hoặc Function
  3. Viết code hoặc cấu hình transform logic

4. Thêm Notification (Slack/Email)

Để gửi notification:

  1. Click + để thêm node
  2. Chọn Slack hoặc Send Email
  3. Cấu hình credentials:
    • Slack: Cần Bot Token
    • Email: SMTP configuration
  4. Viết message template

5. Activate & Test Workflow

Sau khi xây dựng workflow:

  1. Click Save
  2. Click Activate (button bên trên)
  3. 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:

  1. Vào Nginx Proxy Manager → HostsProxy Hosts
  2. Click Add Proxy Host
  3. Điền:
    • Domain Names: automation.yourdomain.com
    • Scheme: http
    • Forward Hostname/IP: n8n (tên container)
    • Forward Port: 5678
  4. Tab SSL: Request Let's Encrypt
  5. Click Save

Truy cập https://automation.yourdomain.com

2. Kết nối Slack

Để dùng Slack integration:

  1. Tạo Slack App tại https://api.slack.com/
  2. Lấy Bot Token
  3. Trong n8n, thêm Slack node → Create new credential
  4. Paste Bot Token
  5. Test connection

3. Kết nối Database

Để query MySQL:

  1. Thêm MySQL node
  2. 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
  3. Viết SQL queries

4. Error Handling

Để handle lỗi:

  1. Thêm Try/Catch node
  2. Hoặc thêm IF node để check conditions
  3. Thêm Error notification workflow

5. Scheduling Workflows

Để chạy workflow định kỳ:

  1. Thay vì Webhook, chọn Schedule node
  2. 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:

  1. Click workflow → Download
  2. File JSON sẽ được tải về
  3. Để 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!

Post a Comment

Previous Post Next Post
QR Code
Quét mã QR để gọi miễn phí