跳到主要内容

n8n v2.0 破坏性变更#

n8n v2.0 即将发布。本文档重点介绍了重要的破坏性变更以及您为顺利过渡应采取的准备工作。这些更新将提升安全性、简化配置并移除遗留功能。

n8n 2.0 的发布延续了 n8n 对提供安全可靠、生产就绪的自动化平台的承诺。此主要版本包含重要的安全增强功能并清理了已弃用的功能。

行为变更#

当子工作流包含等待节点时返回预期的子工作流数据#

此前,当工作流(父级)调用包含等待节点(例如 Wait 节点或人工干预节点)的子工作流(子级)时,父工作流会错误地接收到来自子工作流中等待节点的输入项。

在 v2 中,父工作流现在接收的是子工作流结束时的输出数据。

迁移方案: 检查所有调用子工作流并期望接收 Wait 节点输入的工作流。更新这些工作流以适应新的行为,即父工作流接收的是子工作流结束时的输出。

移除已停用服务的节点#

由于连接的外部服务不再可用,以下节点已被移除:

  • Spontit 节点
  • crowd.dev 节点
  • Kitemaker 节点

迁移方案: 如果您的工作流使用了这些节点中的任何一个,请更新或移除这些工作流以避免错误。

安全性#

默认阻止从 Code 节点访问环境变量#

为提高安全性,n8n 将默认阻止从 Code 节点访问环境变量。N8N_BLOCK_ENV_ACCESS_IN_NODE 的默认值现在设置为 true

迁移方案: 如果您的工作流需要在 Code 节点中访问环境变量,请在您的环境配置中设置 N8N_BLOCK_ENV_ACCESS_IN_NODE=false。对于敏感数据,请使用凭据或其他安全方法代替环境变量。

强制执行设置文件权限#

n8n 将要求配置文件具有严格的文件权限以提高安全性。默认情况下,配置文件必须使用 0600 权限,这意味着只有文件所有者才能读写它们。此方法类似于 SSH 保护私钥的方式。

迁移方案: 要在 v2.0 之前测试此行为,请设置 N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true。如果您的环境不支持文件权限(例如,在 Windows 上),请设置 N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=false 以禁用此要求。

默认启用任务运行器#

n8n 将默认启用任务运行器 以提高安全性和隔离性。所有 Code 节点执行都将在任务运行器上运行。

迁移方案: 在升级到 v2.0 之前,设置 N8N_RUNNERS_ENABLED=true 以测试此行为。确保您的基础设施满足运行任务运行器的要求。为了获得额外的安全性,请考虑使用外部模式

n8nio/n8n Docker 镜像中移除任务运行器#

从 v2.0 开始,主要的 n8nio/n8n Docker 镜像将不再包含用于外部模式的任务运行器。您必须使用单独的 n8nio/runners Docker 镜像来在外部模式下运行任务运行器。

迁移方案: 如果您在 Docker 中使用外部模式运行任务运行器,请更新您的设置以使用 n8nio/runners 镜像代替 n8nio/n8n

移除基于 Pyodide 的 Python Code 节点#

n8n 将移除基于 Pyodide 的 Python Code 节点,并用基于任务运行器 的实现(使用原生 Python)取而代之,以获得更好的安全性和性能。从 v2.0 开始,您只能在外部模式 下将 Python Code 节点与任务运行器一起使用。

原生 Python Code 节点不支持内置变量,如 _input 或点访问符号,这些在基于 Pyodide 的版本中是可用的。有关详细信息,请参阅 Code 节点文档

迁移方案: 要继续在 Code 节点中使用 Python,请在外部模式下设置任务运行器,并检查您现有的 Python Code 节点以确保兼容性。

默认禁用 ExecuteCommand 和 LocalFileTrigger 节点#

n8n 将默认禁用 ExecuteCommandLocalFileTrigger 节点,因为它们存在安全风险。这些节点允许用户运行任意命令并访问文件系统。

迁移方案: 如果您需要使用这些节点,请通过更新 NODES_EXCLUDE 环境变量将它们从 n8n 配置的禁用节点列表中移除。例如,设置 NODES_EXCLUDE="[]" 以启用所有节点,或者仅移除您需要的特定节点。

默认要求对 OAuth 回调 URL 进行身份验证#

n8n 将默认要求对 OAuth 回调端点进行身份验证。N8N_SKIP_AUTH_ON_OAUTH_CALLBACK 的默认值将从 true(不需要身份验证)更改为 false(需要身份验证)。

迁移方案: 在升级到 v2.0 之前,设置 N8N_SKIP_AUTH_ON_OAUTH_CALLBACK=false 并测试您的 OAuth 集成,以确保它们在启用身份验证的情况下正常工作。

