G:
n8n 설치부터 연동까지: 첫 워크플로우 쉽게 만드는 법
반복적인 업무에 지치셨나요? 🤯 매일 똑같은 데이터 복사 붙여넣기, 알림 보내기, 또는 웹 서비스 간의 수동적인 연결에 시간을 낭비하고 있다면, 이 글이 바로 여러분을 위한 길잡이가 될 것입니다. n8n은 강력한 오픈소스 자동화 도구로, 코딩 없이도 다양한 웹 서비스와 애플리케이션을 연결하여 여러분의 워크플로우를 자동화할 수 있게 도와줍니다. 이 글에서는 n8n을 설치하는 것부터 여러분의 첫 번째 워크플로우를 만들어 성공적으로 연동하는 모든 과정을 쉽고 자세하게 안내해 드리겠습니다.
1. n8n, 왜 사용해야 할까요? ✨
n8n은 “노드 기반의 워크플로우 자동화 도구”입니다. Zapier나 Make(구 Integromat)와 같은 상용 서비스들과 유사하지만, 몇 가지 독특한 장점들을 가지고 있습니다.
1.1. n8n의 주요 장점 👍
- 오픈소스 & 자가 호스팅 가능: 🚀 비용 부담 없이 무료로 사용할 수 있으며, 내 서버에 직접 설치하여 데이터 주권을 완벽하게 통제할 수 있습니다. 민감한 정보를 다루는 워크플로우에 특히 유용하죠.
- 무제한 사용량: 💰 상용 서비스처럼 작업 횟수나 기능에 제한이 없습니다. 필요한 만큼 무제한으로 워크플로우를 실행하고 노드를 사용할 수 있습니다.
- 강력한 유연성: 🔗 수많은 내장 통합(Integration)은 물론, HTTP 요청 노드를 통해 거의 모든 웹 API와 연결할 수 있습니다. Python이나 JavaScript 코드를 실행할 수 있는 노드도 제공하여 커스텀 로직 구현도 가능합니다.
- 시각적인 워크플로우: 🎨 드래그 앤 드롭 방식으로 노드를 연결하여 워크플로우를 직관적으로 설계할 수 있습니다. 코딩 지식이 없어도 쉽게 자동화를 구현할 수 있습니다.
2. n8n 설치하기: 시작이 반이다! 🛠️
n8n은 다양한 방법으로 설치할 수 있지만, 가장 권장하는 방법은 Docker를 이용하는 것입니다. Docker는 환경 설정의 복잡성을 줄여주고, 안정적인 실행을 보장합니다.
2.1. Docker를 이용한 n8n 설치 (권장) 🐳
사전 준비물: Docker와 Docker Compose가 설치된 서버 (로컬 PC도 가능).
-
작업 디렉토리 생성:
먼저 n8n 관련 파일을 저장할 디렉토리를 만듭니다.
mkdir n8n_data cd n8n_data
-
Docker Compose 파일 생성:
docker-compose.yml
파일을 생성하고 아래 내용을 붙여넣습니다. 이 파일은 n8n 컨테이너를 어떻게 실행할지 정의합니다.version: '3.8' services: n8n: image: n8nio/n8n restart: always ports: - "5678:5678" # n8n이 5678 포트를 사용합니다. 필요에 따라 변경 가능합니다. environment: - N8N_HOST=localhost # n8n이 실행될 호스트 주소. 서버 IP 또는 도메인으로 변경 가능. - N8N_PORT=5678 - N8N_PROTOCOL=http # HTTPS를 사용할 경우 https로 변경 - WEBHOOOK_URL=http://localhost:5678/ # 외부에서 접근할 URL (매우 중요!) - GENERIC_TIMEZONE=Asia/Seoul # 원하는 시간대로 변경 (예: Europe/Berlin, America/New_York 등) - N8N_BASIC_AUTH_ACTIVE=true # 웹 UI 접근 시 기본 인증 활성화 - N8N_BASIC_AUTH_USER=your_username # 원하는 사용자 이름으로 변경 - N8N_BASIC_AUTH_PASSWORD=your_password # 원하는 비밀번호로 변경 volumes: - ./n8n_data:/home/node/.n8n # 데이터를 호스트에 저장하여 컨테이너 삭제해도 유지되도록 함. # network_mode: bridge # 기본 설정으로 대부분 충분합니다. # environment: # 추가적인 환경 변수가 필요할 경우 주석 해제 후 사용 # - DB_TYPE=sqlite # - N8N_EMAIL_MODE=smtp # - N8N_SMTP_HOST=smtp.gmail.com # - N8N_SMTP_PORT=587 # - N8N_SMTP_USER=your-email@example.com # - N8N_SMTP_PASSWORD=your-email-password # - N8N_SMTP_SENDER=Your Name <your-email></your-email>
🚨 주의:
N8N_HOST
,WEBHOOK_URL
,N8N_BASIC_AUTH_USER
,N8N_BASIC_AUTH_PASSWORD
는 반드시 여러분의 환경에 맞게 수정해야 합니다! -
n8n 컨테이너 실행:
docker-compose.yml
파일이 있는 디렉토리에서 다음 명령어를 실행합니다.docker-compose up -d
이 명령어는 백그라운드에서 n8n 컨테이너를 다운로드하고 실행합니다. 처음에는 시간이 조금 걸릴 수 있습니다.
-
n8n 접속 확인:
웹 브라우저를 열고
http://localhost:5678
(또는 서버 IP:5678)로 접속합니다. 설정한 사용자 이름과 비밀번호로 로그인하면 n8n 대시보드를 볼 수 있습니다. 🎉
2.2. 다른 설치 방법 (참고)
- npm으로 로컬 설치: 개발 및 테스트 용도로는 간단하지만, 영구적인 사용에는 Docker가 더 적합합니다.
npm install -g n8n n8n start
- 클라우드 서비스: DigitalOcean, Railway 등에서 원클릭 배포를 지원하기도 합니다.
3. n8n 기본 개념 이해하기 🧠
n8n으로 첫 워크플로우를 만들기 전에 몇 가지 핵심 개념을 이해하는 것이 중요합니다.
3.1. 노드 (Nodes) 🧱
노드는 n8n 워크플로우의 가장 기본적인 구성 요소입니다. 각 노드는 특정 작업을 수행합니다.
- 트리거 노드 (Trigger Nodes): 워크플로우를 시작하는 노드입니다. 특정 이벤트(예: 새 이메일 수신, 웹훅 요청, 주기적인 시간)가 발생했을 때 워크플로우를 실행합니다. ⚡️
- 일반 노드 (Regular Nodes): 데이터를 처리하고, 다른 서비스와 상호작용하며, 로직을 제어하는 노드입니다. 예를 들어, 데이터를 변환하거나, 슬랙 메시지를 보내거나, 구글 스프레드시트에 행을 추가하는 등의 작업을 수행합니다.
3.2. 워크플로우 (Workflows) 🗺️
워크플로우는 하나 이상의 노드가 연결되어 자동화된 작업을 수행하는 일련의 흐름입니다. 트리거 노드로 시작하여 다른 노드들을 통해 순차적으로 또는 병렬적으로 작업을 수행합니다.
3.3. 크리덴셜 (Credentials) 🔑
크리덴셜은 n8n이 외부 서비스(예: Google, Slack, Notion)에 접근할 수 있도록 하는 인증 정보입니다. API 키, OAuth 토큰 등이 여기에 해당합니다. 보안을 위해 n8n 내부에 암호화되어 저장됩니다.
3.4. 실행 (Executions) 🏃♀️
워크플로우가 실제로 실행되는 것을 ‘실행(Execution)’이라고 합니다. 각 실행은 로그와 함께 모든 노드의 입력 및 출력 데이터를 기록하여 디버깅에 매우 유용합니다.
4. 첫 워크플로우 만들기: Notion → Slack 알림 🔔
이제 실제 예제를 통해 n8n의 강력함을 경험해 볼 시간입니다. Notion에 새로운 페이지가 생성될 때마다 Slack 채널로 알림을 보내는 워크플로우를 만들어 봅시다!
4.1. 워크플로우 목표 설정 🎯
- 트리거: Notion 데이터베이스에 새로운 페이지가 추가될 때
- 액션: 특정 Slack 채널로 새 페이지 링크와 제목을 포함한 메시지 전송
4.2. 단계별 워크플로우 구축 🏗️
n8n 대시보드에서 “New Workflow”를 클릭하여 새 워크플로우를 시작합니다.
단계 1: Notion 트리거 설정 (Watch for new pages)
-
노드 추가: 빈 워크플로우 캔버스에 “Notion”을 검색하여 “Notion Trigger” 노드를 추가합니다.
-
트리거 설정:
- Trigger on: “Created” (새 페이지 생성 시)
- Authentication: “New”를 클릭하여 Notion API 연동을 설정합니다.
- Notion 개발자 사이트(my-integrations)에서 “New integration”을 생성합니다. 내부 통합(Internal integration)으로 생성하고, 필요한 권한(Read content, Read users, Insert content)을 부여합니다.
- 생성된 통합의 “Internal Integration Token”을 복사하여 n8n의 “API Key” 필드에 붙여넣습니다.
- Notion 워크스페이스로 돌아가, 연동하려는 데이터베이스 페이지에 해당 통합을 초대합니다. (페이지 우측 상단 `···` 메뉴 -> Add connections -> 생성한 통합 선택)
- Database ID: Notion 데이터베이스의 URL에서 ID 부분을 복사하여 붙여넣습니다. (
https://www.notion.so/{YOUR_WORKSPACE}/{DATABASE_ID}?v=...
에서{DATABASE_ID}
부분)
-
테스트: “Execute Workflow” 버튼을 클릭합니다. Notion 데이터베이스에 새로운 페이지를 하나 생성한 후, n8n으로 돌아와 “Output” 탭에서 데이터가 잘 들어오는지 확인합니다.
단계 2: Slack 알림 노드 추가
- 노드 추가: Notion Trigger 노드 옆의 “+” 버튼을 클릭하여 “Slack”을 검색하고 “Slack” 노드를 추가합니다.
-
Slack 연동 설정:
- Operation: “Post a Message”
- Authentication: “New”를 클릭하여 Slack API 연동을 설정합니다.
- Slack API 사이트(api.slack.com/apps)에서 “Create an App” -> “From scratch”를 선택합니다.
- 앱 이름을 지정하고 워크스페이스를 선택합니다.
- “OAuth & Permissions” 메뉴에서 “Scopes” -> “Bot Token Scopes”에
chat:write
,chat:write.public
,channels:read
등을 추가합니다. - “Install to Workspace”를 클릭하여 봇을 설치합니다.
- “Bot User OAuth Token” (
xoxb-...
)을 복사하여 n8n의 “Access Token” 필드에 붙여넣습니다. - 봇을 초대할 Slack 채널에
/invite @봇이름
명령어로 봇을 초대합니다.
-
메시지 내용 구성:
- Channel: 알림을 보낼 Slack 채널 이름을 입력합니다. (예:
#일반
또는#자동화-알림
) - Text: 이곳에 Notion에서 가져온 정보를 사용하여 메시지를 구성합니다. 우측의 톱니바퀴 아이콘을 클릭하여 “Add Expression”을 선택하거나, 직접 입력 후 변수를 드래그 앤 드롭하여 넣을 수 있습니다.
✨ 새로운 Notion 페이지가 생성되었습니다! ✨ 제목: {{ $json.properties.Name.title[0].plain_text }} 링크: {{ $json.url }} 생성일: {{ $json.created_time | date("YYYY-MM-DD HH:mm") }}
위 표현식은 Notion에서 받은 데이터의 특정 필드(`Name`, `url`, `created_time`)를 사용하여 메시지를 만듭니다. 데이터 구조는 Notion Trigger의 “Output” 탭에서 확인 가능합니다.
- Channel: 알림을 보낼 Slack 채널 이름을 입력합니다. (예:
단계 3: 워크플로우 활성화 및 테스트
- 워크플로우 저장: 워크플로우 이름을 지정하고 저장합니다. (예: “Notion 새 페이지 Slack 알림”)
- 실행 및 테스트: “Execute Workflow” 버튼을 클릭하여 워크플로우를 한 번 실행해 봅니다. Slack으로 메시지가 오는지 확인합니다.
- 워크플로우 활성화: 모든 설정이 완료되고 정상 작동하는 것을 확인했다면, n8n 대시보드 우측 상단의 “Active” 토글 버튼을 켜서 워크플로우를 활성화합니다. 이제 Notion에 새 페이지가 생성될 때마다 자동으로 Slack 알림이 전송됩니다! 🎉
5. n8n 워크플로우 활용 팁 및 주의사항 💡
첫 워크플로우를 성공적으로 만들었다면, 이제 더 나아가 n8n을 더 효과적으로 활용하고 발생할 수 있는 문제에 대비하는 방법을 알아봅시다.
5.1. 디버깅과 오류 처리 🐞
- 실행 기록 확인: “Executions” 탭에서 모든 워크플로우 실행 기록과 각 노드의 입력/출력 데이터를 확인할 수 있습니다. 오류 발생 시 어떤 노드에서 문제가 생겼는지 파악하는 데 매우 유용합니다.
- Try/Catch 노드: 예상치 못한 오류가 발생했을 때 워크플로우가 멈추지 않고 특정 로직(예: 오류 알림 보내기)을 실행하게 할 수 있습니다.
- Keep Only Set: 불필요한 데이터를 다음 노드로 넘기지 않고 필요한 데이터만 선별하여 처리 효율을 높일 수 있습니다.
5.2. 표현식 (Expressions) 마스터하기 🧙♂️
n8n의 표현식은 데이터 변환과 조건부 로직을 구현하는 데 핵심적인 역할을 합니다.
{{ $json.propertyName }}
: 이전 노드에서 전달받은 JSON 데이터의 특정 속성에 접근합니다.{{ $('NodeName').item.json.propertyName }}
: 특정 노드의 출력 데이터에 접근합니다.{{ $input.item.json.propertyName }}
: 현재 노드의 입력 데이터에 접근합니다.- JavaScript 함수 활용:
{{ $json.created_time | date("YYYY-MM-DD HH:mm") }}
처럼 날짜 형식을 변경하거나,{{ $json.value.length > 10 ? '긴 값' : '짧은 값' }}
처럼 삼항 연산자를 사용할 수도 있습니다.
5.3. 효율적인 워크플로우 관리 📂
- 폴더 구조: 워크플로우가 많아지면 폴더를 만들어 체계적으로 관리하는 것이 좋습니다.
- 템플릿 활용: 자주 사용하는 워크플로우 패턴은 템플릿으로 저장하여 재사용할 수 있습니다.
5.4. 보안 및 성능 고려사항 🛡️
- 환경 변수 보안: API 키나 비밀번호 같은 민감한 정보는
docker-compose.yml
파일의 환경 변수나 n8n 내의 크리덴셜로만 관리하고, 절대로 워크플로우 코드에 직접 하드코딩하지 마세요. - 웹훅 URL:
WEBHOOK_URL
이 외부에서 접근 가능한 올바른 주소로 설정되어 있는지 항상 확인해야 합니다. 특히 서버의 방화벽 설정에 주의하세요. - 리소스 관리: 워크플로우가 많아지거나 복잡해지면 서버의 CPU, 메모리 사용량이 증가할 수 있습니다. 필요한 경우 서버 사양을 업그레이드하거나, 워크플로우를 분리하여 관리하는 것을 고려하세요.
결론: 자동화의 세계로 떠나세요! 🚀
이 가이드를 통해 n8n을 성공적으로 설치하고 첫 워크플로우를 만드는 방법을 익히셨기를 바랍니다. n8n은 여러분의 일상적인 업무를 자동화하고 효율성을 극대화할 수 있는 무궁무진한 가능성을 제공합니다. Notion 페이지 생성 알림은 시작에 불과합니다. 이메일 자동 발송, CRM 데이터 동기화, 소셜 미디어 포스팅 자동화 등 상상하는 모든 것을 n8n으로 구현할 수 있습니다.
이제 망설이지 말고 여러분만의 아이디어를 n8n으로 시도해보세요. 처음에는 어려울 수 있지만, 워크플로우가 성공적으로 작동하는 순간의 짜릿함은 여러분에게 더 큰 영감을 줄 것입니다. n8n 커뮤니티(공식 포럼, Discord 등)도 활발하니, 궁금한 점이 있다면 언제든지 도움을 요청해보세요!
지금 바로 n8n을 활용하여 반복적인 업무에서 벗어나 진정한 생산성을 경험하세요! 💪