Giới thiệu về n8n - AI automation workflow

  • March 30, 2025
  • 32

1. n8n là gì?

N8n ("Node-based automation") là một nền tảng tự động hóa workflow mã nguồn mở, giúp bạn kết nối các ứng dụng và dịch vụ khác nhau mà không cần viết nhiều code. Nó giống như Zapier hoặc Make (Integromat) nhưng mạnh mẽ hơn, có thể tự host và tuỳ chỉnh linh hoạt.

2. Vì sao nên dùng n8n?

Dưới đây là một số lý do khiến n8n trở thành lựa chọn lý tưởng:

  • Mã nguồn mở: Bạn có thể tự host trên server của mình mà không phụ thuộc vào dịch vụ bên thứ ba.
  • Không giới hạn số workflow: Không giống như Zapier, n8n không áp đặt giới hạn số lượng workflow hoặc tác vụ.
  • Linh hoạt: Hỗ trợ JavaScript, cho phép bạn viết logic tùy chỉnh.
  • Kết nối hơn 300 ứng dụng: Tích hợp với nhiều dịch vụ như Google Sheets, Telegram, Slack, OpenAI, v.v.
  • Dễ dàng mở rộng: Có thể tạo custom nodes theo nhu cầu.

3. Ứng dụng của n8n

n8n có thể được sử dụng trong nhiều lĩnh vực khác nhau, bao gồm:

  • Tự động hóa tiếp thị: Gửi email, tin nhắn SMS hoặc chatbot tự động khi có sự kiện mới.
  • Quản lý dữ liệu: Đồng bộ dữ liệu giữa các hệ thống như CRM, Google Sheets, và cơ sở dữ liệu.
  • Hỗ trợ khách hàng: Tích hợp chatbot AI để trả lời tự động trên Facebook, Telegram, hoặc website.
  • Theo dõi và cảnh báo: Gửi thông báo khi có lỗi hệ thống hoặc sự kiện quan trọng xảy ra.
  • Tích hợp AI: Sử dụng OpenAI, Hugging Face để phân tích văn bản, tạo nội dung hoặc chatbot tự động.
  • Quản lý DevOps: Tạo workflow để tự động build, deploy, giám sát server.

4. Cách cài đặt n8n

Bạn có thể cài đặt n8n theo nhiều cách:

4.1 Cài đặt bằng Docker

Docker là cách đơn giản nhất để chạy n8n:


docker run -it --rm \
    -p 5678:5678 \
    -v ~/.n8n:/home/node/.n8n \
    n8nio/n8n

4.2 Cài đặt bằng npm

Cài đặt trên máy local (Node.js)


npm install -g n8n
n8n start

4.3 Cài đặt bằng docker compose

Tạo docker compose file


