n8n 사용법: 설치, Docker 셀프호스팅, 첫 AI 워크플로 만들기
n8n은 노드를 이어 붙여 업무를 자동화하는 워크플로 도구입니다. 클라우드와 셀프호스팅 차이, Docker Compose 설치, 웹훅에서 AI를 거쳐 슬랙으로 보내는 첫 워크플로를 순서대로 설명합니다.
n8n은 트리거, 처리, 출력 노드를 화면에서 선처럼 이어 붙여 업무를 자동화하는 워크플로 도구입니다. Zapier나 Make와 같은 계열이지만, 소스가 공개되어 있어 내 서버에 직접 설치해 쓸 수 있다는 점이 다릅니다. 이 글은 설치부터 "웹훅으로 받은 글을 AI가 요약해서 슬랙에 보내는" 첫 워크플로까지를 제가 실제로 세팅하는 순서 그대로 적었습니다.
n8n이란 무엇인가
n8n은 2019년 독일에서 시작한 워크플로 자동화 도구입니다. 화면에서 노드를 배치하고 연결하면, 앞 노드의 결과가 뒤 노드의 입력으로 흘러갑니다. 이메일, 슬랙, 노션, 구글 시트 같은 서비스 연결 노드가 수백 개 있고, HTTP 요청 노드로 없는 서비스도 붙일 수 있습니다.
특징 세 가지만 기억하시면 됩니다.
- AI 노드가 기본으로 들어 있습니다. OpenAI, Anthropic, Google 모델을 API 키만 넣으면 바로 씁니다.
- 코드 노드에서 JavaScript나 Python을 직접 쓸 수 있습니다. 노드로 안 되는 부분은 코드로 메웁니다.
- 셀프호스팅이 가능합니다. 라이선스는 완전한 오픈소스는 아니고 "fair-code" 방식이라, 내부 업무용으로 쓰는 것은 무료입니다. n8n 자체를 서비스로 되팔려면 별도 라이선스가 필요합니다.
클라우드 vs 셀프호스팅
| 항목 | n8n Cloud | 셀프호스팅 |
|---|---|---|
| 비용 | 월 구독 (공식 페이지 기준) | 서버비만 부담, 소프트웨어는 무료 |
| 설치 | 없음, 가입 후 바로 사용 | Docker 설치 필요 |
| 실행 횟수 제한 | 요금제별 상한 | 서버 성능이 허용하는 만큼 |
| 데이터 위치 | n8n 서버 | 내 서버 |
| 업데이트 | 자동 | 직접 |
| 추천 대상 | 하루 안에 시작하고 싶은 분 | 월 수천 건 이상 돌리거나 데이터를 밖에 안 두고 싶은 분 |
n8n 무료로 검색하시는 분들이 찾는 답은 "셀프호스팅은 무료"입니다. 다만 서버를 하나 둬야 하니 완전히 0원은 아닙니다. 저는 처음 한 달은 Cloud 체험으로 감을 잡고, 워크플로가 다섯 개를 넘으면 셀프호스팅으로 옮기는 것을 권합니다.
Docker Compose로 n8n 설치하기
Docker가 설치된 서버나 내 컴퓨터에서 진행합니다. 폴더를 하나 만들고 아래 내용을 docker-compose.yml 이름으로 저장합니다.
services:
n8n:
image: docker.n8n.io/n8nio/n8n
restart: unless-stopped
ports:
- "5678:5678"
environment:
- GENERIC_TIMEZONE=Asia/Seoul
- TZ=Asia/Seoul
- N8N_ENCRYPTION_KEY=여기에_긴_무작위_문자열
- WEBHOOK_URL=https://n8n.내도메인.com/
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
실행은 한 줄입니다.
docker compose up -d
브라우저에서 http://localhost:5678로 접속하면 관리자 계정을 만드는 화면이 나옵니다.
설정에서 꼭 챙길 것은 세 가지입니다.
- N8N_ENCRYPTION_KEY: 각 서비스의 인증 정보를 암호화하는 키입니다. 한 번 정하면 바꾸지 마세요. 바꾸면 저장된 인증 정보를 전부 다시 넣어야 합니다.
- WEBHOOK_URL: 외부에서 접속할 주소입니다. 이걸 안 넣으면 웹훅 주소가 localhost로 생성돼서 밖에서 호출이 안 됩니다.
- volumes: 이 줄이 없으면 컨테이너를 지울 때 워크플로가 같이 사라집니다.
도메인과 HTTPS는 Caddy나 Nginx를 앞에 두는 방식이 일반적입니다. 내 컴퓨터에서 연습만 할 때는 WEBHOOK_URL 없이 시작해도 됩니다.
첫 워크플로: 웹훅에서 AI를 거쳐 슬랙으로
목표는 이것입니다. 어떤 도구에서든 n8n 주소로 글을 보내면, AI가 세 줄로 요약해서 슬랙 채널에 올립니다.
- 새 워크플로를 만들고 Webhook 노드를 추가합니다. HTTP Method는 POST로 두고, Path에
summarize처럼 짧은 이름을 넣습니다. - Webhook 노드의 "Listen for test event"를 누른 뒤, 터미널에서 테스트 요청을 보냅니다.
curl -X POST http://localhost:5678/webhook-test/summarize \
-H "Content-Type: application/json" \
-d '{"text": "요약할 긴 글을 여기에 넣습니다."}'
- AI 노드를 추가합니다. "Basic LLM Chain" 노드를 쓰고, 모델로 OpenAI 또는 Anthropic Chat Model을 연결합니다. API 키는 Credentials에 한 번만 저장하면 됩니다.
- 프롬프트에 앞 노드의 데이터를 넣습니다. 표현식 모드를 켜고 아래처럼 씁니다.
다음 글을 한국어 세 문장으로 요약해 주세요.
{{ $json.body.text }}
- Slack 노드를 추가하고 "Send a message"를 고릅니다. 채널을 지정하고, 메시지 본문에 AI 노드의 출력을 표현식으로 넣습니다. 보통
{{ $json.text }}입니다. - 전체를 한 번 실행해서 슬랙에 메시지가 오는지 확인합니다.
- 오른쪽 위 토글을 켜서 워크플로를 활성화합니다. 이때부터 주소가
webhook-test에서webhook으로 바뀝니다.
카카오톡으로 보내고 싶으면 Slack 노드 대신 HTTP Request 노드를 씁니다. 다만 카카오톡은 "나에게 보내기" API 외에는 비즈니스 채널과 알림톡 승인이 필요합니다. 개인용이라면 슬랙이나 텔레그램이 훨씬 간단합니다.
자주 막히는 지점
제가 수강생분들 질문에서 가장 많이 본 것들입니다.
| 증상 | 원인 | 해결 |
|---|---|---|
| 외부에서 웹훅 호출이 안 됨 | WEBHOOK_URL 미설정 또는 방화벽 | 환경 변수 설정 후 컨테이너 재시작, 포트 개방 확인 |
| 테스트는 되는데 활성화 후 안 됨 | webhook-test 주소를 그대로 씀 | 활성화 후에는 /webhook/ 주소 사용 |
| 표현식이 글자 그대로 나옴 | 필드가 Fixed 모드 | 필드 왼쪽에서 Expression으로 전환 |
$json.text가 비어 있음 | 앞 노드 출력 구조가 다름 | 앞 노드 실행 결과 창에서 실제 키 이름 확인 |
| 시간이 9시간 어긋남 | 타임존 미설정 | GENERIC_TIMEZONE과 TZ 둘 다 Asia/Seoul |
| 업데이트 후 인증 정보 오류 | 암호화 키 변경 | 키를 원래 값으로 되돌림 |
| 컨테이너 재생성 후 워크플로 사라짐 | volumes 누락 | 볼륨 추가, 이전 데이터는 복구 어려움 |
가장 흔한 것은 표현식 문제입니다. 노드를 하나 실행할 때마다 오른쪽 결과 창에서 실제 데이터 모양을 확인하는 습관을 들이면 절반은 해결됩니다.
운영할 때 챙길 것
워크플로가 늘어나면 이 세 가지를 합니다.
- 에러 워크플로를 하나 만들어 두고, 설정에서 Error Workflow로 지정합니다. 실패할 때 슬랙으로 알림이 옵니다.
- 실행 기록 보관 기간을 설정합니다. 기본값으로 두면 데이터베이스가 계속 커집니다.
- 주 1회
docker compose pull로 업데이트합니다. 업데이트 전에 볼륨을 백업합니다.
자주 묻는 질문
n8n은 코딩을 몰라도 쓸 수 있나요?
기본 워크플로는 코딩 없이 됩니다. 다만 표현식 문법과 JSON 구조는 알아야 합니다. 이 두 가지는 하루면 익힙니다. 코드 노드는 필요할 때 AI에게 만들어 달라고 하면 됩니다.
Zapier나 Make 대신 n8n을 써야 하는 이유는 무엇인가요?
실행 건수가 많거나, AI 노드를 많이 쓰거나, 데이터를 외부에 두기 싫을 때입니다. 월 100건 이하의 단순 자동화라면 Zapier가 더 편할 수 있습니다.
셀프호스팅 서버 사양은 어느 정도면 되나요?
개인용은 메모리 1GB, CPU 1코어면 시작할 수 있습니다. AI 노드를 많이 돌려도 연산은 API 쪽에서 하기 때문에 서버 부하는 크지 않습니다. 실행 기록이 쌓이면 디스크가 먼저 부족해집니다.
워크플로를 백업하려면 어떻게 하나요?
각 워크플로를 JSON으로 내보낼 수 있습니다. 전체 백업은 Docker 볼륨을 통째로 복사하는 것이 가장 확실합니다.
다음 단계
- n8n으로 무엇을 자동화할지 정하지 못했다면 AI 업무 자동화 사례 7가지를 보세요.
- 자동화가 시간을 얼마나 아끼는지는 자동화 ROI 계산기에서 계산할 수 있습니다.
- AI 노드에 넣을 프롬프트는 프롬프트 빌더로 만들면 됩니다.
- n8n과 Claude Code를 같이 써서 제품까지 만드는 과정은 AI Creator Lab 강의에서 다룹니다. 수강료도 확인해 보세요.
keep reading
이어서 보면 좋은 글
지금 읽은 주제와 결이 맞는 운영 기록과 빌드 노트를 아래에 이어 붙였습니다.
Claude Code 설치 방법: Mac, Windows, Linux 5분 완성 가이드
Claude Code 설치는 터미널 명령 한 줄이면 끝납니다. Mac, Windows, Linux별 설치 순서와 로그인, 자주 나는 오류 3가지 해결법을 정리했습니다.
Claude Code 사용법: 처음 30분에 익힐 6가지 핵심
Claude Code 사용법의 핵심은 프로젝트 열기, CLAUDE.md, 슬래시 명령, 플랜 모드, 컨텍스트 관리, 커밋 습관 6가지입니다. 30분 안에 실전에 쓰는 순서로 정리했습니다.
Claude Code MCP, Skills, 서브에이전트 차이와 최소 설정법
Claude Code MCP는 외부 도구 연결, Skills는 반복 절차 저장, 서브에이전트는 별도 컨텍스트의 전담 에이전트입니다. 비교표와 언제 무엇을 쓸지, 최소 설정 예시를 정리했습니다.