구성#
기능 사용 가능 여부
Embed 기능을 사용하려면 Embed 라이선스가 필요합니다. Embed 사용 시점, 비용 및 라이선스 프로세스에 대한 자세한 내용은 n8n 웹사이트의 Embed 페이지를 참고하세요.
인증#
n8n의 사용자 관리를 설정하여 n8n을 보안할 수 있으며, 이는 n8n의 내장 인증 기능입니다.
자격 증명 덮어쓰기#
사용자에게 OAuth 로그인을 제공하기 위해, 자격 증명을 전역적으로 덮어쓰는 것이 가능합니다. 이 자격 증명 데이터는 사용자에게는 보이지 않지만 백엔드에서는 자동으로 사용됩니다.
에디터 UI에서는 n8n이 기본적으로 모든 덮어쓰기된 필드를 숨깁니다. 즉, 사용자는 자격 증명에서 "연결" 버튼을 눌러 OAuth를 사용하여 인증할 수 있습니다.
n8n은 자격 증명 덮어쓰기를 적용하는 두 가지 방법을 제공합니다: 환경 변수를 사용하는 방법과 REST API를 사용하는 방법입니다.
환경 변수를 사용하는 방법#
환경 변수를 설정하여 CREDENTIALS_OVERWRITE_DATA
를 { CREDENTIAL_NAME: { PARAMETER: VALUE }}
로 설정함으로써 자격 증명 덮어쓰기를 할 수 있습니다.
/// 경고 비록 가능하긴 하지만 권장되지 않습니다. 환경 변수는 n8n에서 보호되지 않기 때문에 데이터가 사용자에게 유출될 수 있습니다. ///
REST API를 사용하는 방법#
추천하는 방법은 사용자 지정 REST 끝점을 통해 데이터를 로드하는 것입니다. CREDENTIALS_OVERWRITE_ENDPOINT
를 이 끝점을 제공해야 하는 경로로 설정합니다.
/// 노트 보안상의 이유로 끝점은 한 번에 하나만 호출할 수 있습니다. ///
예를 들어:
-
n8n이 실행되는 환경에서 환경 변수를 설정하여 끝점을 활성화합니다:
1
export 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을 사용하여 인스턴스에 적용합니다:
1
curl -H "Content-Type: application/json" --data @oauth-credentials.json http://localhost:5678/send-credentials
/// 노트
일부 자격 증명은 다른 자격 증명에 기반 하는 경우가 있습니다. 예를 들어, googleSheetsOAuth2Api
는 googleOAuth2Api
를 확장합니다. 이 경우, 모든 자식 자격 증명(googleSheetsOAuth2Api
)이 사용할 수 있도록 부모 자격 증명(googleOAuth2Api
)의 매개변수를 설정할 수 있습니다.
///
환경 변수#
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] |
기존 워크플로우가 저장되기 전에 호출됩니다. |
훅 등록#
훅 함수를 포함한 훅 파일을 등록하여 훅을 설정합니다.
훅을 등록하려면 환경 변수 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.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
파일에 스크립트 태그를 추가하는 것입니다:
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
패키지에서 훅을 검색해 보세요.