BinaryZero
BinaryZero
BinaryZero
전체 방문자
오늘
어제
  • 분류 전체보기 (36)
    • AI 도구 리뷰 (8)
    • AI 개발 활용 (27)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 개인정보처리방침
  • 소개

공지사항

인기 글

태그

  • 멀티에이전트
  • AI자동화
  • ai개발도구
  • ai코딩
  • n8n설치
  • 바이브코딩
  • mcp 서버
  • cursor ai
  • claude
  • 개발생산성
  • 코딩에디터
  • 노코드
  • Playwright MCP
  • AI 코딩
  • LLM
  • n8n
  • mcp서버
  • ai 자동화
  • Ollama
  • ai에이전트

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
BinaryZero

BinaryZero

AI 개발 활용

n8n 로컬 설치하고 AI 자동화 워크플로우 만들기 — Docker + OpenAI API 연동 완전 가이드

2026. 4. 14. 13:17

n8n은 Zapier, Make(구 Integromat)처럼 업무 자동화를 가능하게 하는 오픈소스 워크플로우 자동화 플랫폼입니다. 하지만 결정적인 차이가 있습니다. 로컬 서버에 설치해서 완벽하게 자신의 것으로 만들 수 있다는 점입니다. 클라우드 의존성 없이, 민감한 데이터는 내 서버에서 처리하면서도 강력한 AI 자동화 워크플로우를 구축할 수 있습니다.

이 가이드에서는 Docker를 이용해 n8n을 로컬에 설치하고, OpenAI API를 연동해서 Gmail 수신 이메일을 GPT로 요약한 뒤 Slack으로 전송하는 실전 워크플로우를 구축하는 전 과정을 단계별로 설명합니다.

n8n이란? Zapier·Make와 뭐가 다를까

n8n은 No-Code 워크플로우 자동화 플랫폼입니다. 코드를 짜지 않고도 마우스 클릭으로 여러 앱을 연결해 자동화 흐름을 만들 수 있습니다.

항목 n8n Zapier Make
가격 모델 오픈소스 (무료) 월 29~299달러 월 9~299달러
로컬 설치 완전 지원 불가능 불가능
데이터 보안 내 서버 100% 제어 클라우드 의존 클라우드 의존
통합 수 400+ 5,000+ 1,000+
커스텀 코드 JavaScript/Python 지원 제한적 지원 (프로)됨

특히 개인 개발자나 소규모 팀에게 n8n은 최고의 선택입니다. 로컬에 설치하면 월 비용이 0원이고, API 호출 횟수 제한도 없기 때문입니다. 또한 GitHub에 전체 소스코드가 공개되어 있어서, 필요하면 직접 수정할 수도 있습니다.

사전 준비: Docker, OpenAI API 키 확보

1단계: Docker 설치 확인

n8n을 Docker 컨테이너로 실행하는 것이 가장 간단합니다. 먼저 Docker가 설치되어 있는지 확인하세요.

docker --version

Docker가 없다면 Docker Desktop을 설치하세요. Windows, macOS, Linux 모두 지원합니다.

2단계: OpenAI API 키 발급

이 워크플로우에서는 OpenAI의 GPT-4 API를 사용합니다. OpenAI 웹사이트에서 API 키를 발급받아야 합니다.

  1. OpenAI API 키 페이지 방문
  2. "Create new secret key" 클릭
  3. 생성된 키를 복사해 안전한 곳에 저장

주의: API 키는 절대 깃허브나 공개 장소에 노출되면 안 됩니다. n8n의 환경 변수로 안전하게 관리합니다.

Docker로 n8n 로컬 설치하기

docker-compose.yml 작성

프로젝트 디렉토리를 만들고, 아래 내용의 docker-compose.yml 파일을 생성하세요.

version: '3'

