개발자를 위한 n8n 셀프 호스팅 A to Z: Docker 설치부터 초기 설정까지
반복적인 작업을 자동화하고 여러 서비스를 연동하는 과정에서 Zapier나 Make 같은 툴을 사용하다가, 실행 횟수 제한이나 비싼 요금제 때문에 아쉬웠던 경험, 다들 한 번쯤 있으시죠? 🤔 저 역시 비슷한 고민 끝에 강력한 오픈소스 대안인 n8n을 셀프 호스팅(Self-hosting)하여 사용하고 있습니다.
이 글에서는 저와 같은 개발자분들이 데이터 주권을 지키고 비용을 절감하며 무제한으로 워크플로우를 실행할 수 있도록, Docker를 활용해 n8n을 가장 쉽고 안정적으로 배포하는 방법을 처음부터 끝까지 상세하게 알려드릴게요.
1. 왜 n8n을 직접 설치(Self-Hosting)해야 할까요? 🏠
n8n은 클라우드 버전도 제공하지만, 커뮤니티 에디션을 직접 서버에 설치하면 다음과 같은 강력한 이점을 얻을 수 있습니다.
- 완벽한 제어권: 워크플로우 실행 횟수, 활성 워크플로우 개수에 제한이 없습니다. 데이터 프라이버시 또한 완벽하게 통제할 수 있습니다.
- 비용 효율성: 별도의 구독 비용 없이 사용하는 서버 인프라 비용만 지불하면 됩니다.
- 규정 준수: 원하는 국가의 서버에 직접 설치하여 GDPR과 같은 데이터 관련 규정을 준수하기 용이합니다.
- 자유로운 커스터마이징: 필요에 따라 환경 변수 설정, 커뮤니티 노드 추가 등 자유로운 확장이 가능합니다.
2. n8n 버전 간단 비교 🆚
설치에 앞서, n8n의 주요 버전을 이해하면 좋습니다. 이 글에서는 커뮤니티 에디션 설치를 다룹니다.
버전 | 특징 | 핵심 장점 |
---|---|---|
Community (오픈소스) | 직접 서버에 설치, 무료, 모든 기능 사용 가능 | 무제한 실행, 완벽한 데이터 제어 |
n8n Cloud | n8n에서 직접 호스팅 및 관리 | 자동 업데이트, 쉬운 확장 |
Enterprise | 클라우드 기능 + 고급 보안 및 권한 관리 | 대규모 팀, 규정 준수 강화 |
3. Docker를 이용한 n8n 설치 가이드 🛠️
이제 Docker를 사용해 n8n을 설치하는 구체적인 방법을 알아보겠습니다. Docker는 애플리케이션을 컨테이너 단위로 격리하여 실행 환경에 구애받지 않고 일관된 배포를 가능하게 해주는 최고의 도구입니다.
튜토리얼을 진행하기 전, Docker와 Docker Compose가 설치된 개인 서버(VPS, 클라우드 인스턴스 등)를 준비해야 합니다. 서버가 없다면 AWS, GCP, Azure, DigitalOcean 등 다양한 클라우드 제공업체의 서비스를 이용할 수 있습니다.
Step 1: n8n 설정 파일용 디렉터리 생성
먼저 n8n의 설정과 데이터를 저장할 디렉터리를 생성합니다. 이 디렉터리는 Docker 볼륨과 연결되어 컨테이너가 삭제되더라도 데이터를 안전하게 보존하는 역할을 합니다.
실행 예시 ⌨️
# 명령어:
mkdir n8n-data
cd n8n-data
# 설명:
`n8n-data` 라는 디렉터리를 만들고 해당 디렉터리로 이동합니다.
Step 2: docker-compose.yml 파일 작성
`n8n-data` 디렉터리 내에 `docker-compose.yml` 파일을 생성하고 아래 내용을 복사하여 붙여넣습니다. 이 파일은 n8n 서비스를 실행하는 데 필요한 모든 설정을 정의합니다.
# docker-compose.yml
version: '3.7'
services:
n8n:
# 항상 최신 버전을 확인하고 명시하는 것을 권장합니다.
# Releases: https://github.com/n8n-io/n8n/releases
image: docker.n8n.io/n8nio/n8n:1.80.0
container_name: n8n
restart: unless-stopped
ports:
- "127.0.0.1:5678:5678"
environment:
# 서버의 타임존에 맞게 설정합니다 (예: Asia/Seoul)
- TZ=Europe/Paris
- GENERIC_TIMEZONE=Europe/Paris
# 웹훅 테스트 등을 위한 도메인 설정 (필수)
# HTTPS를 지원하는 리버스 프록시 뒤에 있다면 https로 변경
- N8N_PROTOCOL=http
- N8N_HOST=localhost
- N8N_PORT=5678
- N8N_EDITOR_BASE_URL=http://localhost:5678/
# 원격 분석 및 진단 데이터 전송 비활성화 (선택)
- N8N_DIAGNOSTICS_ENABLED=false
volumes:
- ./n8n_data:/home/node/.n8n
volumes:
n8n_data:
실제 운영 환경에서는 `N8N_HOST`와 `N8N_EDITOR_BASE_URL`을 `localhost`가 아닌 실제 접속할 도메인 주소(예: `n8n.your-domain.com`)로 변경해야 합니다. 외부에서 워크플로우를 트리거하는 웹훅(Webhook) 기능 등을 정상적으로 사용하려면 이 설정이 필수적입니다.
Step 3: n8n 컨테이너 실행
이제 터미널에서 아래 명령어를 입력하여 n8n 컨테이너를 백그라운드에서 실행합니다.
실행 예시 ⌨️
# 명령어:
docker compose up -d
# 실행 결과 (예시):
[+] Running 2/2
⠿ Network n8n-data_default Created
⠿ Container n8n Started
몇 초만 기다리면 n8n이 여러분의 서버에서 완벽하게 구동됩니다! 웹 브라우저를 열고 `http://<서버_IP_주소>:5678` 로 접속하여 n8n 대시보드를 확인해보세요.

정리 및 다음 스텝 🚀
지금까지 Docker를 이용해 나만의 n8n 자동화 플랫폼을 구축하는 방법을 알아보았습니다. 이제 여러분은 실행 제한 걱정 없이 자유롭게 워크플로우를 만들고, 다양한 애플리케이션을 연동하며, 반복적인 업무를 자동화할 준비가 되었습니다.
오늘 배운 내용을 바탕으로 첫 번째 워크플로우를 만들어보는 것은 어떨까요? 예를 들어, '매일 아침 9시에 슬랙으로 오늘의 날씨 정보 보내기' 같은 간단한 자동화부터 시작해보세요. n8n의 무궁무진한 가능성을 탐험해보시길 바랍니다. Happy Automating! 😊