logo
icon

N8N v2 with Worker & Task Runners

N8N v2 工作流自动化平台,配备工作进程和外部任务运行器以实现安全代码执行

template cover
部署次数692
发布者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