services:
  traefik:
    image: "traefik"
    restart: always
    command:
      - "--api=true"
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.web.http.redirections.entryPoint.to=websecure"
      - "--entrypoints.web.http.redirections.entrypoint.scheme=https"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.mytlschallenge.acme.tlschallenge=true"
      - "--certificatesresolvers.mytlschallenge.acme.email=${SSL_EMAIL}"
      - "--certificatesresolvers.mytlschallenge.acme.storage=/letsencrypt/acme.json"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - traefik_data:/letsencrypt
      - /var/run/docker.sock:/var/run/docker.sock:ro

  redis:
    image: redis:6-alpine
    container_name: redis
    restart: always
    ports:
      - "6379:6379"
    command: ["redis-server", "--appendonly", "yes"]
    volumes:
      - redis_data:/data

  n8n:
    image: docker.n8n.io/n8nio/n8n
    restart: always
    ports:
      - "127.0.0.1:5678:5678"
    labels:
      - traefik.enable=true
      - traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`)
      - traefik.http.routers.n8n.tls=true
      - traefik.http.routers.n8n.entrypoints=web,websecure
      - traefik.http.routers.n8n.tls.certresolver=mytlschallenge
      - traefik.http.middlewares.n8n.headers.SSLRedirect=true
      - traefik.http.middlewares.n8n.headers.STSSeconds=315360000
      - traefik.http.middlewares.n8n.headers.browserXSSFilter=true
      - traefik.http.middlewares.n8n.headers.contentTypeNosniff=true
      - traefik.http.middlewares.n8n.headers.forceSTSHeader=true
      - traefik.http.middlewares.n8n.headers.SSLHost=${DOMAIN_NAME}
      - traefik.http.middlewares.n8n.headers.STSIncludeSubdomains=true
      - traefik.http.middlewares.n8n.headers.STSPreload=true
      - traefik.http.routers.n8n.middlewares=n8n@docker
    environment:
      - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
      - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
      - N8N_BASIC_AUTH_ACTIVE=${BASIC_AUTH_ACTIVE}
      - N8N_BASIC_AUTH_USER=${BASIC_AUTH_USER}
      - N8N_BASIC_AUTH_PASSWORD=${BASIC_AUTH_PASSWORD}
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=${POSTGRES_DB_HOST}
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=${POSTGRES_DATABASE}
      - DB_POSTGRESDB_USER=${POSTGRES_USER}
      - DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}
      - N8N_METRICS_ALLOW_UNAUTHORIZED=true
      - TRUST_PROXY=true
      - DB_POSTGRESDB_SSL=true
      - DB_POSTGRESDB_SSL_REJECT_UNAUTHORIZED=false
      - N8N_REDIS_HOST=redis
      - N8N_REDIS_PORT=6379
      - N8N_QUEUE_BULL_REDIS_HOST=redis
      - N8N_QUEUE_BULL_REDIS_PORT=6379
      #- N8N_SMTP_HOST=smtp.gmail.com
      #- N8N_SMTP_PORT=587
      #- N8N_SMTP_USER=
      #- N8N_SMTP_PASS=
      #- N8N_SMTP_SENDER=
      #- N8N_SMTP_SSL=false
      #- N8N_SMTP_TLS=true
      - N8N_EMAIL_MODE=smtp
      - N8N_SMTP_HOST=email-smtp.us-east-1.amazonaws.com
      - N8N_SMTP_PORT=587
      - N8N_SMTP_USER=
      - N8N_SMTP_PASS=
      - N8N_SMTP_SSL=false
      - N8N_SMTP_SENDER=
      - N8N_RUNNERS_ENABLED=true
      - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=false

    volumes:
      - n8n_data:/home/node/.n8n
      - ./local-files:/files
    depends_on:
      - traefik
      - redis

volumes:
  n8n_data:
  redis_data:
  traefik_data:

Tạo file .env

# DOMAIN_NAME and SUBDOMAIN together determine where n8n will be reachable from
# The top level domain to serve from
DOMAIN_NAME=example.com.vn

# The subdomain to serve from
SUBDOMAIN=n8n

# The above example serve n8n at: https://n8n.example.com.vn

# Optional timezone to set which gets used by Cron and other scheduling nodes
# New York is the default value if not set
GENERIC_TIMEZONE=Asia/Ho_Chi_Minh

# The email address to use for the TLS/SSL certificate creation
SSL_EMAIL=example@gmail.com

POSTGRES_DB_HOST=
POSTGRES_USER=
POSTGRES_PASSWORD=
POSTGRES_DATABASE=
BASIC_AUTH_ACTIVE=
BASIC_AUTH_USER=
BASIC_AUTH_PASSWORD=

Chạy ứng dụng

// Start
docker-compose up -d

// Stop
docker-compose down

// Check log
docker-compose logs -f n8n

// Access app
docker-compose exec n8n sh

Mặc định sau khi cài đặt xong thì n8n sẽ chạy ở post 5678. Sau đó, truy cập http://localhost:5678 để bắt đầu sử dụng.

5. Kết luận

N8n là công cụ mạnh mẽ giúp bạn tự động hóa công việc mà không cần viết quá nhiều code. Nếu bạn muốn tiết kiệm thời gian và tăng hiệu suất làm việc, hãy thử ngay hôm nay!