InfoGrab Docs

n8n Embed 설정

요약

Embed를 사용하려면 embed 라이선스가 필요합니다. 사용자 관리, n8n의 내장 인증 기능을 설정하여 n8n을 보호할 수 있습니다. n8n은 LDAP 및 SAML을 지원합니다. 사용자에게 OAuth 로그인을 제공하려면 전역적으로 자격증명을 덮어쓸 수 있습니다.

기능 제공 범위

Embed를 사용하려면 embed 라이선스가 필요합니다. Embed 사용 시기, 비용 및 라이선스 절차에 대한 자세한 내용은 n8n 웹사이트의 Embed를 참조하세요.

인증#

사용자 관리, n8n의 내장 인증 기능을 설정하여 n8n을 보호할 수 있습니다.

n8n은 LDAPSAML을 지원합니다.

자격증명 덮어쓰기#

사용자에게 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이 설정되지 않는 한 한 번만 호출할 수 있습니다.

예를 들어:

  1. n8n이 실행되는 환경의 환경 변수를 설정하여 엔드포인트를 활성화합니다:

    export CREDENTIALS_OVERWRITE_ENDPOINT=send-credentials
    
  2. 그런 다음 덮어쓸 자격증명이 포함된 JSON 파일이 필요합니다. 예를 들어, Asana 및 GitHub의 자격증명을 덮어쓰기 위한 oauth-credentials.json 파일은 다음과 같습니다:

    {
        "asanaOAuth2Api": {
            "clientId": "<id>",
            "clientSecret": "<secret>"
        },
        "githubOAuth2Api": {
            "clientId": "<id>",
            "clientSecret": "<secret>"
        }
    }
    
  3. 그런 다음 curl을 사용하여 인스턴스에 적용합니다:

    curl -H "Content-Type: application/json" --data @oauth-credentials.json http://localhost:5678/send-credentials
    
Note

자격증명이 다른 자격증명을 기반으로 하는 경우가 있습니다. 예를 들어, googleSheetsOAuth2ApigoogleOAuth2Api를 확장합니다. 이 경우 모든 하위 자격증명(googleSheetsOAuth2Api)이 사용할 수 있도록 부모 자격증명(googleOAuth2Api)에 파라미터를 설정할 수 있습니다.

CREDENTIALS_OVERWRITE_ENDPOINT_AUTH_TOKENsecure-token으로 설정된 경우, curl 명령은 다음과 같습니다:

```sh
curl -H "Content-Type: application/json" -H "Authorization: Bearer secure-token" --data @oauth-credentials.json http://localhost:5678/send-credentials
```

영속성#

데이터베이스에 자격증명 덮어쓰기를 저장하고 멀티 인스턴스/큐 모드에서 모든 워커에 자동으로 전파하려면 다음을 활성화합니다:

export CREDENTIALS_OVERWRITE_PERSISTENCE=true

활성화되면 n8n은 암호화된 덮어쓰기를 settings 테이블에 저장하고 워커가 최신 값을 다시 로드하도록 reload-overwrite-credentials 이벤트를 브로드캐스트합니다. 비활성화되면 덮어쓰기는 로드한 프로세스의 메모리에 남아 있으며 워커에 전파되거나 재시작 후에도 보존되지 않습니다.

