Eric Li DevOps & Infrastructure

A Route That Vanished Every Reboot

Homelab · 2026-09-24 · Thursday · 11:30 PM · 4 min read · 75% AI · Eric Li

Two unrelated pushes filled the day: rebuilding the public site before breakfast, and closing out a run of blocking issues on a hotel client's IPTV network that evening, on site.

The site gets a new front door

The v3 redesign became the live site this morning, replacing the old static wordmark with a new SVG logo that carries three states: a static mark, a neon hover animation, and the settled hover look once that animation finishes. A light/dark toggle went in alongside it, named flashbang for the inverted palette and ninja for the current dark one. That took a few rounds to get right: the first accent colour came out an unintended pink, got swapped for a blue, then brightened twice before it read correctly against the page, with the glow stripped off the logo animation at the same time. The hero towers on the home page needed the same blue-over-purple swap before it shipped. A new "archived" project group went in for retired work (the Caddy rating app, DisClaude sesh, and FileIt), and the IPTV project itself moved from Upcoming to In Progress, three days after the client engagement started.

Alongside the redesign, a run of agents cleared the backlog on the blog itself. The humanizer skill got installed from its GitHub repo to strip AI writing tells out of published posts, then went to work: three missing journal entries (the 11th, 22nd, and 23rd) went through one Sonnet agent per entry to draft from the source material, a revising agent to edit each one, and a final pass to confirm no credentials had leaked into any of them, bringing the blog to 51 posts. Blog titles across the whole site got cut to six words or fewer in the same pass, and a raw Tailscale IP and interface name that had been sitting in an old archived post got censored. A container count and a projects stat that had drifted from reality got refreshed to match, and Proton Pass joined the homepage tool marquee.

Fixing a network that kept undoing its own fixes

On site that evening, the outstanding blockers on the hotel client's IPTV build came off the list one by one. The H3C switch had been accepting SSH logins and then dropping the session immediately; tracing it from the console found line vty 0 63 had no authentication-mode set, so it was falling back to Comware's default password mode with no password configured. Setting authentication-mode scheme and saving fixed it, and the fix was retested end to end from home that same evening, over the full remote chain: this laptop to a lab host, to the GL.iNet travel router, to the switch itself.

The travel router had a separate, longer-running fault. Every reboot, including its own scheduled one, silently dropped one of the two Tailscale routes it was supposed to advertise, breaking remote access to the admin interface until it got manually re-added. The cause was the router's own gl_tailscale script, which rebuilds its route list from the LAN interface config on every interface event, not just boot, with no option to keep an extra route in that list. A one-line patch ahead of the route-building check fixed it, verified after a deliberate reboot brought both routes back without anyone touching it. The reboot schedule itself got changed from daily to weekly while this was being worked through.

With the switch and the router both behaving, IGMP snooping went on and got saved, and a live multicast join confirmed it was working. A third set-top box joined the bench setup, and all five DVB-T muxes got imported and synced to the client package in one evening, not just the first one from two days before: the whole channel lineup playing on the boxes at once, on the client's actual rooftop signal. The one thing that didn't work was sound on the HD channels, which carry Dolby audio the boxes can't decode; a WhatsApp message and a list of technical questions went to the vendor about it, drafted but not yet sent. Photos went out of the fibre trace at the main rack, which settled which of the two core switches feeds which part of the building. A written decision landed that the IPTV network won't stay permanently isolated: it will eventually join the hotel's own network, which added a new set of questions for whoever manages that side.

The one thing planned for the evening that didn't happen was the pilot isolation test on a second building's rooms, which needed those rooms empty and the hotel was fully booked. Photos of that building's rack still got taken before calling it a night, ahead of trying again the next day.