Skip to content

Homelab

The servers in my house: what runs on them, what broke, and what I'd do differently.

The journey

How the lab started and how it grew.

  1. My Homelab Journey: The Beginnings

    Follow my journey to build an affordable homelab using an Intel NUC, Synology NAS, and TP-Link router. Discover my motivations, hardware choices and setup tips.

    HomeLab, 4 min read

  2. My Homelab Journey: The Ubuntu Phase

    Discover the journey of building a homelab with Ubuntu, virtualization insights, Docker's ease, Proxmox vs. Ubuntu decisions, and hypervisor benefits.

    HomeLab, 3 min read

  3. My Homelab Journey: Redundancy Without RAID

    Discover how I set up my Synology NAS for optimal storage and redundancy in my home lab, balancing media files and crucial backups.

    HomeLab, 3 min read

  4. My Homelab Journey: Connecting My NAS to the Server

    Step-by-step guide on how to connect a Synology NAS to a Linux server for efficient data management and network storage solutions in your home lab.

    HomeLab, 6 min read

  5. My Homelab Journey: Moving from a Synology NAS to unRAID on an Intel NUC

    A NUC has no PCIe slot and no drive bays, so the M.2 slot became a 6-port SATA controller, a used ATX PSU powers and cools four drives, and the whole thing fits the wall rack with 1 mm to spare.

    HomeLab, 4 min read

unRAID and storage

Disks, the array, the boot drive, and upgrades.

  1. Shrinking an unRAID Array from 3 Data Disks to 2 and Keeping the Old Disk as a Spare

    Disk prices are high, so I removed a disk instead of buying one: unBALANCE to empty it, New Config with preserve all, a parity rebuild, and the permission, mover and ZFS traps after.

    HomeLab, 5 min read

  2. Upgrading unRAID 7.0.1 to 7.3.2 in One Jump: 13 Risks, 3 Minutes Down

    How I planned a three-minor-version unRAID jump with 13 written risks and an answer for each, what the 3-minute upgrade looked like, and the fallout that showed up after.

    HomeLab, 7 min read

  3. The USB Boot Drive That Dropped Twice: Detecting and Replacing an unRAID Flash

    My unRAID boot flash fell off the USB bus twice in nine days. How a direct-read heartbeat and an off-box watcher caught it, and how the swap, license move, and label trap went.

    HomeLab, 8 min read

  4. Three unRAID Disks Failed at Once. It Was a SATA Power Plug.

    DRDY DF ERR, ABRT and SATA link down on three drives in one night, all SMART-clean. How the error signature pointed at power, not media, and how I proved the fix.

    HomeLab, 6 min read

Backups

What gets copied where, and the times it silently did not.

  1. Backing Up Docker Appdata on unRAID Without Stopping Every Container Every Night

    How I moved the unRAID Appdata Backup plugin to "do not stop" by default, took a consistent Home Assistant SQLite copy with a pre-container hook, and hit the containerOrder and \r\n gotchas.

    HomeLab, 4 min read

  2. My Glacier Cleanup Deleted Nothing for 49 Runs: rclone One-Way Checks and Deep Archive Orphans

    Why my rclone orphan cleanup for S3 Glacier Deep Archive never deleted a file, and the lsf + comm rewrite with an ORPHAN_MAX guard, a 180 day server-modtime window, and a 66 h run marker.

    HomeLab, 7 min read

  3. A Windows PC Backup That Never Reported Up: Robocopy /ZB, ERROR 50, and a Silent 6 h Kill

    My robocopy backup to an unRAID Samba share had never once completed. How /Z, /B, a 6 hour task limit and an end-of-run monitor push hid it, and the fixes that got a full run to 10m53s.

    HomeLab, 5 min read

  4. AWS Glacier Deep Archive: Ultimate Cold Storage Backup Solution for My Homelab

    How I implemented a cost-effective 3-2-1 backup strategy using AWS Glacier Deep Archive, saving money while ensuring my critical data is protected against catastrophic failures.

    HomeLab, 10 min read

Monitoring and ops

Knowing when a job fails, and what took the server down.

  1. Monitoring Cron Jobs with Uptime Kuma Push Monitors (After Healthchecks Went Silent)

    How I watch every homelab cron job with Uptime Kuma push monitors: the ping helper, alert timing math, the 90 s interval rule, maintenance windows, and a watcher for when the whole box dies.

    HomeLab, 8 min read

  2. Auditing My Homelab Cron Scripts with an AI Auditor and a Skeptic

    I had AI agents audit every unRAID user script in auditor and skeptic pairs, then got an outside review. It found database dumps disabled since April and a cleanup job deleting the backup image daily.

    HomeLab, 5 min read

  3. My AI Agents Took Down My Own Server: A Read-Only Saturation Cascade on unRAID

    Parallel AI agents opened 33 SSH sessions in a minute and pushed my NUC to load 60.51. The flash alert was a victim, the host recovered alone, and read-only turned out not to mean harmless.

    HomeLab, 5 min read

  4. 93 GB of Chrome Crash Dumps in My Docker Image: Debugging a Headless Browser Container

    A browserless container filled unRAID's docker.img with 2.28M Chrome crash dumps. The loop behind it, the tmpfs guard, a pids-limit host freeze, and why the image tag is pinned.

    HomeLab, 6 min read

