Skip to content

Cài đặt và Cấu hình n8n

Mục tiêu bài học

Sau bài học này, bạn sẽ:

  • Biết cách cài đặt n8n trên Docker (khuyến nghị cho production)
  • Biết cách cài đặt qua npm và Desktop app cho môi trường dev
  • Hiểu các biến môi trường (Environment Variables) quan trọng
  • Biết cách cấu hình Tunnel để test webhook trên localhost

Các phương pháp cài đặt

1. n8n Desktop App (Dành cho người mới/Dev)

Đây là cách nhanh nhất để trải nghiệm n8n mà không cần kiến thức về server.

  • Ưu điểm: Cài đặt 1 click (Windows/Mac), miễn phí, chạy ngay.
  • Nhược điểm: Chỉ chạy khi bật máy, khó chạy 24/7, không phù hợp production.
  • Tải về: n8n.io/download

2. Docker (Khuyến nghị cho Production)

Đây là phương pháp chuẩn để chạy n8n ổn định, dễ dàng backup và update.

Yêu cầu

  • Docker Engine và Docker Compose đã được cài đặt.

Cấu trúc thư mục

n8n-docker/
├── docker-compose.yml
├── .env
└── n8n_data/

Cấu hình Docker Compose (Production với PostgreSQL)

Mặc định n8n dùng SQLite. Với production, bạn NÊN dùng PostgreSQL để tránh lỗi lock database khi tải cao.

yaml
version: '3.8'

services:
  postgres:
    image: postgres:16
    restart: always
    environment:
      - POSTGRES_USER=n8n
      - POSTGRES_PASSWORD=supersecretpassword
      - POSTGRES_DB=n8n
    volumes:
      - db_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -h localhost -U n8n -d n8n"]
      interval: 5s
      timeout: 5s
      retries: 5

  n8n:
    image: docker.n8n.io/n8nio/n8n
    restart: always
    ports:
      - "5678:5678"
    environment:
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=n8n
      - DB_POSTGRESDB_USER=n8n
      - DB_POSTGRESDB_PASSWORD=supersecretpassword
      - N8N_HOST=my-n8n-domain.com
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - WEBHOOK_URL=https://my-n8n-domain.com/
      - N8N_ENCRYPTION_KEY=mot_chuoi_ky_tu_ngau_nhien_rat_dai_va_bi_mat
    volumes:
      - n8n_data:/home/node/.n8n
    depends_on:
      postgres:
        condition: service_healthy

volumes:
  db_data:
  n8n_data:

3. npm (Node.js)

Nếu bạn muốn nhúng n8n hoặc chạy trực tiếp trên nền Node.js.

bash
# Yêu cầu Node.js >= 18.17.0
npm install n8n -g
n8n start

Các biến môi trường quan trọng

Khi cấu hình n8n (đặc biệt là Docker), bạn cần chú ý các biến sau:

BiếnÝ nghĩaVí dụ
WEBHOOK_URLRất quan trọng. URL công khai để các dịch vụ khác gọi webhook về n8n.https://n8n.example.com/
N8N_ENCRYPTION_KEYKhóa dùng để mã hóa credentials trong DB. Không được làm mất.a1b2c3d4...
N8N_BASIC_AUTH_ACTIVEBật xác thực Basic Auth cho n8n editor.true
EXECUTIONS_DATA_PRUNETự động xóa lịch sử chạy cũ để giảm dung lượng DB.true
EXECUTIONS_DATA_MAX_AGEThời gian giữ lịch sử (giờ).168 (1 tuần)

Xử lý Webhook trên Localhost (Tunneling)

Khi chạy n8n trên máy cá nhân (localhost), các dịch vụ bên ngoài (như Telegram, GitHub) không thể gửi webhook đến bạn được. Bạn cần dùng Tunnel.

Cách 1: Dùng tính năng Tunnel có sẵn (Dev only)

bash
n8n start --tunnel
# Hoặc với Docker
docker run -it --rm --name n8n -p 5678:5678 -e N8N_TUNNEL_SUBDOMAIN=my-test-n8n n8n

Cách 2: Cloudflare Tunnel (Khuyên dùng)

Sử dụng cloudflared để tạo đường hầm an toàn và ổn định hơn.

  1. Cài đặt cloudflared.
  2. Chạy lệnh: cloudflared tunnel --url http://localhost:5678
  3. Copy URL được cấp (ví dụ https://random-name.trycloudflare.com) và điền vào biến WEBHOOK_URL của n8n.

Lưu ý & Best Practices

  1. Luôn backup N8N_ENCRYPTION_KEY: Đây là chìa khóa vạn năng. Lưu nó vào password manager.
  2. Dọn dẹp Database: Bật EXECUTIONS_DATA_PRUNE ngay từ đầu.
  3. Bảo mật: Không bao giờ public n8n ra internet mà không có mật khẩu.

Bài học tiếp theo

Sau khi cài đặt thành công, chúng ta sẽ khám phá giao diện làm việc của n8n.

Khám phá giao diện n8n

Internal documentation for iNET Portal