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-10-04¶
- [Fixed] Living room front Hue smart button working again after ~2.5 years dead โ automation was off and its blueprint demanded an
input_textmax โฅ 500 that HA now caps at 255 โ Lessons Learned - [Infrastructure] Blueprint forked to
blueprints/automation/danclark/hue_smart_button_multipress.yaml(nosource_url, so Spook can no longer offer to overwrite the patch); upstream copy retired - [Added]
automation.living_room_front_smart_button_watchdogโ alerts viascript.notify_danif the button reports a release but the automation does not fire
2026-09-25¶
- [Infrastructure] Veeam retention fired for the first time in 13 months โ the whole Aug 2025 chain (17 points, ~700 GB) deleted on the first run after 21 โ 10. 2.3 TB โ 1.6 TB, 29 โ 13 restore points. Confirms the chain-eligibility model: whole chains only, never below the floor
- [Note] Veeam collapses one chain per run โ a second equally-eligible chain survived and should go next run
- [Note] First incremental after moving Docker and WSL off C: was 21 GB for two days of change, against historical incrementals of 28โ259 GB. The
.vhdxrelocation shrank every future incremental, not just the one-off 38 GB - [Verified] Settings confirmed live in the job log:
Retention days: 10and monthly first-Monday active fulls. Catch-up fired unattended again (owner=[vbsvc]), as an incremental
2026-09-23¶
- [Added] Workstation โ Brabham โ disk layout across six SSDs, the storage strategy (what lives on which volume and why), and the AppData cleanup
- [Infrastructure] Docker (26.3 GB) and WSL (11.9 GB) moved from C: to E:, NVIDIA
DXCache(20.9 GB) deleted โ C: 57.6 โ 128.9 GB free (12.4% โ 27.7%). Their.vhdxfiles were inflating every nightly incremental as well as the full - [Updated] Veeam retention 21 โ 10 days-with-a-backup. At 21 the floor exceeded what remained after the only deletable chain, so retention was permanently deadlocked and 2.3 TB accumulated
- [Updated] Active fulls weekly Saturday โ monthly, first Monday. Weekly-on-a-weekday produced two fulls in thirteen months; monthly still guarantees twelve source re-reads a year, which is the one thing incrementals and merges never do
- [Fixed] Backup-age watcher now reads real restore points (
.vbk/.vib) rather than the.vbmmetadata file, which is rewritten on failed runs and could read as healthy - [Infrastructure] Veeam staleness alerting is live โ HA token installed on Lotus,
input_number.brabham_backup_age_dayspublishing hourly - [Note]
AppData\Local\LccStudio\DATA(18 GB) is XGRIDS LiDAR project data, not cache โ do not clear it
2026-09-22¶
- [Fixed] Veeam Agent on Brabham upgraded 13.0.2.1102 -> 13.1.1.700. The in-app update failed after the signature stage because the tray launched the installer without elevation; the download itself was valid and was run manually as administrator - Lessons Learned
- [Fixed] Brabham had not backed up since 7 June 2026 (15 weeks). The daily 05:30 job was enabled and healthy, but Brabham is powered down at 05:30 and
Resume missed backupwasFalse, so every missed run was discarded. Catch-up enabled and a manual backup run - [Added] Veeam Agent detail section - job, target, schedule, recovery media and restore steps - recovery/backup-strategy.md
- [Added] Backup-age monitoring for Brabham/Veeam - Lotus User Script feeding Home Assistant, alerting when the newest restore point ages past 3 days
- [Infrastructure] Veeam recovery media recreated on the
VEEAMREUSB stick to match the new agent version - [Updated] Known gap recorded: the
copy lotus brabham backup to cooperUser Script isdisabled, so Brabham backups are single-copy on Lotus - [Fixed] Job schedule corrected: if powered off
Skip backup-> back up once powered on, and after a backupShutdown-> Keep running (the latter would have shut the PC down mid-session once catch-up was enabled) - [Added] Monthly backup health check enabled (last Friday) - detects and auto-heals chain corruption
- [Infrastructure] Active full run 2026-09-22, closing a seven-month chain of 26 incrementals hanging off a single February full. Retention counts days with a backup, not calendar days, and can only drop a whole chain - which is why 1.8 TB accumulated
- [Fixed] The active full failed at 79% with
A device which does not exist was specified(0x1B1). Not a disk fault - C:'s VSS shadow copy storage was capped at 9.29 GB / 1% (Windows default 10%), so Windows destroyed the snapshot Veeam was reading (Volsnap 36). Raised to 30 GB; the cap is not a reservation - [Added] Encryption password recorded as a required restore input (Bitwarden:
veeam backups)
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