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_enabledwas0,/kosyncreturned 503) โ cross-device reading progress now possible - [Infrastructure] Dedicated
kindleCWA account (role 258, Download + Viewer). Replaced thetestaccount, which had admin rights and the passworduser1stored in cleartext on the device.testdeleted;admindeliberately restricted to role 384 - [Infrastructure] Magic Shelf
Kindle(id 17) excludes anything taggedCookbooks/Recipes/Cookingโ tagging in CWA is now the only control needed to keep a book off the device - [Fixed]
duplicate_scan_frequencychangedafter_importโmanualafter 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 policyAllow Kindle to CWAat index 10027, above theDrop IoT from local networkblock. 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_dumpwritten to/mnt/user18 minutes before an accidental power cut did not survive โ it was still in page cache and never reached disk, whilelsshowed it present the whole time. Ad-hoc safety-net backups now need asyncplus afindunder/mnt/diskNto 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
nightlyDocker tag tolatest(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=1on Lotus is the same benign empty-slot artefact already known on Cooper โ checkrdevStatus.*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 1and 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 โ
.59feeds Cooper, not the turbo trainer;.54is a shredder;.52is 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.dummydocumented 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_txjamming diagnostic โ network.md - [Fixed] Zigbee link quality is measurable for the first time โ all 76
sensor.*_linkqualityentities 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 NTPfirewall policy matched on source port 123, which SNTP clients like Tasmota never use, so all four plugs sat at1970-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 300meant short events fell between telemetry reports. SetTelePeriod 60+PowerDelta 20โ Lessons Learned - [Updated] Kettle smart plug firmware 10.0.0 (2021) โ 15.5.0, two-stage via
tasmota-minimal.binas 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.goodnightmeasures 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_configurationto 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 toC:\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 atservers/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.ukresolves 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.80DNS rewrite to AdGuard primary and replica โ Kitchen Surface Tablet
2026-07-20¶
- [Fixed] Kitchen Surface tablet had no working on-screen keyboard โ
gnome-kiosksession 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 ownauthorized_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
shfsfix: 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
ETIMEDOUTconnecting 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=falseon 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-claudekey 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/usershfs/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:
replicatorrole created on Lotus, pg_hba.conf updated, pg_basebackup run to seed Cooper replica,immich-pg-relaysocat container on Lotus exposes host:5452 โ immich_postgreSQL:5432,immich-postgres-replicacontainer 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.ukwildcard;docs.djchome.ukretained 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 at1.1emto 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.81added 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-completemarker โ setup mode disabled