Skip to content

Changelog

Tracks all significant documentation and infrastructure changes.


Format

## YYYY-MM-DD
- **[Type]** Description โ€” [link to affected doc](path/to/doc.md)

Types: Added ยท Updated ยท Removed ยท Fixed ยท Infrastructure


Log

2026-08-03

  • [Added] Kindle / KOReader ebook sync fully documented โ€” Magic Shelf filtering, flat library layout, collections, KOSync progress sync, device access and its gotchas โ€” services/kindle-koreader.md
  • [Infrastructure] CWA KOReader sync endpoint enabled (koreader_sync_enabled was 0, /kosync returned 503) โ€” cross-device reading progress now possible
  • [Infrastructure] Dedicated kindle CWA account (role 258, Download + Viewer). Replaced the test account, which had admin rights and the password user1 stored in cleartext on the device. test deleted; admin deliberately restricted to role 384
  • [Infrastructure] Magic Shelf Kindle (id 17) excludes anything tagged Cookbooks/Recipes/Cooking โ€” tagging in CWA is now the only control needed to keep a book off the device
  • [Fixed] duplicate_scan_frequency changed after_import โ†’ manual after a 60-book import deadlocked the CWA web worker and took the service down ~10 min โ€” Lessons Learned
  • [Fixed] Library metadata embedded into all 576 book files (calibredb embed_metadata); series metadata coverage on sample went 8/23 โ†’ 23/23. Corrupted author records repaired (Simmons| Dan, Clough| Brian, Dennis E Taylor)
  • [Added] 60 sideloaded books that existed only on the Kindle ingested into CWA, with series derived from their original filenames โ€” library 516 โ†’ 576
  • [Added] Kindle recovery kit on Lotus โ€” AdBreak jailbreak, hotfix, KUAL/MRPI, KOReader build and a device config snapshot โ€” /mnt/user/backups/kindle/recovery-kit-20260802/

2026-08-02

  • [Added] Kindle (192.168.20.244, IoT VLAN) allowed through to Calibre-Web Automated on Lotus (192.168.1.80:8083/tcp) โ€” UniFi policy Allow Kindle to CWA at index 10027, above the Drop IoT from local network block. The DHCP reservation already existed. Cross-VLAN allow rules and their ordering now documented โ€” network.md
  • [Added] Multiroom audio documented โ€” Lyrion Music Server on Lotus (br0, 192.168.1.83) driving Squeezelite on the Kitchen Pi and the Sony HT-A9 over Chromecast, with the UniFi firewall rules it needs โ€” services/multiroom-audio.md
  • [Added] Four silent failure modes from the audio build recorded: Docker bridge mode breaking mDNS, Castbridge's random audio port, a UniFi rule matching on source port, and Debian's Squeezelite init script ignoring SL_OPTIONS โ€” Lessons Learned
  • [Added] Kitchen Pi (CM4 + HiFiBerry MiniAMP, 192.168.20.254) and the Sony HT-A9's Chromecast endpoint (192.168.20.21) added to hardware inventory โ€” inventory.md
  • [Fixed] A pg_dump written to /mnt/user 18 minutes before an accidental power cut did not survive โ€” it was still in page cache and never reached disk, while ls showed it present the whole time. Ad-hoc safety-net backups now need a sync plus a find under /mnt/diskN to be considered real โ€” Lessons Learned
  • [Fixed] Lotus confirmed to auto-boot after a power cut, coming back and starting the array unattended โ€” the opposite of Cooper, and previously recorded as untested. Pacific still untested โ€” Lessons Learned
  • [Updated] Mealie moved from the nightly Docker tag to latest (stable), now v3.22.0 โ€” no schema change, the Alembic head was already identical. Unraid will now flag updates roughly monthly rather than nightly
  • [Infrastructure] Documented that an unclean Unraid shutdown triggers an automatic correcting parity check, and that mdNumDisabled=1/mdNumInvalid=1 on Lotus is the same benign empty-slot artefact already known on Cooper โ€” check rdevStatus.* per disk rather than the summary counters

