Skip to content

配置

功能可用性

嵌入需要嵌入许可证。有关何时使用嵌入以及费用和许可流程的更多信息,请参阅n8n 网站上的“嵌入”

验证

您可以通过设置用户管理(n8n 的内置身份验证功能)来保护 n8n 的安全。

n8n 支持LDAPSAML

凭证覆盖

为了向用户提供 OAuth 登录,可以全局覆盖凭证。这些凭证数据对用户不可见,但后端会自动使用。

在编辑器 UI 中,n8n 默认隐藏所有被覆盖的字段。这意味着用户可以通过点击凭证上的“连接”按钮使用 OAuth 进行身份验证。

n8n 提供两种应用凭证覆盖的方法:使用环境变量和使用 REST API。

使用环境变量

您可以通过将设置为 使用环境变量来设置凭据覆盖。

警告

虽然可以这样做,但不建议这样做。n8n 中的环境变量不受保护,因此数据可能会泄露给用户。

使用 REST API

推荐使用自定义 REST 端点加载数据。请将 设置为此端点可用的路径。

笔记

出于安全原因,一次只能调用一个端点。

例如:

  1. 通过在 n8n 运行的环境中设置环境变量来激活端点:

    1
    export CREDENTIALS_OVERWRITE_ENDPOINT=send-credentials
    
  2. 然后需要一个包含要覆盖的凭据的 JSON 文件。例如,用于覆盖 Asana 和 GitHub 凭据的文件可能如下所示:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    {
        "asanaOAuth2Api": {
            "clientId": "<id>",
            "clientSecret": "<secret>"
        },
        "githubOAuth2Api": {
            "clientId": "<id>",
            "clientSecret": "<secret>"
        }
    }
    
  3. 然后通过使用 curl 发送它来将其应用到实例:

    1
    curl -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
module.exports = {
    "frontend": {
        "settings": [
            async function (settings) {
                settings.oauthCallbackUrls.oauth1 = 'https://n8n.example.com/oauth1/callback';
                settings.oauthCallbackUrls.oauth2 = 'https://n8n.example.com/oauth2/callback';
            }
        ]
    },
    "workflow": {
        "activate": [
            async function (workflowData) {
                const activeWorkflows = await this.dbCollections.Workflow.count({ active: true });

                if (activeWorkflows > 1) {
                    throw new Error(
                        'Active workflow limit reached.'
                    );
                }
            }
        ]
    }
}

后端钩子函数

一个钩子或一个钩子文件可以包含多个钩子函数,所有函数都会依次执行。

如果钩子函数的参数是对象,那么就可以改变该参数的数据来改变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
<script src="frontend-hooks.js"></script>

前端钩子文件

前端外部钩子文件是常规 JavaScript 文件,具有以下格式:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
window.n8nExternalHooks = {
  nodeView: {
    mount: [
      function (store, meta) {
        // do something
      },
    ],
    createNodeActiveChanged: [
      function (store, meta) {
        // do something
      },
      function (store, meta) {
        // do something else
      },
    ],
    addNodeButton: [
      function (store, meta) {
        // do something
      },
    ],
  },
};

前端钩子函数

每个钩子可以定义多个钩子函数。每个钩子函数使用以下参数调用:

  • :Vuex 存储对象。你可以使用它来更改或获取存储中的数据。
  • :包含钩子提供的任何数据的对象。要查看传递的内容,请在包中搜索该钩子。