n8n 도커 설치부터 AI 자동화 워크플로우 완성까지

재피어 구독, n8n 설치하고 끊었다

블로그 자동 포스팅부터 여러가지 기능을 자동화 시키다 보니, 어느 순간 make 할당량을 너무 빨리 써버렸다. OpenAI API 연동 후 처리 건수가 급증하면서 충전을 해야하다 보니 구독료가 눈덩이처럼 불어났다. 시간은 절약됐는데, 그만큼 구독료로 빠져나가니 이래저래 손해 보는 기분이었다.

그때 발견한 게 오픈소스 자동화 툴인 n8n(엔팔엔)이다. 기본적인 코딩 지식이 필요하다는 소문에 한참 망설였지만, 결국 도커(Docker)로 서버를 띄우고 AI 뉴스 요약봇을 만드는 데 걸린 시간은 딱 30분이었다. 물론 내가 개발자도 아니고 머리가 좋은 편이 아니라서 이틀 밤을 새우며 에러를 고친적도 많다. 아무튼 설치 명령어부터 워크플로우 구성, 에러 해결 과정까지 제가 직접 겪은 모든 내용을 숨김없이 공유한다.

 

n8n-server

 



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)를 열어 아래와 같은 명령어를 입력하면 바로 n8n 컨테이너가 실행된다. 복잡한 설정은 없고 딱 한 줄 명령이다.

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이 자동 생성된다. 뭔가 쩐다.

이 명령어 하나로 끝내는 게 편해 보이지만, 실제론 로컬 폴더 경로를 직접 연결했다가 권한 문제로 한참 골머리를 앓았다. 네임드 볼륨 방식이 아니었으면 지금도 문제 해결 못 했을지도 모르겠다. 모르면 유튜브에 설치방법 찾아서 따라해도 좋을것 같다.

2단계: 관리자 계정 생성 및 첫 워크플로우 열기

자 터미널에 서버가 정상적으로 시작되면, 이제 내 브라우저에서 http://localhost:5678 주소로 접속한다. 이메일과 비밀번호를 입력해 로컬 관리자 계정을 만들고 로그인했는데, 로그인 직후 화면에 뜨는 [Add Workflow] 버튼을 누르면 빈 화면을 열수 있다. 이 부분은 특별한 어려움 없이 바로 진행된다.

3단계: 4개 노드 연결로 모닝 AI 요약봇 완성

