n8n을 Docker로 설치하고 Ollama 또는 LM Studio의 로컬 AI와 연결해 간단한 자동화 비서를 만드는 방법을 설명합니다. 트리거, 노드, 에러 처리, credential 관리 원칙까지 초보자 기준으로 정리합니다.
지금까지는 사람이 직접 AI에게 물었습니다. OpenWebUI를 열고, 질문을 입력하고, 답을 읽었습니다.
이제 한 단계 더 갑니다.
"매일 아침 자동으로 정리해줘."
"새 파일이 들어오면 요약해줘."
"정해진 시간에 로컬 AI를 불러서 결과를 남겨줘."
이런 일을 하려면 대화 화면만으로는 부족합니다. 반복 작업을 실행하는 자동화 엔진이 필요합니다. 여기서 n8n이 등장합니다.
1. n8n은 무엇인가

n8n은 workflow automation 도구입니다. 어려운 말 같지만 구조는 단순합니다.
트리거가 발생한다
-> 데이터를 가져온다
-> 조건을 확인한다
-> AI에게 보낸다
-> 결과를 저장하거나 메시지로 보낸다
여기서 각각의 작업을 node라고 부릅니다. 시간 예약, 웹훅, HTTP 요청, 파일 처리, 메일, 메신저, 데이터베이스 같은 것들이 node로 연결됩니다.
로컬 AI와 붙이면 이런 일이 가능합니다.
- 매일 아침 할 일 목록을 정리하기
- RSS나 뉴스 제목을 요약하기
- 특정 폴더의 텍스트를 요약하기
- 고객 문의 초안을 분류하기
- 블로그 아이디어를 초안 형태로 정리하기
중요한 것은 "AI가 자동으로 모든 걸 한다"가 아닙니다. n8n은 반복적인 흐름을 만들고, 로컬 AI는 그 흐름 안에서 텍스트 판단과 요약을 맡습니다.
2. 설치는 Docker로 시작
공식 문서 기준으로 n8n은 self-hosting에 Docker를 많이 권장합니다. 데이터가 날아가지 않도록 volume을 잡는 것이 중요합니다.
예시는 다음 구조입니다.
docker volume create n8n_data
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-e GENERIC_TIMEZONE="<YOUR_TIMEZONE>" \
-e TZ="<YOUR_TIMEZONE>" \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n
한국에서 개인 테스트를 한다면 timezone은 보통 Asia/Seoul을 씁니다. 운영 환경에서는 Compose 파일로 정리하는 편이 낫지만, 첫 실습은 단일 Docker 실행으로 충분합니다.
브라우저에서 접속합니다.
http://localhost:5678
처음 계정은 강한 비밀번호로 만듭니다. 공개 글에는 실제 비밀번호 예시를 쓰지 않습니다.
3. 로컬 AI와 연결하는 방식

n8n에서 로컬 AI를 부르는 가장 기본적인 방법은 HTTP Request node입니다.
예를 들어 Ollama가 로컬에서 실행 중이라면 기본 API 주소는 다음 계열입니다.
http://localhost:11434/api
다만 n8n이 Docker 컨테이너 안에서 돌고 있다면 localhost가 호스트 PC가 아니라 n8n 컨테이너 자신을 가리킬 수 있습니다. 이 경우 Docker 환경에 맞는 host 주소를 써야 합니다.
LM Studio도 비슷합니다. LM Studio에서 local server를 켜고, 앱이 보여주는 endpoint를 n8n의 HTTP Request node에서 호출합니다.
4. 첫 자동화: 매일 아침 요약 비서
처음 만들 workflow는 단순해야 합니다.
추천 흐름:
Schedule Trigger
-> Set node: 오늘 정리할 텍스트 입력
-> HTTP Request: 로컬 AI 호출
-> 결과 저장 또는 화면 확인
처음부터 Gmail, Telegram, Slack을 붙이지 마세요. 외부 서비스 credential이 들어가면 실패 지점이 늘어납니다. 먼저 n8n 안에서 실행 결과가 나오는지 확인합니다.
프롬프트 예시는 이 정도로 충분합니다.
아래 할 일 목록을 중요도 순서로 정리하고, 오늘 바로 할 일 3개만 골라줘.
<할 일 목록>
여기서 <할 일 목록>은 실제 개인 정보를 넣기 전에 테스트용 문장으로 시작합니다.
5. 두 번째 자동화: 문서 요약

