logo
icon

N8N v2 with Worker & Task Runners

N8N v2 工作流程自動化平台,配備工作程序和外部任務執行器以實現安全代碼執行

template cover
部署次數693
發布者glasschan
建立於2025-03-04
標籤
AutomationWorkflowN8N v2Task RunnersCode Execution

模板內的服務

N8N v2 搭配工作程序與任務執行器 (create by SEAFOODHOLDHAND)

N8N with Worker

N8N v2 是一個強大的工作流程自動化平台,可以幫助你連接不同的服務並自動化任務。此模板包含:

  • N8N v2 主實例用於工作流程管理(最新版本)
  • N8N 工作程序用於處理背景任務
  • 外部任務執行器用於安全執行 Code 節點(生產環境就緒設置)
  • PostgreSQL 資料庫用於數據存儲
  • Redis 用於隊列管理

為什麼使用外部任務執行器?

此模板使用外部任務執行器 - N8N 推薦的生產環境設置,用於在 Code 節點中執行代碼:

  • 🔒 增強安全性:代碼在隔離容器中運行,與主 N8N 實例分開
  • ⚡ 更佳性能:任務執行器可以根據工作負載獨立擴展
  • 🛡️ 沙盒執行:JavaScript 和 Python 代碼在受控環境中執行
  • 🔄 自動關閉:閒置的執行器會在 15 秒後自動關閉以節省資源
  • 📊 生產就緒:遵循 N8N 生產部署的最佳實踐

使用 N8N v2,你可以:

  • 使用可視化編輯器創建自動化工作流程
  • 連接數百種服務和 API
  • 在 Code 節點中安全地執行自定義 JavaScript 和 Python 代碼
  • 使用可靠的背景工作程序處理數據並自動化任務
  • 高效處理 Webhook 觸發的工作流程

工作程序 + 任務執行器設置確保您的自動化任務得到可靠且安全的處理。

更新日誌

2026-08-02

  • 移除 N8N-Runners 服務:設定了 OFFLOAD_MANUAL_EXECUTIONS_TO_WORKERS=true + queue 模式後,主 N8N 實例永不啟動 5679 連接埠的任務代理——所有執行(手動和生產)都卸載至 Worker。N8N-Runners 一直卡在「Waiting for task broker to be ready」,毫無作用。同時從 N8N 服務移除了 taskbroker 連接埠(5679)和 N8N_RUNNERS_BROKER_LISTEN_ADDRESS。僅保留 Worker-Runners(Worker 確實執行代理)。
  • 修正 Code 節點執行(Worker-Runners):將 Worker-Runners 的 N8N_RUNNERS_TASK_BROKER_URIhttp://Worker:5679 改為 http://${WORKER_BROKER_HOST}:5679。Zeabur 的叢集內 DNS 解析的是 service-<id> 主機名稱,而非 Worker 這樣的裸服務名稱——執行器一直卡在「Waiting for task broker to be ready」,Code 節點逾時 60 秒。Worker 服務現在透過 ${CONTAINER_HOSTNAME} 公開內部主機名稱(WORKER_BROKER_HOST)供執行器使用。(N8N_RUNNERS_ENABLED 在 n8n v2 已棄用,故不設定——見官方文件。)
  • 修正每個節點執行的「Invalid URL」錯誤:為 N8N 和 Worker 新增 N8N_PROTOCOL=https。n8n 從 ${N8N_PROTOCOL}://${N8N_HOST}/... 建構 $execution.resumeUrl;缺少通訊協定時 URL 格式錯誤,每個節點(Set、Switch、Code 等)都會拋出 TypeError: Invalid URL
  • 修正 Worker webhook URL 解析:Worker 服務沒有自己的網域綁定,因此 ${ZEABUR_WEB_DOMAIN} / ${ZEABUR_WEB_URL} 在其容器中未設定。現在改用 ${N8N_WEBHOOK_HOST} / ${N8N_WEBHOOK_URL}(由 N8N 服務新公開)作為 N8N_HOSTWEBHOOK_URL

2026-07-31

  • 為 PostgreSQL、Redis、N8N 和工作程序新增 healthCheck,確保服務會先等待相依服務就緒再啟動(不再有啟動競態)
  • 升級 PostgreSQL 至 18(postgres:18 — 因應新版 data-dir 結構,volume 改掛載於 /var/lib/postgresql
  • N8N 加密金鑰不再顯示於部署說明(保持隱密 — 持有它即可解密工作流程中的所有憑證;如有需要,可在 N8N 服務的環境變數中找到)
  • 從本地化設定畫面移除過時的 TASK_RUNNERS_AUTH_TOKEN 變數(此令牌會自動產生,並在服務之間自動共用)

2026-03-23

  • 修正服務依賴項位置,符合 Zeabur 模板規範(從 spec 內部移至服務層級),確保正確的啟動順序
  • 移除已棄用的 N8N_RUNNERS_ENABLED 環境變數(N8N v2 預設已啟用任務執行器)
  • 修正任務執行器架構:將單一 Runners 拆分為 N8N-Runners(連接 http://N8N:5679)和 Worker-Runners(連接 http://Worker:5679),符合官方 n8n docker-compose 架構,每個 n8n 實例配備獨立的 Runner

2025-12-28

  • 重要:模板已更新以支援 N8N v2
  • 升級至外部任務執行器(生產環境推薦設置)
  • 添加了獨立的 task-runners 服務作為 n8n-worker 的 sidecar 容器
  • 配置了 N8N_RUNNERS_MODE=external 以提供更好的安全性和性能
  • 任務執行器現在在隔離容器中執行 Code 節點的 JavaScript/Python 代碼
  • 添加了 TASK_RUNNERS_AUTH_TOKEN 變數用於安全的中介-執行器認證

此更新確保您的 N8N v2 工作流程使用外部任務執行器安全運行,遵循 N8N 生產部署的最佳實踐。

2025-03-17

  • 修復了 n8n 主實例和工作程序之間的 N8N_ENCRYPTION_KEY 不匹配問題
  • 確保工作程序使用與主實例相同的加密密鑰,提高系統穩定性
  • 添加了手動設置 N8N_ENCRYPTION_KEY 的能力,以確保主實例和工作程序的加密密鑰同步

⚠️ 重要:如果您正在使用此模板的舊版本,請更新到此版本以避免可能的加密密鑰同步問題。

注意:此模板啟用了關鍵的環境變數以防止未來的相容性問題:

  • N8N_RUNNERS_MODE=external:使用外部任務執行器容器(生產環境推薦)而非內部子進程。

  • OFFLOAD_MANUAL_EXECUTIONS_TO_WORKERS=true:在擴展模式下於主實例執行手動工作流程的方式已被棄用。未來版本中,手動執行將轉由工作程序處理。此設定為此變更做好準備。

了解更多關於任務執行器的信息:https://docs.n8n.io/hosting/configuration/task-runners/

如在 Deploy 時遇到任何問題,可以到 Github issue 告訴我,我會盡力解決: https://github.com/glasschan/seafoodholdhand-zeabur-templates