환경 변수#

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 [\"n8n-nodes-base.executeCommand\", \"n8n-nodes-base.localFileTrigger\"] 로드하지 않을 노드를 지정합니다. 예를 들어, 사용자를 신뢰할 수 없는 경우 보안 위험이 될 수 있는 노드를 차단합니다: NODES_EXCLUDE: "[\"n8n-nodes-base.executeCommand\", \"n8n-nodes-base.readWriteFile\"]". 모든 노드를 활성화하려면 NODES_EXCLUDE: "[]"를 지정합니다.
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.afterCreate [workflowId: string] 워크플로가 생성된 후 호출됩니다.
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 파일입니다:

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의 동작을 변경할 수 있습니다.

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.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 누군가 워크플로 설정을 저장할 때 호출됩니다.

훅 등록#

페이지에 훅 스크립트를 로드하여 훅을 설정할 수 있습니다. 한 가지 방법은 프로젝트에 훅 파일을 만들고 editor-ui/public/index.html 파일에 스크립트 태그를 추가하는 것입니다:

<script src="frontend-hooks.js"></script>

프론트엔드 훅 파일#

프론트엔드 외부 훅 파일은 다음 형식을 가진 일반 JavaScript 파일입니다:

window.n8nExternalHooks = {
  nodeView: {
    mount: [
      function (store, meta) {
        // 무언가 수행
      },
    ],
    createNodeActiveChanged: [
      function (store, meta) {
        // 무언가 수행
      },
      function (store, meta) {
        // 다른 작업 수행
      },
    ],
    addNodeButton: [
      function (store, meta) {
        // 무언가 수행
      },
    ],
  },
};

프론트엔드 훅 함수#

훅당 여러 훅 함수를 정의할 수 있습니다. 각 훅 함수는 다음 인수로 호출됩니다:

  • store: Vuex 스토어 객체. 스토어에서 데이터를 변경하거나 가져오는 데 사용할 수 있습니다.
  • metadata: 훅에서 제공하는 데이터가 포함된 객체. 전달되는 내용을 보려면 editor-ui 패키지에서 훅을 검색하세요.

n8n Embed 설정

원문 보기
요약

Embed를 사용하려면 embed 라이선스가 필요합니다. 사용자 관리, n8n의 내장 인증 기능을 설정하여 n8n을 보호할 수 있습니다. n8n은 LDAP 및 SAML을 지원합니다. 사용자에게 OAuth 로그인을 제공하려면 전역적으로 자격증명을 덮어쓸 수 있습니다.

기능 제공 범위

Embed를 사용하려면 embed 라이선스가 필요합니다. Embed 사용 시기, 비용 및 라이선스 절차에 대한 자세한 내용은 n8n 웹사이트의 Embed를 참조하세요.

인증#

사용자 관리, n8n의 내장 인증 기능을 설정하여 n8n을 보호할 수 있습니다.

n8n은 LDAPSAML을 지원합니다.

자격증명 덮어쓰기#

사용자에게 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이 설정되지 않는 한 한 번만 호출할 수 있습니다.

예를 들어:

  1. n8n이 실행되는 환경의 환경 변수를 설정하여 엔드포인트를 활성화합니다:

    export CREDENTIALS_OVERWRITE_ENDPOINT=send-credentials
    
  2. 그런 다음 덮어쓸 자격증명이 포함된 JSON 파일이 필요합니다. 예를 들어, Asana 및 GitHub의 자격증명을 덮어쓰기 위한 oauth-credentials.json 파일은 다음과 같습니다:

    {
        "asanaOAuth2Api": {
            "clientId": "<id>",
            "clientSecret": "<secret>"
        },
        "githubOAuth2Api": {
            "clientId": "<id>",
            "clientSecret": "<secret>"
        }
    }
    
  3. 그런 다음 curl을 사용하여 인스턴스에 적용합니다:

    curl -H "Content-Type: application/json" --data @oauth-credentials.json http://localhost:5678/send-credentials
    
Note

자격증명이 다른 자격증명을 기반으로 하는 경우가 있습니다. 예를 들어, googleSheetsOAuth2ApigoogleOAuth2Api를 확장합니다. 이 경우 모든 하위 자격증명(googleSheetsOAuth2Api)이 사용할 수 있도록 부모 자격증명(googleOAuth2Api)에 파라미터를 설정할 수 있습니다.

CREDENTIALS_OVERWRITE_ENDPOINT_AUTH_TOKENsecure-token으로 설정된 경우, curl 명령은 다음과 같습니다:

```sh
curl -H "Content-Type: application/json" -H "Authorization: Bearer secure-token" --data @oauth-credentials.json http://localhost:5678/send-credentials
```

영속성#

데이터베이스에 자격증명 덮어쓰기를 저장하고 멀티 인스턴스/큐 모드에서 모든 워커에 자동으로 전파하려면 다음을 활성화합니다:

export CREDENTIALS_OVERWRITE_PERSISTENCE=true

활성화되면 n8n은 암호화된 덮어쓰기를 settings 테이블에 저장하고 워커가 최신 값을 다시 로드하도록 reload-overwrite-credentials 이벤트를 브로드캐스트합니다. 비활성화되면 덮어쓰기는 로드한 프로세스의 메모리에 남아 있으며 워커에 전파되거나 재시작 후에도 보존되지 않습니다.

환경 변수#

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 [\"n8n-nodes-base.executeCommand\", \"n8n-nodes-base.localFileTrigger\"] 로드하지 않을 노드를 지정합니다. 예를 들어, 사용자를 신뢰할 수 없는 경우 보안 위험이 될 수 있는 노드를 차단합니다: NODES_EXCLUDE: "[\"n8n-nodes-base.executeCommand\", \"n8n-nodes-base.readWriteFile\"]". 모든 노드를 활성화하려면 NODES_EXCLUDE: "[]"를 지정합니다.
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.afterCreate [workflowId: string] 워크플로가 생성된 후 호출됩니다.
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 파일입니다:

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의 동작을 변경할 수 있습니다.

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.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 누군가 워크플로 설정을 저장할 때 호출됩니다.

훅 등록#

페이지에 훅 스크립트를 로드하여 훅을 설정할 수 있습니다. 한 가지 방법은 프로젝트에 훅 파일을 만들고 editor-ui/public/index.html 파일에 스크립트 태그를 추가하는 것입니다:

<script src="frontend-hooks.js"></script>

프론트엔드 훅 파일#

프론트엔드 외부 훅 파일은 다음 형식을 가진 일반 JavaScript 파일입니다:

window.n8nExternalHooks = {
  nodeView: {
    mount: [
      function (store, meta) {
        // 무언가 수행
      },
    ],
    createNodeActiveChanged: [
      function (store, meta) {
        // 무언가 수행
      },
      function (store, meta) {
        // 다른 작업 수행
      },
    ],
    addNodeButton: [
      function (store, meta) {
        // 무언가 수행
      },
    ],
  },
};

프론트엔드 훅 함수#

훅당 여러 훅 함수를 정의할 수 있습니다. 각 훅 함수는 다음 인수로 호출됩니다:

  • store: Vuex 스토어 객체. 스토어에서 데이터를 변경하거나 가져오는 데 사용할 수 있습니다.
  • metadata: 훅에서 제공하는 데이터가 포함된 객체. 전달되는 내용을 보려면 editor-ui 패키지에서 훅을 검색하세요.