월 8만 원짜리 재피어 구독, 오늘부로 끊었다
블로그 자동 포스팅 봇에 사내 메신저 알림까지 여러 자동화 파이프라인을 돌리다 보니, 어느 달 재피어(Zapier) 청구서에 85,000원이 찍혔다. OpenAI API 연동 이후 처리 건수가 폭발적으로 늘어난 탓이었다. “자동화로 아낀 시간이 구독료로 다 증발하고 있네” 싶은 순간, 오픈소스 자동화 툴인 n8n(엔에이트엔)을 발견했다.
코딩 지식이 필요하다는 악명 때문에 며칠을 망설였다. 그냥 써봤다. 도커(Docker)로 서버를 띄우고 첫 AI 뉴스 요약봇을 완성하는 데 걸린 시간은 딱 30분이었다. 이틀 밤을 태운 에러 두 방도 맞았다. 그 모든 과정 — 설치 명령어, 워크플로우 구성, 에러 해결까지 — 을 숨김없이 공개한다.
1. 도커 기반 n8n 설치를 위한 환경 준비
n8n은 클라우드 유료 버전과 데스크톱 앱도 있지만, 비용 없이 24시간 워크플로우를 돌리고 나중에 VPS나 라즈베리파이로 이전하기 가장 쉬운 방식은 도커 컨테이너다. 아래 환경이 갖춰지면 나머지는 명령어 한 줄로 해결된다.
- 운영체제: Windows 11 Pro (WSL2 활성화 필수)
- 핵심 프로그램: Docker Desktop 최신 버전
- 연동 계정: OpenAI API 키(gpt-4o-mini 모델), 텔레그램 봇 토큰
- 접속 포트: 5678 (n8n 기본 포트)
Docker Desktop 설치 후 반드시 WSL2 통합 설정을 켜야 한다. 이걸 빠뜨리면 나중에 볼륨 마운트 권한 에러가 기다리고 있다 — 실제로 내가 그 함정에 빠졌다.
2. AI 뉴스 요약봇 워크플로우 단계별 구축
1단계: 터미널에서 n8n 컨테이너 실행
Docker Desktop을 켜 놓은 상태에서 명령 프롬프트(CMD)를 열고 아래 명령어를 입력한다. 한 줄이 전부다.
docker run -it --rm --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n n8nio/n8n start --tunnel
-p 5678:5678은 접속 포트를 여는 옵션이고, -v n8n_data:/home/node/.n8n은 워크플로우 데이터를 도커 네임드 볼륨에 영구 저장하는 설정이다. 맨 끝의 --tunnel이 핵심이다. 로컬 환경에서도 외부 서비스(웹훅 등)와 통신할 수 있는 임시 공개 URL을 자동으로 만들어준다. 초기 명령어에서 로컬 폴더 경로(~/.n8n)를 직접 연결했다가 권한 충돌을 만났고, 네임드 볼륨 방식으로 바꾸자 문제가 사라졌다.
2단계: 관리자 계정 생성 및 첫 워크플로우 열기
터미널에 서버 가동 메시지가 뜨면 브라우저에서 http://localhost:5678로 접속한다. 이메일과 비밀번호를 입력해 로컬 관리자 계정을 만들고, 로그인 후 [Add Workflow] 버튼을 누르면 빈 캔버스가 열린다.
3단계: 4개 노드 연결로 모닝 AI 요약봇 완성
노드를 드래그 앤 드롭으로 연결하는 것만으로 데이터 흐름이 만들어진다. 아래 순서대로 이어붙이면 된다.
- Schedule Trigger 노드: ‘매일 오전 7시’ 실행으로 설정. 자동화의 시작점이다
- HTTP Request 노드: 구글 뉴스 RSS 주소를 GET 방식으로 입력해 최신 기사 데이터를 끌어온다
- OpenAI 노드: Credentials 메뉴에 API 키를 등록하고, Resource는 ‘Chat’, Operation은 ‘Complete’로 설정한다. Prompt 필드에 Expression 기능을 켜고
{{ $json.title }}과{{ $json.description.replace(/"/g, "'") }}를 넣어 “이 기사를 3줄로 한국어로 요약해 줘”라고 지시한다. 따옴표 이스케이프 처리가 여기서 결정적으로 중요하다 — 이걸 빠뜨리면 400 에러가 기다린다 - Telegram 노드: BotFather에서 받은 토큰을 등록하고, OpenAI 결과물인
{{ $json.message.content }}를 Chat ID로 발송하도록 연결한다
⚠ Credentials 보안 — 외부 서버 배포 시 반드시 확인
n8n은 데이터를 로컬에 저장하므로 재피어보다 보안상 유리하다. 단, AWS나 오라클 클라우드 같은 외부 서버로 이전할 때는 환경 변수에서 N8N_ENCRYPTION_KEY를 강력하게 설정해야 등록된 API 키들이 암호화된다. 이 설정 없이 배포했다가 .n8n 폴더가 노출되면 모든 인증 정보가 통째로 유출된다.
3. 이틀 밤을 새운 치명적 에러 2가지와 탈출구
에러 ① EACCES: permission denied — 볼륨 권한 충돌
처음 명령어를 실행했을 때 n8n이 켜지지 않았다. 빨간 에러 메시지가 화면을 도배했다. 원인은 윈도우 폴더 시스템과 도커 컨테이너 내부 리눅스 사용자 권한의 충돌이었다. 로컬 경로(~/.n8n)를 직접 마운트하는 방식이 문제였다. 도커가 자체 관리하는 네임드 볼륨(n8n_data) 방식으로 명령어를 바꾸자 권한 충돌이 완전히 사라졌다. 위 1단계 명령어에 이미 네임드 볼륨 방식이 반영된 이유가 바로 이것이다.
에러 ② HTTP 400 Bad Request — JSON을 부수는 특수문자
뉴스 요약봇이 잘 돌아가다가 특정 기사에서 OpenAI 노드가 400 에러를 뱉으며 멈췄다. 원인을 파고들었다. 기사 본문 안에 포함된 큰따옴표(")와 줄바꿈(\n) 문자가 n8n이 백그라운드에서 API를 호출할 때 JSON 문법을 깨고 있었다. 해결책은 Expression 창에서 자바스크립트 내장 함수를 써서 큰따옴표를 작은따옴표로 바꾸는 것이었다.
{{ $json.description.replace(/"/g, "'") }}
이 한 줄을 Prompt 필드에 적용한 뒤 에러가 0%가 됐다. 외부 텍스트 데이터를 AI 노드로 넘길 때는 항상 특수문자 이스케이프를 먼저 챙겨야 한다.
4. 한 달 운영 후 실제로 바뀐 수치
n8n으로 완전히 이주하고 한 달을 데스크톱을 켜둔 채 돌려본 결과다.
- 플랫폼 비용: 매달 85,000원(약 $60) 나가던 재피어 구독이 0원으로 떨어졌다. 남은 지출은 OpenAI API 사용료 약 2천 원뿐이다
- 워크플로우 확장: 노드 실행 횟수 제한이 사라지니 뉴스 요약 외에도 블로그 댓글 자동 답글, 주식 시세 조건 도달 알림 등 비용 걱정에 엄두도 못 냈던 작업들을 마음껏 추가했다
- 시간 단축: 매일 아침 트렌드를 직접 정리해 공유하던 40분짜리 루틴이, 오전 7시 정각 자동 완료 후 텔레그램 수신으로 대체됐다. 30초면 하루치 인사이트를 확인한다
5. n8n이 맞는 사람과 맞지 않는 사람
한나절의 세팅 고생이 평생의 구독료를 대신한다. 다만, 솔직하게 선을 그어야 한다.
- 강력 추천: API 비용과 자동화 구독료에 허덕이는 1인 개발자, 프리랜서 마케터, 도커와 자바스크립트 기초를 아는 스타트업 담당자. 트러블슈팅을 즐기는 편이라면 더할 나위 없다
- 비추천: 터미널 창만 봐도 두통이 오는 비개발자. 정신 건강을 위해 다소 비싸도 재피어(Zapier)나 메이크(Make)를 유지하는 게 맞다. 세팅 시간 대비 얻는 것보다 잃는 것이 더 클 수 있다
- 한 가지 더: 24시간 워크플로우를 돌리려면 PC를 계속 켜 두거나 월 5~6달러짜리 저렴한 VPS로 이전해야 한다. PC를 끄면 스케줄러도 멈춘다
n8n은 무료라는 것 하나만으로도 충분히 배울 가치가 있는 툴이다. 에러를 뚫는 그 이틀이 결국 가장 빠른 학습이었다.