blog튜토리얼

n8n 사용법: 설치, Docker 셀프호스팅, 첫 AI 워크플로 만들기

n8n은 노드를 이어 붙여 업무를 자동화하는 워크플로 도구입니다. 클라우드와 셀프호스팅 차이, Docker Compose 설치, 웹훅에서 AI를 거쳐 슬랙으로 보내는 첫 워크플로를 순서대로 설명합니다.

AI Creator Lab2026년 8월 27일6분 읽기

n8n은 트리거, 처리, 출력 노드를 화면에서 선처럼 이어 붙여 업무를 자동화하는 워크플로 도구입니다. Zapier나 Make와 같은 계열이지만, 소스가 공개되어 있어 내 서버에 직접 설치해 쓸 수 있다는 점이 다릅니다. 이 글은 설치부터 "웹훅으로 받은 글을 AI가 요약해서 슬랙에 보내는" 첫 워크플로까지를 제가 실제로 세팅하는 순서 그대로 적었습니다.

n8n이란 무엇인가

n8n은 2019년 독일에서 시작한 워크플로 자동화 도구입니다. 화면에서 노드를 배치하고 연결하면, 앞 노드의 결과가 뒤 노드의 입력으로 흘러갑니다. 이메일, 슬랙, 노션, 구글 시트 같은 서비스 연결 노드가 수백 개 있고, HTTP 요청 노드로 없는 서비스도 붙일 수 있습니다.

특징 세 가지만 기억하시면 됩니다.

  1. AI 노드가 기본으로 들어 있습니다. OpenAI, Anthropic, Google 모델을 API 키만 넣으면 바로 씁니다.
  2. 코드 노드에서 JavaScript나 Python을 직접 쓸 수 있습니다. 노드로 안 되는 부분은 코드로 메웁니다.
  3. 셀프호스팅이 가능합니다. 라이선스는 완전한 오픈소스는 아니고 "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가 세 줄로 요약해서 슬랙 채널에 올립니다.

  1. 새 워크플로를 만들고 Webhook 노드를 추가합니다. HTTP Method는 POST로 두고, Path에 summarize처럼 짧은 이름을 넣습니다.
  2. Webhook 노드의 "Listen for test event"를 누른 뒤, 터미널에서 테스트 요청을 보냅니다.
curl -X POST http://localhost:5678/webhook-test/summarize \
  -H "Content-Type: application/json" \
  -d '{"text": "요약할 긴 글을 여기에 넣습니다."}'
  1. AI 노드를 추가합니다. "Basic LLM Chain" 노드를 쓰고, 모델로 OpenAI 또는 Anthropic Chat Model을 연결합니다. API 키는 Credentials에 한 번만 저장하면 됩니다.
  2. 프롬프트에 앞 노드의 데이터를 넣습니다. 표현식 모드를 켜고 아래처럼 씁니다.
다음 글을 한국어 세 문장으로 요약해 주세요.

{{ $json.body.text }}
  1. Slack 노드를 추가하고 "Send a message"를 고릅니다. 채널을 지정하고, 메시지 본문에 AI 노드의 출력을 표현식으로 넣습니다. 보통 {{ $json.text }}입니다.
  2. 전체를 한 번 실행해서 슬랙에 메시지가 오는지 확인합니다.
  3. 오른쪽 위 토글을 켜서 워크플로를 활성화합니다. 이때부터 주소가 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 볼륨을 통째로 복사하는 것이 가장 확실합니다.

다음 단계

keep reading

이어서 보면 좋은 글

지금 읽은 주제와 결이 맞는 운영 기록과 빌드 노트를 아래에 이어 붙였습니다.

블로그 전체 보기 →