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

Bài đăng phổ biến từ blog này

[HA] Cài đặt armbian trên tivi box để chạy home assistant tháng 10/2020

Hướng đẫn cài armbian mới nhất "Việc cài có thê gây hỏng tivi box , tự chịu trách nhiệm cho việc mình làm "  Chuẩn bị : +  Tivi box x96 mini , tx3 mini(hoặc loại khác có sử dụng chip Amolic S905W) + Thẻ nhớ 32GB + File img armbian (https://yadi.sk/d/_rQgn_FosYuW0g/20.09) Updated link : https://drive.google.com/file/d/1O-FWMF-1-xR-JQRol21D4wOO_Cp5G4jy/view?usp=drivesdk + Dây nối máy tính với box (cứu box khi cài vào emmc bị hỏng box ) Step 1 : Flash file image vào thẻ nhớ + Dùng phần mềm (https://www.balena.io/etcher/) để thực hiện flash vào thẻ nhớ Quá trình flash rất nhanh khoảng 5 phút là xong Step 2 : Mở thẻ nhớ đã flash xong  Thực hiện config để box nhận thẻ nhớ và vào armbian file cần chỉnh sửa : extlinux.conf Chú ý chọn đúng file dbt cùng với loại box  ********************************************************************************************************************************* Pay attention. Starting from version  20.08 (20200814) , the configuration or...

[HA] API tính điện tiêu thụ hằng ngày evncpc miền trung cho home assistant

Thông tin được lấy từ nguồn dữ liệu tại trang  https://cskh.cpc.vn/  với user/pass các bạn cung cấp . Chúng tôi chỉ lấy thông tin này và chuyển đổi dạng để phù hợp sử dụng trên Home Assistant . Chúng tôi sẽ không chiụ trách nhiệm về độ chính xác của dữ liệu này Sử dụng Rest sensor bạn cần kết nối internet , đôi khi do đường truyền / hoặc trang web EVN bị lỗi sẽ không lấy được data. Update : 2020.07.01 EVN không cho truy cập trang web từ ip nước ngoài nên api này cài trên web nước ngoài sẽ không hoạt động nữa. Ae nào cần code chạy local thì inbox Dạo này lướt face thấy mọi người  ai cũng bảo sao điện tăng nhiều vậy , có ngừoi nghi ngờ EVN ghi gian dối số điện . Mình không làm ở EVN nên không biết có gian dối thật không nhưng EVn hiện tại đo chữ số điện từ xa , 1 ngày đo khoảng 2 -3 lần , như vậy khách hàng sẽ quản lý được ngày tiêu thụ bao nhiêu kwh .cuối tháng có thể dối chiếu xem đúng không . Hình ảnh của EVn cung cấp do hằng ngày số kwh Dựa vào thông tin EVN cung cấp tr...

[HA] Lấy chỉ số đo điện từ công tơ điện lực miễn phí

Note: cái này đang hương dẫn cho điện lực miền trung , các miền khác chắc cũng tương tự  EVN không cho truy cập từ IP nước ngoài Anh em xem các cách khác trong blog để lấy thông tin điện lực add vào home assistant bài mới đơn giản hơn : https://vnhass.blogspot.com/2020/06/ha-api-tinh-ien-tieu-thu-hang-ngay.html?fbclid=IwAR10n1hURu1Gs4mjeAHG6RYukbdcLt-KpZB3J7GpUKhzGfjHQK4M4pOZjOI Đây là bài viết hướng dẫn lấy chỉ số điện thời gian thực từ công tơ của điện lực để đưa vào HA Sẽ có 2 cách lấy Cách 1 : lấy từ website , cách này đơn giản nhưng phụ thuộc vào bên thứ 3 . cách này dễ ai cũng thực hiện được Cách 2 : Debug app của điện lực , lấy api và token cách này phức tạp , cần nhiều "chất xám" hơn Sau đây mình sẽ hướng dẫn làm cách thứ 1 . Cách 2 sẽ hướng dẫn sau Đầu tiên các bạn phải login được vào trang cskh của điện lực bằng tài khoản và mật khẩu bên điện lực cung cấp , ai không biết thì call tổng đài nhờ hộ hỗ trợ https://cskh.cpc.vn/Default.aspx Trong này sẽ có n...