명령줄 사용
n8n v2.29Server CLI는 n8n 설치와 동일한 머신에서 실행되는 내장 명령줄 인터페이스입니다. 원격 머신에서 프로그래밍 방식으로 n8n과 상호작용하거나 AI 에이전트와 통합하고 싶으신가요? 셀프 호스팅 n8n에서 CLI 명령을 사용할 수 있습니다.
Server CLI는 n8n 설치와 동일한 머신에서 실행되는 내장 명령줄 인터페이스입니다. 관리 작업을 위한 직접적인 데이터베이스 액세스를 제공하며, n8n이 실행되고 있지 않을 때도 대부분의 명령을 실행할 수 있습니다.
Server CLI와 n8n CLI 중 언제 무엇을 사용할지#
| 기능 | Server CLI | n8n CLI |
|---|---|---|
| 실행 위치 | n8n과 동일한 머신 | 네트워크에 액세스할 수 있는 모든 머신 |
| 인증 | 직접 데이터베이스 액세스 | API 키 |
| n8n 실행 필요 여부 | 아니요 (대부분의 명령) | 예 |
| 적합한 대상 | 인스턴스 운영자, 백업, 마이그레이션 | 프로그래머, AI 에이전트, 원격 관리 |
| 보안 모델 | 액세스 제어 우회 | 사용자 권한 및 API 키 범위 준수 |
| 사용 사례 예시 | 백업/복원, 라이선스 관리, 긴급 비밀번호 재설정 | 워크플로 자동화, 코드를 통한 자격 증명 관리 |
CLI 명령 실행하기#
셀프 호스팅 n8n에서 CLI 명령을 사용할 수 있습니다. n8n을 설치하는 방식에 따라 명령을 실행하는 방법에 차이가 있습니다:
-
npm:
n8n명령을 바로 사용할 수 있습니다. 아래 예시에서는 이 방식을 사용합니다. -
Docker: Docker 컨테이너 내에서
n8n명령을 사용할 수 있습니다:docker exec -u node -it <n8n-container-name> <n8n-cli-command>
워크플로 시작하기#
CLI를 사용하여 워크플로를 직접 시작할 수 있습니다.
저장된 워크플로를 ID로 실행합니다:
n8n execute --id
워크플로 게시 또는 게시 취소#
CLI를 사용하여 워크플로를 게시하거나 게시를 취소할 수 있습니다. n8n 2.0에서는 이전의 활성/비활성 토글이 게시/게시 취소 모델로 대체되었습니다. CLI에서 워크플로의 게시 상태를 변경하려면 publish:workflow와 unpublish:workflow를 사용하세요.
재시작 필요
이 명령들은 n8n 데이터베이스에서 작동합니다. n8n이 실행 중일 때 이 명령을 실행하면, n8n을 재시작할 때까지 변경 사항이 적용되지 않습니다.
워크플로 게시하기#
publish:workflow를 사용하여 ID로 워크플로를 게시합니다. 선택적으로 versionId를 전달하여 특정 이력 버전을 게시할 수도 있습니다.
명령 플래그:
| 플래그 | 설명 |
|---|---|
| --help | 도움말 프롬프트. |
| --id | 게시할 워크플로의 ID입니다. 필수. |
| --versionId | 게시할 선택적 버전 ID입니다. 생략하면 현재 초안이 게시됩니다. |
--all 플래그 없음
더 이상 사용되지 않는 update:workflow 명령과 달리, publish:workflow는 --all을 지원하지 않습니다. 이는 의도된 것으로, 프로덕션 환경에서 워크플로가 실수로 대량 게시되는 것을 방지합니다. 워크플로는 개별적으로 ID를 지정하여 게시하세요.
ID로 워크플로의 현재 초안을 게시합니다:
n8n publish:workflow --id=
워크플로의 특정 이력 버전을 게시합니다:
n8n publish:workflow --id= --versionId=
워크플로 게시 취소하기#
unpublish:workflow를 사용하여 ID로 워크플로 하나를 게시 취소하거나, 한 번에 모든 워크플로를 게시 취소할 수 있습니다.
명령 플래그:
| 플래그 | 설명 |
|---|---|
| --help | 도움말 프롬프트. |
| --id | 게시 취소할 워크플로의 ID입니다. --all과 함께 사용할 수 없습니다. |
| --all | 모든 워크플로를 게시 취소합니다. --id와 함께 사용할 수 없습니다. |
ID로 워크플로를 게시 취소합니다:
n8n unpublish:workflow --id=
모든 워크플로를 게시 취소합니다:
n8n unpublish:workflow --all
update:workflow (더 이상 사용되지 않음)#
n8n 2.0에서 더 이상 사용되지 않음
update:workflow 명령은 더 이상 사용되지 않으며 향후 제거될 예정입니다. 대신 publish:workflow와 unpublish:workflow를 사용하세요. 자세한 내용은 n8n v2.0 주요 변경 사항을 참고하세요.
ID로 워크플로의 활성 상태를 false로 설정합니다:
n8n update:workflow --id= --active=false
ID로 워크플로의 활성 상태를 true로 설정합니다:
n8n update:workflow --id= --active=true
모든 워크플로의 활성 상태를 false로 설정합니다:
n8n update:workflow --all --active=false
모든 워크플로의 활성 상태를 true로 설정합니다:
n8n update:workflow --all --active=true
엔티티 내보내기#
CLI를 사용하여 n8n에서 데이터베이스 엔티티를 내보낼 수 있습니다. 이 도구를 사용하면 SQLite와 같은 한 데이터베이스 유형에서 모든 엔티티 유형을 내보내 Postgres와 같은 다른 데이터베이스 유형으로 가져올 수 있습니다.
명령 플래그:
| 플래그 | 설명 |
|---|---|
| --help | 도움말 프롬프트. |
| --outputDir | 출력 디렉터리 경로 |
| --includeExecutionHistoryDataTables | 실행 이력 데이터 테이블을 포함합니다. 크기가 매우 클 수 있어 기본적으로 제외됩니다 |
n8n export:entities --outputDir=./outputs --includeExecutionHistoryDataTables=true
워크플로 및 자격 증명 내보내기#
CLI를 사용하여 n8n에서 워크플로 및 자격 증명을 내보낼 수 있습니다.
명령 플래그:
| 플래그 | 설명 |
|---|---|
| --help | 도움말 프롬프트. |
| --all | 모든 워크플로/자격 증명을 내보냅니다. |
| --backup | 백업을 위해 --all --pretty --separate를 설정합니다. --output을 선택적으로 설정할 수 있습니다. |
| --id | 내보낼 워크플로의 ID입니다. |
| --output, -o | 별도 파일을 사용하는 경우 출력 파일 이름 또는 디렉터리입니다. |
| --pretty | 읽기 쉬운 형식으로 출력을 포맷합니다. |
| --separate | 워크플로별로 하나의 파일을 내보냅니다(버전 관리에 유용). --output으로 디렉터리를 설정해야 합니다. |
| --decrypted | 자격 증명을 일반 텍스트 형식으로 내보냅니다. (자격 증명 전용.) |
| --version | 내보낼 특정 이력 버전의 버전 ID입니다. (워크플로 전용, --all 또는 --published와 함께 사용할 수 없습니다.) |
| --published | 현재 초안 대신 워크플로의 게시/활성 버전을 내보냅니다. --all과 결합하면 게시되지 않은 워크플로는 건너뜁니다. (워크플로 전용, --version과 함께 사용할 수 없습니다.) |
워크플로#
모든 워크플로를 표준 출력(터미널)으로 내보냅니다:
n8n export:workflow --all
ID로 워크플로를 내보내고 출력 파일 이름을 지정합니다:
n8n export:workflow --id= --output=file.json
모든 워크플로를 하나의 파일로 특정 디렉터리에 내보냅니다:
n8n export:workflow --all --output=backups/latest/file.json
--backup 플래그(위에서 설명)를 사용하여 모든 워크플로를 특정 디렉터리에 내보냅니다:
n8n export:workflow --backup --output=backups/latest/
특정 워크플로 버전 내보내기#
--version과 함께 versionId를 전달하여 워크플로의 특정 이력 버전을 내보낼 수 있습니다:
n8n export:workflow --id= --version= --output=workflow-v1.json
워크플로의 게시된 버전 내보내기#
--published를 사용하여 현재 초안 대신 워크플로의 현재 게시/활성 버전을 내보냅니다:
n8n export:workflow --id= --published --output=published.json
--published를 --all과 결합하여 모든 워크플로의 게시된 버전을 내보낼 수 있습니다. 게시된 버전이 없는 워크플로는 건너뜁니다:
n8n export:workflow --all --published --output=workflows.json
버전 메타데이터
워크플로를 내보낼 때, n8n은 해당 버전의 워크플로 이력 이름과 설명을 포함하는 versionMetadata 속성을 포함합니다. 가져오기 명령은 가져오는 동안 이 데이터를 워크플로 이력 테이블에 보존합니다. 현재 워크플로의 이름과 설명은 재정의되지 않습니다.
자격 증명#
모든 자격 증명을 표준 출력(터미널)으로 내보냅니다:
n8n export:credentials --all
ID로 자격 증명을 내보내고 출력 파일 이름을 지정합니다:
n8n export:credentials --id= --output=file.json
모든 자격 증명을 하나의 파일로 특정 디렉터리에 내보냅니다:
n8n export:credentials --all --output=backups/latest/file.json
--backup 플래그(위에서 설명)를 사용하여 모든 자격 증명을 특정 디렉터리에 내보냅니다:
n8n export:credentials --backup --output=backups/latest/
모든 자격 증명을 일반 텍스트 형식으로 내보냅니다. 이를 사용하여 구성 파일에서 다른 시크릿 키를 가진 다른 설치로 마이그레이션할 수 있습니다.
민감한 정보
모든 민감한 정보가 파일에 그대로 노출됩니다.
n8n export:credentials --all --decrypted --output=backups/decrypted.json
엔티티 가져오기#
이 명령을 사용하여 이전 export:entities 명령의 엔티티를 가져올 수 있으며, 내보낸 데이터베이스 유형과 다른 데이터베이스 유형으로 엔티티를 가져올 수 있습니다. 현재 지원되는 데이터베이스 유형은 SQLite, Postgres입니다.
가져오기 전에는 데이터베이스가 비어 있어야 합니다. 이는 --truncateTables 매개변수로 강제할 수 있습니다.
명령 플래그:
| 플래그 | 설명 |
|---|---|
| --help | 도움말 프롬프트. |
| --inputDir | 가져오기용 출력 파일을 담고 있는 입력 디렉터리 |
| --truncateTables | 가져오기 전에 테이블을 잘라냅니다 |
n8n import:entities --inputDir ./outputs --truncateTables true
워크플로 및 자격 증명 가져오기#
CLI를 사용하여 n8n에 워크플로 및 자격 증명을 가져올 수 있습니다.
ID 업데이트
워크플로와 자격 증명을 내보낼 때, n8n은 해당 ID도 함께 내보냅니다. 기존 데이터베이스에 동일한 ID를 가진 워크플로와 자격 증명이 있는 경우 덮어써집니다. 이를 방지하려면 가져오기 전에 ID를 삭제하거나 변경하세요.
사용 가능한 플래그:
| 플래그 | 설명 |
|---|---|
| --help | 도움말 프롬프트. |
| --input | --separate를 사용하는 경우 입력 파일 이름 또는 디렉터리입니다. |
| --projectId | 워크플로 또는 자격 증명을 지정된 프로젝트로 가져옵니다. --userId와 함께 사용할 수 없습니다. |
| --separate | --input으로 제공된 디렉터리에서 *.json 파일을 가져옵니다. |
| --userId | 워크플로 또는 자격 증명을 지정된 사용자에게 가져옵니다. --projectId와 함께 사용할 수 없습니다. |
| --skipMigrationChecks | 마이그레이션 검증 확인을 건너뜁니다. |
| --activeState | 가져온 워크플로의 활성 상태를 제어합니다. false(기본값, 가져온 모든 워크플로를 비활성화) 또는 fromJson(각 워크플로 JSON의 active 필드를 사용, 멀티 메인 모드에서만 지원)을 사용할 수 있습니다. |
SQLite로 마이그레이션하기
n8n은 워크플로 및 자격 증명 이름을 128자로 제한하지만, SQLite는 크기 제한을 강제하지 않습니다.
이로 인해 가져오기 과정에서 Data too long for column name과 같은 오류가 발생할 수 있습니다.
이 경우 n8n 인터페이스에서 이름을 편집한 후 다시 내보내거나, 가져오기 전에 JSON 파일을 직접 편집할 수 있습니다.
워크플로#
알려진 문제: 가져오기 후에도 cron 트리거가 계속 실행됨
이전에 활성화되어 있던 워크플로를 가져올 때의 동작은 실행 중인 모드에 따라 다릅니다. 이는 알려진 버그입니다.
멀티 메인 및 큐 모드 인스턴스에서는 가져오기 시 이전에 활성화되어 있던 워크플로의 cron 트리거가 비활성화됩니다.
멀티 메인이 아닌 인스턴스에서는 n8n 인스턴스를 재시작할 때까지 이전에 활성화되어 있던 워크플로의 cron 트리거가 계속 실행됩니다.
특정 파일에서 워크플로를 가져옵니다:
n8n import:workflow --input=file.json
지정된 디렉터리에서 모든 워크플로 파일을 JSON으로 가져옵니다:
n8n import:workflow --separate --input=backups/latest/
가져오기 시 버전 메타데이터
가져온 파일에 versionMetadata 속성(특정 버전 또는 게시된 버전을 대상으로 하는 내보내기에서 추가됨)이 포함되어 있으면, n8n은 해당 이력 이름과 설명을 워크플로 이력 테이블에 보존합니다. 현재 워크플로 엔티티의 이름과 설명은 그대로 유지됩니다.
기본적으로 import:workflow는 가져온 모든 워크플로를 비활성화합니다. 대신 각 JSON 파일의 active 필드를 유지하려면 --activeState=fromJson을 전달하세요(멀티 메인 및 큐 모드에서만 지원):
n8n import:workflow --separate --input=backups/latest/ --activeState=fromJson
자격 증명#
특정 파일에서 자격 증명을 가져옵니다:
n8n import:credentials --input=file.json
지정된 디렉터리에서 모든 자격 증명 파일을 JSON으로 가져옵니다:
n8n import:credentials --separate --input=backups/latest/
라이선스#
초기화#
n8n 데이터베이스에서 기존 라이선스를 지우고 n8n을 기본 기능으로 재설정합니다:
n8n license:clear
라이선스에 플로팅 인타이틀먼트1가 포함되어 있는 경우, 이 명령을 실행하면 해당 인타이틀먼트를 풀로 반환하여 다른 인스턴스에서 사용할 수 있도록 시도합니다.
정보#
기존 라이선스에 대한 정보를 표시합니다:
n8n license:info
사용자 관리#
n8n CLI를 사용하여 사용자 관리를 재설정할 수 있습니다. 이는 사용자 관리를 설정 이전 상태로 되돌립니다. 모든 사용자 계정이 제거됩니다.
비밀번호를 잊어버렸고 이메일로 비밀번호를 재설정할 SMTP가 설정되어 있지 않은 경우 이 명령을 사용하세요.
n8n user-management:reset
사용자의 MFA 비활성화#
사용자가 복구 코드를 분실한 경우 이 명령으로 해당 사용자의 MFA를 비활성화할 수 있습니다. 그러면 사용자는 다시 로그인하여 MFA를 다시 설정할 수 있습니다.
n8n mfa:disable --email=johndoe@example.com
LDAP 비활성화#
아래 명령을 사용하여 LDAP 설정을 재설정할 수 있습니다.
n8n ldap:reset
커뮤니티 노드 및 자격 증명 제거#
n8n CLI를 사용하여 커뮤니티 노드를 관리할 수 있습니다. 현재는 커뮤니티 노드와 자격 증명을 제거하는 것만 가능하며, 이는 커뮤니티 노드가 불안정성을 유발할 때 유용합니다.
명령 플래그:
| 플래그 | 설명 |
|---|---|
| --help | CLI 도움말을 표시합니다. |
| --credential | 자격 증명 유형입니다. 노드의 .credential.ts 파일을 열어 name 값을 확인하면 이 값을 얻을 수 있습니다. |
| --package | 커뮤니티 노드의 패키지 이름입니다. |
| --uninstall | 노드를 제거합니다. |
| --userId | 자격 증명을 소유한 사용자의 ID입니다. 셀프 호스팅의 경우 데이터베이스에서 조회하고, 클라우드의 경우 API 키로 API를 조회합니다. |
노드#
패키지 이름으로 커뮤니티 노드를 제거합니다:
n8n community-node --uninstall --package
예를 들어, Evolution API 커뮤니티 노드를 제거하려면 다음과 같이 입력합니다:
n8n community-node --uninstall --package n8n-nodes-evolution-api
자격 증명#
커뮤니티 노드 자격 증명을 제거합니다:
n8n community-node --uninstall --credential --userId
예를 들어, Evolution API 커뮤니티 노드 자격 증명을 제거하려면, 리포지터리를 방문하여 credentials.ts 파일에서 name을 찾습니다:
n8n community-node --uninstall --credential evolutionApi --userId 1234
보안 감사#
일반적인 보안 문제를 감지하기 위해 n8n 인스턴스에서 보안 감사를 실행할 수 있습니다.
n8n audit
Footnotes
-
n8n에서 인타이틀먼트(entitlement)는 특정 기간 동안 n8n 인스턴스에 플랜 제한 기능에 대한 액세스 권한을 부여합니다. ↩