Chuyển đến nội dung chính

Hướng Dẫn Chi Tiết Cài Đặt n8n + Postgres + Traefik + Cloudflared

Hướng Dẫn Chi Tiết Cài Đặt n8n + Postgres + Traefik + Cloudflared

Hướng Dẫn Chi Tiết Cài Đặt n8n + Postgres + Traefik + Cloudflared

n8n là một công cụ tự động hóa mạnh mẽ, cho phép tích hợp và kết nối nhiều dịch vụ. Trong hướng dẫn này, chúng ta sẽ cài đặt n8n kết hợp với cơ sở dữ liệu Postgres để lưu trữ dữ liệu, sử dụng Traefik làm reverse proxy và quản lý định tuyến, cũng như sử dụng Cloudflared để tạo đường hầm bảo mật kết nối đến Cloudflare.

Hướng dẫn này được xây dựng dựa trên nội dung của repository txq92/n8n-cloudfare và được tùy chỉnh thêm để giúp người dùng có thể triển khai trên môi trường của mình một cách dễ dàng.


1. Yêu Cầu

  • Cài đặt Docker và Docker Compose.
  • Tài khoản Cloudflare và cấu hình Cloudflared (cần token tunnel).
  • Một tên miền (ví dụ: n8n.yourdomain.com) đã được cấu hình trong Cloudflare.

2. Cấu Trúc Dự Án

Dự án sẽ bao gồm các thành phần sau:

  • Postgres: Cơ sở dữ liệu lưu trữ cho n8n.
  • n8n: Ứng dụng tự động hóa chạy dưới dạng container.
  • Traefik: Reverse proxy, định tuyến và quản lý chứng chỉ SSL thông qua Let's Encrypt.
  • Cloudflared: Tạo đường hầm kết nối từ máy chủ tới Cloudflare, giúp truy cập an toàn từ bên ngoài.

3. Cấu Hình Docker Compose

Tạo file docker-compose.yml với nội dung như sau:

version: '3'

services:
  postgres:
    image: postgres:13
    restart: always
    environment:
      - POSTGRES_USER=n8n
      - POSTGRES_PASSWORD=n8n_password
      - POSTGRES_DB=n8n
    volumes:
      - postgres_data:/var/lib/postgresql/data

  n8n:
    image: docker.n8n.io/n8nio/n8n
    restart: always
    environment:
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=n8n
      - DB_POSTGRESDB_USER=n8n
      - DB_POSTGRESDB_PASSWORD=n8n_password
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER=admin
      - N8N_BASIC_AUTH_PASSWORD=admin_password
      - GENERIC_TIMEZONE=Asia/Ho_Chi_Minh
    depends_on:
      - postgres
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.n8n.rule=Host(`n8n.yourdomain.com`)"
      - "traefik.http.routers.n8n.entrypoints=websecure"
      - "traefik.http.routers.n8n.tls=true"
      - "traefik.http.routers.n8n.tls.certresolver=myresolver"
    networks:
      - web

  traefik:
    image: traefik:v2.9
    restart: always
    command:
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.myresolver.acme.tlschallenge=true"
      - "--certificatesresolvers.myresolver.acme.email=your-email@example.com"
      - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - traefik_letsencrypt:/letsencrypt
    networks:
      - web

  cloudflared:
    image: cloudflare/cloudflared:latest
    restart: always
    command: tunnel --no-autoupdate run
    environment:
      - TUNNEL_TOKEN=${CLOUDFLARED_TOKEN}
    networks:
      - web

volumes:
  postgres_data:
  traefik_letsencrypt:

networks:
  web:
    driver: bridge

Lưu ý:

  • Thay n8n_passwordadmin_password bằng mật khẩu an toàn của bạn.
  • Trong phần Traefik, thay your-email@example.com và tên miền n8n.yourdomain.com bằng thông tin thực tế của bạn.
  • Tạo file .env để chứa biến CLOUDFLARED_TOKEN lấy từ Cloudflared.

Cấu hình Docker Compose

4. Cấu Hình Cloudflared

Để sử dụng Cloudflared, bạn cần:

  1. Đăng nhập vào tài khoản Cloudflare và tạo một tunnel mới.
  2. Sao chép TUNNEL_TOKEN vào file .env hoặc cấu hình biến môi trường.

5. Khởi Chạy Dịch Vụ

  1. Clone Repository (Tùy chọn):
    git clone https://github.com/txq92/n8n-cloudfare.git
  2. Điều chỉnh cấu hình:
    • Chỉnh sửa file docker-compose.yml theo cấu hình của bạn.
    • Tạo file .env chứa biến CLOUDFLARED_TOKEN.
  3. Chạy Docker Compose:
    docker-compose up -d
  4. Kiểm tra trạng thái:
    docker-compose ps

6. Kiểm Tra và Truy Cập n8n

Sau khi các container được khởi chạy thành công:

  • Truy cập n8n thông qua URL: https://n8n.yourdomain.com (theo cấu hình Traefik).
  • Đăng nhập vào giao diện n8n với tài khoản đã thiết lập (ở biến N8N_BASIC_AUTH_USERN8N_BASIC_AUTH_PASSWORD).
  • Kiểm tra dashboard của Traefik qua URL mặc định (nếu bạn cấu hình) để theo dõi các route và chứng chỉ SSL.

7. Kết Luận

Với hướng dẫn này, bạn đã thiết lập thành công hệ thống n8n sử dụng Postgres làm cơ sở dữ liệu, Traefik làm reverse proxy để định tuyến và quản lý chứng chỉ SSL, cũng như Cloudflared để tạo đường hầm an toàn kết nối từ Cloudflare. Đây là một giải pháp toàn diện giúp bạn triển khai môi trường tự động hóa chuyên nghiệp với bảo mật và khả năng mở rộng cao.

Nếu có thắc mắc hoặc cần hỗ trợ thêm, hãy tham khảo tài liệu chính thức của n8n, TraefikCloudflared.

Nhận xét

  1. Tại sao phải dùng Traefik mà không dùng có sẵn proxy và ssl của cloudflare

    Trả lờiXóa

Đăng nhận xét