<?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>Home Server/Self-hosting Archives - Prsm Studio</title>
	<atom:link href="https://prsm-studio.com/en/category/home-server-self-hosting-en/feed/" rel="self" type="application/rss+xml" />
	<link>https://prsm-studio.com/en/category/home-server-self-hosting-en/</link>
	<description>automation · homeserver · side projects · game · gadgets · play</description>
	<lastBuildDate>Mon, 20 Apr 2026 23:48:51 +0000</lastBuildDate>
	<language>en-US</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>Home Server/Self-hosting Archives - Prsm Studio</title>
	<link>https://prsm-studio.com/en/category/home-server-self-hosting-en/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Even a Code-Illiterate Built It! Home Server Journey (9) — Trying to Automate Meeting Notes, and Failing in Every Single Way</title>
		<link>https://prsm-studio.com/en/code-illiterate-home-server-build-9-meeting-notes-failures/</link>
					<comments>https://prsm-studio.com/en/code-illiterate-home-server-build-9-meeting-notes-failures/#respond</comments>
		
		<dc:creator><![CDATA[Toaster]]></dc:creator>
		<pubDate>Mon, 20 Apr 2026 09:01:10 +0000</pubDate>
				<category><![CDATA[Computer Play]]></category>
		<category><![CDATA[Home Server/Self-hosting]]></category>
		<category><![CDATA[AI meeting notes]]></category>
		<category><![CDATA[Google Meet]]></category>
		<category><![CDATA[Home Server]]></category>
		<category><![CDATA[meeting automation]]></category>
		<category><![CDATA[meeting notes]]></category>
		<category><![CDATA[Microsoft Teams]]></category>
		<category><![CDATA[Notta alternative]]></category>
		<category><![CDATA[self-hosting]]></category>
		<category><![CDATA[vibe coding]]></category>
		<category><![CDATA[Webex]]></category>
		<guid isPermaLink="false">https://prsm-studio.com/?p=943</guid>

					<description><![CDATA[<p>Tried to replace my Notta subscription by building a meeting-notes bot. Got wrecked at all 4 stages — joining the room, 0KB recordings, no attendee-name step, mediocre Gemini Flash output. Still leaning on Notta while patching.</p>
<p>The post <a href="https://prsm-studio.com/en/code-illiterate-home-server-build-9-meeting-notes-failures/">Even a Code-Illiterate Built It! Home Server Journey (9) — Trying to Automate Meeting Notes, and Failing in Every Single Way</a> appeared first on <a href="https://prsm-studio.com/en">Prsm Studio</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Wrapping up meeting notes after a meeting eats time. A one-hour meeting takes another hour to summarize.</p>
<p>So I&#8217;d been using <strong>Notta</strong> — a meeting transcription SaaS — on a yearly subscription. Genuinely useful. But the renewal date was creeping up, and shelling out for another year felt wasteful&#8230;</p>
<p><strong>&#8220;Why not have an AI sit in on the meeting and write the notes? Just throw it on my home server?&#8221;</strong></p>
<p>That&#8217;s the thinking I started with. <strong>Bottom line up front: it has never worked cleanly even once.</strong> Here&#8217;s an honest breakdown of where it broke, case by case.</p>
<hr>
<h2>What I tried: a &#8220;meeting notes bot&#8221;</h2>
<p>The picture I wanted:</p>
<pre><code>1. Throw a meeting link at the bot
2. Bot joins the meeting on its own
3. After the meeting ends, notes show up in chat</code></pre>
<p>Supported platforms: <strong>Google Meet, Microsoft Teams, Cisco Webex</strong>. (Zoom — code&#8217;s there, but I don&#8217;t use it personally so it&#8217;s untested.)</p>
<hr>
<h2>Failure case 1: can&#8217;t get into the meeting room</h2>
<p>The first wall. Each platform has its own way of letting you in, and each one breaks differently.</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-4.png" alt="This is the Google Meet icon." class="wp-image-940" srcset="https://prsm-studio.com/wp-content/uploads/2026/04/wiki-Google-Meet-4.png 1024w, https://prsm-studio.com/wp-content/uploads/2026/04/wiki-Google-Meet-4-300x300.png 300w, https://prsm-studio.com/wp-content/uploads/2026/04/wiki-Google-Meet-4-150x150.png 150w, https://prsm-studio.com/wp-content/uploads/2026/04/wiki-Google-Meet-4-768x768.png 768w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Unknown authorUnknown author / Wikimedia Commons (Public domain)</figcaption></figure>
</p>
<h3>Google Meet — outside-org users blocked</h3>
<p>If a company uses Google Workspace, an external bot is just blocked. &#8220;Users outside the organization can&#8217;t join.&#8221; End of story.</p>
<p>The workaround would be to have <strong>the bot log in with my own Google account</strong>. Once you log in, a <strong>cookie</strong> (<em>a small piece of info the browser uses to remember &#8220;I know who you are&#8221;</em>) gets saved, and the bot uses that to enter from then on.</p>
<p>But hooking my company Google account up to a bot felt sketchy. Security-wise iffy, plus 2-step verification (<em>that thing where you also have to enter a code from your phone</em>) trips it up every time. <strong>So I just gave up on Google Meet.</strong> Even though most of my work meetings are on 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-4.jpg" alt="Logo of Microsoft Teams" class="wp-image-941" srcset="https://prsm-studio.com/wp-content/uploads/2026/04/wiki-Microsoft-Teams-4.jpg 528w, https://prsm-studio.com/wp-content/uploads/2026/04/wiki-Microsoft-Teams-4-300x226.jpg 300w" sizes="(max-width: 528px) 100vw, 528px" /><figcaption>Microsoft / Wikimedia Commons (CC BY-SA 4.0)</figcaption></figure>
</p>
<h3>Teams — CAPTCHA shows up</h3>
<p>&#8220;Type the characters you see.&#8221; That <strong>CAPTCHA</strong> (<em>the thing websites use to check &#8220;are you actually human?&#8221; with distorted text</em>). It pops up 100% of the time the bot tries to join.</p>
<p>The fix: feed the CAPTCHA image to <strong>Gemini Vision</strong> (<em>an AI that can read text out of images</em>) and have it type the answer. If the first attempt fails, refresh and try again. Up to 3 tries, then give up.</p>
<p>I have this coded in, but Gemini occasionally reads the wrong letters. Not smooth.</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-4.png" alt="The logo of Webex by Cisco – American web conferencing and videoconferencing company by Cisco System" class="wp-image-942" srcset="https://prsm-studio.com/wp-content/uploads/2026/04/wiki-Cisco-Webex-4.png 1280w, https://prsm-studio.com/wp-content/uploads/2026/04/wiki-Cisco-Webex-4-300x114.png 300w, https://prsm-studio.com/wp-content/uploads/2026/04/wiki-Cisco-Webex-4-1024x390.png 1024w, https://prsm-studio.com/wp-content/uploads/2026/04/wiki-Cisco-Webex-4-768x292.png 768w" sizes="(max-width: 1280px) 100vw, 1280px" /><figcaption>Cisco / Wikimedia Commons (Public domain)</figcaption></figure>
</p>
<h3>Webex — everything&#8217;s inside a frame-within-a-frame</h3>
<p>Webex runs the entire meeting UI inside an <strong>iframe</strong> (<em>a structure where one full webpage is embedded inside another — think picture-in-picture</em>). When the bot tries to find a &#8220;mute mic&#8221; button on the outer page, it&#8217;s not there. You have to dig into the inner frame.</p>
<p>Debugging this took 5 separate &#8220;snap a screenshot at this step&#8221; hooks in the code. (&#8220;Did we grab the inner frame?&#8221; → &#8220;Inner frame loaded too slow, retry&#8221; → &#8220;Still no inner frame? One more time&#8230;&#8221;). If the frame fails to load, fall back to plan B; if plan B also fails, plan C. I keep adding workaround code per case.</p>
<h3>Common: 5-minute host approval timeout</h3>
<p>Even after all of that, <strong>you land in the lobby</strong>. The host has to click &#8220;Admit&#8221; before you&#8217;re in.</p>
<p>The bot waits up to 5 minutes and then bails. If the host starts the meeting 5 minutes late? The bot&#8217;s already gone. Have to send it again.</p>
<p><strong>What it looks like in practice:</strong> &#8220;Sent the bot, the meeting ended, and I got a chat saying it never made it in.&#8221;</p>
<hr>
<h2>Failure case 2: recording saved as a 0KB file</h2>
<p>This is the one that happened most often.</p>
<p>The bot got into the meeting. The bot&#8217;s status said &#8220;Recording.&#8221; But the file I got back after the meeting? <strong>A zero-second empty file.</strong></p>
<p>Cause: how the audio is captured. The bot drops <strong>a tiny &#8220;hook&#8221; into the audio stream</strong> (<em>&#8220;hook&#8221; in the dev sense — code that latches onto data flowing past, like a fishing line</em>) inside the meeting page to record. But meeting sites change their internal structure constantly, so the hook lands in the wrong spot and pulls in nothing. The bot reports &#8220;recording started!&#8221; while the actual file is 0 seconds long.</p>
<p>After eating this a few times I added <strong>a backup move</strong> (<em>if plan A fails, automatically try plan B</em>). It still hands me empty files now and then.</p>
<p><strong>What it looks like in practice:</strong> &#8220;Hour-long meeting wraps up, chat pings me — file is 0KB. Thought it was recording. It was 0 from the start.&#8221;</p>
<hr>
<h2>Failure case 3: no place to type in attendee names</h2>
<p>This problem sat unfixed for a long time.</p>
<p>The whole point of meeting notes is <strong>who said what</strong>. The bot does try to read speaker names off the screen automatically, but if someone has their camera off or the layout changes in a way the bot can&#8217;t see, the name doesn&#8217;t get caught.</p>
<p>So a human has to fill in names afterward. <strong>The old version had no step for that at all.</strong> Bot ends meeting → instantly generates notes → done. If a name was wrong, no recovery.</p>
<p>I recently added a flow where, after the meeting, the bot pauses and waits for me to chat back the attendee list (&#8220;attendees are Mr. Kim and Ms. Lee&#8221;), and only then generates the notes.</p>
<p>But <strong>I haven&#8217;t actually tested this fix.</strong> Case 2 above (the 0KB recording) keeps blowing up on Webex, and if there&#8217;s no recording there&#8217;s no notes to attach names to — so the new feature can&#8217;t be verified.</p>
<p><strong>What it looks like in practice:</strong> &#8220;Fixed one thing, but something else is broken downstream so I can&#8217;t even test the new feature.&#8221;</p>
<hr>
<h2>Failure case 4: the one set of notes I did get back was mediocre</h2>
<p>After clearing all the above, <strong>I&#8217;ve actually received meeting notes exactly once — from Webex.</strong> (Meet: gave up. Teams: CAPTCHA solved but the recording broke after.) That single set of notes had two problems.</p>
<p>I had <strong>Gemini Flash</strong> (<em>Google&#8217;s free AI</em>) generate the notes.</p>
<h3>1. The writing quality is meh</h3>
<p>Run the same transcript through Gemini Pro and the notes come out much more natural, with the key points actually surfaced. Flash is free, which is great, but the notes feel awkward and the gist gets blurred.</p>
<h3>2. Markdown shows up raw in Telegram</h3>
<p>Gemini outputs notes in <strong>Markdown</strong> (<em>a convention where &#8220;two asterisks = bold&#8221;, &#8220;hash = heading&#8221;, etc. The format Notion or GitHub silently renders for you</em>), but Telegram doesn&#8217;t render it. So I get this on screen:</p>
<pre><code>## Decisions
- **Option A approved**
- ~~Option B~~ on hold</code></pre>
<p>Hard to read. I asked for clean notes; what I get looks like raw scribbles with asterisks and hash marks.</p>
<p><strong>What it looks like in practice:</strong> &#8220;Notes generated, but the writing&#8217;s awkward and Markdown symbols sit there raw. Not readable.&#8221;</p>
<hr>
<h2>So where am I now</h2>
<p>Honestly, <strong>I have never had a meeting → automatic notes flow run end-to-end cleanly.</strong> One of the four failure modes above hits every single time.</p>
<p>What I&#8217;m currently working around / fixing:</p>
<ul>
<li>Joining meetings: I gave up on full automation entirely. Manual approval per meeting + secondary account.</li>
<li>0KB recordings: still patching the audio-capture fallback. Still drops files occasionally.</li>
<li>Attendee-name step: built. Just need Webex recording to stabilize before I can verify it.</li>
<li>Notes quality: trying Gemini Pro and weighing cost vs. quality. Planning to add Markdown → HTML conversion before sending to Telegram.</li>
</ul>
<hr>
<h2>Wrapping up</h2>
<p><strong>Why write this if nothing&#8217;s actually finished?</strong> Two reasons.</p>
<ol>
<li>To give anyone trying to build the same thing a heads-up: &#8220;this is harder than it looks, plan for the time.&#8221;</li>
<li>So that later, when it actually works, I can write a &#8220;back then it was all broken, now it looks like this&#8221; follow-up.</li>
</ol>
<p>For now, <strong>I&#8217;m leaning on Notta to get through actual work</strong>, and pushing on the meeting bot in the background. Building it from scratch made me appreciate why Notta charges what it does — you have to clear every one of these cases before you reach that level.</p>
<p><strong>I&#8217;ll write a follow-up once it&#8217;s actually usable.</strong> When all four cases pass reliably and I can finish a meeting and have the notes show up without touching anything.</p>
<p>Automation isn&#8217;t a one-shot achievement — it&#8217;s slow improvement, <strong>case by case, hitting walls and routing around them</strong>. I can&#8217;t code, but I keep asking AI &#8220;why doesn&#8217;t this work?&#8221; and inching forward step by step.</p>
<p>Next post will be on something a bit cleaner.</p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fprsm-studio.com%2Fen%2Fcode-illiterate-home-server-build-9-meeting-notes-failures%2F&amp;linkname=Even%20a%20Code-Illiterate%20Built%20It%21%20Home%20Server%20Journey%20%289%29%20%E2%80%94%20Trying%20to%20Automate%20Meeting%20Notes%2C%20and%20Failing%20in%20Every%20Single%20Way" 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%2Fen%2Fcode-illiterate-home-server-build-9-meeting-notes-failures%2F&amp;linkname=Even%20a%20Code-Illiterate%20Built%20It%21%20Home%20Server%20Journey%20%289%29%20%E2%80%94%20Trying%20to%20Automate%20Meeting%20Notes%2C%20and%20Failing%20in%20Every%20Single%20Way" 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%2Fen%2Fcode-illiterate-home-server-build-9-meeting-notes-failures%2F&amp;linkname=Even%20a%20Code-Illiterate%20Built%20It%21%20Home%20Server%20Journey%20%289%29%20%E2%80%94%20Trying%20to%20Automate%20Meeting%20Notes%2C%20and%20Failing%20in%20Every%20Single%20Way" 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%2Fen%2Fcode-illiterate-home-server-build-9-meeting-notes-failures%2F&#038;title=Even%20a%20Code-Illiterate%20Built%20It%21%20Home%20Server%20Journey%20%289%29%20%E2%80%94%20Trying%20to%20Automate%20Meeting%20Notes%2C%20and%20Failing%20in%20Every%20Single%20Way" data-a2a-url="https://prsm-studio.com/en/code-illiterate-home-server-build-9-meeting-notes-failures/" data-a2a-title="Even a Code-Illiterate Built It! Home Server Journey (9) — Trying to Automate Meeting Notes, and Failing in Every Single Way"></a></p><p>The post <a href="https://prsm-studio.com/en/code-illiterate-home-server-build-9-meeting-notes-failures/">Even a Code-Illiterate Built It! Home Server Journey (9) — Trying to Automate Meeting Notes, and Failing in Every Single Way</a> appeared first on <a href="https://prsm-studio.com/en">Prsm Studio</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://prsm-studio.com/en/code-illiterate-home-server-build-9-meeting-notes-failures/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Even a Code-Illiterate Built It! Home Server Journey (7) — Making the Server Work on Its Own with n8n</title>
		<link>https://prsm-studio.com/en/code-illiterate-home-server-build-7-n8n-automation-en/</link>
					<comments>https://prsm-studio.com/en/code-illiterate-home-server-build-7-n8n-automation-en/#respond</comments>
		
		<dc:creator><![CDATA[Toaster]]></dc:creator>
		<pubDate>Sun, 15 Mar 2026 09:32:47 +0000</pubDate>
				<category><![CDATA[Computer Play]]></category>
		<category><![CDATA[Home Server/Self-hosting]]></category>
		<category><![CDATA[AI automation]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[Home Server]]></category>
		<category><![CDATA[n8n]]></category>
		<category><![CDATA[self-hosting]]></category>
		<category><![CDATA[Telegram alerts]]></category>
		<category><![CDATA[workflow]]></category>
		<category><![CDATA[Zapier alternative]]></category>
		<guid isPermaLink="false">https://prsm-studio.com/?p=462</guid>

					<description><![CDATA[<p>Installing n8n on a home server and building 4 real automation workflows: dev log Notion sync, blog Google indexing monitor, server health check, and morning briefing. Free Zapier alternative.</p>
<p>The post <a href="https://prsm-studio.com/en/code-illiterate-home-server-build-7-n8n-automation-en/">Even a Code-Illiterate Built It! Home Server Journey (7) — Making the Server Work on Its Own with n8n</a> appeared first on <a href="https://prsm-studio.com/en">Prsm Studio</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>In the previous six episodes, I set up photo backup (Immich), an AI assistant (OpenClaw), local AI (Ollama), and a blog (WordPress) on my home server. Each service runs great on its own. But managing them all by hand? Honestly, it gets old fast.</p>
<p><strong>&#8220;I just want to set it up once and have it run itself.&#8221;</strong></p>
<p>That&#8217;s why I installed <strong>n8n</strong>. After setting up a few workflows, my server now works on its own. All I do is check Telegram notifications.</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-1.jpg" alt="IT, 간판, 개념의 무료 스톡 사진" class="wp-image-460" srcset="https://prsm-studio.com/wp-content/uploads/2026/03/stock-11035393-1.jpg 940w, https://prsm-studio.com/wp-content/uploads/2026/03/stock-11035393-1-300x200.jpg 300w, https://prsm-studio.com/wp-content/uploads/2026/03/stock-11035393-1-768x512.jpg 768w" sizes="auto, (max-width: 940px) 100vw, 940px" /><figcaption>Photo by RealToughCandy.com / Pexels</figcaption></figure>
<h2>What is n8n? One-Line Summary: Free Zapier</h2>
<p><a href="https://n8n.io" target="_blank">n8n</a> (pronounced &#8220;n-eight-n&#8221;) is a <strong>visual automation tool</strong>. If you&#8217;ve used Zapier or Make (formerly Integromat), it&#8217;s exactly that. Drag blocks onto a canvas, connect them with lines, and your automation is done. Code? Not a single line needed.</p>
<p>The one difference: <strong>it runs on your own server.</strong> That means it&#8217;s free, there are no execution limits, and your data never leaves your machine.</p>
<table>
<thead>
<tr>
<th></th>
<th>Zapier</th>
<th>n8n (Self-hosted)</th>
</tr>
</thead>
<tbody>
<tr>
<td>Price</td>
<td>From $19.99/month</td>
<td><strong>Free</strong></td>
</tr>
<tr>
<td>Execution limit</td>
<td>100-750/month</td>
<td><strong>Unlimited</strong></td>
</tr>
<tr>
<td>Your data</td>
<td>Stored on Zapier&#8217;s servers</td>
<td><strong>Stays on your server</strong></td>
</tr>
<tr>
<td>Integrations</td>
<td>7,000+</td>
<td>400+ (all major services covered)</td>
</tr>
<tr>
<td>UI</td>
<td>Very easy</td>
<td>Easy (slight learning curve)</td>
</tr>
</tbody>
</table>
<p>If you already have a home server, there&#8217;s no reason not to use n8n. Especially if you&#8217;ve ever hit Zapier&#8217;s free tier limit of 100 executions per month.</p>
<h2>Installing n8n: One Docker Compose File</h2>
<p>Remember how we set up Docker in <a href="/code-illiterate-home-server-build-1-ser9max-windows11-wsl2-docker/">Episode 1</a>? We just add n8n on top of that.</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=yourpassword
    restart: unless-stopped</code></pre>
<p>Tell Claude &#8220;install n8n&#8221; and it creates this file and runs <code>docker compose up -d</code> for you. Navigate to <code>http://yourServerIP:5678</code> and you&#8217;ll see this:</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-1.jpg" alt="CSS, HTML, IT의 무료 스톡 사진" class="wp-image-461" srcset="https://prsm-studio.com/wp-content/uploads/2026/03/stock-4955393-1.jpg 940w, https://prsm-studio.com/wp-content/uploads/2026/03/stock-4955393-1-300x200.jpg 300w, https://prsm-studio.com/wp-content/uploads/2026/03/stock-4955393-1-768x512.jpg 768w" sizes="auto, (max-width: 940px) 100vw, 940px" /><figcaption>Photo by Godfrey  Atima / Pexels</figcaption></figure>
<p>At first glance it might look intimidating. But give it five minutes. You drag nodes (blocks) from the left panel onto the canvas and connect them with lines. It&#8217;s like building with LEGO.</p>
<h2>Real Workflow #1 — Auto-Sync Dev Logs to Notion</h2>
<p>I&#8217;m building an app called Prsm. (A non-coder building an app? Yep, I just tell AI what to do. That&#8217;s a story for another post.) Every day I write development progress in a file on GitHub. I wanted those logs copied to Notion automatically.</p>
<p><strong>Doing it manually:</strong></p>
<ol>
<li>Open GitHub</li>
<li>Find today&#8217;s log file</li>
<li>Copy the content</li>
<li>Open Notion</li>
<li>Paste into the Day Log page</li>
<li>Add a date tag</li>
</ol>
<p>Five minutes a day. Doesn&#8217;t sound like much, but that&#8217;s two and a half hours a month. And honestly, I forget to do it most days.</p>
<p><strong>After automating with n8n:</strong></p>
<blockquote><p>Every night at 11 PM &rarr; Read file from GitHub &rarr; Auto-add to Notion Day Log</p></blockquote>
<p>Three nodes. Set it up once, and it runs every night by itself. <strong>What I have to do: nothing.</strong> When I open Notion in the morning, last night&#8217;s log is neatly organized and waiting for me.</p>
<h2>Real Workflow #2 — Auto-Monitor Blog Google Indexing</h2>
<p>No matter how good your blog post is, if Google hasn&#8217;t indexed it, nobody can find it through search. This is especially brutal for new blogs — it&#8217;s common for posts to go unindexed for days after publishing.</p>
<p>Checking manually? You&#8217;d have to log into Google Search Console and inspect each URL one by one. Ten posts means ten checks.</p>
<p><strong>n8n handles it:</strong></p>
<blockquote><p>Every 12 hours &rarr; Get list of published post URLs &rarr; Check Google indexing status &rarr; Unindexed post found? &rarr; Send Telegram alert</p></blockquote>
<p>&#8220;Hey boss, episodes 3 and 5 still aren&#8217;t indexed on Google!&#8221; — I get alerts like this on Telegram. Then I just click &#8220;Request Indexing&#8221; in Search Console. Done.</p>
<h2>Real Workflow #3 — Instant Alert When Server Goes Down</h2>
<p>When you&#8217;re running multiple services on a home server, one of them can quietly die without you noticing. Once, Immich crashed after an update and I didn&#8217;t realize for over a day. That was a full day of photos not being backed up.</p>
<p><strong>So I built this workflow:</strong></p>
<blockquote><p>Periodic check &rarr; Ping Immich &rarr; Ping OpenClaw &rarr; Ping WordPress &rarr; Any service down? &rarr; Send Telegram alert</p></blockquote>
<p>Now when a service goes down, I get notified <strong>within minutes</strong>. After setting up this workflow, Immich actually crashed again. This time I caught it in 10 minutes and fixed it immediately. Because n8n is watching 24/7.</p>
<h2>Real Workflow #4 — Morning Briefing Data Prep</h2>
<p>Remember the morning briefing from <a href="/code-illiterate-home-server-build-5-openclaw-ai-agent/">Episode 5</a>? My AI assistant sends me weather, news, gold prices, and my schedule via Telegram every morning at 7 AM.</p>
<p>To create that briefing, the AI needs data. Calling weather APIs, fetching exchange rates, checking the calendar — n8n handles all this data collection automatically at 6:50 AM every morning. At 7 AM, the AI picks up the data, summarizes it, and shoots it to Telegram.</p>
<p><strong>My morning routine:</strong> Wake up, open Telegram, check today&#8217;s weather and news. That&#8217;s it.</p>
<h2>Before and After Automation</h2>
<table>
<thead>
<tr>
<th>Task</th>
<th>Before</th>
<th>After</th>
</tr>
</thead>
<tbody>
<tr>
<td>Dev log Notion sync</td>
<td>5 min/day, often forgot</td>
<td>Automatic (0 min)</td>
</tr>
<tr>
<td>Blog index check</td>
<td>Manual search, too lazy so never did it</td>
<td>Auto every 12h, just check alerts</td>
</tr>
<tr>
<td>Server status check</td>
<td>Only knew when something broke</td>
<td>Instant alert on failure</td>
</tr>
<tr>
<td>Morning briefing</td>
<td>Manually search news</td>
<td>Just check Telegram</td>
</tr>
</tbody>
</table>
<p>Saving time is great, but the real benefit is <strong>peace of mind</strong>. &#8220;Is the server okay?&#8221;, &#8220;Did that post get indexed?&#8221;, &#8220;Did I sync the logs?&#8221; — I don&#8217;t worry about any of this anymore. n8n is watching over everything.</p>
<h2>n8n Self-Hosting Cost Breakdown</h2>
<p>Let&#8217;s crunch the numbers.</p>
<table>
<thead>
<tr>
<th>Item</th>
<th>Using Zapier</th>
<th>n8n Self-hosted</th>
</tr>
</thead>
<tbody>
<tr>
<td>Monthly subscription</td>
<td>$19.99</td>
<td><strong>$0</strong></td>
</tr>
<tr>
<td>Annual cost</td>
<td>~$240</td>
<td><strong>$0</strong></td>
</tr>
<tr>
<td>Extra electricity</td>
<td>None</td>
<td>Negligible (server already runs 24/7)</td>
</tr>
</tbody>
</table>
<p>n8n is lightweight and barely uses any server resources. Compared to Immich or Ollama, it&#8217;s practically invisible. Since the server is already running around the clock, the additional electricity cost is effectively zero.</p>
<h2>Tips for Beginners</h2>
<p>It&#8217;s all great, but let me be honest about a few things to watch out for.</p>
<ul>
<li><strong>Name your workflows clearly.</strong> If you leave them as &#8220;My Workflow 1&#8221; and &#8220;New Workflow,&#8221; you won&#8217;t know what&#8217;s what once you have more than ten. Use specific names like &#8220;Prsm to Notion Sync&#8221; or &#8220;Server Health Check.&#8221;</li>
<li><strong>Always add error notification nodes.</strong> When an API is temporarily down or a service changes, your workflow will fail silently. Connect a Telegram notification node at the end to catch errors — you&#8217;ll sleep better at night.</li>
<li><strong>Block external access.</strong> n8n stores sensitive information like Notion tokens and GitHub tokens. Make sure to block external access with a firewall. I locked everything down with iptables back in <a href="/code-illiterate-home-server-build-1-ser9max-windows11-wsl2-docker-en/">Episode 1</a>.</li>
</ul>
<h2>What&#8217;s Next</h2>
<p>Now that the server runs itself with automation, it&#8217;s time to build features that are <strong>directly useful for real work</strong>.</p>
<p>In the next episode:</p>
<ul>
<li><strong>Auto-transcribe phone calls</strong> — hang up and the text is ready</li>
<li><strong>AI-generated meeting notes</strong> — Google Meet and Zoom meetings summarized by AI</li>
<li><strong>Whisper</strong> — OpenAI&#8217;s speech recognition AI, running free on your own server</li>
<li>How <strong>a single phone call becomes a work record</strong> in a manufacturing environment</li>
</ul>
<p>A non-coder who built an AI assistant, now building an AI transcriber. Stay tuned.</p>
<p><em>This post was written by AI (Claude Code) and reviewed by a code-illiterate human.</em></p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fprsm-studio.com%2Fen%2Fcode-illiterate-home-server-build-7-n8n-automation-en%2F&amp;linkname=Even%20a%20Code-Illiterate%20Built%20It%21%20Home%20Server%20Journey%20%287%29%20%E2%80%94%20Making%20the%20Server%20Work%20on%20Its%20Own%20with%20n8n" 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%2Fen%2Fcode-illiterate-home-server-build-7-n8n-automation-en%2F&amp;linkname=Even%20a%20Code-Illiterate%20Built%20It%21%20Home%20Server%20Journey%20%287%29%20%E2%80%94%20Making%20the%20Server%20Work%20on%20Its%20Own%20with%20n8n" 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%2Fen%2Fcode-illiterate-home-server-build-7-n8n-automation-en%2F&amp;linkname=Even%20a%20Code-Illiterate%20Built%20It%21%20Home%20Server%20Journey%20%287%29%20%E2%80%94%20Making%20the%20Server%20Work%20on%20Its%20Own%20with%20n8n" 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%2Fen%2Fcode-illiterate-home-server-build-7-n8n-automation-en%2F&#038;title=Even%20a%20Code-Illiterate%20Built%20It%21%20Home%20Server%20Journey%20%287%29%20%E2%80%94%20Making%20the%20Server%20Work%20on%20Its%20Own%20with%20n8n" data-a2a-url="https://prsm-studio.com/en/code-illiterate-home-server-build-7-n8n-automation-en/" data-a2a-title="Even a Code-Illiterate Built It! Home Server Journey (7) — Making the Server Work on Its Own with n8n"></a></p><p>The post <a href="https://prsm-studio.com/en/code-illiterate-home-server-build-7-n8n-automation-en/">Even a Code-Illiterate Built It! Home Server Journey (7) — Making the Server Work on Its Own with n8n</a> appeared first on <a href="https://prsm-studio.com/en">Prsm Studio</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://prsm-studio.com/en/code-illiterate-home-server-build-7-n8n-automation-en/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
