Server CLI 命令#
Server CLI 是一个内置命令行界面,运行在与你的 n8n 安装相同的机器上。它为管理任务提供对数据库的直接访问,即使 n8n 没有运行,也可以执行大多数命令。
n8n CLI
如果你想从远程机器以编程方式与 n8n 交互,或将其集成到 AI 代理中,请查看 n8n CLI。
何时使用 Server CLI 与 n8n CLI#
| 特性 | Server CLI | n8n CLI |
|---|---|---|
| 运行位置 | 与 n8n 同一台机器 | 任何可访问网络的机器 |
| 身份验证 | 直接访问数据库 | API key |
| 是否要求 n8n 运行 | 否(大多数命令) | 是 |
| 最适合 | 实例运维、备份、迁移 | 开发者、AI 代理、远程管理 |
| 安全模型 | 绕过访问控制 | 遵循用户权限和 API key 范围 |
| 典型场景 | 备份/恢复、许可证管理、紧急重置密码 | 工作流自动化、通过代码管理凭据 |
运行 CLI 命令#
您可以在自托管的 n8n 中使用 CLI 命令。根据您选择安装 n8n 的方式,运行命令的方式有所不同:
- npm:
n8n命令直接可用。文档在下面的示例中使用这种方式。 -
Docker:
n8n命令在您的 Docker 容器内可用:1docker exec -u node -it <n8n-container-name> <n8n-cli-command>
启动工作流#
您可以使用 CLI 直接启动工作流。
通过 ID 执行已保存的工作流:
1 | |
发布或取消发布工作流#
您可以使用 CLI 发布或取消发布工作流。在 n8n 2.0 中,之前的激活/停用切换已被发布/取消发布模型取代。请使用 publish:workflow 和 unpublish:workflow 在 CLI 中更改工作流的发布状态。
需要重启
这些命令操作您的 n8n 数据库。如果您在 n8n 运行时执行这些命令,更改不会生效,直到您重启 n8n。
Publish a workflow 发布工作流#
使用 publish:workflow 可通过工作流 ID 发布工作流。你也可以传入 versionId 来发布某个特定的历史版本。
命令标志:
| 标志 | 描述 |
|---|---|
| --help | 帮助提示。 |
| --id | 要发布的工作流 ID。必填。 |
| --versionId | 可选,要发布的版本 ID。如果省略,则发布当前草稿。 |
不支持 --all 标志
与已弃用的 update:workflow 命令不同,publish:workflow 不支持 --all。这是有意为之,用于防止在生产环境中意外批量发布工作流。请按 ID 逐个发布。
通过 ID 发布工作流的当前草稿:
1 | |
发布工作流的特定历史版本:
1 | |
Unpublish a workflow 取消发布工作流#
使用 unpublish:workflow 可通过工作流 ID 取消发布某个工作流,或一次性取消发布所有工作流。
命令标志:
| 标志 | 描述 |
|---|---|
| --help | 帮助提示。 |
| --id | 要取消发布的工作流 ID。不能与 --all 同时使用。 |
| --all | 取消发布所有工作流。不能与 --id 同时使用。 |
通过 ID 取消发布工作流:
1 | |
取消发布所有工作流:
1 | |
update:workflow(已弃用)#
自 n8n 2.0 起已弃用
update:workflow 命令已弃用,后续将被移除。请改用 publish:workflow 和 unpublish:workflow。详情请参阅 n8n v2.0 重大变更。
将工作流的活动状态设置为 false(通过 ID):
1 | |
将工作流的活动状态设置为 true(通过 ID):
1 | |
将所有工作流的活动状态设置为 false:
1 | |
将所有工作流的活动状态设置为 true:
1 | |
Export entities 导出实体#
您可以使用 CLI 从 n8n 导出数据库实体。此工具允许您从一种数据库类型(如 SQLite)导出所有实体类型,并将它们导入到另一种数据库类型(如 Postgres)。
命令标志:
| 标志 | 描述 |
|---|---|
| --help | 帮助提示。 |
| --outputDir | 输出目录路径 |
| --includeExecutionHistoryDataTables | 包含执行历史数据表,默认情况下排除这些表,因为它们可能非常大 |
1 | |
Export workflows and credentials 导出工作流和凭据#
您可以使用 CLI 从 n8n 导出工作流和凭据。
命令标志:
| 标志 | 描述 |
|---|---|
| --help | 帮助提示。 |
| --all | 导出所有工作流/凭据。 |
| --backup | 为备份设置 --all --pretty --separate。你也可以额外设置 --output。 |
| --id | 要导出的工作流 ID。 |
| --output, -o | 输出文件名;若使用单独文件,则输出目录。 |
| --pretty | 以更易读的格式格式化输出。 |
| --separate | 每个工作流导出一个文件(适合版本管理)。必须通过 --output 指定目录。 |
| --decrypted | 以纯文本格式导出凭据(仅适用于凭据)。 |
| --version | 要导出的特定历史版本 ID(仅适用于工作流,不能与 --all 或 --published 一起使用)。 |
| --published | 导出工作流当前已发布/激活的版本,而不是当前草稿。与 --all 一起使用时,未发布的工作流会被跳过(仅适用于工作流,不能与 --version 一起使用)。 |
工作流#
将所有工作流导出到标准输出(终端):
1 | |
通过 ID 导出工作流并指定输出文件名:
1 | |
将所有工作流导出到特定目录的单个文件中:
1 | |
使用 --backup 标志将所有工作流导出到特定目录(详情见上):
1 | |
导出特定工作流版本#
你可以通过 --version 传入工作流的 versionId,来导出某个特定历史版本:
1 | |
导出工作流的已发布版本#
使用 --published 可导出工作流当前已发布/激活的版本,而不是当前草稿:
1 | |
你可以将 --published 与 --all 一起使用,以导出所有工作流的已发布版本。没有已发布版本的工作流会被跳过:
1 | |
版本元数据
导出工作流时,n8n 会包含一个 versionMetadata 属性,其中带有该版本对应的历史名称和描述。导入命令在导入时会将这些数据保留到工作流历史表中,不会覆盖当前工作流实体的名称和描述。
凭据#
将所有凭据导出到标准输出(终端):
1 | |
通过 ID 导出凭据并指定输出文件名:
1 | |
将所有凭据导出到特定目录的单个文件中:
1 | |
使用 --backup 标志将所有凭据导出到特定目录(详情见上):
1 | |
以纯文本格式导出所有凭据。您可以使用此功能从一个安装迁移到另一个在配置文件中具有不同密钥的安装。
敏感信息
所有敏感信息在文件中都是可见的。
1 | |
Import entities 导入实体#
您可以使用此命令导入先前 export:entities 命令的实体,它允许将实体导入到与导出数据库类型不同的数据库类型中。当前支持的数据库类型包括:SQLite、Postgres。
导入前数据库应该是空的,可以使用 --truncateTables 参数强制执行。
命令标志:
| 标志 | 描述 |
|---|---|
| --help | 帮助提示。 |
| --inputDir | 保存导入输出文件的输入目录 |
| --truncateTables | 导入前截断表 |
1 | |
Import workflows and credentials 导入工作流和凭据#
您可以使用 CLI 从 n8n 导入工作流和凭据。
更新 ID
导出工作流和凭据时,n8n 也会导出它们的 ID。如果您的现有数据库中有相同 ID 的工作流和凭据,它们将被覆盖。为避免这种情况,请在导入前删除或更改 ID。
可用标志:
| 标志 | 描述 |
|---|---|
| --help | 帮助提示。 |
| --input | 输入文件名;若使用 --separate,则输入目录。 |
| --projectId | 将工作流或凭据导入到指定项目。不能与 --userId 一起使用。 |
| --separate | 从 --input 指定的目录导入 *.json 文件。 |
| --userId | 将工作流或凭据导入到指定用户。不能与 --projectId 一起使用。 |
| --skipMigrationChecks | 跳过迁移校验检查。 |
| --activeState | 控制导入工作流后的激活状态。可接受 false(默认,停用所有导入工作流)或 fromJson(使用每个工作流 JSON 中的 active 字段;仅适用于 multi-main 模式)。 |
迁移到 SQLite
n8n 将工作流和凭据名称限制为 128 个字符,但 SQLite 不强制执行大小限制。
这可能导致在导入过程中出现类似 Data too long for column name 的错误。
在这种情况下,您可以从 n8n 界面编辑名称并重新导出,或在导入前直接编辑 JSON 文件。
工作流#
已知问题:导入后 cron trigger 仍会继续运行
导入之前处于活动状态的工作流时,其行为会因你当前运行模式不同而有所差异。这是一个已知 bug。
在 multi-main 和 queue mode 实例中,之前处于活动状态的工作流,其 cron trigger 会在导入时被停用。
在非 multi-main 实例中,这些之前处于活动状态的工作流的 cron trigger 会持续运行,直到你重启 n8n 实例。
从特定文件导入工作流:
1 | |
从指定目录导入所有工作流文件(作为 JSON):
1 | |
导入时的版本元数据
如果导入文件中包含 versionMetadata 属性(由导出特定版本或已发布版本时添加),n8n 会在工作流历史表中保留该历史名称和描述。当前工作流实体的名称和描述会保持不变。
默认情况下,import:workflow 会停用所有导入的工作流。如果要保留每个 JSON 文件中的 active 字段,请传入 --activeState=fromJson(仅适用于 multi-main 和 queue mode):
1 | |
Credentials#
从特定文件导入凭据:
1 | |
从指定目录导入所有凭据文件(作为 JSON):
1 | |
许可证#
清除#
从 n8n 数据库中清除您的现有许可证并将 n8n 重置为默认功能:
1 | |
如果您的许可证包含浮动权限,运行此命令还将尝试将它们释放回池中,使其可用于其他实例。
信息#
显示有关现有许可证的信息:
1 | |
用户管理#
您可以使用 n8n CLI 重置用户管理。这将用户管理返回到其预设置状态。它会删除所有用户账户。
如果您忘记了密码并且没有设置 SMTP 来通过电子邮件进行密码重置,请使用此功能。
1 | |
为用户禁用 MFA#
如果用户丢失了恢复代码,您可以使用此命令为用户禁用 MFA。然后用户将能够重新登录以再次设置 MFA。
1 | |
禁用 LDAP#
您可以使用以下命令重置 LDAP 设置。
1 | |
卸载社区节点和凭据#
您可以使用 n8n CLI 管理社区节点。目前,您只能卸载社区节点和凭据,这在社区节点导致不稳定时很有用。
命令标志:
| 标志 | 描述 |
|---|---|
| --help | 显示 CLI 帮助。 |
| --credential | 凭据类型。通过访问节点的 <NODE>.credential.ts 文件并获取 name 的值来获取此值。 |
| --package | 社区节点的包名。 |
| --uninstall | 卸载节点。 |
| --userId | 拥有凭据的用户的 ID。在自托管上,查询数据库。在云上,使用您的 API 密钥查询 API。 |
节点#
通过包名卸载社区节点:
1 | |
例如,要卸载 Evolution API 社区节点,请输入:
1 | |
凭据#
卸载社区节点凭据:
1 | |
例如,要卸载 Evolution API 社区节点凭据,请访问仓库并导航到 credentials.ts 文件以查找 name:
1 | |
安全审计#
您可以在 n8n 实例上运行安全审计,以检测常见的安全问题。
1 | |