Introduction

n8n 是一個開源的工作流自動化平台,基於 Sustainable Use License 和 n8n Enterprise License 許可證。幫助使用者透過視覺化的方式設計與執行各種自動化工作流,實現無代碼或低代碼的自動化解決方案。特別在當下,隨著人工智慧技術與生成式人工智慧的快速發展,透過工作流將人工智慧應用於各種場景中,不論是單純的文字處理如筆記、摘要、翻譯,或是更複雜的 AI Agent 應用、RAG(Retrieval-Augmented Generation)等,n8n 都能提供相當靈活的解決方案。
而工作流自動化已有非常多競爭者,像是 Zapier、Make、Nango、Merge、Celigo 甚至是企業較常用的 Microsoft Power Automate 等等,這些平台也都提供相當廣泛、全面且強大的功能,能夠幫助使用者輕鬆地串接各種應用程式與服務以及各有其特色。
如 Microsoft Power Automate 主要可與 Microsoft Power Platform 進行整合,且可以更容易的實現桌面應用程式的自動化。但是其 HTTP request 的功能限制需要高級許可證才能使用,這一限制對於許多資源受限的個人開發者來說,可能會造成不便。因此儘管個人擁有此權限但考量未來個人使用平台轉換的可能性,暫不考慮使用。
而與常見的 Zapier、Make 等平台相比,n8n 的優勢在於其開源的特性以及其成本效益。儘管學期曲線(通常)較高,特別在於如 Google 帳戶、社群媒體等服務的授權與串接過程。但其提供自架設的社群版本選項,以及豐富的社群支援,讓使用者能夠更靈活的掌握、設計與管理自己的工作流。因此,對於個人、小型團隊與小型企業來說,n8n 是一個相當不錯的選擇。

相關資源

而在實際使用之前,或是還不清楚工作流自動化的使用情境與應用的朋友們,可以先參考以下資源:

  • n8n 官方網站:提供 n8n 的詳細資訊、價格、功能與企業使用案例。
  • n8n 官方工作流分享平台:提供 n8n 使用者分享的工作流範例,讓使用者可以快速找到適合自己的工作流。
  • r/n8n Reddit:n8n 的 Reddit 社群,提供使用者交流與討論的空間。

安裝

此章節將介紹如何使用 Docker 在本地端安裝社群版本的 n8n,參考 n8n 官方說明
使用 Docker 安裝 n8n 優勢在於可將 n8n 獨立於其他應用程式運行,確保 n8n 的運行環境與依賴項目不會受到其他應用程式或作業系統的相容性影響,並且在升級、轉移與備份時更為方便。未來會再對於 Docker 的使用進行更詳細的說明。於此先假設環境中已經安裝好 Docker。
安裝方式有二種,分別為使用 Docker 與 Docker Compose。對於嘗試使用者,建議可先使用 Docker 進行安裝與試驗,而 Docker Compose 則更適合用於生產環境、伺服器或是需要多個容器協同工作的情況。個人使用一台舊電腦作為 HomeLab,並且使用 Docker Compose 進行安裝與管理。

使用 Docker 安裝 n8n

  1. 於終端機中執行以下指令:
    docker volume create n8n_data
     
    docker run -it --rm \
    	--name n8n \
    	-p 5678:5678 \
    	-e GENERIC_TIMEZONE="Asia/Taipei" \
    	-e TZ="Asia/Taipei" \
    	-v n8n_data:/home/node/.n8n \
    	docker.n8n.io/n8nio/n8n
  2. 開啟瀏覽器,輸入 http://localhost:5678,即可進入 n8n 的使用介面。
  3. 進入使用介面後,會要求使用者設定 n8n 的使用者名稱、信箱與密碼。
  4. 設定完成後,社群版目前免費提供許可證可終身解鎖部分付費功能,包含工作流歷史紀錄、工作流編輯器偵錯與自訂節點功能。

使用 Docker Compose 安裝 n8n

可參考 n8n GitHub 官方說明,其中包含整合 Caddy、PostgreSQL、kubernetes 等的範例。

而個人由於其他應用程式亦使用 Docker Compose 進行管理,因此也將 n8n 整合至 Docker Compose 中。目前亦使用 Cloudflare Tunnel 服務,轉發至 n8n 的 Webhook URL。以下為個人應用範例僅供參考:

name: n8n
services:
  cloudflared:
    image: cloudflare/cloudflared:latest
    container_name: cloudflared
    restart: unless-stopped
    command: tunnel --protocol auto run
    environment:
      - TUNNEL_TOKEN=${CLOUDFLARED_TUNNEL_TOKEN}
    networks:
      - n8n-network
 
  n8n:
    image: docker.n8n.io/n8nio/n8n
    restart: unless-stopped
    environment:
      - WEBHOOK_URL=${CLOUDFLARED_N8N_URL}
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=n8n-db
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
      - DB_POSTGRESDB_USER=${POSTGRES_NON_ROOT_USER}
      - DB_POSTGRESDB_PASSWORD=${POSTGRES_NON_ROOT_PASSWORD}
      - GENERIC_TIMEZONE=Asia/Taipei
      - TZ=Asia/Taipei
    ports:
      - 5678:5678
    links:
      - n8n-db
    volumes:
      - n8n_storage:/home/node/.n8n
      - ./local-files:/files
    depends_on:
      n8n-db:
        condition: service_healthy
    networks:
      - n8n-network
 
  n8n-db:
    image: postgres:16
    restart: unless-stopped
    environment:
      - POSTGRES_USER
      - POSTGRES_PASSWORD
      - POSTGRES_DB
      - POSTGRES_NON_ROOT_USER
      - POSTGRES_NON_ROOT_PASSWORD
    volumes:
      - db_storage:/var/lib/postgresql/data
      - ./init-data.sh:/docker-entrypoint-initdb.d/init-data.sh
    healthcheck:
      test: ['CMD-SHELL', 'pg_isready -h localhost -U ${POSTGRES_USER} -d ${POSTGRES_DB}']
      interval: 5s
      timeout: 5s
      retries: 10
    networks:
      - n8n-network
 
volumes:
  db_storage:
 
networks:
  n8n-network:
    driver: bridge
圖 1. n8n 安裝完成初次啟動。

更新 n8n

而在 docker compose 中,更新 n8n 版本相當簡單(n8n 版本更新頻率滿高的,有持續穩定更新也是個人青睞的原因之一)。只需執行以下指令即可:

docker compose pull
docker compose down
docker compose up -d

使用 n8n

逐步撰寫中…