Even a Code-Illiterate Built It! Home Server Journey (7) — Making the Server Work on Its Own with n8n

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.

“I just want to set it up once and have it run itself.”

That’s why I installed n8n. After setting up a few workflows, my server now works on its own. All I do is check Telegram notifications.

IT, 간판, 개념의 무료 스톡 사진
Photo by RealToughCandy.com / Pexels

What is n8n? One-Line Summary: Free Zapier

n8n (pronounced “n-eight-n”) is a visual automation tool. If you’ve used Zapier or Make (formerly Integromat), it’s exactly that. Drag blocks onto a canvas, connect them with lines, and your automation is done. Code? Not a single line needed.

The one difference: it runs on your own server. That means it’s free, there are no execution limits, and your data never leaves your machine.

Zapier n8n (Self-hosted)
Price From $19.99/month Free
Execution limit 100-750/month Unlimited
Your data Stored on Zapier’s servers Stays on your server
Integrations 7,000+ 400+ (all major services covered)
UI Very easy Easy (slight learning curve)

If you already have a home server, there’s no reason not to use n8n. Especially if you’ve ever hit Zapier’s free tier limit of 100 executions per month.

Installing n8n: One Docker Compose File

Remember how we set up Docker in Episode 1? We just add n8n on top of that.

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

Tell Claude “install n8n” and it creates this file and runs docker compose up -d for you. Navigate to http://yourServerIP:5678 and you’ll see this:

CSS, HTML, IT의 무료 스톡 사진
Photo by Godfrey Atima / Pexels

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’s like building with LEGO.

Real Workflow #1 — Auto-Sync Dev Logs to Notion

