<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>홈서버/셀프호스팅 Archives - Prsm Studio</title>
	<atom:link href="https://prsm-studio.com/category/%ED%99%88%EC%84%9C%EB%B2%84-%EC%85%80%ED%94%84%ED%98%B8%EC%8A%A4%ED%8C%85/feed/" rel="self" type="application/rss+xml" />
	<link>https://prsm-studio.com/category/홈서버-셀프호스팅/</link>
	<description>automation · homeserver · side projects · game · gadgets · play</description>
	<lastBuildDate>Mon, 20 Apr 2026 23:48:52 +0000</lastBuildDate>
	<language>ko-KR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://prsm-studio.com/wp-content/uploads/2026/03/ic_launcher-playstore-150x150.png</url>
	<title>홈서버/셀프호스팅 Archives - Prsm Studio</title>
	<link>https://prsm-studio.com/category/홈서버-셀프호스팅/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>[컴퓨터 놀이] 코알못도 했다! 나만의 홈서버 구축기 (9) — 회의록 자동화에 도전했다가 케이스별로 다 망한 이야기</title>
		<link>https://prsm-studio.com/code-illiterate-home-server-build-9-meeting-transcribe-failures/</link>
					<comments>https://prsm-studio.com/code-illiterate-home-server-build-9-meeting-transcribe-failures/#respond</comments>
		
		<dc:creator><![CDATA[Toaster]]></dc:creator>
		<pubDate>Mon, 20 Apr 2026 09:01:08 +0000</pubDate>
				<category><![CDATA[컴퓨터 놀이]]></category>
		<category><![CDATA[홈서버/셀프호스팅]]></category>
		<category><![CDATA[AI 회의록]]></category>
		<category><![CDATA[Google Meet]]></category>
		<category><![CDATA[Microsoft Teams]]></category>
		<category><![CDATA[Notta 대안]]></category>
		<category><![CDATA[Webex]]></category>
		<category><![CDATA[바이브 코딩]]></category>
		<category><![CDATA[셀프호스팅]]></category>
		<category><![CDATA[홈서버]]></category>
		<category><![CDATA[회의 자동화]]></category>
		<category><![CDATA[회의록]]></category>
		<guid isPermaLink="false">https://prsm-studio.com/?p=921</guid>

					<description><![CDATA[<p>Notta 1년 구독 만료가 다가와서 회의록 봇을 직접 만들어봤는데 4단계 모두 막힌 솔직 기록. 회의실 입장 (Google Meet 포기, Teams CAPTCHA, Webex iframe), 0KB 빈 녹음, 참석자 이름 입력 단계 누락, Gemini Flash 회의록 품질. 당분간은 Notta 의지하면서 계속 고치는 중.</p>
<p>The post <a href="https://prsm-studio.com/code-illiterate-home-server-build-9-meeting-transcribe-failures/">[컴퓨터 놀이] 코알못도 했다! 나만의 홈서버 구축기 (9) — 회의록 자동화에 도전했다가 케이스별로 다 망한 이야기</a> appeared first on <a href="https://prsm-studio.com">Prsm Studio</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>회의 끝나고 회의록 정리하는 거, 진짜 시간 잡아먹잖아요. 한 시간 회의면 정리하는 데 또 한 시간.</p>
<p>그래서 저는 <strong>Notta</strong>라는 회의록 SaaS를 1년 구독해서 쓰고 있었습니다. 정말 편해요. 근데 만료일이 다가오는데, 또 1년치 결제하기엔 돈이 아까워서&#8230;</p>
<p><strong>&#8220;AI가 회의 들어와서 알아서 회의록 써주면 안 되나? 내 홈서버에 그냥 만들어버리면?&#8221;</strong></p>
<p>이 생각으로 만들기 시작했습니다. <strong>결과부터 말하면 아직 한 번도 깔끔하게 작동한 적 없습니다.</strong> 케이스별로 어디서 막혔는지 솔직하게 정리합니다.</p>
<hr>
<h2>시도한 것: &#8220;회의록 봇&#8221;</h2>
<p>원하는 그림은 이거였어요.</p>
<pre><code>1. 회의 링크를 봇한테 던진다
2. 봇이 회의실에 알아서 들어간다
3. 회의 끝나면 회의록이 톡으로 온다</code></pre>
<p>지원 플랫폼은 <strong>Google Meet, Microsoft Teams, Cisco Webex</strong> 셋. (Zoom은 코드는 있지만 제가 안 써서 검증 못 했습니다.)</p>
<hr>
<h2>망한 케이스 1: 회의실에 못 들어감</h2>
<p>가장 먼저 부딪힌 벽. 플랫폼마다 입장 방식이 달라서 케이스마다 다른 문제가 터집니다.</p>
<p><figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="1024" src="https://prsm-studio.com/wp-content/uploads/2026/04/wiki-Google-Meet-3.png" alt="This is the Google Meet icon." class="wp-image-936" srcset="https://prsm-studio.com/wp-content/uploads/2026/04/wiki-Google-Meet-3.png 1024w, https://prsm-studio.com/wp-content/uploads/2026/04/wiki-Google-Meet-3-300x300.png 300w, https://prsm-studio.com/wp-content/uploads/2026/04/wiki-Google-Meet-3-150x150.png 150w, https://prsm-studio.com/wp-content/uploads/2026/04/wiki-Google-Meet-3-768x768.png 768w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Unknown authorUnknown author / Wikimedia Commons (Public domain)</figcaption></figure>
</p>
<h3>Google Meet — 조직 외부 사용자 차단</h3>
<p>회사가 Google Workspace를 쓰면 외부 봇은 그냥 차단됩니다. &#8220;조직 외부 사용자는 입장할 수 없습니다.&#8221; 한 줄로 끝.</p>
<p>해결 방법은 <strong>봇이 내 Google 계정으로 로그인</strong>해서 들어가는 것. 한 번 로그인해두면 <strong>쿠키</strong>(<em>브라우저가 &#8220;이 사람 누군지 안다&#8221;고 기억하는 작은 정보</em>)가 저장되고, 다음부터는 봇이 그 정보를 들고 입장하는 식이에요.</p>
<p>근데 회사 Google 계정을 봇한테 연동시키는 게 부담스럽더라고요. 보안상 찜찜하기도 하고, 2단계 인증(<em>휴대폰 인증번호 입력하는 그거</em>)도 매번 걸리고. <strong>그래서 Google Meet은 그냥 포기했어요.</strong> 회사 회의 대부분이 Meet인데도.</p>
<p><figure class="wp-block-image size-large"><img decoding="async" width="528" height="398" src="https://prsm-studio.com/wp-content/uploads/2026/04/wiki-Microsoft-Teams-3.jpg" alt="Logo of Microsoft Teams" class="wp-image-937" srcset="https://prsm-studio.com/wp-content/uploads/2026/04/wiki-Microsoft-Teams-3.jpg 528w, https://prsm-studio.com/wp-content/uploads/2026/04/wiki-Microsoft-Teams-3-300x226.jpg 300w" sizes="(max-width: 528px) 100vw, 528px" /><figcaption>Microsoft / Wikimedia Commons (CC BY-SA 4.0)</figcaption></figure>
</p>
<h3>Teams — CAPTCHA 등장</h3>
<p>&#8220;보이는 대로 문자를 입력하세요.&#8221; 그 <strong>CAPTCHA</strong>(<em>웹사이트가 &#8220;너 사람 맞아?&#8221; 확인할 때 비뚤어진 글자 보여주는 거</em>). 봇이 입장하려고 하면 100% 뜹니다.</p>
<p>해결책: <strong>Gemini Vision</strong>(<em>이미지 보고 글자 읽어주는 AI</em>)으로 CAPTCHA 이미지를 읽어서 자동 입력. 첫 시도가 안 풀리면 새로고침 누르고 다시 읽음. 3번까지 시도하고 그래도 안 되면 포기.</p>
<p>이걸 코드로 박아두긴 했는데, 한 번씩 Gemini가 엉뚱한 글자 읽어서 실패합니다. 매끄럽지 않음.</p>
<p><figure class="wp-block-image size-large"><img decoding="async" width="1280" height="487" src="https://prsm-studio.com/wp-content/uploads/2026/04/wiki-Cisco-Webex-3.png" alt="The logo of Webex by Cisco – American web conferencing and videoconferencing company by Cisco System" class="wp-image-938" srcset="https://prsm-studio.com/wp-content/uploads/2026/04/wiki-Cisco-Webex-3.png 1280w, https://prsm-studio.com/wp-content/uploads/2026/04/wiki-Cisco-Webex-3-300x114.png 300w, https://prsm-studio.com/wp-content/uploads/2026/04/wiki-Cisco-Webex-3-1024x390.png 1024w, https://prsm-studio.com/wp-content/uploads/2026/04/wiki-Cisco-Webex-3-768x292.png 768w" sizes="(max-width: 1280px) 100vw, 1280px" /><figcaption>Cisco / Wikimedia Commons (Public domain)</figcaption></figure>
</p>
<h3>Webex — 모든 게 액자 속 액자</h3>
<p>Webex는 회의 화면 전체가 <strong>iframe</strong>(<em>웹페이지 안에 또 다른 웹페이지가 통째로 들어있는 구조 — 액자 속 액자라고 생각하면 됨</em>) 안에서 돌아갑니다. 봇이 바깥 페이지에서 &#8220;마이크 켜기&#8221; 버튼을 찾아도 안 보임. 액자 안으로 들어가야 보임.</p>
<p>이거 디버깅하느라 단계별로 화면 캡처 떠보는 코드를 5개 박았어요. (&#8220;액자 잡았나?&#8221; → &#8220;액자 너무 늦게 떠서 또 시도해보자&#8221; → &#8220;아직도 안 떠? 한 번 더&#8230;&#8221; 식으로). 액자 로딩 실패하면 다른 방법 시도, 그것도 실패하면 또 다른 방법. 우회 코드를 케이스마다 덧붙이는 중입니다.</p>
<h3>공통: 호스트 승인 5분 타임아웃</h3>
<p>위 다 통과해도 <strong>대기실에 떨어집니다</strong>. 호스트가 &#8220;수락&#8221; 눌러줘야 입장.</p>
<p>봇 코드는 5분 동안 기다리고 그래도 안 들어가지면 포기합니다. 호스트가 회의 5분 늦게 시작하면? 봇은 이미 나가고 없음. 다시 보내야 함.</p>
<p><strong>현상 요약:</strong> &#8220;봇 보냈는데 회의 끝나고도 봇이 안 들어왔다고 톡 옴.&#8221;</p>
<hr>
<h2>망한 케이스 2: 녹음이 0KB 파일로 저장됨</h2>
<p>이건 가장 자주 일어났어요.</p>
<p>봇이 회의에 입장은 했고, 봇 화면에선 &#8220;녹음 중&#8221; 표시도 떠요. 근데 회의 끝나고 받은 녹음 파일이 <strong>0초짜리 빈 파일</strong>입니다.</p>
<p>원인은 음성을 가로채는 방식 때문. 봇은 회의 화면 안쪽에 <strong>&#8220;음성 흐름에 끼어드는 작은 갈고리&#8221;</strong>(<em>개발 용어로 &#8220;후크&#8221; — 낚싯바늘처럼 지나가는 데이터를 낚아채는 코드</em>)를 걸어서 녹음합니다. 근데 회의 사이트들이 화면 구조를 자주 바꿔서, 갈고리가 엉뚱한 데 걸려서 아무 데이터도 못 잡아오는 경우가 생겨요. 그러면 봇은 &#8220;녹음 잘 되고 있어요!&#8221; 보고하는데 실제 녹음은 0초.</p>
<p>몇 번을 당하고 <strong>예비 동작</strong>(<em>1번 방법이 실패하면 자동으로 2번 방법 시도</em>)을 넣었는데, 그래도 가끔 빈 파일 받습니다.</p>
<p><strong>현상 요약:</strong> &#8220;한 시간 회의 끝나고 톡 받았는데 0KB. 녹음한 줄 알았더니 처음부터 0이었음.&#8221;</p>
<hr>
<h2>망한 케이스 3: 참석자 이름을 입력할 틈이 없었음</h2>
<p>이게 한참 묵힌 문제였어요.</p>
<p>회의록의 핵심은 <strong>누가 무슨 말을 했는지</strong>잖아요. 봇이 자동으로 화면에서 발화자 이름을 읽긴 하는데, 카메라 끈 사람이나 봇이 못 보는 화면 구성이면 이름이 안 잡힙니다.</p>
<p>그래서 회의 끝나고 사람이 직접 이름을 보충해줘야 하는데, <strong>예전 버전엔 그 단계가 아예 없었어요.</strong> 봇이 회의 끝나면 바로 회의록 생성하고 끝. 이름 잘못 들어간 채로 끝나면 다시 어떻게 못 함.</p>
<p>최근에야 <strong>&#8220;회의 끝나고 참가자 명단 넣으면 회의록 다시 생성&#8221;</strong> 흐름을 추가했습니다. 봇이 끝나면 일단 멈추고, 내가 톡으로 &#8220;참가자는 김과장, 이대리야&#8221; 보내면 그제야 회의록을 만드는 식.</p>
<p>근데 <strong>이 고침을 제대로 테스트해보질 못했어요.</strong> 위 케이스 2번 (녹음 0KB)이 Webex에서 자주 터져서, 그걸 먼저 못 잡으면 회의록 자체가 안 만들어지니까 이름 보충 기능을 검증할 수가 없습니다.</p>
<p><strong>현상 요약:</strong> &#8220;한 군데 고치니 다른 데가 막혀서 새 기능 테스트도 못 하는 중.&#8221;</p>
<hr>
<h2>망한 케이스 4: 그나마 받아본 회의록도 별로</h2>
<p>위 케이스 다 뚫고 <strong>회의록까지 받아본 건 Webex 한 번뿐</strong>입니다. (Google Meet은 포기, Teams는 CAPTCHA 깨도 녹음에서 또 막혀서.) 그 한 번의 회의록 품질도 두 가지 문제가 있었어요.</p>
<p>회의록 만드는 건 <strong>Gemini Flash</strong>(<em>구글에서 만든 무료 AI</em>)한테 시켰습니다.</p>
<h3>1. 글솜씨가 떨어짐</h3>
<p>Gemini Pro로 같은 전사록 돌려보면 회의록이 훨씬 자연스럽고 핵심도 잘 잡습니다. Flash는 무료라 좋긴 한데, 정리한 회의록이 어딘가 어색하고 요점이 흐려요.</p>
<h3>2. 텔레그램에서 글자 표시가 깨져 보임</h3>
<p>Gemini가 회의록을 <strong>마크다운</strong>(<em>&#8220;별 두 개로 감싸면 굵은 글씨&#8221;, &#8220;우물 정자 붙이면 큰 제목&#8221; 같은 약속된 표시법. 노션이나 깃허브가 알아서 변환해주는 그것</em>) 형식으로 출력하는데, 텔레그램은 그걸 알아서 변환해주지 않아요. 그래서 회의록 받으면 화면에 이런 게 그대로 보입니다.</p>
<pre><code>## 결정 사항
- **A안 채택** 함
- ~~B안~~ 보류</code></pre>
<p>읽기 힘들어요. 핵심을 보려고 받은 회의록인데 별표랑 우물정자랑 섞여 있으니 정리 안 된 메모처럼 보입니다.</p>
<p><strong>현상 요약:</strong> &#8220;회의록 자동 생성됐는데 글이 어색하고 마크다운 기호가 그대로 보여서 가독성 X.&#8221;</p>
<hr>
<h2>그래서 지금 어디까지 왔냐</h2>
<p>솔직히 <strong>한 번도 회의 → 자동 회의록까지 깔끔하게 끝까지 간 적 없습니다.</strong> 위 4개 케이스 어딘가에서 매번 막혀요.</p>
<p>지금 우회/수정하고 있는 것들:</p>
<ul>
<li>회의실 입장은 회의별로 수동 승인 + 보조 계정 사용으로 우회 (자동 입장 100% 포기)</li>
<li>녹음 0KB는 WebRTC fallback 로직 계속 보강 중. 여전히 가끔 터짐</li>
<li>참석자 이름 보충 단계는 만들어뒀음. Webex 녹음만 안정되면 검증 가능</li>
<li>회의록 품질은 Gemini Pro로 한번 돌려보고 비용/품질 트레이드오프 보는 중. 텔레그램 출력은 마크다운 → HTML 변환 추가 예정</li>
</ul>
<hr>
<h2>마무리</h2>
<p><strong>완성된 게 없는데 글로 쓰는 이유</strong>는 두 가지입니다.</p>
<ol>
<li>비슷한 거 만들려는 사람한테 &#8220;이런 거 어렵다, 시간 들 각오 해라&#8221; 알려주려고</li>
<li>나중에 진짜 쓸만해졌을 때 &#8220;그때는 다 망했었는데 지금은 이렇게 됐다&#8221; 비교해서 다시 글 쓰려고</li>
</ol>
<p>그래서 <strong>당분간은 Notta의 힘을 빌려가며 일하고</strong>, 회의록 봇은 백그라운드에서 계속 고쳐볼 생각입니다. 직접 만들어보니 Notta가 그 가격 받는 이유를 알겠더라고요. 위 케이스들 하나씩 다 뚫어야 그 수준에 가는 거니까.</p>
<p><strong>쓸만한 수준이 되면 또 한 편 올릴게요.</strong> 4개 케이스가 안정적으로 통과되고, 회의 끝나고 정말로 손 안 대고 회의록 받을 수 있게 됐을 때.</p>
<p>자동화는 한 번에 완성되는 게 아니라, <strong>케이스마다 부딪히고 우회하면서</strong> 천천히 좋아지는 것 같습니다. 코딩 못해도, AI한테 &#8220;이거 왜 안 돼?&#8221; 계속 물어보면서 한 발씩 가는 중이에요.</p>
<p>다음 편은 좀 더 깔끔하게 작동하는 걸로 들고 올게요.</p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fprsm-studio.com%2Fcode-illiterate-home-server-build-9-meeting-transcribe-failures%2F&amp;linkname=%5B%EC%BB%B4%ED%93%A8%ED%84%B0%20%EB%86%80%EC%9D%B4%5D%20%EC%BD%94%EC%95%8C%EB%AA%BB%EB%8F%84%20%ED%96%88%EB%8B%A4%21%20%EB%82%98%EB%A7%8C%EC%9D%98%20%ED%99%88%EC%84%9C%EB%B2%84%20%EA%B5%AC%EC%B6%95%EA%B8%B0%20%289%29%20%E2%80%94%20%ED%9A%8C%EC%9D%98%EB%A1%9D%20%EC%9E%90%EB%8F%99%ED%99%94%EC%97%90%20%EB%8F%84%EC%A0%84%ED%96%88%EB%8B%A4%EA%B0%80%20%EC%BC%80%EC%9D%B4%EC%8A%A4%EB%B3%84%EB%A1%9C%20%EB%8B%A4%20%EB%A7%9D%ED%95%9C%20%EC%9D%B4%EC%95%BC%EA%B8%B0" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_mastodon" href="https://www.addtoany.com/add_to/mastodon?linkurl=https%3A%2F%2Fprsm-studio.com%2Fcode-illiterate-home-server-build-9-meeting-transcribe-failures%2F&amp;linkname=%5B%EC%BB%B4%ED%93%A8%ED%84%B0%20%EB%86%80%EC%9D%B4%5D%20%EC%BD%94%EC%95%8C%EB%AA%BB%EB%8F%84%20%ED%96%88%EB%8B%A4%21%20%EB%82%98%EB%A7%8C%EC%9D%98%20%ED%99%88%EC%84%9C%EB%B2%84%20%EA%B5%AC%EC%B6%95%EA%B8%B0%20%289%29%20%E2%80%94%20%ED%9A%8C%EC%9D%98%EB%A1%9D%20%EC%9E%90%EB%8F%99%ED%99%94%EC%97%90%20%EB%8F%84%EC%A0%84%ED%96%88%EB%8B%A4%EA%B0%80%20%EC%BC%80%EC%9D%B4%EC%8A%A4%EB%B3%84%EB%A1%9C%20%EB%8B%A4%20%EB%A7%9D%ED%95%9C%20%EC%9D%B4%EC%95%BC%EA%B8%B0" title="Mastodon" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fprsm-studio.com%2Fcode-illiterate-home-server-build-9-meeting-transcribe-failures%2F&amp;linkname=%5B%EC%BB%B4%ED%93%A8%ED%84%B0%20%EB%86%80%EC%9D%B4%5D%20%EC%BD%94%EC%95%8C%EB%AA%BB%EB%8F%84%20%ED%96%88%EB%8B%A4%21%20%EB%82%98%EB%A7%8C%EC%9D%98%20%ED%99%88%EC%84%9C%EB%B2%84%20%EA%B5%AC%EC%B6%95%EA%B8%B0%20%289%29%20%E2%80%94%20%ED%9A%8C%EC%9D%98%EB%A1%9D%20%EC%9E%90%EB%8F%99%ED%99%94%EC%97%90%20%EB%8F%84%EC%A0%84%ED%96%88%EB%8B%A4%EA%B0%80%20%EC%BC%80%EC%9D%B4%EC%8A%A4%EB%B3%84%EB%A1%9C%20%EB%8B%A4%20%EB%A7%9D%ED%95%9C%20%EC%9D%B4%EC%95%BC%EA%B8%B0" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fprsm-studio.com%2Fcode-illiterate-home-server-build-9-meeting-transcribe-failures%2F&#038;title=%5B%EC%BB%B4%ED%93%A8%ED%84%B0%20%EB%86%80%EC%9D%B4%5D%20%EC%BD%94%EC%95%8C%EB%AA%BB%EB%8F%84%20%ED%96%88%EB%8B%A4%21%20%EB%82%98%EB%A7%8C%EC%9D%98%20%ED%99%88%EC%84%9C%EB%B2%84%20%EA%B5%AC%EC%B6%95%EA%B8%B0%20%289%29%20%E2%80%94%20%ED%9A%8C%EC%9D%98%EB%A1%9D%20%EC%9E%90%EB%8F%99%ED%99%94%EC%97%90%20%EB%8F%84%EC%A0%84%ED%96%88%EB%8B%A4%EA%B0%80%20%EC%BC%80%EC%9D%B4%EC%8A%A4%EB%B3%84%EB%A1%9C%20%EB%8B%A4%20%EB%A7%9D%ED%95%9C%20%EC%9D%B4%EC%95%BC%EA%B8%B0" data-a2a-url="https://prsm-studio.com/code-illiterate-home-server-build-9-meeting-transcribe-failures/" data-a2a-title="[컴퓨터 놀이] 코알못도 했다! 나만의 홈서버 구축기 (9) — 회의록 자동화에 도전했다가 케이스별로 다 망한 이야기"></a></p><p>The post <a href="https://prsm-studio.com/code-illiterate-home-server-build-9-meeting-transcribe-failures/">[컴퓨터 놀이] 코알못도 했다! 나만의 홈서버 구축기 (9) — 회의록 자동화에 도전했다가 케이스별로 다 망한 이야기</a> appeared first on <a href="https://prsm-studio.com">Prsm Studio</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://prsm-studio.com/code-illiterate-home-server-build-9-meeting-transcribe-failures/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>[컴퓨터 놀이] 코알못도 했다! 나만의 홈서버 구축기 (7) — n8n으로 서버가 알아서 일하게 만들기</title>
		<link>https://prsm-studio.com/code-illiterate-home-server-build-7-n8n-automation/</link>
					<comments>https://prsm-studio.com/code-illiterate-home-server-build-7-n8n-automation/#respond</comments>
		
		<dc:creator><![CDATA[Toaster]]></dc:creator>
		<pubDate>Sun, 15 Mar 2026 09:32:45 +0000</pubDate>
				<category><![CDATA[컴퓨터 놀이]]></category>
		<category><![CDATA[홈서버/셀프호스팅]]></category>
		<category><![CDATA[AI 자동화]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[n8n]]></category>
		<category><![CDATA[Zapier 대안]]></category>
		<category><![CDATA[셀프호스팅]]></category>
		<category><![CDATA[워크플로우]]></category>
		<category><![CDATA[텔레그램 알림]]></category>
		<category><![CDATA[홈서버]]></category>
		<guid isPermaLink="false">https://prsm-studio.com/?p=459</guid>

					<description><![CDATA[<p>홈서버에 n8n을 설치하고 개발일지 Notion 자동 동기화, 블로그 Google 색인 감시, 서버 헬스체크, 모닝 브리핑까지 4가지 실전 자동화 워크플로우를 만든 이야기. Zapier 대신 무료로.</p>
<p>The post <a href="https://prsm-studio.com/code-illiterate-home-server-build-7-n8n-automation/">[컴퓨터 놀이] 코알못도 했다! 나만의 홈서버 구축기 (7) — n8n으로 서버가 알아서 일하게 만들기</a> appeared first on <a href="https://prsm-studio.com">Prsm Studio</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>지난 6편까지 홈서버에 사진 백업(Immich), AI 비서(OpenClaw), 로컬 AI(Ollama), 블로그(WordPress)를 전부 올렸습니다. 이 서비스들, 각각은 잘 돌아갑니다. 근데 매번 손으로 관리하면? 솔직히 귀찮습니다.</p>
<p><strong>&#8220;한번 세팅해놓으면 알아서 돌아가게 하고 싶다.&#8221;</strong></p>
<p>그래서 올린 게 <strong>n8n</strong>입니다. 설치하고 워크플로우 몇 개 만들어놨더니, 이제 서버가 혼자서 일합니다. 저는 텔레그램 알림만 확인하면 됩니다.</p>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="940" height="627" src="https://prsm-studio.com/wp-content/uploads/2026/03/stock-11035393.jpg" alt="IT, 간판, 개념의 무료 스톡 사진" class="wp-image-456" srcset="https://prsm-studio.com/wp-content/uploads/2026/03/stock-11035393.jpg 940w, https://prsm-studio.com/wp-content/uploads/2026/03/stock-11035393-300x200.jpg 300w, https://prsm-studio.com/wp-content/uploads/2026/03/stock-11035393-768x512.jpg 768w" sizes="auto, (max-width: 940px) 100vw, 940px" /><figcaption>Photo by RealToughCandy.com / Pexels</figcaption></figure>
<h2>n8n이 뭔데? 한 줄 요약: 무료 Zapier</h2>
<p><a href="https://n8n.io" target="_blank">n8n</a>(엔에잇엔)은 <strong>비주얼 자동화 도구</strong>입니다. Zapier나 Make(구 Integromat) 써보셨으면 딱 그겁니다. 블록을 끌어다 놓고 선으로 연결하면 자동화 완성. 코드? 한 줄도 필요 없습니다.</p>
<p>다른 점은 딱 하나. <strong>내 서버에서 돌린다는 것.</strong> 그래서 무료이고, 실행 횟수 제한도 없고, 내 데이터가 남의 서버로 안 갑니다.</p>
<table>
<thead>
<tr>
<th></th>
<th>Zapier</th>
<th>n8n (셀프호스팅)</th>
</tr>
</thead>
<tbody>
<tr>
<td>가격</td>
<td>월 $19.99부터</td>
<td><strong>무료</strong></td>
</tr>
<tr>
<td>실행 제한</td>
<td>100~750회/월</td>
<td><strong>무제한</strong></td>
</tr>
<tr>
<td>내 데이터</td>
<td>Zapier 서버에 저장</td>
<td><strong>내 서버에만</strong></td>
</tr>
<tr>
<td>연동 서비스</td>
<td>7,000+</td>
<td>400+ (주요 서비스 다 있음)</td>
</tr>
<tr>
<td>UI</td>
<td>매우 쉬움</td>
<td>쉬움 (약간의 학습)</td>
</tr>
</tbody>
</table>
<p>홈서버가 이미 있다면 n8n을 안 쓸 이유가 없습니다. Zapier 무료 플랜의 월 100회 제한에 걸려본 적 있다면 더더욱요.</p>
<h2>n8n 설치하기: Docker Compose 한 방</h2>
<p>1편에서 Docker 세팅 다 해놨죠? 그 위에 올리면 됩니다.</p>
<pre><code>services:
  n8n:
    image: n8nio/n8n:latest
    ports:
      - "5678:5678"
    volumes:
      - ./data:/home/node/.n8n
    environment:
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER=admin
      - N8N_BASIC_AUTH_PASSWORD=내비밀번호
    restart: unless-stopped</code></pre>
<p>Claude한테 &#8220;n8n 설치해줘&#8221; 한마디면 이 파일을 만들고 <code>docker compose up -d</code>까지 쳐줍니다. <code>http://서버IP:5678</code>로 접속하면 이런 화면이 나옵니다:</p>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="940" height="627" src="https://prsm-studio.com/wp-content/uploads/2026/03/stock-4955393.jpg" alt="CSS, HTML, IT의 무료 스톡 사진" class="wp-image-457" srcset="https://prsm-studio.com/wp-content/uploads/2026/03/stock-4955393.jpg 940w, https://prsm-studio.com/wp-content/uploads/2026/03/stock-4955393-300x200.jpg 300w, https://prsm-studio.com/wp-content/uploads/2026/03/stock-4955393-768x512.jpg 768w" sizes="auto, (max-width: 940px) 100vw, 940px" /><figcaption>Photo by Godfrey  Atima / Pexels</figcaption></figure>
<p>처음 보면 &#8220;이게 뭐지?&#8221; 싶습니다. 근데 5분만 만져보세요. 왼쪽 패널에서 노드(블록)를 드래그해서 캔버스에 놓고, 노드끼리 선으로 연결하면 됩니다. 레고 조립이랑 비슷해요.</p>
<h2>실전 워크플로우 ① — 개발 일지를 Notion에 자동 동기화</h2>
<p>저는 Prsm이라는 통화 정리 앱을 만들고 있습니다. (코알못이 앱을 만든다고? 네, AI한테 시키면 됩니다. 이건 나중에 따로 쓸게요.) 매일 개발 진행 상황을 GitHub에 기록하는데, 이걸 Notion에도 정리하고 싶었습니다.</p>
<p><strong>수동으로 하면:</strong></p>
<ol>
<li>GitHub 열기</li>
<li>오늘자 일지 파일 찾기</li>
<li>내용 복사</li>
<li>Notion 열기</li>
<li>Day Log 페이지에 붙여넣기</li>
<li>날짜 태그 달기</li>
</ol>
<p>하루에 5분. 별것 아닌 것 같지만, 한 달이면 2시간 반입니다. 그리고 솔직히 매일 까먹습니다.</p>
<p><strong>n8n으로 자동화한 결과:</strong></p>
<blockquote><p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/23f0.png" alt="⏰" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 매일 밤 11시 → <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4c2.png" alt="📂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> GitHub에서 파일 읽기 → <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4dd.png" alt="📝" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Notion Day Log에 자동 추가</p></blockquote>
<p>노드 3개. 한번 만들어놓으니 매일 밤 알아서 돌아갑니다. <strong>내가 할 일: 없음.</strong> 아침에 Notion 열면 어젯밤 일지가 깔끔하게 정리되어 있습니다.</p>
<h2>실전 워크플로우 ② — 블로그 Google 색인 자동 감시</h2>
<p>블로그 글을 아무리 잘 써도, Google에 색인이 안 되면 검색에 안 나옵니다. 아무도 못 찾는다는 뜻이에요. 특히 새 블로그는 색인이 느려서, 글 올리고 며칠씩 안 잡히는 경우가 흔합니다.</p>
<p>이걸 매번 수동으로 확인하려면? Google Search Console 접속해서 URL 하나하나 검사해야 합니다. 글이 10개면 10번.</p>
<p><strong>n8n이 대신합니다:</strong></p>
<blockquote><p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/23f0.png" alt="⏰" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 12시간마다 자동 실행 → <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f50d.png" alt="🔍" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 발행된 글 URL 목록 가져오기 → <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f50e.png" alt="🔎" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Google 색인 여부 확인 → <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 미색인 발견? → <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4f1.png" alt="📱" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 텔레그램으로 알림</p></blockquote>
<p>&#8220;마스터, 3편이랑 5편이 아직 Google에 안 잡혔어요!&#8221; — 이런 알림이 텔레그램으로 옵니다. 그러면 저는 Search Console에서 색인 요청만 클릭하면 끝.</p>
<h2>실전 워크플로우 ③ — 서버 죽으면 즉시 알림</h2>
<p>홈서버에 서비스가 여러 개 돌아가면, 하나가 슬쩍 죽어도 모릅니다. Immich가 업데이트 후 뻗었는데 하루 넘게 몰랐던 적이 있습니다. 그때 사진 자동 백업이 하루 동안 안 됐어요.</p>
<p><strong>그래서 만든 워크플로우:</strong></p>
<blockquote><p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/23f0.png" alt="⏰" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 주기적 실행 → <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3e5.png" alt="🏥" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Immich 응답 확인 → <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3e5.png" alt="🏥" class="wp-smiley" style="height: 1em; max-height: 1em;" /> OpenClaw 응답 확인 → <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3e5.png" alt="🏥" class="wp-smiley" style="height: 1em; max-height: 1em;" /> WordPress 응답 확인 → <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 하나라도 이상? → <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4f1.png" alt="📱" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 텔레그램 알림</p></blockquote>
<p>이제 서비스 하나가 죽으면 <strong>몇 분 안에</strong> 알림이 옵니다. 실제로 이 워크플로우 세팅한 뒤에 Immich가 한번 더 뻗었는데, 이번엔 10분 만에 발견하고 바로 고쳤습니다. n8n이 24시간 감시해주니까요.</p>
<h2>실전 워크플로우 ④ — 아침 모닝 브리핑 데이터 준비</h2>
<p><a href="/code-illiterate-home-server-build-5-openclaw-telegram-review/">5편</a>에서 소개한 졸개(AI 비서)의 아침 모닝 브리핑 기억하시죠? 매일 아침 7시에 날씨, 뉴스, 금 시세, 일정을 정리해서 텔레그램으로 보내주는 서비스요.</p>
<p>그 브리핑을 만들려면 데이터가 필요합니다. 날씨 API 호출하고, 환율 가져오고, 캘린더 확인하고. 이 데이터 수집을 n8n 스케줄이 매일 아침 6시 50분에 자동으로 해놓습니다. 7시에 졸개가 데이터를 받아서 요약하고, 텔레그램으로 쏴줍니다.</p>
<p><strong>내 아침 루틴:</strong> 눈 뜨고 → 텔레그램 열고 → 오늘 날씨랑 뉴스 확인. 끝. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2615.png" alt="☕" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h2>자동화 전과 후</h2>
<table>
<thead>
<tr>
<th>작업</th>
<th>자동화 전</th>
<th>자동화 후</th>
</tr>
</thead>
<tbody>
<tr>
<td>개발일지 Notion 동기화</td>
<td>매일 5분, 자주 까먹음</td>
<td>자동 (0분)</td>
</tr>
<tr>
<td>블로그 색인 확인</td>
<td>수동 검색, 귀찮아서 안 함</td>
<td>12시간마다 자동, 알림만 확인</td>
</tr>
<tr>
<td>서버 상태 확인</td>
<td>문제 생겨야 알게 됨</td>
<td>죽으면 즉시 알림</td>
</tr>
<tr>
<td>모닝 브리핑</td>
<td>직접 뉴스 검색</td>
<td>아침에 텔레그램만 확인</td>
</tr>
</tbody>
</table>
<p>시간 절약도 좋지만, 진짜 좋은 건 <strong>마음이 편해진다</strong>는 겁니다. &#8220;서버 괜찮나?&#8221;, &#8220;색인 됐나?&#8221;, &#8220;일지 옮겼나?&#8221; — 이런 자잘한 걱정을 안 해도 됩니다. 다 n8n이 지켜보고 있으니까요.</p>
<h2>n8n 셀프호스팅 비용 정리</h2>
<p>정리해봅시다.</p>
<table>
<thead>
<tr>
<th>항목</th>
<th>Zapier 사용 시</th>
<th>n8n 셀프호스팅</th>
</tr>
</thead>
<tbody>
<tr>
<td>월 구독료</td>
<td>$19.99 (약 ₩27,000)</td>
<td><strong>₩0</strong></td>
</tr>
<tr>
<td>연간 비용</td>
<td>약 ₩324,000</td>
<td><strong>₩0</strong></td>
</tr>
<tr>
<td>추가 전기세</td>
<td>없음</td>
<td>거의 없음 (서버 이미 24시간 가동 중)</td>
</tr>
</tbody>
</table>
<p>n8n은 가벼워서 서버 리소스를 거의 안 먹습니다. Immich나 Ollama에 비하면 티도 안 나요. 이미 서버가 돌아가고 있으니 추가 전기세도 사실상 0원입니다.</p>
<h2>초보자가 주의할 점</h2>
<p>다 좋지만, 솔직하게 주의사항도 적습니다.</p>
<ul>
<li><strong>워크플로우 이름을 잘 붙이세요.</strong> &#8220;My Workflow 1&#8221;, &#8220;New Workflow&#8221; 이런 식으로 놔두면 10개 넘어갈 때 뭐가 뭔지 모릅니다. &#8220;Prsm → Notion 동기화&#8221;, &#8220;서버 헬스체크&#8221; 이렇게 구체적으로.</li>
<li><strong>에러 알림 노드를 꼭 추가하세요.</strong> API가 일시적으로 안 되거나 서비스가 바뀌면 워크플로우가 조용히 실패합니다. 에러 발생 시 텔레그램 알림 보내는 노드를 마지막에 연결해두면 안심입니다.</li>
<li><strong>외부 접근 차단.</strong> n8n에는 Notion 토큰, GitHub 토큰 같은 민감한 정보가 저장됩니다. 방화벽으로 외부 접근을 꼭 막으세요. 저는 <a href="/code-illiterate-home-server-build-1-ser9-max-wsl2-docker/">1편</a>에서 iptables로 다 막아놨습니다.</li>
</ul>
<h2>다음 편 예고</h2>
<p>서버에 자동화까지 올렸으니, 이제 진짜 <strong>업무에 바로 쓰이는 기능</strong>을 만들어봅니다.</p>
<p>다음 편에서는:</p>
<ul>
<li><strong>통화 녹음 자동 전사</strong> — 전화 끝나면 텍스트로 자동 변환</li>
<li><strong>회의록 AI 자동 생성</strong> — Google Meet, Zoom 회의 내용을 AI가 요약 정리</li>
<li><strong>Whisper</strong> — OpenAI가 만든 음성인식 AI를 내 서버에서 무료로</li>
<li>제조업 현장에서 <strong>통화 한 통이 곧 업무 기록이 되는</strong> 이야기</li>
</ul>
<p>코알못이 AI 비서에 이어 AI 속기사까지 만든 이야기, 기대해주세요.</p>
<p><em>이 글은 AI(Claude Code)가 작성하고, 코알못 인간이 감수했습니다.</em> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f916.png" alt="🤖" class="wp-smiley" style="height: 1em; max-height: 1em;" /><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2728.png" alt="✨" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fprsm-studio.com%2Fcode-illiterate-home-server-build-7-n8n-automation%2F&amp;linkname=%5B%EC%BB%B4%ED%93%A8%ED%84%B0%20%EB%86%80%EC%9D%B4%5D%20%EC%BD%94%EC%95%8C%EB%AA%BB%EB%8F%84%20%ED%96%88%EB%8B%A4%21%20%EB%82%98%EB%A7%8C%EC%9D%98%20%ED%99%88%EC%84%9C%EB%B2%84%20%EA%B5%AC%EC%B6%95%EA%B8%B0%20%287%29%20%E2%80%94%20n8n%EC%9C%BC%EB%A1%9C%20%EC%84%9C%EB%B2%84%EA%B0%80%20%EC%95%8C%EC%95%84%EC%84%9C%20%EC%9D%BC%ED%95%98%EA%B2%8C%20%EB%A7%8C%EB%93%A4%EA%B8%B0" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_mastodon" href="https://www.addtoany.com/add_to/mastodon?linkurl=https%3A%2F%2Fprsm-studio.com%2Fcode-illiterate-home-server-build-7-n8n-automation%2F&amp;linkname=%5B%EC%BB%B4%ED%93%A8%ED%84%B0%20%EB%86%80%EC%9D%B4%5D%20%EC%BD%94%EC%95%8C%EB%AA%BB%EB%8F%84%20%ED%96%88%EB%8B%A4%21%20%EB%82%98%EB%A7%8C%EC%9D%98%20%ED%99%88%EC%84%9C%EB%B2%84%20%EA%B5%AC%EC%B6%95%EA%B8%B0%20%287%29%20%E2%80%94%20n8n%EC%9C%BC%EB%A1%9C%20%EC%84%9C%EB%B2%84%EA%B0%80%20%EC%95%8C%EC%95%84%EC%84%9C%20%EC%9D%BC%ED%95%98%EA%B2%8C%20%EB%A7%8C%EB%93%A4%EA%B8%B0" title="Mastodon" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fprsm-studio.com%2Fcode-illiterate-home-server-build-7-n8n-automation%2F&amp;linkname=%5B%EC%BB%B4%ED%93%A8%ED%84%B0%20%EB%86%80%EC%9D%B4%5D%20%EC%BD%94%EC%95%8C%EB%AA%BB%EB%8F%84%20%ED%96%88%EB%8B%A4%21%20%EB%82%98%EB%A7%8C%EC%9D%98%20%ED%99%88%EC%84%9C%EB%B2%84%20%EA%B5%AC%EC%B6%95%EA%B8%B0%20%287%29%20%E2%80%94%20n8n%EC%9C%BC%EB%A1%9C%20%EC%84%9C%EB%B2%84%EA%B0%80%20%EC%95%8C%EC%95%84%EC%84%9C%20%EC%9D%BC%ED%95%98%EA%B2%8C%20%EB%A7%8C%EB%93%A4%EA%B8%B0" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fprsm-studio.com%2Fcode-illiterate-home-server-build-7-n8n-automation%2F&#038;title=%5B%EC%BB%B4%ED%93%A8%ED%84%B0%20%EB%86%80%EC%9D%B4%5D%20%EC%BD%94%EC%95%8C%EB%AA%BB%EB%8F%84%20%ED%96%88%EB%8B%A4%21%20%EB%82%98%EB%A7%8C%EC%9D%98%20%ED%99%88%EC%84%9C%EB%B2%84%20%EA%B5%AC%EC%B6%95%EA%B8%B0%20%287%29%20%E2%80%94%20n8n%EC%9C%BC%EB%A1%9C%20%EC%84%9C%EB%B2%84%EA%B0%80%20%EC%95%8C%EC%95%84%EC%84%9C%20%EC%9D%BC%ED%95%98%EA%B2%8C%20%EB%A7%8C%EB%93%A4%EA%B8%B0" data-a2a-url="https://prsm-studio.com/code-illiterate-home-server-build-7-n8n-automation/" data-a2a-title="[컴퓨터 놀이] 코알못도 했다! 나만의 홈서버 구축기 (7) — n8n으로 서버가 알아서 일하게 만들기"></a></p><p>The post <a href="https://prsm-studio.com/code-illiterate-home-server-build-7-n8n-automation/">[컴퓨터 놀이] 코알못도 했다! 나만의 홈서버 구축기 (7) — n8n으로 서버가 알아서 일하게 만들기</a> appeared first on <a href="https://prsm-studio.com">Prsm Studio</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://prsm-studio.com/code-illiterate-home-server-build-7-n8n-automation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