为 N8N_RESTRICT_FILE_ACCESS_TO 设置默认值#

n8n 将为 N8N_RESTRICT_FILE_ACCESS_TO 设置一个默认值,以控制文件操作可以发生的位置。这会影响 ReadWriteFileReadBinaryFiles 节点。默认情况下,这些节点只能访问 n8n 主文件夹内 ./data 目录中的文件。

迁移方案: 检查您使用文件节点的工作流,并确保它们仅访问允许目录中的文件。如果您需要允许访问其他目录,请将 N8N_RESTRICT_FILE_ACCESS_TO 环境变量设置为您所需的路径。

将 N8N_GIT_NODE_DISABLE_BARE_REPOS 的默认值更改为 true#

默认情况下,Git 节点现在将出于安全原因阻止裸仓库。N8N_GIT_NODE_DISABLE_BARE_REPOS 的默认值设置为 true,这意味着裸仓库被禁用,除非您更改此设置。

迁移方案: 如果您的工作流需要使用裸仓库,请在您的环境配置中设置 N8N_GIT_NODE_DISABLE_BARE_REPOS=false 以启用它们。

数据#

放弃 MySQL/MariaDB 支持#

n8n 将不再支持 MySQL 和 MariaDB 作为存储后端。此支持在 v1.0 中已弃用。为了获得最佳兼容性和长期支持,请使用 PostgreSQL。

迁移方案: 在升级到 v2.0 之前,使用数据库迁移工具将您的数据从 MySQL 或 MariaDB 迁移到 PostgreSQL 或 SQLite。

移除 SQLite 遗留驱动#

由于可靠性问题,n8n 将移除遗留的 SQLite 驱动。池化驱动将成为默认且唯一的 SQLite 驱动。池化驱动使用 WAL 模式、单个写入连接和一个读取连接池。我们的基准测试表明,其速度最多可提高 10 倍。

迁移方案: sqlite-pooled 驱动将自动成为默认驱动。您现在可以通过将 DB_SQLITE_POOL_SIZE 设置为大于 0 的值来启用池化。默认池大小将设置为 2

移除内存二进制数据模式#

n8n 将移除 N8N_DEFAULT_BINARY_DATA_MODE 的默认模式,该模式将执行二进制数据存储在内存中。文件系统模式将成为唯一选项,以获得更好的性能和稳定性。N8N_AVAILABLE_BINARY_DATA_MODES 设置也将被移除,因此模式现在仅由 N8N_DEFAULT_BINARY_DATA_MODE 决定。

迁移方案: 文件系统模式将自动被使用。确保您的 n8n 实例有足够的磁盘空间来存储二进制数据。有关详细信息,请参阅二进制数据配置

配置与环境#

升级 dotenv#

n8n 使用 dotenv 库从 .env 文件加载环境配置。该库将从版本 8.6.0 升级到最新版本,这可能会改变 .env 文件的解析方式。关键的破坏性变更包括:

  • 反引号支持 (#615):如果您的值包含反引号,请用单引号或双引号将其括起来。
  • 多行支持:您现在可以使用多行值。
  • # 标记注释的开始:以 # 开头的行被视为注释。

迁移方案: 查看 dotenv 变更日志 并更新您的 .env 文件以确保与新版本的兼容性。

移除 n8n --tunnel 选项#

n8n --tunnel 命令行选项将在 v2.0 中被移除。

迁移方案: 如果您当前在开发或测试中使用 --tunnel 选项,请切换到替代的隧道解决方案,如 ngrok、localtunnel 或 Cloudflare Tunnel。更新您的工作流和文档以反映此变更。

移除 QUEUE_WORKER_MAX_STALLED_COUNT#

QUEUE_WORKER_MAX_STALLED_COUNT 环境变量以及针对停滞作业的 Bull 重试机制将被移除,因为它们经常引起混淆且无法可靠工作。

迁移方案: 从您的配置中删除此环境变量。升级后,n8n 将不再自动重试停滞的作业。如果您需要处理停滞的作业,请考虑实现您自己的重试逻辑或监控。

CLI 与工作流#

移除用于激活所有工作流的 CLI 命令操作#

用于一次性激活所有工作流的 CLI 命令 update:workflow --all --active=true 将被移除,以防止在生产环境中意外激活工作流。

迁移方案: 使用 API 或 UI 一次激活一个工作流或以小规模、受控的批次激活工作流。这有助于您避免意外后果并更好地控制工作流激活。

报告问题#

如果您在更新到 n8n 2.0 时遇到任何问题,请访问社区论坛 寻求帮助和支持。

回到顶部