I had 27 TB on a Synology and a 1 Gbps uplink and no working way to back it up off-site. HyperBackup choked on Google's rate limit. Cloud Sync sat at 400k files "syncing" forever. I tried to build a restic clone in Python, threw 2,000 lines of code away, and ended up shipping an S3-compatible proxy that fans writes across five Google Drive accounts via rclone. This is the whole story.
Read →
A long-running service that does work in the background needs a deploy strategy that doesn't drop work on the floor. This is the rule I landed on after…
Read →
My homelab assistant lives on an LXC in the garage. Hurricane season runs June through November on the Gulf Coast. A two-week power loss takes my whole…
Read →
I turned the garden sprinkler off because rain was forecast for a week. The question is: when do I turn it back on? I do not want to check a weather app…
Read →
I built a small water-tracker for myself: pick a bottle preset, tap a button, get a daily total. First version landed as a few /water/* routes inside the…
Read →
I had ~50 TB of media I wanted to back up off-site. Synology HyperBackup can speak S3. Google Drive Workspace gives you generous per-user storage, but…
Read →
I had 27 TB of stuff on my NAS that I wanted backed up to Google Drive. Synology HyperBackup ran for weeks, made it about a third of the way, and the…
Read →
Swapped a USB-to-Ethernet adapter on a ThinkPad to fix a flaky link. After the swap, the laptop dropped off the network entirely. No reservation hit in…
Read →
Sonarr's queue kept stalling. Episodes would show up as grabbed, sit in the queue, and then quietly fail to import. Re-grabbing the same release didn't…
Read →
Avengers playback was crawling on Emby. Not network, not the client — the Synology CPU was pinned, fan howling, every play.
Read →
I wanted Home Assistant to know whether the bed was occupied, and by whom, so it could drive lighting, HVAC setbacks, and a few "is anyone home"…
Read →
My Synology Hyper Backup job to Google Drive kept restarting and never finishing. It would run for hours, get most of the way through the scan, then bail…
Read →
Symptoms looked like the same old "files imported but not really" pattern I'd dealt with before, but the root cause this time was subtler — and lived on…
Read →
I have a small face-identification pipeline running against snapshots from my doorbell. It uses a fixed distance threshold to decide whether a face…
Read →
I wanted my front door to unlock automatically when my iPhone or Watch triggered Emergency SOS or Fall Detection. The catch is that Apple does not expose…
Read →
I rolled out face-recognition notifications on my front-door doorbell and got spammed with hundreds of pushes in a few hours. I killed the cron, audited…
Read →
Doorbell camera snapshots come in at 1536x1536. I wanted to run them through a CNN face detector to label visitors. The detector kept getting OOM-killed…
Read →
I deployed Home Assistant OS as a VM on Proxmox so I could try a Wi-Fi smart lock. HA proxied through nginx returned HTTP 400 on every request. The fix…
Read →
I wanted my front door doorbell to do something more interesting than "someone moved." Specifically: "the dog walker is here," or "an unknown person is…
Read →
Every few days my backend would lose a recent fix. The change would work, restart the service, work for hours, then vanish. Git showed the old code back…
Read →
I set chattr +i on my backend's main.py after a sync bug kept silently overwriting it. Months later, the iOS app started losing connectivity on a…
Read →
I wanted something to talk at me when I get up — weather, todos, the date, sober days, mortgage-due reminder, homelab status. Not when an alarm fires…
Read →
I wanted to PXE-boot a fully unattended Windows 11 25H2 install onto a VM with no TPM, no Secure Boot, and not enough RAM by Microsoft's reckoning. The…
Read →
PXE booting a Windows 11 install is fine; getting a freshly installed VM to accept SSH from my homelab without me touching it is the actual interesting…
Read →
The home media pipeline went quiet. Nothing new was finishing. CPU on the torrent boxes was high but throughput was zero. Time to actually look at why.
Read →
My TV import rate had collapsed from about 90 episodes a day to single digits over a five-day stretch. Sonarr's queue was full but nothing was making it…
Read →
Music container in my torrent setup was stuck. 349 torrents, all in metaDL, all at 0 peers, all 0 bytes. The container itself was running, qBittorrent's…
Read →
My homelab status dashboard pulls container/VM state from the Proxmox API. One day it showed three containers as stopped that I was actively connected…
Read →
The music torrent client had 349 torrents in flight. None of them were finishing. All of them were trying to download at the same time. This is what…
Read →
The music torrent container had 349 torrents and zero of them were doing anything. Every single one was stuck in metaDL with 0 peers, 0 bytes. DHT showed…
Read →
A note for anyone scripting Lidarr through its API: there's a race in the "add an artist with monitored albums" flow that surfaces as a 500 on the…
Read →
I had been sync'ing my ~/code folder through OneDrive for years. It worked until it didn't. The breaking point was Xcode and git both fighting OneDrive…
Read →
I was building a custom Windows 11 install ISO and trying to do a clever registry tweak inside boot.wim to make in-place upgrade scenarios work the way I…
Read →
Recurring failure mode on the homelab: the assistant's domain returns 502 from every browser, but pct list says the LXC is running and systemctl status…
Read →
I have an Orbit B-hyve XD irrigation controller. It's Bluetooth-only — no Wi-Fi hub built in. Every existing integration (Home Assistant, pybhyve…
Read →
A dashboard tile of mine that aggregates torrent counts across five qBittorrent instances started intermittently returning 403s. The page would refresh…
Read →
I wanted a tiny always-on display in my office that showed the day's useful information and lasted a season on a single battery charge. The constraint…
Read →
I needed a public webpage that counts time since a fixed instant. Two days, four hours, big number, mobile-friendly. The interesting part wasn't the page…
Read →
A few hours after shipping the Memex over iMessage and Signal, I added email. The interesting part wasn't the feature — it was a DynamoDB pagination bug…
Read →
I wanted to ask my own data questions like "when did I last hear from X?" or "what did we say about that lake house?" and get an actual answer. So I…
Read →
Honeypots are useful and almost nobody runs them, because the existing stacks are either too heavy (multi-container threat-intel platforms that need 16…
Read →
Sonarr's web UI was unresponsive. systemd said the service was active (running). The process was using 100% of multiple cores. Load average on the…
Read →
I'd just restarted Sonarr to recover from an unrelated issue. The service came back up, API requests responded fine, but the web UI in my browser was…
Read →
Sonarr blew up at 3 AM with PathTooLongException thrown across the import queue. The release that triggered it was a translated upload with a…
Read →
I caught a "Sonarr's down again" frustration from a household user. The actual problem wasn't Sonarr at all — Sonarr was fine. It just had a download…
Read →
Nothing new had landed in my movie library since the 4th of the month. Radarr looked healthy, the queue was just stuck at 321 items. Most of them showed…
Read →
I run a handful of small web apps on subdomains — a finances dashboard, a map, a CV, a blog admin. Each had its own login. Each login was the same login…
Read →
Quick note to past me: when installing Tailscale on a headless Mac, brew install tailscale (the formula). Not brew install --cask tailscale-app.
Read →
I had years of GPS pings in a database from a side project. I wanted to look at where I'd actually been on a map — heatmap of every ping, markers for the…
Read →