← List ASASYL
NOTE 2026. 2. 15. • 7 min read

AI와 함께, 나만의 모바일 개인 비서 챗봇 만들기: n8n & Mattermost

Cover

가끔은 이런 생각을 합니다. 이미 편리한 AI 서비스가 넘쳐나는데, 굳이 내가 직접 서버를 세우고 챗봇을 만들어야 할까? ChatGPTGemini 같은 AI는 이미 충분히 강력합니다. 하지만 어느 순간부터 저는 “잘 만들어진 서비스를 사용하는 일”과 “내가 설계한 구조 위에서 AI가 움직이게 하는 일”은 전혀 다르다는 생각을 했습니다. 아마 기능을 소비하는 쪽이 아니라, 구조를 직접 쥐고 있는 쪽이 되고 싶은 것 같아요. 그리고 그 구조 위에서 작동하는, 저만의 모바일 개인 비서를 만들고 싶었습니다.

출발은 단순!

“외부 SaaS에 의존하지 않고,
내 서버에서 돌아가는 AI 챗봇을 만들고 싶어.”

막상 시작하려니 막막했습니다. 어떤 채팅 서버를 써야 하는지, 자동화는 무엇으로 구성해야 하는지, 설치는 얼마나 복잡할지 감이 잡히지 않았습니다. 그래서 AI에게 이렇게 물었습니다.


1. 기술 스택을 정하는 대화

“나만의 서버에 AI 챗봇을 만들고 싶어. 오픈소스 기반이면 좋겠고, Docker로 쉽게 관리하고 싶어. 무엇이 좋을까?”

“채팅 서버로는 Mattermost가 적합합니다. 자동화 도구로는 n8n을 많이 사용합니다. 두 서비스 모두 공식 Docker 이미지를 제공하므로 docker-compose로 함께 관리하기 좋습니다.”

Mattermost는 대화가 오가는 공간을 담당하고, n8n은 이벤트를 받아 처리하는 역할을 합니다. 이 둘을 연결하면, 채팅창에서 특정 명령어를 입력했을 때 AI 모델을 호출하고 그 결과를 다시 채팅방으로 돌려보내는 구조를 만들 수 있습니다. 막연하던 생각이 점점 구체적인 설계로 바뀌기 시작했습니다.


2. “!비서”를 이해하는 구조 만들기

이제 목표는 분명했습니다. Mattermost 채널에서 !비서라고 입력하면 AI가 답하도록 만드는 것입니다. 다시 질문을 던졌습니다.

“사용자가 !비서라고 입력하면 AI가 응답하게 만들려면 어떻게 구성해야해?”

“Webhook → AI Agent → Mattermost 노드 순서로 구성하시면 됩니다.
Mattermost의 외부 웹훅이 요청을 n8n으로 보내고, n8n이 AI 모델을 호출한 뒤 내부 웹훅을 통해 다시 메시지를 전송합니다.”
  • 트리거: Mattermost 외부 웹훅
  • 처리: n8n 워크플로우
  • 생성: AI 모델
  • 응답: Mattermost 내부 웹훅

이 흐름을 이해하고 나면 무엇을 어디에 연결해야 하는지가 명확해집니다. 기능을 붙이는 작업이 아니라 하나의 회로를 설계하는 작업처럼 느껴져서 재미있었습니다.


3. 막힌 흐름과 사소한 전제

챗봇에 mattermost를 연동하는 n8n 워크플로우

AI가 답변을 생성하는 데까지는 성공했습니다. 하지만 채널에는 아무 메시지도 올라오지 않았습니다. 화면에는 “Forbidden”이라는 오류만 남아 있었습니다. 인증 정보는 정상적으로 연결되어 있었기 때문에 더 혼란스러웠습니다.

“AI는 답을 만들었는데 Mattermost로 전송되지 않아.. ‘Forbidden’ 오류야. 무엇을 확인해야해?”

“봇 계정을 해당 채널에 초대하셨나요?
봇도 사용자이기 때문에 채널 멤버가 아니면 메시지를 보낼 수 없습니다.”

아차! 봇을 채널에 초대하자 즉시 메시지가 전송되었습니다. 복잡한 설정 문제라고 생각했지만, 실제로는 권한 구조에 대한 이해가 부족했던 것이었습니다.


4. 진짜 모바일 비서로 가는 마지막 단계

이제 챗봇은 정상적으로 작동했습니다. 하지만 스마트폰 앱을 켜두었을 때만 확인할 수 있었습니다. 앱을 닫으면 아무런 알림도 오지 않았습니다. 이것은 제가 원하던 모습이 아니었습니다. 개인 비서라면 제가 보고 있지 않아도 먼저 알려줘야 했습니다.

“모바일에서 푸시 알림이 오지 않아. 어떻게 설정해야해?”

“Mattermost의 푸시 알림 서버 설정을 활성화했는지 확인해보세요. 또한 서버 PC의 방화벽에서 Docker의 아웃바운드 통신이 허용되어 있는지도 점검해야 합니다.”

설정을 다시 확인하고 방화벽을 조정한 뒤, 스마트폰 화면에 첫 푸시 알림이 도착했습니다(다만 모바일에는 푸시가 꺼져있다는 메세지가 항상 떠 있습니다.. 아오 거슬려!). !비서에 대한 응답이 알림으로 울리는 순간, 단순히 기능이 동작한다는 사실을 넘어, 내가 구성한 구조가 일상 속에서 실제로 작동하고 있다는 실감이 또렷하게 다가왔습니다.


5. AI와 함께 일한다는 것

이번 경험을 통해 분명해진 점이 있습니다. AI는 대신 만들어주는 존재라기보다, 사고를 정리해주는 동반자에 가깝습니다. 질문을 던지면 선택지를 좁혀주고, 막히는 지점에서는 확인해야 할 전제를 짚어줍니다. 덕분에 시행착오의 폭이 줄어들고, 무엇보다 구조를 이해한 상태에서 다음 단계로 나아갈 수 있습니다.

특히 인상적이었던 부분은 이것입니다.
AI는 모든 것을 자동으로 해결해주지 않았습니다. 대신, 제가 직접 설계하고 판단하도록 옆에서 길을 비춰주었습니다. 그 과정 덕분에 시스템은 더 이상 낯선 블랙박스가 아니게 되었습니다. 왜 이 흐름이 이렇게 이어지는지 설명할 수 있게 되었고, 문제가 생겨도 어디를 먼저 살펴봐야 할지 감이 잡히게 되었습니다.


n8n과 mattermost로 구축한 작은 CTO

마치며

머릿속에만 있던 아이디어가 서버 위에서 실제로 돌아가는 시스템이 되는 경험은 생각보다 묵직합니다. 단순히 편리한 기능 하나를 얻는 일이 아니라, 구조를 이해하고 통제할 수 있다는 확신이 따라옵니다.

혹시 아직 실행하지 못한 생각이 있다면, 거창한 준비 대신 질문 하나로 시작해보셔도 좋겠습니다. AI는 완성된 답을 주기보다, 방향을 잡는 데 도움을 주는 존재에 가깝습니다.

어느 날 스마트폰 화면에 !비서의 응답이 울릴 때, 그것은 단순한 알림이 아니라, 내가 설계한 시스템이 제대로 작동하고 있다는 신호로 다가올 것입니다.