I’m building an app called PRSM. (A non-coder building an app? Yep, I just tell AI what to do. That’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.

Doing it manually:

  1. Open GitHub
  2. Find today’s log file
  3. Copy the content
  4. Open Notion
  5. Paste into the Day Log page
  6. Add a date tag

Five minutes a day. Doesn’t sound like much, but that’s two and a half hours a month. And honestly, I forget to do it most days.

After automating with n8n:

Every night at 11 PM → Read file from GitHub → Auto-add to Notion Day Log

Three nodes. Set it up once, and it runs every night by itself. What I have to do: nothing. When I open Notion in the morning, last night’s log is neatly organized and waiting for me.

Real Workflow #2 — Auto-Monitor Blog Google Indexing

No matter how good your blog post is, if Google hasn’t indexed it, nobody can find it through search. This is especially brutal for new blogs — it’s common for posts to go unindexed for days after publishing.

Checking manually? You’d have to log into Google Search Console and inspect each URL one by one. Ten posts means ten checks.

n8n handles it:

Every 12 hours → Get list of published post URLs → Check Google indexing status → Unindexed post found? → Send Telegram alert

“Hey boss, episodes 3 and 5 still aren’t indexed on Google!” — I get alerts like this on Telegram. Then I just click “Request Indexing” in Search Console. Done.

Real Workflow #3 — Instant Alert When Server Goes Down

When you’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’t realize for over a day. That was a full day of photos not being backed up.

So I built this workflow:

Periodic check → Ping Immich → Ping OpenClaw → Ping WordPress → Any service down? → Send Telegram alert

Now when a service goes down, I get notified within minutes. 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.

Real Workflow #4 — Morning Briefing Data Prep

Remember the morning briefing from Episode 5? My AI assistant sends me weather, news, gold prices, and my schedule via Telegram every morning at 7 AM.

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.

My morning routine: Wake up, open Telegram, check today’s weather and news. That’s it.

Before and After Automation

Task Before After
Dev log Notion sync 5 min/day, often forgot Automatic (0 min)
Blog index check Manual search, too lazy so never did it Auto every 12h, just check alerts
Server status check Only knew when something broke Instant alert on failure
Morning briefing Manually search news Just check Telegram

Saving time is great, but the real benefit is peace of mind. “Is the server okay?”, “Did that post get indexed?”, “Did I sync the logs?” — I don’t worry about any of this anymore. n8n is watching over everything.

n8n Self-Hosting Cost Breakdown

Let’s crunch the numbers.

Item Using Zapier n8n Self-hosted
Monthly subscription $19.99 $0
Annual cost ~$240 $0
Extra electricity None Negligible (server already runs 24/7)

n8n is lightweight and barely uses any server resources. Compared to Immich or Ollama, it’s practically invisible. Since the server is already running around the clock, the additional electricity cost is effectively zero.

Tips for Beginners

It’s all great, but let me be honest about a few things to watch out for.

  • Name your workflows clearly. If you leave them as “My Workflow 1” and “New Workflow,” you won’t know what’s what once you have more than ten. Use specific names like “PRSM to Notion Sync” or “Server Health Check.”
  • Always add error notification nodes. 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’ll sleep better at night.
  • Block external access. 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 Episode 1.

What’s Next

Now that the server runs itself with automation, it’s time to build features that are directly useful for real work.

In the next episode:

  • Auto-transcribe phone calls — hang up and the text is ready
  • AI-generated meeting notes — Google Meet and Zoom meetings summarized by AI
  • Whisper — OpenAI’s speech recognition AI, running free on your own server
  • How a single phone call becomes a work record in a manufacturing environment

A non-coder who built an AI assistant, now building an AI transcriber. Stay tuned.

This post was written by AI (Claude Code) and reviewed by a code-illiterate human.

Even a Code-Illiterate Built It\! Home Server Journey (3) — Replacing Google Photos with Immich 📸🏠

gmail, google 포토, 가젯의 무료 스톡 사진

In Part 3, we set up a blog. Now it’s time for something actually useful.

Photo backup.

Google Photos: $2/month. iCloud: $1/month. Doesn’t sound like much, right? But what if you could do the same thing on your own server, for free, with unlimited storage?

Here’s the punchline: after setting up Immich on my home server, I cancelled my Google Photos subscription. Over 35,000 photos are now backed up automatically, and I can access them from anywhere thanks to Tailscale. What did I actually do? I told AI to set it up. That’s it.

Photo gallery on smartphone
Photo by Plann / Pexels

Why I Left Google Photos

Google Photos is great. AI search, automatic albums, the whole deal. But here’s the thing:

  1. 15GB free runs out fast. Take photos for three months and you’re done.
  2. Paid plans never end. 100GB, then 200GB, then 2TB… it’s a subscription for life.
  3. Your photos live on someone else’s server. What if Google changes their policy? What if they shut it down?

iCloud is the same story. I was paying for 50GB just for iPhone backup. Another monthly charge that never stops.

“I have a server at home. Why am I paying someone else to store my photos?” Once you think that, you’re already halfway there.

What Is Immich?

Immich is basically a self-hosted Google Photos.

  • 📱 Mobile app — automatic backup from Android and iOS
  • 🔍 AI search — search “beach” or “cat” and it just works
  • 🗺️ Map view — see where every photo was taken on a world map
  • 👥 Face recognition — automatically groups people
  • 📂 Albums — shared albums, timeline, everything
  • 🔒 Your server — data stays in your home

It does almost everything Google Photos does. It’s free, open-source, and the only storage limit is your hard drive.

클로즈업 사진에서 나무 표면 위의 핸드폰
Photo by Markus Winkler / Pexels

Installation: One Docker Compose File

Remember the Docker setup from Part 1? We just add on top of it.

# docker-compose.yml (essentials)
services:
  immich-server:
    image: ghcr.io/immich-app/immich-server:release
    ports:
      - "2283:2283"
    volumes:
      - ./upload:/usr/src/app/upload
    environment:
      - DB_PASSWORD=your_secure_password_here
      - REDIS_HOSTNAME=redis

  immich-machine-learning:
    image: ghcr.io/immich-app/immich-machine-learning:release

  redis:
    image: redis:7-alpine

  database:
    image: tensorchord/pgvecto-rs:pg16-v0.2.1

I told Claude “install Immich” and it created this file and ran docker compose up -d for me. I just watched.

Once it’s running, go to http://server-ip:2283, create an admin account, and you’re ready.

Auto-Backup from Your Phone

  1. Install Immich from Play Store (or App Store for iPhone)
  2. Enter your server address: http://192.168.xxx.xxx:2283

    – Want access outside your home? Use your Tailscale IP (see Part 2!)

  3. Log in → Enable auto backup
  4. Done.

That’s literally it. Every photo you take now automatically goes to your home server.

I uploaded over 35,000 photos from my Galaxy S25 Ultra. How long did it take? About 3-4 days. But honestly, I didn’t even notice. I installed the app, turned on backup, and just lived my life. Went to work, ate, slept — and a few days later I opened the app and everything was there. That’s the beauty of it. Set it and forget it.

Cloud backup and storage
Photo by Alpha En / Pexels

iPhone Users: You’re Covered Too

Same exact process:

  1. Install Immich from App Store
  2. Enter server address + log in
  3. Auto backup ON

For existing photos stuck in iCloud:

  1. Mac Photos app → Settings → “Download Originals to this Mac”
  2. Wait for everything to download (could be dozens of GB)
  3. Use immich-go to bulk upload to your server

Google Photos works the same way. Export via Google Takeout → upload with immich-go. Duplicates are automatically filtered out. Even if the same photo exists in both Google and iCloud, only one copy ends up on your server.

Access Your Photos From Anywhere

Remember the Tailscale setup from Part 2? This is where it pays off.

Set your Immich app’s server address to your Tailscale IP (100.xx.xx.xx:2283), and you can access your photos from a cafe, from a business trip, from another country. It’s a VPN, so security isn’t a concern either.

AI Features: No Reason to Miss Google Photos

Immich comes with a built-in Machine Learning server. It runs automatically after installation.

Photo Search

Type “food” in the search bar and only food photos show up. “Beach”, “mountain”, “car” — it all works. Same AI search as Google Photos, but running on your own server.

Face Recognition

It automatically detects and groups faces. Tag someone’s name once, and you can browse all their photos in one place.

Map View

Photos with GPS data appear as pins on a world map. Perfect for “where did I take that photo last year?”

How Much Do You Actually Save?

Let’s do the math.

Service Monthly Yearly
Google Photos 100GB $2 $24
iCloud 50GB $1 $12
Total $3 $36
Immich (self-hosted) $0 $0

What about electricity? The SER9 MAX has a 54W TDP. Running 24/7 costs roughly $1.50/month in electricity. But that’s shared across all services — blog, AI assistant, local LLM, and more. The photo backup cost is effectively zero.

As long as you have hard drive space, it’s unlimited backup. Add a 1TB SSD and you’re set for a decade.

The Honest Downsides

Let’s be real about the cons:

  1. Server down = no access. During power outages or reboots, you can’t reach your photos. The app does cache recent ones for offline viewing though.
  2. You need backup for your backup. If your SSD dies, your photos are gone. External drive or NAS for redundancy is strongly recommended.
  3. Initial upload takes time. 35,000 photos took 3-4 days for me. But it runs in the background — just forget about it and check back later. One day you’ll open the app and it’s all done.
  4. Shared albums are limited. The “share a link with anyone” feature isn’t as polished as Google Photos yet.

But if you believe “my photos should stay on my server”, these trade-offs are worth it.

What’s Next

Photos backed up on our server. Blog is live. Remote access works. Now it’s time to give this server a brain.

In the next part:

  • OpenClaw + Telegram — putting an AI assistant on the server and chatting with it via Telegram
  • A morning briefing bot that sends weather, news, and schedule summaries every day
  • An AI that writes blog posts, generates images, and even codes — my personal AI minion

Stay tuned for the story of how a guy who can’t write a single line of code built his own AI assistant.

This post was written by AI (Claude Code) and reviewed by a code-illiterate human. 🤖✨