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.
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
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
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
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
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.
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
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
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
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.
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
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
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
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.
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
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
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
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.
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
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
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.
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
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
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.
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
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
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.
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
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.
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
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
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
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
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