n8n 로컬에서 실행하는 방법: 전체 설치 가이드 (2026)
로컬 머신에 n8n 자동화 플랫폼 셀프 호스팅하기
Hypereal로 구축 시작하기
단일 API를 통해 Kling, Flux, Sora, Veo 등에 액세스하세요. 무료 크레딧으로 시작하고 수백만으로 확장하세요.
신용카드 불필요 • 10만 명 이상의 개발자 • 엔터프라이즈 지원
n8n 로컬 실행 방법: 2026년 최신 전체 설정 가이드
n8n은 시각적인 노드 기반 에디터를 사용하여 API, 서비스, 데이터 소스를 연결할 수 있는 오픈 소스 워크플로우 자동화 플랫폼입니다. Zapier나 Make.com의 셀프 호스팅 대안으로 생각할 수 있으며, 데이터를 직접 소유하고 워크플로우 실행 제한이 없다는 핵심적인 장점이 있습니다.
n8n을 로컬에서 실행하면 완벽한 제어권, 제로 클라우드 비용, 로컬 네트워크 상의 서비스 연결 기능을 활용할 수 있습니다. 이 가이드에서는 Docker(권장), npm 및 프로덕션 환경에 적합한 Docker Compose 등 모든 설치 방법을 다룹니다.
왜 n8n을 셀프 호스팅해야 할까요?
| 기능 | n8n Cloud | n8n Self-Hosted |
|---|---|---|
| 월별 비용 | $24-$299/월 | 무료 |
| 워크플로우 실행 | 플랜에 따라 제한됨 | 무제한 |
| 데이터 개인정보 보호 | n8n 서버 | 사용자 머신 |
| 커스텀 노드 | 제한됨 | 무제한 |
| 네트워크 액세스 | 인터넷 전용 | 로컬 + 인터넷 |
| 유지보수 | 관리형 | 사용자 직접 관리 |
| 업데이트 | 자동 | 수동 |
사전 요구 사항
- Docker Desktop (권장 방식) 또는 Node.js 18+
- 최소 2GB RAM (4GB 권장)
- n8n 실행을 위한 1GB 디스크 공간 및 워크플로우 데이터용 추가 공간
- 최신 브라우저 (Chrome, Firefox, Edge)
방법 1: Docker (권장)
Docker는 n8n을 로컬에서 실행하는 가장 쉽고 안정적인 방법입니다.
1단계: Docker 설치
Docker가 설치되어 있지 않은 경우:
- macOS: Docker Desktop for Mac 다운로드
- Windows: Docker Desktop for Windows 다운로드
- Linux: Docker Engine 설치:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Docker 실행 확인:
docker --version
2단계: Docker로 n8n 실행
단일 명령어로 n8n을 시작합니다:
docker run -d \
--name n8n \
-p 5678:5678 \
-v n8n_data:/home/node/.n8n \
n8nio/n8n
이 명령어의 역할:
- n8n을 백그라운드 모드(
-d)로 실행합니다. - 포트 5678을 사용자 머신에 매핑합니다.
- 영구 볼륨(
n8n_data)을 생성하여 컨테이너가 재시작되어도 워크플로우가 유지되도록 합니다.
3단계: n8n 접속
브라우저를 열고 다음 주소로 이동합니다:
http://localhost:5678
소유자 계정 생성 창이 나타납니다. 이것이 로컬 인스턴스의 관리자 계정이 됩니다.
중지 및 시작
# n8n 중지
docker stop n8n
# n8n 시작
docker start n8n
# 로그 확인
docker logs n8n
# 컨테이너 제거 (데이터는 볼륨에 보존됨)
docker rm n8n
# 데이터 볼륨 제거 (경고: 모든 워크플로우가 삭제됨)
docker volume rm n8n_data
방법 2: npm (Docker 없이 설치)
Docker 사용을 선호하지 않는 경우:
1단계: n8n 전역 설치
npm install -g n8n
2단계: n8n 시작
n8n start
n8n은 기본적으로 http://localhost:5678에서 실행됩니다.
백그라운드 실행
pm2와 같은 프로세스 매니저를 사용하세요:
npm install -g pm2
pm2 start n8n
pm2 save
pm2 startup # 부팅 시 자동 시작 활성화
방법 3: Docker Compose (프로덕션 대응용)
SQLite 대신 PostgreSQL을 사용하고 자동 재시작 기능을 포함한 더 견고한 설정을 위해:
docker-compose.yml 파일을 생성합니다:
version: "3.8"
services:
n8n:
image: n8nio/n8n
restart: always
ports:
- "5678:5678"
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=your-secure-password
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=n8n-db-password
- N8N_ENCRYPTION_KEY=your-encryption-key-here
- GENERIC_TIMEZONE=Asia/Seoul
- TZ=Asia/Seoul
volumes:
- n8n_data:/home/node/.n8n
depends_on:
- postgres
postgres:
image: postgres:16
restart: always
environment:
- POSTGRES_USER=n8n
- POSTGRES_PASSWORD=n8n-db-password
- POSTGRES_DB=n8n
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
n8n_data:
postgres_data:
스택 시작:
docker compose up -d
필수 환경 변수
| 변수 | 기본값 | 설명 |
|---|---|---|
N8N_PORT |
5678 | n8n이 수신 대기하는 포트 |
N8N_PROTOCOL |
http | 프로토콜 (http 또는 https) |
N8N_HOST |
localhost | 호스트 이름 |
N8N_BASIC_AUTH_ACTIVE |
false | 기본 인증 활성화 여부 |
N8N_BASIC_AUTH_USER |
- | 기본 인증 사용자 이름 |
N8N_BASIC_AUTH_PASSWORD |
- | 기본 인증 비밀번호 |
N8N_ENCRYPTION_KEY |
자동 생성 | 자격 증명 암호화 키 |
DB_TYPE |
sqlite | 데이터베이스 유형 (sqlite 또는 postgresdb) |
GENERIC_TIMEZONE |
UTC | 크론 트리거용 시간대 |
N8N_METRICS |
false | Prometheus 메트릭 활성화 |
EXECUTIONS_DATA_PRUNE |
true | 오래된 실행 기록 자동 삭제 |
EXECUTIONS_DATA_MAX_AGE |
336 | 실행 기록 보존 시간 (시간 단위) |
첫 번째 워크플로우 만들기
n8n이 실행되면 간단한 워크플로우를 만들어 보겠습니다:
예시: Webhook에서 Slack 알림으로
- n8n 대시보드에서 Add workflow를 클릭합니다.
- + 버튼을 눌러 노드를 추가합니다.
- Webhook 노드(트리거)를 추가합니다:
- Method를
POST로 설정합니다. - Webhook URL을 복사합니다.
- Method를
- Slack 노드를 추가합니다:
- Slack 워크스페이스를 연결합니다.
- 채널을 설정합니다.
- Webhook 본문(body)을 메시지에 매핑합니다.
- Webhook 노드를 Slack 노드에 연결합니다.
- Execute Workflow를 클릭하여 테스트합니다.
- Activate를 클릭하여 활성화합니다.
curl로 테스트하기:
curl -X POST http://localhost:5678/webhook/your-webhook-id \
-H "Content-Type: application/json" \
-d '{"message": "n8n에서 보낸 인사!", "priority": "high"}'
예시: 예약된 API 데이터 가져오기
매시간 API에서 데이터를 가져와 파일로 저장하는 워크플로우:
- Schedule Trigger 노드 추가:
- 60분마다 실행되도록 설정
- HTTP Request 노드 추가:
- Method: GET
- URL:
https://api.example.com/data - 필요 시 인증 헤더 추가
- Write Binary File 노드 추가:
- 파일 이름:
data-{{ $now.format('yyyy-MM-dd-HH') }}.json
- 파일 이름:
- 연결: Schedule -> HTTP Request -> Write File
- 워크플로우 활성화
AI API 연결하기
n8n에는 인기 있는 AI 서비스를 위한 전용 노드가 내장되어 있습니다. OpenAI 연결 방법은 다음과 같습니다:
- OpenAI 노드 추가
- 자격 증명(Credentials) 생성:
- API Key: 사용자의 OpenAI API 키 입력
- 설정:
- Resource: Chat
- Model: gpt-4o
- Prompt: 프롬프트 템플릿 작성
전용 노드가 없는 서비스의 경우 HTTP Request 노드를 사용하세요:
{
"method": "POST",
"url": "https://api.hypereal.com/v1/generate",
"headers": {
"Authorization": "Bearer your-api-key",
"Content-Type": "application/json"
},
"body": {
"model": "flux",
"prompt": "{{ $json.prompt }}",
"width": 1024,
"height": 1024
}
}
n8n을 인터넷에 노출하기
외부 서비스로부터 Webhook을 받으려면 로컬 n8n 인스턴스를 외부에 노출해야 합니다.
옵션 1: ngrok (빠르고 간편함)
ngrok http 5678
그러면 로컬 n8n으로 터널링되는 https://abc123.ngrok.io와 같은 공용 URL이 생성됩니다.
옵션 2: Cloudflare Tunnel (무료 및 고정형)
cloudflared tunnel --url http://localhost:5678
옵션 3: Caddy를 이용한 리버스 프록시
Caddy를 설치하고 Caddyfile을 생성합니다:
n8n.yourdomain.com {
reverse_proxy localhost:5678
}
caddy run
백업 및 복구
모든 워크플로우 내보내기
# CLI를 통해 내보내기
docker exec -it n8n n8n export:workflow --all --output=/home/node/.n8n/backups/
# 또는 볼륨에서 복사
docker cp n8n:/home/node/.n8n/backups/ ./n8n-backups/
워크플로우 가져오기
docker exec -it n8n n8n import:workflow --input=/home/node/.n8n/backups/
데이터베이스 백업 (PostgreSQL)
docker exec postgres pg_dump -U n8n n8n > n8n-backup.sql
성능 튜닝
부하가 많은 작업의 경우 다음 설정을 조정하십시오:
# Node.js 메모리 증가
docker run -d \
--name n8n \
-p 5678:5678 \
-e NODE_OPTIONS="--max-old-space-size=4096" \
-e EXECUTIONS_PROCESS=main \
-e N8N_CONCURRENCY_PRODUCTION_LIMIT=20 \
-v n8n_data:/home/node/.n8n \
n8nio/n8n
| 설정 | 기본값 | 권장사항 | 설명 |
|---|---|---|---|
NODE_OPTIONS |
512MB | 2048-4096MB | Node.js 힙 메모리 크기 |
N8N_CONCURRENCY_PRODUCTION_LIMIT |
5 | 10-20 | 최대 동시 실행 수 |
EXECUTIONS_DATA_PRUNE |
true | true | 오래된 실행 데이터 삭제 |
EXECUTIONS_DATA_MAX_AGE |
336h | 168h | 데이터 보존 기간 단축 |
문제 해결
n8n이 시작되지 않음 (포트 이미 사용 중):
# 5678 포트를 사용 중인 프로세스 확인
lsof -i :5678
# 다른 포트 사용
docker run -p 5679:5678 n8nio/n8n
재시작 후 워크플로우가 사라짐:
Docker 볼륨(-v n8n_data:/home/node/.n8n)을 사용 중인지 확인하세요. 볼륨이 없으면 컨테이너가 제거될 때 데이터도 손실됩니다.
로컬 서비스에 접속할 수 없음:
n8n이 Docker 내부에서 호스트 머신의 서비스에 접속해야 하는 경우 localhost 대신 host.docker.internal을 사용하세요:
http://host.docker.internal:3000/api/data
Webhook URL에 접속할 수 없음: 로컬 Webhook URL은 본인 머신에서만 작동합니다. 외부 Webhook을 받으려면 ngrok, Cloudflare Tunnel을 사용하거나 리버스 프록시를 설정해야 합니다.
대규모 워크플로우 실행 시 메모리 문제:
NODE_OPTIONS="--max-old-space-size=4096"로 Node.js 힙 크기를 늘리고 실행 데이터 보존 기간을 줄이십시오.
n8n 업데이트하기
Docker
docker pull n8nio/n8n
docker stop n8n
docker rm n8n
docker run -d --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n n8nio/n8n
npm
npm update -g n8n
결론
n8n을 로컬에서 실행하면 실행 제한이 없는 강력하고 무료인 자동화 플랫폼을 가질 수 있습니다. Docker는 설정을 매우 간단하게 만들어주며, PostgreSQL을 사용한 Docker Compose는 프로덕션 수준의 환경을 제공합니다. 데이터 파이프라인 자동화, API 연결, 복잡한 다단계 워크플로우 구축 등 어떤 용도에서든 n8n은 코드의 유연성과 시각적 빌더의 접근성을 동시에 제공합니다.
이미지 생성, 비디오 제작, 오디오 생성 등 AI 미디어 생성이 포함된 자동화 워크플로우를 운영 중이라면, n8n의 HTTP Request 노드에서 호출할 수 있는 간단한 API를 제공하는 Hypereal AI를 확인해 보세요. 합리적인 종량제 요금과 빠른 추론 속도로 대규모 AI 미디어를 생성할 수 있습니다.