services:
  n8n:
    image: n8nio/n8n:latest
    ports:
      - "5678:5678"
    environment:
      - N8N_HOST=localhost
      - N8N_PORT=5678
      - N8N_PROTOCOL=http
      - NODE_ENV=production
      - WEBHOOK_URL=http://localhost:5678/
      - GENERIC_TIMEZONE=Asia/Seoul
    volumes:
      - n8n_data:/home/node/.n8n
    restart: always
    networks:
      - n8n_network

  postgres:
    image: postgres:16-alpine
    environment:
      - POSTGRES_USER=n8n
      - POSTGRES_PASSWORD=secure_password_here
      - POSTGRES_DB=n8n
    volumes:
      - postgres_data:/var/lib/postgresql/data
    restart: always
    networks:
      - n8n_network

volumes:
  n8n_data:
  postgres_data:

networks:
  n8n_network:
    driver: bridge

이 설정의 주요 항목:

  • ports: 5678 — n8n 웹 인터페이스가 실행될 포트
  • volumes — 데이터 지속성을 위해 로컬 볼륨에 저장
  • postgres — n8n 데이터를 저장할 데이터베이스
  • GENERIC_TIMEZONE — 한국 시간대 설정

n8n 실행

docker-compose.yml이 있는 디렉토리에서 다음 명령을 실행합니다.

docker-compose up -d

컨테이너가 시작되는 동안 몇 초 정도 기다리세요. 그 다음 로그를 확인해서 정상 실행 여부를 확인합니다.

docker-compose logs -f n8n

로그에 "Server started" 메시지가 나타나면 성공입니다. 이제 브라우저에서 http://localhost:5678을 열면 n8n 대시보드에 접속할 수 있습니다.

n8n 기본 인터페이스 이해하기

핵심 개념: Trigger와 Action 노드

n8n의 워크플로우는 크게 두 가지 타입의 노드로 구성됩니다.

1. Trigger 노드 (시작점)

  • 워크플로우를 시작하는 신호를 받는 노드
  • 예: "Gmail에 새 메일 도착", "특정 시간마다 실행", "웹훅 수신" 등
  • 각 워크플로우마다 반드시 하나 이상 필요

2. Action 노드 (작업 수행)

  • Trigger 노드로부터 신호를 받아 실제 작업 수행
  • 예: "데이터 변환", "API 호출", "메시지 전송" 등
  • 여러 개를 연쇄적으로 연결 가능

3. 워크플로우 흐름

Gmail (Trigger) → 데이터 추출 (Action) → OpenAI 호출 (Action) → Slack 전송 (Action)

대시보드 레이아웃

n8n에 접속하면 맨 처음 보이는 화면:

  • 좌측 탭 — 사이드바에 "Workflows", "Credentials", "Templates" 등
  • 중앙 캔버스 — 노드를 드래그 앤 드롭으로 배치
  • 우측 패널 — 선택된 노드의 설정 옵션
  • 상단 버튼 — "Save", "Test", "Execute Workflow" 등

OpenAI API 연동 설정

Credentials 생성

n8n에서 외부 서비스를 안전하게 연동하려면 먼저 Credentials(자격증명)을 등록해야 합니다.

  1. 좌측 사이드바 → Credentials 클릭
  2. "+ New" 버튼 클릭
  3. "OpenAI" 선택
  4. 다음 정보 입력:
    • Credential Name — "OpenAI API" (자유롭게 설정)
    • API Key — 앞서 발급받은 OpenAI API 키 붙여넣기
  5. "Create" 클릭

이제 워크플로우에서 OpenAI를 사용할 때마다 이 Credentials를 선택하면 됩니다. 키는 n8n 데이터베이스에 암호화되어 저장됩니다.

실전 워크플로우: Gmail → GPT → Slack

워크플로우 개요

이제 실제 자동화 워크플로우를 구축해봅시다. 흐름은 다음과 같습니다:

  1. Gmail에 새 메일 도착 (Trigger)
  2. 메일 제목과 본문 추출 (Action)
  3. OpenAI API로 요약 생성 (Action)
  4. 요약을 Slack으로 전송 (Action)

