配置
验证
您可以通过设置
用户管理(n8n 的内置身份验证功能)来保护 n8n 的安全。n8n 支持
LDAP和SAML 。凭证覆盖
为了向用户提供 OAuth 登录,可以全局覆盖
凭证。这些凭证数据对用户不可见,但后端会自动使用。在编辑器 UI 中,n8n 默认隐藏所有被覆盖的字段。这意味着用户可以通过点击凭证上的“连接”按钮使用 OAuth 进行身份验证。
n8n 提供两种应用凭证覆盖的方法:使用环境变量和使用 REST API。
使用环境变量
您可以通过将设置为 使用环境变量来设置凭据覆盖。
警告
虽然可以这样做,但不建议这样做。n8n 中的环境变量不受保护,因此数据可能会泄露给用户。
使用 REST API
推荐使用自定义 REST 端点加载数据。请将 设置为此端点可用的路径。
笔记
出于安全原因,一次只能调用一个端点。
例如:
-
通过在 n8n 运行的环境中设置环境变量来激活端点:
1export CREDENTIALS_OVERWRITE_ENDPOINT=send-credentials -
然后需要一个包含要覆盖的凭据的 JSON 文件。例如,用于覆盖 Asana 和 GitHub 凭据的文件可能如下所示:
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
笔记
在某些情况下,凭证会基于其他凭证。例如,扩展了。在这种情况下,您可以在父凭证 ( ) 上设置参数,以供所有子凭证 ( ) 使用。
环境变量
n8n 有许多
环境变量可供配置。以下是与您的托管解决方案最相关的环境变量:| 多变的 | 类型 | 默认 | 描述 |
|---|---|---|---|
EXECUTIONS_TIMEOUT |
数字 | -1 |
为所有工作流设置默认超时时间(以秒为单位),超过该时间后,n8n 将停止执行。用户可以为单个工作流覆盖此设置,最长不超过 中设置的持续时间。设置为表示禁用。 |
EXECUTIONS_DATA_PRUNE |
布尔值 | true |
是否滚动删除过去执行的数据。 |
EXECUTIONS_DATA_MAX_AGE |
数字 | 336 |
删除前的执行时长(以小时为单位)。 |
EXECUTIONS_DATA_PRUNE_MAX_COUNT |
数字 | 10000 |
数据库中保留的最大执行次数。0 = 无限制 |
NODES_EXCLUDE |
字符串数组 | - | 指定不加载哪些节点。例如,要阻止那些在用户不可信时可能存在安全风险的节点: |
NODES_INCLUDE |
字符串数组 | - | 指定要加载的节点。 |
N8N_TEMPLATES_ENABLED |
布尔值 | true |
启用工作流模板(true) 或禁用 (false)。 |
N8N_TEMPLATES_HOST |
细绳 | 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] |
在保存现有工作流之前调用。 |
注册钩子
通过注册包含钩子函数的钩子文件来设置钩子。要注册钩子,请设置环境变量。
您可以将变量设置为单个文件:
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的行为。
您还可以使用任何挂钩函数访问数据库(请参阅
后端挂钩文件中的代码示例)。前端外部钩子
与后端外部钩子类似,您可以在前端代码中定义外部钩子,当用户执行特定操作时,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.createNodeActiveChanged |
|
nodeView.mount |
|
pushConnection.executionFinished |
|
showMessage.showError |
|
runData.displayModeChanged |
|
workflow.activeChange |
|
workflow.activeChangeCurrent |
|
workflow.afterUpdate |
当有人更新现有工作流程时调用。 |
workflow.open |
|
workflowRun.runError |
|
workflowRun.runWorkflow |
工作流执行时调用。 |
workflowSettings.dialogVisibleChanged |
|
workflowSettings.saveSettings |
当有人保存工作流设置时调用。 |
注册钩子
您可以通过在页面上加载 hooks 脚本来设置 hooks。一种方法是在项目中创建一个 hooks 文件,并在文件中添加 script 标签:
1 | |
前端钩子文件
前端外部钩子文件是常规 JavaScript 文件,具有以下格式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
前端钩子函数
每个钩子可以定义多个钩子函数。每个钩子函数使用以下参数调用:
- :Vuex 存储对象。你可以使用它来更改或获取存储中的数据。
- :包含钩子提供的任何数据的对象。要查看传递的内容,请在包中搜索该钩子。