2026-07-29

  • [Added] Smart plug register and tagging convention โ€” every plug now carries a permanent tag encoding its connection type (Pw/Pz/Pmw), applied across Tasmota, Home Assistant, UniFi and Zigbee2MQTT โ€” inventory.md
  • [Updated] All five Tasmota WiFi plugs upgraded to firmware 15.5.0 with TelePeriod 60 / PowerDelta1 20 / Sleep 0 / SetOption56 1 and local NTP; the TV plug's 3,727 MQTT reconnects and two plugs stranded on a -88 dBm AP were both resolved โ€” Lessons Learned
  • [Fixed] Corrected three misidentified plugs in the records โ€” .59 feeds Cooper, not the turbo trainer; .54 is a shredder; .52 is not the dishwasher
  • [Removed] Desktop smart plug confirmed failed โ€” associates but passes no traffic at 1 Mbps with poor signal balance; a transmitter fault a factory reset cannot fix
  • [Fixed] Cooper found not to auto-restart after a power cut, and Wake-on-LAN does not work on it โ€” it needs a physical button press โ€” Lessons Learned
  • [Fixed] Powercalc cleaned up โ€” 8 dead entries removed (106 โ†’ 92 entities, unavailable 26 โ†’ 12); sensor.dummy documented as a legitimate internal placeholder, not a fault โ€” Lessons Learned
  • [Added] Living Room UniFi switch modelled as a constant 7 W in Powercalc so it can be taken off its smart plug without leaving the load unaccounted
  • [Fixed] Confirmed the living room's 2.4 GHz channel-6 jamming was the failed boiler smart plug โ€” with it binned, the Living Room AP was moved back to ch6 and sampled clean over ten readings, so the ch11 workaround has been retired โ€” Lessons Learned ยท network.md
  • [Added] 2.4 GHz channel plan documented, including why the Office AP stays on ch1 rather than ch11, and the cu_total/cu_self_tx jamming diagnostic โ€” network.md
  • [Fixed] Zigbee link quality is measurable for the first time โ€” all 76 sensor.*_linkquality entities existed but were disabled by default; enabled via the websocket API. Baseline min 18 / max 142 / avg 69 โ€” Lessons Learned
  • [Infrastructure] Boiler Plug (Third Reality UZ1, Zigbee) installed and in service, replacing the Tasmota plug that failed 2026-07-24 โ€” relay locked on, restores power after an outage โ€” inventory.md
  • [Infrastructure] Lotus Plug (Third Reality UZ1, Zigbee) replaced the failed Tasmota "Lotus Server Plug"; all Home Assistant references repointed, restoring the Homelab Dashboard infrastructure power tiles โ€” inventory.md

2026-07-28

  • [Fixed] NTP was broken for every device on the NoT VLAN โ€” the Allow all Local to NTP firewall policy matched on source port 123, which SNTP clients like Tasmota never use, so all four plugs sat at 1970-01-01. Source port set to Any โ€” Lessons Learned ยท network.md
  • [Fixed] Kitchen kettle smart plug reported 0 W through a 3.2 kW boil โ€” TelePeriod 300 meant short events fell between telemetry reports. Set TelePeriod 60 + PowerDelta 20 โ€” Lessons Learned
  • [Updated] Kettle smart plug firmware 10.0.0 (2021) โ†’ 15.5.0, two-stage via tasmota-minimal.bin as required on 1 MB devices; firmware served from Home Assistant's /config/www/ so no firewall exception was needed โ€” Lessons Learned
  • [Updated] "Alexa, Goodnight" migrated from an Alexa routine into Home Assistant (script.goodnight) โ€” Alexa now only hears the phrase and triggers a scene โ€” Lessons Learned
  • [Fixed] ๐Ÿ‘ค Partner guide corrected โ€” "Alexa, Goodnight" is no longer independent of Home Assistant; it does nothing if HA or Lotus is down, and the alarm must be armed from the keypad instead โ€” partner/common-issues.md
  • [Fixed] Power alert no longer reports the Octopus whole-house meter as the top consumer, and two duplicate power-check automations that both fired on every arm event were consolidated into one
  • [Fixed] Verified the kettle plug fix with a real boil โ€” 76 s at ~3 kW captured start to finish, and measured the house pulse meter lagging the per-plug meter by ~8 s on a 3 kW step, which is why script.goodnight measures load before switching rather than after
  • [Added] Tasmota smart plugs on the NoT VLAN documented in Smart Home Hardware โ€” inventory.md

