Docker에 n8n 설치하는 방법 (수동과 원클릭)
n8n은 오픈소스 워크플로 자동화 플랫폼으로 Zapier/Make의 자체 호스팅 대안입니다. 가장 일반적이고 안정적인 실행 방법은 Docker를 쓰는 것입니다. 이 가이드는 Docker에 n8n 설치하는 법을 처음부터(docker run과 docker compose 모두) 보여주고, 이어서 MyPanel로 같은 일을 한 번의 클릭으로 하는 법을 소개합니다.
왜 Docker로 n8n을 실행하나요?
- 깔끔하게 격리 — 모든 것이 하나의 컨테이너 안에 있어 OS를 어지럽히지 않습니다.
- 업데이트 간편 — 새 이미지를 받아 재시작하면 끝.
- 데이터 영구 보존 — 볼륨으로 워크플로와 자격 증명을 유지해 redeploy 후에도 남습니다.
사전 준비
- Linux VPS(Ubuntu 22.04+ 또는 Debian 12+).
- Docker 설치됨. 없다면:
curl -fsSL https://get.docker.com | sh. - (권장) HTTPS를 켜기 위해 서버 IP를 가리키는 도메인.
방법 1 — docker run으로 빠르게
데이터 볼륨을 만들고 n8n 컨테이너를 시작합니다:
docker volume create n8n_data
docker run -d --name n8n \ -p 5678:5678 \ -v n8n_data:/home/node/.n8n \ docker.n8n.io/n8nio/n8nhttp://서버IP:5678을 열어 첫 소유자 계정을 만드세요. 데이터(워크플로, 자격 증명)는 n8n이 /home/node/.n8n — 즉 n8n_data 볼륨 — 에 저장하므로 업데이트해도 사라지지 않습니다.
방법 2 — docker compose 사용(권장)
docker-compose.yml을 만듭니다:
services: n8n: image: docker.n8n.io/n8nio/n8n restart: always ports: - "5678:5678" environment: - N8N_HOST=n8n.example.com - N8N_PROTOCOL=https - N8N_PORT=5678 - WEBHOOK_URL=https://n8n.example.com/ - GENERIC_TIMEZONE=Asia/Ho_Chi_Minh - TZ=Asia/Ho_Chi_Minh volumes: - n8n_data:/home/node/.n8n
volumes: n8n_data:시작: docker compose up -d. 이후 업데이트: docker compose pull && docker compose up -d.
중요:
WEBHOOK_URL은 실제 HTTPS URL이어야 합니다. 그렇지 않으면 webhook 트리거(Telegram, GitHub…)가 제대로 동작하지 않습니다.
어려운 부분: 리버스 프록시 + SSL
위 컨테이너는 5678 포트에서 암호화 없이 동작할 뿐입니다. HTTPS 도메인으로 쓰려면 127.0.0.1:5678을 가리키는 리버스 프록시(nginx/Caddy/Traefik)와 Let’s Encrypt SSL 인증서(certbot)가 필요합니다. nginx에서는 WebSocket도 켜야 합니다(n8n은 실시간 UI에 WS 사용):
location / { proxy_pass http://127.0.0.1:5678; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host;}바로 이 부분이 가장 시간이 많이 들고 실수하기 쉽습니다: 프록시 구성, SSL 갱신, 올바른 포트 개방, WebSocket 유지.
Docker로 n8n을 직접 설치할 때 흔한 실수
- 볼륨을 빼먹음 → 업데이트하면 워크플로가 전부 사라짐.
WEBHOOK_URL오류 → webhook이 이벤트를 받지 못함.- 프록시에 WebSocket 누락 → UI 로딩이 멈춤.
- SSL 만료 → 보안 오류; certbot 갱신 cron 필요.
더 쉬운 방법: MyPanel로 원클릭 n8n
프록시, SSL, 볼륨을 직접 관리하고 싶지 않다면 MyPanel의 Marketplace에 n8n이 준비돼 있습니다 — 원클릭 설치:
- Marketplace를 열고 n8n을 선택한 뒤 설치를 클릭.
- 도메인 입력(서버로 지정 완료).
- 설치 클릭 — MyPanel이 이미지를 받아 격리된 Docker 컨테이너에서 실행하고 리버스 프록시 + WebSocket을 구성하며 Let’s Encrypt SSL을 자동 발급합니다.
이후에는 여느 웹사이트처럼 n8n을 관리합니다: 로그, 시작/중지, SSL, 백업. 데이터는 영구 볼륨에 있어 redeploy 후에도 남습니다. Marketplace 가이드 참고.
| 수동 Docker | MyPanel Marketplace | |
|---|---|---|
| 컨테이너 시작 | 명령 입력 | 원클릭 |
| 리버스 프록시 | 직접 구성 | 자동 |
| SSL | 직접 certbot | 자동 발급 + 갱신 |
| WebSocket | 수동 추가 | 기본 내장 |
| 백업 & 로그 | 직접 | 패널 내 |
결론
Docker로 n8n을 실행하면 강력한 자체 호스팅 자동화 엔진을 얻습니다. 수동으로도 충분히 가능하지만 프록시 + SSL + WebSocket 계층에서 초보자가 막히곤 합니다. 몇 분 만에 n8n을 HTTPS로 띄우고 싶다면:
👉 명령 한 줄로 무료 MyPanel 설치 후 Marketplace를 열어 n8n을 원클릭 설치하세요 — 무료 플랜으로 시작하기 충분합니다.