Step 1: Gmail Trigger 노드 추가

왼쪽 사이드바의 "+" 아이콘을 클릭해 노드 추가 메뉴를 엽니다. "Gmail"을 검색하고 "Gmail" 노드를 선택합니다.

Gmail 노드 설정:

  1. 노드를 클릭해서 우측 패널에서 설정 열기
  2. Trigger Event → "New Email" 선택
  3. Credentials → 없으면 "+Create New" 클릭해서 Gmail 계정 연동
  4. Mailbox → "INBOX" 선택
  5. Save

Gmail 인증 시 OAuth 팝업이 나타나면, 로그인해서 n8n에 접근 권한을 부여해야 합니다.

Step 2: 데이터 추출 노드

Gmail 노드에서 나온 데이터를 정리합니다. "+" 버튼을 클릭해서 "Function" 노드를 추가합니다.

return {
  subject: $input.first().json.subject,
  body: $input.first().json.text_plain || $input.first().json.text,
  from: $input.first().json.from,
  timestamp: $input.first().json.date
};

이 노드는 이메일의 제목, 본문, 발신자, 날짜만 추출해서 다음 노드에 전달합니다.

Step 3: OpenAI 호출 노드

"+" 버튼 → "OpenAI" 검색 → "OpenAI" 노드 선택

OpenAI 노드 설정:

  1. Credentials — 앞서 만든 "OpenAI API" 선택
  2. Resource → "Chat" 선택
  3. Messages 섹션:
    • "Add Messages" → "User Message" 클릭
    • Message 필드에 다음 프롬프트 입력:
다음 이메일을 핵심만 요약해줘. 3-5줄로 간단히.

발신자: {{ $('Function').item.json.from }}
제목: {{ $('Function').item.json.subject }}
본문: {{ $('Function').item.json.body }}

요약:

이 프롬프트에서 {{ }} 문법은 이전 노드의 데이터를 참조합니다. "Function" 노드에서 추출한 값을 자동으로 대입합니다.

  1. Model → "gpt-4" 또는 "gpt-3.5-turbo" 선택
  2. Temperature → 0.5 (창의성 수준)
  3. Save

Step 4: Slack 전송 노드

"+" 버튼 → "Slack" 검색 → "Slack" 노드 선택

Slack 노드 설정:

  1. Credentials → Slack 계정 연동 (OAuth)
  2. Resource → "Message" 선택
  3. Channel → "#automation" (자동화 결과 수신할 채널 선택)
  4. Message Text 필드:
📧 새 이메일 요약

발신자: {{ $('Function').item.json.from }}
제목: {{ $('Function').item.json.subject }}

요약:
{{ $('OpenAI').item.json.choices[0].message.content }}

시간: {{ $('Function').item.json.timestamp }}

OpenAI 노드의 응답은 choices[0].message.content에 담겨 있습니다.

  1. Save

워크플로우 테스트

오른쪽 상단의 "Test" 버튼을 클릭해서 워크플로우를 테스트합니다. Gmail에 새 메일을 보내면, 자동으로 요약이 Slack으로 전송되는지 확인할 수 있습니다.

워크플로우 배포 및 자동 실행

워크플로우 활성화

테스트가 완료되면 워크플로우를 실제로 배포합니다.

  1. 오른쪽 상단의 토글 버튼을 "ON" 상태로 변경
  2. 워크플로우가 활성화되면, Gmail에 새 메일이 도착할 때마다 자동으로 실행됩니다.

실행 이력 확인

워크플로우가 정상 실행되는지 확인하려면:

  1. 워크플로우 페이지의 "Executions" 탭 클릭
  2. 각 실행 항목을 클릭하면 상세 로그(입력/출력 데이터) 확인 가능
  3. 에러 발생 시 여기서 디버깅