다음은 파일이나 긴 텍스트를 요약하는 흐름입니다.
Manual Trigger
-> Read/Set text
-> 로컬 AI 요약
-> Markdown 결과 저장
이 단계에서 로컬 AI의 장점이 드러납니다. 개인 메모나 내부 초안을 외부 API로 보내지 않고 1차 요약할 수 있기 때문입니다.
물론 로컬이라고 무조건 안전한 것은 아닙니다. n8n 데이터 폴더, 실행 로그, 백업 위치를 함께 관리해야 합니다.
6. 세 번째 자동화: 블로그 아이디어 정리
이 시리즈의 실제 목표와도 연결되는 예시입니다.
Manual Trigger
-> 소재 입력
-> 로컬 AI가 제목 후보 생성
-> 로컬 AI가 목차 생성
-> 사람이 검토
여기서 중요한 것은 마지막 단계입니다. 사람이 검토해야 합니다. 우리가 오늘 겪은 문제처럼, 자동화가 글을 만들어도 품질이 낮으면 발행할 수 없습니다.
n8n은 반복 작업을 줄이는 도구이지, 품질 책임자를 대신하지 않습니다.
7. Credential 원칙

자동화에서 가장 위험한 것은 credential입니다.
Telegram bot token, Gmail credential, Notion token, Slack webhook, WordPress application password 같은 값은 절대 글, 스크린샷, Git 저장소, 로그에 그대로 남기면 안 됩니다.
공개 글에서는 항상 이렇게 씁니다.
<YOUR_TELEGRAM_BOT_TOKEN>
<YOUR_NOTION_TOKEN>
<YOUR_WEBHOOK_URL>
<YOUR_APPLICATION_PASSWORD>
실제 운영에서는 승인된 credential 저장소를 사용하고, n8n 내부 credential 기능 또는 외부 secrets 관리 방식을 검토합니다.
8. 에러 처리
자동화는 한 번 성공했다고 끝이 아닙니다. 실패할 때 조용히 멈추면 더 위험합니다.
최소한 아래를 생각해야 합니다.
- 실패하면 어디에 기록되는가
- 재시도할 것인가
- 같은 작업이 중복 실행되면 문제가 되는가
- AI 응답이 비어 있으면 어떻게 할 것인가
- credential이 만료되면 누가 알 수 있는가
처음에는 복잡한 에러 처리를 넣기보다, 실행 로그를 보고 수동으로 고치는 흐름부터 익히는 것이 좋습니다.
9. 성능 기준
로컬 AI를 n8n에 붙이면 속도 문제가 바로 보입니다. 사람이 대화할 때는 10초 기다릴 수 있지만, 자동화에서 100개 작업을 돌리면 10초가 1000초가 됩니다.
그래서 자동화에는 작은 모델이 더 잘 맞는 경우가 많습니다. 모든 단계에 최고 모델을 쓰지 말고, 단순 분류/요약은 가벼운 모델로 시작하세요.
10. 다음 편 예고
지금까지는 모두 내 컴퓨터 안에서만 움직였습니다. 다음 편에서는 외부 접근을 다룹니다.
하지만 외부 접근은 편리함보다 보안이 먼저입니다. 포트를 열고 도메인을 붙이는 순간, 내 로컬 AI와 n8n은 인터넷의 눈에 보일 수 있습니다.
그래서 에피소드 6은 기능 가이드가 아니라 보안 가이드에 가깝게 진행합니다.
다음 글: 에피소드 6: 외부 접근 완전 정복
참고한 공식 문서
- n8n Docker Installation: https://docs.n8n.io/hosting/installation/docker/
- n8n Server Setups: https://docs.n8n.io/hosting/installation/server-setups/
- n8n External Secrets: https://docs.n8n.io/external-secrets/
- Ollama API: https://docs.ollama.com/api
- LM Studio Local Server: https://lmstudio.ai/docs/developer/core/server


