配置#
功能可用性
嵌入功能需要嵌入许可证。有关何时使用嵌入功能以及成本和许可流程的更多信息,请参阅 n8n 网站上的嵌入功能。
身份验证#
您可以通过设置用户管理(n8n 的内置身份验证功能)来保护 n8n。
凭据覆写#
为了向用户提供 OAuth 登录,可以在全局基础上覆写凭据。此凭据数据对用户不可见,但后端会自动使用它。
在编辑器 UI 中,n8n 默认隐藏所有覆写的字段。这意味着用户能够通过按凭据上的"连接"按钮使用 OAuth 进行身份验证。
n8n 提供两种应用凭据覆写的方法:使用环境变量和使用 REST API。
使用环境变量#
您可以通过将 CREDENTIALS_OVERWRITE_DATA 设置为 { CREDENTIAL_NAME: { PARAMETER: VALUE }} 来使用环境变量设置凭据覆写。
Warning
尽管这是可能的,但不建议这样做。环境变量在 n8n 中不受保护,因此数据可能泄露给用户。
使用 REST API#
推荐的方法是使用自定义 REST 端点加载数据。将 CREDENTIALS_OVERWRITE_ENDPOINT 设置为应该提供此端点的路径。您可以设置 CREDENTIALS_OVERWRITE_ENDPOINT_AUTH_TOKEN 来要求访问端点时使用令牌。配置此令牌后,只有在 Authorization 标头中包含令牌作为 Bearer 令牌时,端点才可访问。
Note
出于安全原因,端点只能调用一次,除非设置了 CREDENTIALS_OVERWRITE_ENDPOINT_AUTH_TOKEN。
例如:
-
通过在 n8n 运行的环境中设置环境变量来激活端点:
1export CREDENTIALS_OVERWRITE_ENDPOINT=send-credentials -
然后需要一个包含要覆写的凭据的 JSON 文件。例如,用于覆写 Asana 和 GitHub 凭据的
oauth-credentials.json文件可能如下所示:1 2 3 4 5 6 7 8 9 10
{ "asanaOAuth2Api": { "clientId": "<id>", "clientSecret": "<secret>" }, "githubOAuth2Api": { "clientId": "<id>", "clientSecret": "<secret>" } } -
然后使用 curl 发送它来将其应用到实例:
1curl -H "Content-Type: application/json" --data @oauth-credentials.json http://localhost:5678/send-credentials
Note
有些情况下凭据基于其他凭据。例如,googleSheetsOAuth2Api 扩展了 googleOAuth2Api。
在这种情况下,您可以在父凭据(googleOAuth2Api)上设置参数,以供所有子凭据(googleSheetsOAuth2Api)使用。
如果 CREDENTIALS_OVERWRITE_ENDPOINT_AUTH_TOKEN 设置为 secure-token,curl 命令将是:
1 2 3 | |
Environment variables 环境变量#
n8n 有许多你可以配置的环境变量。以下是对你的托管解决方案最相关的环境变量:
| 变量 | 类型 | 默认值 | 描述 |
|---|---|---|---|
EXECUTIONS_TIMEOUT |
Number | -1 |
设置所有工作流的默认超时(以秒为单位),之后 n8n 停止它们的执行。用户可以为单个工作流覆盖此设置,最长不超过 EXECUTIONS_TIMEOUT_MAX 中设置的持续时间。将 EXECUTIONS_TIMEOUT 设置为 -1 以禁用。 |
EXECUTIONS_DATA_PRUNE |
Boolean | true |
是否在滚动基础上删除过去执行的数据。 |
EXECUTIONS_DATA_MAX_AGE |
Number | 336 |
执行被删除前的年龄(以小时为单位)。 |
EXECUTIONS_DATA_PRUNE_MAX_COUNT |
Number | 10000 |
数据库中保留的最大执行数。0 = 无限制 |
NODES_EXCLUDE |
Array of strings | - | 指定不加载哪些节点。例如,如果用户不可信,阻止可能存在安全风险的节点:NODES_EXCLUDE: "[\"n8n-nodes-base.executeCommand\", \"n8n-nodes-base.readWriteFile\"]" |
NODES_INCLUDE |
Array of strings | - | 指定要加载哪些节点。 |
N8N_TEMPLATES_ENABLED |
Boolean | true |
启用工作流模板(true)或禁用(false)。 |
N8N_TEMPLATES_HOST |
String | https://api.n8n.io |
如果创建自己的工作流模板库,请更改此设置。请注意,要使用你自己的工作流模板库,你的 API 必须提供与 n8n 相同的端点和响应结构。有关更多信息,请参阅工作流模板。 |
后端钩子#
可以定义外部钩子,n8n 在特定操作运行时执行这些钩子。您可以使用这些钩子,例如,记录数据、更改数据或通过抛出错误来禁止操作。
可用钩子#
| 钩子 | 参数 | 描述 |
|---|---|---|
credentials.create |
[credentialData: ICredentialsDb] |
在创建新凭据之前调用。用于限制凭据数量。 |
credentials.delete |
[id: credentialId] |
在删除凭据之前调用。 |
credentials.update |
[credentialData: ICredentialsDb] |
在保存现有凭据之前调用。 |
frontend.settings |
[frontendSettings: IN8nUISettings] |
在 n8n 启动时调用。允许你,例如,覆盖前端数据,如显示的 OAuth URL。 |
n8n.ready |
[app: App] |
在 n8n 准备就绪时调用一次。用于,例如,注册自定义 API 端点。 |
n8n.stop |
在 n8n 进程停止时调用。允许你保存一些进程数据。 | |
oauth1.authenticate |
[oAuthOptions: clientOAuth1.Options, oauthRequestData: {oauth_callback: string}] |
在 OAuth1 身份验证之前调用。用于覆盖 OAuth 回调 URL。 |
oauth2.callback |
[oAuth2Parameters: {clientId: string, clientSecret: string \| undefined, accessTokenUri: string, authorizationUri: string, redirectUri: string, scopes: string[]}] |
在 OAuth2 回调中调用。用于覆盖 OAuth 回调 URL。 |
workflow.activate |
[workflowData: IWorkflowDb] |
在工作流激活之前调用。用于限制活动工作流的数量。 |
workflow.afterDelete |
[workflowId: string] |
在工作流删除之后调用。 |
workflow.afterUpdate |
[workflowData: IWorkflowBase] |
在保存现有工作流之后调用。 |
workflow.create |
[workflowData: IWorkflowBase] |
在工作流创建之前调用。用于限制已保存工作流的数量。 |
workflow.delete |
[workflowId: string] |
在工作流删除之前调用。 |
workflow.postExecute |
[run: IRun, workflowData: IWorkflowBase] |
在工作流执行之后调用。 |
workflow.preExecute |
[workflow: Workflow: mode: WorkflowExecuteMode] |
在工作流执行之前调用。允许你计数或限制工作流执行的数量。 |
workflow.update |
[workflowData: IWorkflowBase] |
在保存现有工作流之前调用。 |
workflow.afterArchive |
[workflowId: string] |
在你归档工作流之后调用。 |
workflow.afterUnarchive |
[workflowId: string] |
在你从归档中恢复工作流之后调用。 |
注册钩子#
通过注册包含钩子函数的钩子文件来设置钩子。
要注册钩子,请设置环境变量 EXTERNAL_HOOK_FILES。
您可以将变量设置为单个文件:
EXTERNAL_HOOK_FILES=/data/hook.js
或包含用分号分隔的多个文件:
EXTERNAL_HOOK_FILES=/data/hook1.js;/data/hook2.js
后端钩子文件#
钩子文件是具有以下格式的常规 JavaScript 文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | |
后端钩子函数#
一个钩子或钩子文件可以包含多个钩子函数,所有函数依次执行。
如果钩子函数的参数是对象,则可以更改该参数的数据以更改 n8n 的行为。
您还可以在任何钩子函数中使用 this.dbCollections 访问数据库(请参阅后端钩子文件中的代码示例)。
前端外部钩子#
与后端外部钩子一样,可以在前端代码中定义外部钩子,当用户执行特定操作时由 n8n 执行。您可以使用它们,例如,记录数据和更改数据。
可用钩子#
| 钩子 | 描述 |
|---|---|
credentialsEdit.credentialTypeChanged |
当现有凭据的类型更改时调用。 |
credentials.create |
当有人创建新凭据时调用。 |
credentialsList.dialogVisibleChanged |
当凭据列表对话框可见性更改时调用。 |
dataDisplay.nodeTypeChanged |
当数据展示的节点类型更改时调用。 |
dataDisplay.onDocumentationUrlClick |
当有人选择帮助文档链接时调用。 |
execution.open |
当现有执行打开时调用。 |
executionsList.openDialog |
当有人从现有工作流执行中选择执行时调用。 |
expressionEdit.itemSelected |
当在表达式编辑器中选择数据项时调用。 |
expressionEdit.dialogVisibleChanged |
当表达式编辑器对话框可见性更改时调用。 |
nodeCreateList.filteredNodeTypesComputed |
当节点创建列表的过滤节点类型计算完成时调用。 |
nodeCreateList.nodeFilterChanged |
当有人对节点面板过滤器进行任何更改时调用。 |
nodeCreateList.selectedTypeChanged |
当节点创建列表中选中的类型更改时调用。 |
nodeCreateList.mounted |
当节点创建列表组件挂载时调用。 |
nodeCreateList.destroyed |
当节点创建列表组件销毁时调用。 |
nodeSettings.credentialSelected |
当在节点设置中选择凭据时调用。 |
nodeSettings.valueChanged |
当节点设置中的值更改时调用。 |
nodeView.createNodeActiveChanged |
当节点视图的创建节点活动状态更改时调用。 |
nodeView.addNodeButton |
当点击添加节点按钮时调用。 |
nodeView.mount |
当节点视图组件挂载时调用。 |
pushConnection.executionFinished |
当推送连接的执行完成时调用。 |
showMessage.showError |
当显示错误消息时调用。 |
runData.displayModeChanged |
当运行数据的显示模式更改时调用。 |
workflow.activeChange |
当工作流活动状态更改时调用。 |
workflow.activeChangeCurrent |
当当前工作流的活动状态更改时调用。 |
workflow.afterUpdate |
当有人更新现有工作流时调用。 |
注册钩子#
您可以通过在页面上加载钩子脚本来设置钩子。一种方法是在项目中创建钩子文件并在您的 editor-ui/public/index.html 文件中添加脚本标签:
1 | |
前端钩子文件#
前端外部钩子文件是具有以下格式的常规 JavaScript 文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
前端钩子函数#
您可以为每个钩子定义多个钩子函数。每个钩子函数都使用以下参数调用:
store:Vuex 存储对象。您可以使用它来更改或从存储中获取数据。metadata:包含钩子提供的任何数据的对象。要查看传递的内容,请在editor-ui包中搜索钩子。