n8n의 가장 매력적인 점은 노드를 드래그 앤 드롭하는 직관적인 인터페이스 덕분에 데이터 흐름을 쉽게 만들 수 있다는 점이다. 나는 필요한 기능을 아래와 같은 순서대로 노드를 연결했다.

  1. Schedule Trigger 노드: ‘매일 오전 7시’로 실행 시간을 설정해 자동화 시작점 만듬.
  2. HTTP Request 노드: 구글 뉴스 RSS 주소를 GET 방식으로 입력해 최신 뉴스 데이터를 받아온다. 이 단계는 단순해 보여도, RSS 주소가 바뀌거나 서버가 느려지면 데이터를 못 받아오는 일이 발생해 불안정한 점이 있긴했다.
  3. OpenAI 노드: Credentials 메뉴(연결을 위한 설정이라고 생각하면 된다)에서 API 키를 등록한 뒤, Resource는 ‘Chat’, Operation은 ‘Complete’로 지정했습니다. Prompt 필드에 Expression 기능을 켜고 {{ $json.title }}{{ $json.description.replace(/"/g, "'") }}를 넣어 “이 기사를 3줄로 한국어로 요약해 줘”라고 명령했다. 만약 따옴표 이스케이프 처리를 제대로 안 하면 400 에러가 뜰 수 있다.
  4. Telegram 노드: BotFather에서 받은 토큰을 등록하고, OpenAI 결과물인 {{ $json.message.content }}를 Chat ID로 발송하도록 설정하면 끝이다. 여기서도 당연히 토큰이나 Chat ID가 조금이라도 틀리면 메시지가 발송되지 않으니 오타 없나 잘 보자.

⚠ Credentials 보안 — 외부 서버 배포 시 반드시 확인

로컬 환경에서는 n8n이 데이터를 내부에 저장하니 make보다 보안 면에서 조금 더 낫다고 생각이 들었다. 그런데 AWS나 오라클 클라우드 같은 외부 서버에 서비스할 때는 N8N_ENCRYPTION_KEY 환경 변수를 만들어야 한다. 만약 이걸 빼고 배포하면 .n8n 폴더가 노출되니 진짜 위험하다.

3. 이틀 밤을 새운 치명적 에러 2가지와 탈출구

에러 ① EACCES: permission denied — 볼륨 권한 충돌

사실 내가 n8n을 처음 켤 때 터미널에 빨간색 에러 메시지가 쏟아지면서 실행이 멈췄다. 원인은 윈도우 파일 시스템과 도커 컨테이너 내부 리눅스 사용자 권한이 서로 충돌했던 것 이었다. 특히 로컬 경로인 ~/.n8n를 직접 마운트하는 방식이 문제였는데 몰랐다. 그래서 아까 위에서 말한 명령어에 네임드 볼륨 방식을 쓰는 이유가 단순히 편의 때문이 아니라 이런 권한 문제 때문도 있다는 것을 명심!

에러 ② HTTP 400 Bad Request — JSON을 부수는 특수문자

뉴스 요약봇이 갑자기 OpenAI 노드에서 400 에러를 내며 멈췄다. 한참 들여다보니, 문제는 기사 본문 안에 포함된 큰따옴표(")와 줄바꿈(n) 때문이었다. n8n이 백그라운드에서 API를 호출할 때, 이 특수문자들이 JSON 문법을 깨뜨렸다. 특히 큰따옴표가 제대로 처리되지 않으면 JSON이 완전히 꼬인다. 해결을 하려면 간단한건 Expression 창에서 자바스크립트 내장 함수로 큰따옴표를 작은따옴표로 바꾸는 방식이 가장 단순하면서도 확실했다.

{{ $json.description.replace(/"/g, "'") }}

이 한 줄을 Prompt 필드에 넣으니 400 에러 발생률이 확실히 줄었다. 외부 텍스트를 AI 노드에 넘길 때, 특수문자 이스케이프를 빼먹으면 나중에 문제에 휘말리기 십상이다.

4. 한 달 운영 후 실제로 바뀐 수치

n8n으로 완전히 이전하고 나서 한 달 넘게 데스크톱을 켜둔 채 자동화를 돌려봤다. 결과는 생각보다 가성비가 뛰어났다.(전기세는 당연히 더 나옴)

  • 플랫폼 비용: 예전에는 매달 내던 make 구독비용이 있었찌만 이제는 그 비용이 완전히 사라졌다. 남은 건 OpenAI API 사용료 뿐이라 지갑이 훨씬 가벼워졌다.
  • 워크플로우 확장: make처럼 노드 실행 횟수 제한에 얽매이지 않으니, 뉴스 요약뿐 아니라 블로그 댓글 자동 답글, 주식 시세 알림 등 비용 걱정 없이 여러 작업을 마음껏 추가했다. 처음엔 여러 워크플로우가 동시에 돌아가니 시스템 부하가 신경 쓰였지만, 그 정도는 감수할 만했다.
  • 시간 단축: 매일 아침 40분씩 직접 트렌드를 정리해 공유하던 시간도 완전히 사라졌다. 오전 7시 정각에 자동으로 요약을 끝내고, 텔레그램으로 바로 받아보니 30초 만에 하루치 인사이트를 확인하는 게 가능해졌다.

5. n8n이 맞는 사람과 맞지 않는 사람

n8n 세팅에 한나절 정도 시간을 투자하는 건 분명 부담스럽다. 하지만 그 고생이 평생 구독료를 줄여준다는 점은 부인하기 어렵다. 시간과 돈을 비례하는지 따져보고 도입하던지 테스트를 해보던지 하길바란다.

  • 강력 추천: API 비용과 자동화 구독료 때문에 부담을 느끼는 사람들과 도커와 자바스크립트 기초 지식이 있는 스타트업 담당자라면 반드시 시도해볼 만하다. 특히 문제 해결 과정을 즐기는 사람이라면 더할 나위 없다.
  • 비추천: 터미널 화면만 봐도 머리가 복잡해지는 비개발자라면 오히려 스트레스만 쌓일 수 있다. 이런 분들은 정신 건강 차원에서 비용이 다소 높더라도 재피어나 메이크(Make) 같은 상용 서비스를 계속 이용하는 편이 낫다. 세팅에 드는 시간과 노력이 비용 절감 효과를 누르는 것보다 클 수 있기 때문이다.
  • 한 가지 더: 24시간 워크플로우를 돌리려면 PC 전원을 계속 켜두거나 월 5~6달러짜리 저렴한 VPS를 이용해야 한다. PC를 끄면 당연히 예약된 작업도 멈춘다.

n8n은 ‘무료’라는 점 하나만으로도 충분히 배워볼 가치가 있다. 유튜브에 따라하기가 많으니 한번 따라서 설정해보길!