2026-07-23

  • [Fixed] Develco ZHEMI101 electricity meter interface reporting wrong/zero power after a meter swap โ€” reconfigured pulse_configuration to 2000 imp/kWh (matching the new meter's label), reseated a loose 3.5mm optical sensor jack, and reset the corrupted cumulative total to match the supplier's own meter reading โ€” Lessons Learned
  • [Added] Develco ZHEMI101 to Smart Home Hardware inventory โ€” inventory.md
  • [Infrastructure] Issued a fresh HA long-lived access token for Brabham-side API calls (curl.exe), saved to C:\Users\dan_c.BRABHAM\Temp\ha-api-token.txt โ€” Lessons Learned

2026-07-21

  • [Added] Kitchen Surface tablet in-page launcher โ€” a signed Firefox extension injects a โ˜ฐ menu into every page for real top-level navigation between Kitchen Controls / Photos / Mealie / Gousto (replacing the old iframe-based views), plus a fullscreen-recovery watchdog and a Desktop Access off-ramp. Fixed the edge-swipe-loses-fullscreen regression and dropped --kiosk. Extension source vendored at servers/kitchen-surface-tablet-launcher/ โ€” Kitchen Surface Tablet โ†’ Launcher
  • [Fixed] Kitchen Surface tablet's Mealie login now works โ€” added a local DNS rewrite in both AdGuard instances so mealie.djchome.uk resolves on the LAN instead of a Tailscale-only IP, pointed the dashboard's Mealie card at that HTTPS URL instead of plain HTTP, activating Mealie's own upstream fix (PR #7741) which only works over HTTPS โ€” Kitchen Surface Tablet
  • [Changed] Mealie TOKEN_TIME=8760 (1 year) so the kitchen tablet stays logged in on a single "Remember Me" login instead of every 48h โ€” Kitchen Surface Tablet
  • [Infrastructure] Added mealie.djchome.uk โ†’ 192.168.1.80 DNS rewrite to AdGuard primary and replica โ€” Kitchen Surface Tablet

2026-07-20

  • [Fixed] Kitchen Surface tablet had no working on-screen keyboard โ€” gnome-kiosk session doesn't include one at all (confirmed standalone OSK segfaults under it); migrated autologin to a full GNOME Wayland session configured as a kiosk, keyboard now works โ€” Kitchen Surface Tablet
  • [Infrastructure] Set up SSH access from Brabham to the Kitchen Surface tablet (ssh kitchen-tablet, key-based) and to Home Assistant's SSH add-on (danclark@192.168.1.12, password-only โ€” the add-on manages its own authorized_keys) โ€” Kitchen Surface Tablet
  • [Added] Root-caused Mealie login failing when embedded in the tablet's HA dashboard iframe โ€” Mealie's own v3.20.0 fix for this exact scenario (PR #7741) only activates over HTTPS, and the tablet's dashboard uses plain HTTP; fixed the next day, see 2026-07-21 above โ€” Kitchen Surface Tablet

2026-07-19

  • [Fixed] Found and fixed two follow-on faults after the 2026-07-18 shfs fix: Cooper's Samba share export config (smb-shares.conf) regenerating empty after an array restart, and a stale wedged CIFS mount on Lotus that didn't self-heal once Cooper was fixed โ€” Backup NAS recovery checklist ยท Lessons Learned
  • [Infrastructure] Set up direct SSH access from Brabham to Lotus (port 50123), completing the pair alongside Cooper's
  • [Fixed] Immich ETIMEDOUT connecting to Postgres/Redis after the v3 update, caused by Tailscale's in-container DNS (--accept-dns) racing Node's default parallel A/AAAA lookup; fixed with --dns-option single-request + --accept-dns=false on the immich container โ€” Lessons Learned
  • [Fixed] AdGuard Home primary (Pacific LXC 101) unreachable โ€” root disk (3.9GB) filled to 100% from an unrotated 30-day query log; freed 2.5GB and reduced retention to 7 days โ€” DNS Filtering ยท Lessons Learned
  • [Infrastructure] Set up direct key-based SSH access from Brabham to Pacific (same brabham-claude key as Lotus/Cooper), completing key-based access across all three hosts

2026-07-18

  • [Fixed] Root-caused Cooper's recurring "no exportable user shares" fault to a dead /mnt/user shfs/FUSE mount (not an array/driver fault); found a reboot-free recovery fix โ€” Backup NAS troubleshooting ยท Lessons Learned
  • [Updated] Corrected Cooper's SSH port (50123, not default 22) โ€” Backup NAS
  • [Infrastructure] Set up direct SSH access from Brabham to Cooper (port 50123, key added via Unraid GUI)

2026-04-27

  • [Fixed] Lotus server doc โ€” Immich storage layout documented; corrected LuckyBackup source path from /mnt/user/data/media/immich/ to /mnt/user/immich/; backup table updated with correct paths
  • [Added] Lessons Learned โ€” LuckyBackup was silently backing up wrong Immich path for 9+ months; lesson: verify backup source paths match actual container mounts after any volume reconfiguration

2026-04-25 (continued further)

  • [Infrastructure] Lotus server doc, Cooper server doc, Services, Current State โ€” Immich PostgreSQL streaming replication set up: replicator role created on Lotus, pg_hba.conf updated, pg_basebackup run to seed Cooper replica, immich-pg-relay socat container on Lotus exposes host:5452 โ†’ immich_postgreSQL:5432, immich-postgres-replica container running on Cooper as streaming standby
  • [Added] Lessons Learned โ€” Unraid CA port mapping cannot be safely edited; use socat relay on the same Docker network instead

2026-04-25 (continued)

  • [Infrastructure] Network, Inventory โ€” backup internet connection added: Three LTE SIM in Zyxel LTE3302-M432 connected to UCG Ultra port 4 as WAN2; failover-only mode with health checks pinging 8.8.8.8 and 1.1.1.1; left in router mode to preserve management access at 192.168.2.254

2026-04-25

  • [Infrastructure] Inventory, Cooper server doc โ€” 512GB SSD added to Cooper bay 4 as cache pool
  • [Infrastructure] Cooper server doc โ€” added SWAG standby instance; documented hourly rsync from Lotus and Tailscale folder exclusion requirement
  • [Updated] Services โ€” added Cooper infrastructure section with SWAG entry
  • [Updated] Current State โ€” added SWAG to Cooper service list
  • [Added] Lessons Learned โ€” rsyncing SWAG appdata caused Tailscale node ID conflict; exclude /appdata/swag/.tailscale_state/ from all appdata sync jobs
  • [Infrastructure] Network, Cooper server doc โ€” SWAG hot spare completed; automatic failover script running on Cooper every 5 minutes; Cloudflare DNS flips to Cooper (100.126.183.94) after 2 consecutive failures and fails back automatically on recovery
  • [Infrastructure] Network โ€” Cloudflare DNS consolidated from 29 individual A records to a single *.djchome.uk wildcard; docs.djchome.uk retained as specific record (Cloudflare Pages)
  • [Fixed] Lessons Learned โ€” corrected Tailscale state directory path from tailscale/ to .tailscale_state/

2026-04-15

  • [Updated] After a Power Cut, Internet Is Down, Home Assistant Is Down โ€” added Router-Modem_Pacific.jpg (wardrobe overview), UCG-normal-display.jpg (router screen), PacificNUC-blueNormal.jpg (blue light state) to relevant pages
  • [Updated] After a Power Cut โ€” Step 1 expanded with UPS flat scenario; Step 2 rewritten as internet/WiFi check (2SVT-Main, internet-down link); Step 3 rewritten with Pacific light states table, orange-more-than-once escalation path, Lotus 5-min/beep note, Cooper "not essential" note, closing reassurance line
  • [Updated] Home Assistant Is Down โ€” "Migrate HA to Unraid" video embedded in Step 3; Step 2 cross-references it
  • [Updated] Backup Strategy โ€” restore time added to HA backup methods: ~45 min (HA built-in / Lotus) and ~90 min (PBS full VM / Pacific)
  • [Updated] Network โ€” Physical Setup expanded with switch topology diagram; Switches and Access Points & WiFi sections added (with SSID table); Key IP Addresses table updated with switches, APs, docs.home, gabriela.home; Documentation Access table corrected (local docs live at 192.168.1.81)
  • [Fixed] Internet Is Down โ€” Vodafone icon switched from elax46 (404) to Simple Icons; "Contact Dan" โ†’ "Contact Daniel"
  • [Updated] Partner Guide โ€” gabriela.home, docs.djchome.uk, and docs.home made clickable links
  • [Updated] Home Assistant Is Down โ€” full rewrite: Step 1 retitled and cellular wording added; Step 2 replaced with Pacific power button light guide (off/orange/blue); Step 3 added for backup HA on Lotus with safety warning; Proxmox login video added
  • [Updated] Living Room Wall Panel โ€” photos removed (video covers it better), text steps kept
  • [Updated] Common Issues โ€” doorbell section rewritten: correct WiFi-not-internet dependency, chime reset step, Reolink page check; removed incorrect Frigate/Pacific info
  • [Updated] Hardware Inventory โ€” NUC6CAYH model added to Pacific
  • [Added] Internet Is Down โ€” dedicated partner page extracted from common-issues
  • [Added] Home Assistant Is Down โ€” dedicated partner page
  • [Added] Lights & Smart Devices โ€” dedicated partner page covering single devices, motion sensors (USB + Hue AAA), blind (charge + limit reset), and Zigbee-wide outages
  • [Added] Central Heating โ€” dedicated partner page covering Shelly, TRVs, and manual overrides
  • [Updated] Partner Guide โ€” reordered What's Broken table by likelihood, removed restart sections, links to new individual pages
  • [Updated] Common Issues โ€” reduced to minor/catch-all issues (Plex, doorbell, alarm, noises)
  • [Updated] After a Power Cut โ€” emoji step headings, clickable IP links, Proxmox brand icon
  • [Updated] Living Room Wall Panel โ€” Shelly brand icon on page title
  • [Updated] Zigbee Bridge Fix โ€” Zigbee brand icon on page title
  • [Updated] All partner pages โ€” "Dan" โ†’ "Daniel" throughout; all bare IPs and URLs made clickable (target="_blank"); brand icons added from elax46 and Simple Icons (Home Assistant, Shelly, Philips Hue, Zigbee, Proxmox, Plex, Sonoff, Vodafone, UniFi, Ring, Alexa); icons sized at 1.1em to match emoji scale
  • [Updated] mkdocs.yml โ€” new partner pages added to navigation
  • [Added] .claude/launch.json โ€” MkDocs dev server configuration

2026-04-14

  • [Infrastructure] Gabriela's dashboard live โ€” http://gabriela.home (gethomepage on 192.168.1.82:3000, proxied via docs nginx on 192.168.1.81)
  • [Updated] docs nginx config to proxy gabriela.home alongside serving docs.home
  • [Updated] Current State and Quick Reference โ€” gabriela-homepage container and IP documented
  • [Updated] Gabriela's dashboard โ€” Help Guide link points to http://docs.home/partner/ (direct to partner section); added Audiobookshelf, Immich, Mealie, Reolink doorbell
  • [Infrastructure] Local docs site live โ€” http://docs.home (192.168.1.81, nginx:alpine on Lotus, br0 network, syncs from GitHub every 30 min)
  • [Added] DNS record docs.home โ†’ 192.168.1.81 added to UniFi UCG Ultra
  • [Added] Container icon added to repo at docs/assets/homelab-docs.png
  • [Updated] Partner Guide โ€” added local docs URL and http:// tip
  • [Updated] Quick Reference โ€” local docs URL, Cooper UPS fix, 192.168.1.81 added to device IPs
  • [Updated] Current State โ€” homelab-docs container added to Lotus services
  • [Updated] CLAUDE.md โ€” local docs URL and sync method documented
  • [Added] Common Issues โ€” central heating (Shelly Plus2PM), Sonoff TRVZB section, Ring alarm system, Vodafone outage checker
  • [Updated] Common Issues โ€” Plex section leads with Lotus location check
  • [Added] Boiler overview video and plug socket photo to central heating section
  • [Added] Shelly web interface screenshots (direct WiFi connection steps)

2026-04-13

  • [Added] Initial homelab documentation setup โ€” all core docs populated with real data
  • [Added] Hardware Inventory โ€” Lotus, Cooper, Pacific, Brabham, network equipment, smart home devices
  • [Added] Network โ€” VLANs, WAN, DNS, Tailscale/SWAG external access, domain setup
  • [Added] Current State โ€” all running services across all hosts
  • [Added] Quick Reference โ€” IPs, URLs, SSH commands, backup schedule
  • [Added] Primary NAS โ€” Lotus โ€” server doc
  • [Added] Backup NAS โ€” Cooper โ€” server doc
  • [Added] Proxmox NUC โ€” Pacific โ€” server doc
  • [Added] Services Overview โ€” all services grouped by host and function
  • [Added] Partner Guide โ€” Gabriela-facing landing page
  • [Added] After a Power Cut โ€” step-by-step plain English recovery guide
  • [Added] Common Issues โ€” plain English decision tree for common problems
  • [Updated] CLAUDE.md โ€” replaced setup placeholders with real hostnames, IPs, and network context
  • [Updated] mkdocs.yml โ€” updated site name to "Dan's Homelab", removed unused service stubs
  • [Infrastructure] Created .setup-complete marker โ€” setup mode disabled