고급: 조건부 분기와 에러 처리

조건부 분기 (IF 노드)

특정 조건에 따라 다른 작업을 수행하려면 "IF" 노드를 사용합니다.

예: 메일 제목에 "urgent"가 포함되면 다른 채널로 전송

  1. "+" → "IF" 노드 추가
  2. Condition 섹션:
    • 필드: $('Function').item.json.subject
    • 연산자: "contains"
    • 값: "urgent"
  3. TRUE일 때 분기에 Slack 채널 변경 가능

에러 처리

API 호출 실패 시 알림을 받으려면:

  1. OpenAI 노드 선택 → 우측 "Settings" 탭 → "Error Handling" 섹션
  2. "Error Handling" 활성화
  3. 에러 발생 시 실행할 노드 지정 (예: "알림 메일 전송")

트러블슈팅: 자주 나오는 오류와 해결법

오류 1: "ECONNREFUSED" — 데이터베이스 연결 실패

원인: PostgreSQL 컨테이너가 시작되지 않았거나 n8n이 접속하지 못함

해결법:

docker-compose restart postgres

그 다음 몇 초 대기 후:

docker-compose restart n8n

오류 2: "401 Unauthorized" — API 키 인증 실패

원인: OpenAI API 키가 잘못되었거나 만료됨

해결법:

  1. OpenAI 대시보드에서 API 키 재확인
  2. n8n의 Credentials 섹션에서 해당 키 업데이트
  3. 워크플로우 다시 테스트

오류 3: "Webhook timeout" — 응답이 너무 오래 걸림

원인: OpenAI API 응답 시간이 30초 이상 소요

해결법:

  1. OpenAI 노드의 Temperature를 낮춤 (창의성 감소 = 속도 증가)
  2. 프롬프트 길이를 짧게 수정
  3. docker-compose.yml에서 웹훅 타임아웃 시간 증가:
environment:
  - WEBHOOK_TIMEOUT=120

오류 4: "PERMISSION_DENIED" — Gmail 접근 권한 없음

원인: OAuth 인증 실패 또는 권한 만료

해결법:

  1. Gmail Credentials 삭제 → 다시 인증 진행
  2. Google 계정에서 n8n 앱 권한 재승인
  3. Gmail 보안 설정에서 "덜 안전한 앱" 허용 (필요시)

프로덕션 배포: 클라우드 서버에서 실행

AWS EC2에 배포 (예시)

로컬 테스트가 완료되면 클라우드 서버에 배포할 수 있습니다. 예를 들어 AWS EC2 인스턴스 (t2.micro, Ubuntu 22.04)에 배포하려면:

#!/bin/bash

# Docker 설치
sudo apt update && sudo apt install -y docker.io docker-compose

# n8n 디렉토리 생성
mkdir n8n && cd n8n

# docker-compose.yml 다운로드 또는 직접 생성
# (위에서 제공한 docker-compose.yml 파일 복사)

# 실행
sudo docker-compose up -d

# 포트 5678 방화벽 열기
sudo ufw allow 5678
sudo ufw enable

배포 후 http://서버-퍼블릭-IP:5678으로 접속 가능합니다.