Network and DNS

DNS filtering, VPN tunnels, and the packets that went missing.

  1. A WireGuard MTU Black Hole Stalled My Remote AdGuard Pi for 90 Seconds

    A path abroad silently dropped WireGuard packets above 1392 bytes. MTU 1360 took my remote AdGuard Pi from a 90 s stall to 7 s and loss from 10% to 0%. Then the hardening.

    HomeLab, 5 min read

  2. One Gluetun Tunnel, Two Forwarded Ports, and a 26-Server VPN Test

    My qBittorrent behind Gluetun had no forwarded port. One WireGuard tunnel now forwards two ports to two clients. Plus a 26-server speed test, the MTU math, and a decluttarr re-grab loop.

    HomeLab, 7 min read

  3. A 2.2 Million Rule Blocklist Kept OOM-Killing My Backup AdGuard DNS

    One HaGeZi threat list pinned my backup AdGuard Home at its 750 MB memory cap and got it OOM-killed three nights running. Why the logs blamed the upstreams, and how 91M queries picked a list.

    HomeLab, 5 min read

Self-hosted apps

The services I run and how I set them up.

  1. Paperless-ngx with Azure OCR, LLM Autofill, and a 59,486-Mail Backfill

    Paperless-ngx on unRAID with Azure Document Intelligence OCR, an LLM hook that files every document, a PDF unlock hook, and a Proton Bridge mail backfill.

    HomeLab, 7 min read

  2. AdGuard Home: The Essential Shield for My Homelab

    How AdGuard Home transformed my network with powerful ad blocking, enhanced privacy, and family-friendly filtering using my perfectly balanced blocklist setup.

    HomeLab, 4 min read

  3. My Top Choices For Selfhosted Applications

    Explore must-have self-hosted apps for your home lab, from AdGuard Home for ad blocking to Home Assistant for automation. Learn to integrate these tools with Docker volumes and network shares.

    HomeLab, 3 min read

Self-hosted AI

The model gateway, the chat UI, and the bots that write to my notes.

  1. LiteLLM Failover From AWS Bedrock to Azure Under One Model Name

    Six model names on my LiteLLM gateway run on AWS Bedrock with Azure as automatic failover. Two YAML anchors pick the primary, and one script swaps them without a bind-mount trap.

    HomeLab, 4 min read

  2. Patching Open WebUI So Saved Chats Keep Web Search Without a Socket

    Open WebUI only gives a model its built-in tools when the request has a socket ID, so saved chats answered with zero tool calls. The patch, and how I ship it on the upstream image.

    HomeLab, 7 min read

  3. A Telegram Bot That Commits to Git and Survives docker stop

    My notes bot commits every Telegram message to git. As PID 1 it ignored SIGTERM and a deploy took 36 s. The drain, the repair of a killed git, and the pre-receive fence.

    HomeLab, 7 min read

Media stack

Quality profiles and subtitles for my own library.

  1. Subtitle Sync I Can Trust: Checking Bazarr's Arabic Shifts Against English and the Audio

    A Bazarr match score says nothing about timing. How I shift Arabic subtitles only when English text and the audio agree, the eight tests behind it, and a scoring fault it exposed.

    HomeLab, 5 min read

  2. Picking HDR Formats for the Screen I Actually Own: DV Boost, No HDR10+, Recyclarr as Code

    My TV decodes HDR10+ and my library scores zero for it. How I pick HDR formats from the real playback chain, keep the policy in one Recyclarr file, and test it with open demo clips.

    HomeLab, 5 min read

Smart home

Zigbee, MQTT, and Home Assistant.

  1. A Zigbee Thermostat That Lies: Moving a TYBAC-006 Fan Coil Stat off Tuya Cloud

    121 AC button presses in 8 days proved my wall thermostat's reading was useless. Moving to a Zigbee TYBAC-006 fixed the cloud problem and brought four new quirks.

    HomeLab, 6 min read

  2. Mosquitto Without Persistence Took Every Zigbee Device Offline in Home Assistant

    A broker restart dropped every retained MQTT discovery message, so Home Assistant marked all Zigbee2MQTT entities unavailable while the devices kept working. The mechanism, the fix, and the proof.

    HomeLab, 5 min read

  3. One Writer for the AC: Fixing a Zigbee2MQTT Race That Left My Thermostat at 20 C

    6 of 79 AC boosts left my Zigbee thermostat stuck at 20 C for up to 196 minutes. The cause was concurrent /set messages. The fix was one queued Home Assistant script.

    HomeLab, 5 min read

  4. Zigbee Routing: Why a Sleepy Sensor Went Stale and How a Router Plug Fixed It

    A Zigbee end device keeps its parent until it rejoins. How my bedroom sensor went silent under a thermostat, moved to a router plug, and how I detect staleness with last_seen.

    HomeLab, 6 min read

  5. Putting Home Assistant on the Internet Behind a Cloudflare Client Certificate

    Home Assistant behind Cloudflare mTLS: the client certificate rule, the /api/webhook/ exception the companion app needs, a separate .p12 for iOS, and the real visitor IP in the logs.

    HomeLab, 5 min read