HTTPS 설정 (Let's Encrypt)

프로덕션 환경에서는 반드시 HTTPS를 설정해야 합니다. docker-compose.yml 수정:

environment:
  - N8N_PROTOCOL=https
  - N8N_SSL_KEY=/path/to/privkey.pem
  - N8N_SSL_CERT=/path/to/cert.pem
volumes:
  - /etc/letsencrypt/live/mydomain.com/privkey.pem:/path/to/privkey.pem:ro
  - /etc/letsencrypt/live/mydomain.com/fullchain.pem:/path/to/cert.pem:ro

추가 팁: n8n 활용도 높이기

1. 외부 API와 연동 (HTTP Request 노드)

n8n은 400개 이상의 내장 통합을 제공하지만, 그 외에도 "HTTP Request" 노드를 사용해 어떤 API든 연동 가능합니다.

예: 날씨 API 호출

HTTP Request 노드 설정:
- Method: GET
- URL: https://api.openweathermap.org/data/2.5/weather?q=Seoul&appid={{$env.WEATHER_API_KEY}}
- Headers: Authorization, Accept 등 필요시 추가

2. 커스텀 JavaScript 코드 (Function 노드)

복잡한 데이터 변환이 필요할 때는 JavaScript를 직접 작성할 수 있습니다.

// 여러 값을 합치기
const summaries = $input.getDataAsArray();
return summaries.map(item => ({
  title: item.json.subject,
  summary: item.json.summary,
  priority: item.json.subject.includes('URGENT') ? 'high' : 'normal'
}));

3. 스케줄링 (Cron)

특정 시간에 자동으로 워크플로우 실행:

  1. "+" → "Cron" 노드 추가
  2. Trigger Times → "0 9 * * 1-5" (평일 9시마다)
  3. 이후 노드 연결

4. 변수 저장 및 재사용

워크플로우 간에 데이터를 공유하려면 변수 노드 사용:

// 변수에 값 저장
await $workflowData.setWorkflowVariable('lastEmailDate', new Date());

// 다른 워크플로우에서 참조
const lastDate = await $workflowData.getWorkflowVariable('lastEmailDate');

결론

n8n은 완전히 자신의 통제 하에서 AI 자동화를 구축할 수 있는 강력한 도구입니다. Docker 한 줄로 설치 가능하고, OpenAI 같은 최신 AI 모델과 쉽게 연동할 수 있으며, 필요하면 직접 코드도 작성할 수 있습니다.

로컬 테스트 후 클라우드에 배포하면, 24/7 무중단으로 작동하는 자동화 시스템을 운영할 수 있습니다. 더 이상 반복적인 일에 시간을 낭비할 필요 없습니다. n8n으로 시작하세요.

다음 단계: 당신의 업무에 맞게 Trigger와 Action 노드를 조합해봅시다. Gmail, Slack, Google Sheets, GitHub 등 주요 서비스는 모두 이미 n8n과 통합되어 있습니다.

'AI 개발 활용' 카테고리의 다른 글

Cursor Agent 모드 완전 정복 — 자율 코딩 에이전트로 복잡한 작업 자동화하기  (0) 2026.04.11
LangChain으로 RAG 파이프라인 구축하기 — 문서 검색 AI 앱 만드는 완전 가이드  (0) 2026.04.11
MCP 서버 직접 만들어보기 — TypeScript로 Claude 전용 도구 개발 완전 가이드  (1) 2026.04.09
Claude Code Max 플랜 완벽 가이드 — Ultraplan 설정·토큰 최적화·실전 활용법  (0) 2026.04.09
Perplexity API 연동해서 실시간 AI 검색 앱 만들기  (0) 2026.04.09
    'AI 개발 활용' 카테고리의 다른 글
    • Cursor Agent 모드 완전 정복 — 자율 코딩 에이전트로 복잡한 작업 자동화하기
    • LangChain으로 RAG 파이프라인 구축하기 — 문서 검색 AI 앱 만드는 완전 가이드
    • MCP 서버 직접 만들어보기 — TypeScript로 Claude 전용 도구 개발 완전 가이드
    • Claude Code Max 플랜 완벽 가이드 — Ultraplan 설정·토큰 최적화·실전 활용법
    BinaryZero
    BinaryZero
    에이전틱 AI 시대, 개발 생산성을 10배 높이는 노하우를 공유합니다. Cursor AI, Claude Code, MCP 서버 구축부터 로컬 LLM 활용법까지 최신 AI 개발 도구와 실전 코딩 자동화 기술을 다루는 테크 블로그입니다.

    티스토리툴바