Commit Graph
188 Commits
Author SHA1 Message Date
Kaloyan DanchevandClaude Opus 5 da981a7b40 docs: Unraid exit node approved
Approved in the Tailscale admin console, so xtrm-unraid now shows as
"offers exit node" and appears in tailscale exit-node list. The tailnet has
two exit nodes: mikrotik-tailscale (primary) and xtrm-unraid (fallback).

Neither has been exercised from the Mac. Noted that without
--exit-node-allow-lan-access an exit node cuts the client's own LAN access,
which would break an SSH session routed over Tailscale.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-11-03 21:51:49 +02:00
Kaloyan DanchevandClaude Opus 5 666b9baa5c docs: Unraid re-enrolled on Tailscale as 100.100.208.69
Unraid's Tailscale plugin node had been logged out since roughly May 2026.
Re-enrolled as xtrm-unraid (100.100.208.69); the stale 100.100.208.70 node
was deleted first, so the tailnet issued a new address.

Dropped the old 192.168.31.0/24 advertisement — that subnet is only the
macvlan shim and nothing reachable lives there. No LAN subnet routes are
advertised from Unraid; the MikroTik container stays primary. accept-routes
and accept-dns stay off, the former because Unraid sits on 192.168.10.0/24
and would otherwise loop.

Tailscale SSH enabled, since sshd binds only 192.168.10.20 and
192.168.31.250 and so never listens on the Tailscale IP. Port forwarding
over it verified.

Exit node advertised, pending approval in the admin console.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-11-03 21:42:14 +02:00
Kaloyan DanchevandClaude Opus 4.6 2021c50deb docs: add IoT miIO masquerade NAT rule
Xiaomi miIO/MIoT devices silently ignore UDP packets from source IPs
outside their subnet. Added SRCNAT masquerade rule documentation for
VLAN 10 → VLAN 30 on UDP 54321, enabling HA local control of air
purifiers and other Xiaomi WiFi devices.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-10-28 23:46:21 +02:00
Kaloyan DanchevandClaude Opus 4.6 892c026ddd docs: add Music Assistant Traefik route (ma.xtrm-lab.org)
HA add-on exposed on port 8095, routed via Traefik dynamic config.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-10-17 10:32:21 +03:00
Kaloyan DanchevandClaude Opus 5.5 5690e93f60 BT proxy #1 renamed to main-bedroom-bt-proxy, static lease
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 17:29:16 +03:00
Kaloyan DanchevandClaude Opus 5.5 1f9ce581fc HA: corridor Bluetooth proxy added
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 15:20:55 +03:00
Kaloyan DanchevandClaude Opus 5.5 c9caaa6a17 Network: cAP XL ether2 on VLAN 30 for Olimex BT proxies
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 11:04:41 +03:00
Kaloyan DanchevandClaude Opus 5.5 83b1dc3b50 HA: desk monitor input switching via DDC/CI (temporary Mac transport)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 13:21:59 +03:00
Kaloyan DanchevandClaude Opus 5.5 65aaa63508 HA: Jarvis ball Now Playing view, screen timeout, battery gauge
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:37:53 +03:00
Kaloyan DanchevandClaude Opus 5.5 4be77bf5b7 HA: Jarvis voice satellite (XiaoZhi Ball → ESPHome), static lease 192.168.30.111, Jarvis Piper voice, switch_as_x lights
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 00:26:41 +03:00
Kaloyan DanchevandClaude Opus 5.5 f22044a2f0 Govee: govee2mqtt LAN-only, static leases, IGMP proxy removed
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 20:09:30 +03:00
Kaloyan DanchevandClaude Opus 5.5 bf83b4f097 MikroTik IGMP proxy for Govee discovery; HA Govee rebuilt (local + cloud package)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 19:19:19 +03:00
Kaloyan DanchevandClaude Opus 4.6 b88a2fc113 Home Assistant: Zigbee migration (dining/living/curtain/remote) + LG TV root
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-10-11 15:42:44 +03:00
Kaloyan DanchevandClaude Opus 5.5 26a5867bc6 Home Assistant voice control: wyoming stack, Assist pipelines, Gemini fallback
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 22:50:14 +03:00
Kaloyan DanchevandClaude Opus 5.5 77e2fa45ec MikroTik: all devices on 7.24.5, disable unused local CAP client on hAP
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 21:05:48 +03:00
Kaloyan DanchevandClaude Opus 5.5 229077d586 DNS: add Cloudflare DoH + plain fallback upstreams to AdGuard
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 21:02:04 +03:00
Kaloyan DanchevandClaude Opus 5.5 c1f607b9ef DNS: fix VLAN10 failover hairpin NAT, MikroTik AdGuard 0.107.79
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 20:40:10 +03:00
Kaloyan DanchevandClaude Opus 5.5 6c6a251865 Traefik: SAMEORIGIN frame option for HA route; SmartThings soundbar
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 20:32:50 +03:00
Kaloyan DanchevandClaude Opus 5.5 9fa2e56090 Add Samsung soundbar and mDNS repeater (VLAN 10<->30); note casting firewall drift
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 19:57:18 +03:00
Kaloyan DanchevandClaude Opus 5.5 1821492753 MikroTik: RouterOS 7.24.5, Ookla speedtest container on hAP, speed baseline
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 19:25:31 +03:00
Kaloyan DanchevandClaude Opus 5.5 d8ce9e8aa7 Unraid: remove dockge and Home-Assistant-Container
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 18:54:27 +03:00
Kaloyan DanchevandClaude Opus 5.5 a48647a0fa Unraid: restore authentik and the stopped services, fix IP/port conflicts
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 18:42:38 +03:00
Kaloyan DanchevandClaude Opus 5.5 e45d48c0e2 Unraid: container recovery after reboot, Nextcloud 35, image updates
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 18:27:06 +03:00
Kaloyan DanchevandClaude Opus 5 4c1517884b wifi: set country=Bulgaria on all radios, remove TKIP from cfg-xtrm
The country=United States override existed to reach UNII-3 (5745 MHz),
which is not permitted in the EU. It cost more than it gained: clients in
the BG regulatory domain were power-restricted on those channels.

Setting country=Bulgaria raised the test client from 241 to 295 Mbps
immediately and ~451 Mbps once rate adaptation settled, with client signal
improving from -72 to -67 dBm. Total gain this session: 38 -> 451 Mbps.

Also:
- cfg-xtrm security.encryption tkip -> ccmp (provisioning rule 0 would
  have handed TKIP to any new 5GHz CAP interface, forcing legacy rates)
- cap-wifi1 moved to 5220 MHz (ch 44, non-DFS, legal in BG); still disabled
- Corrected: HAP wifi2 is disabled with encryption="", not tkip
- Noted that country does NOT hard-block an illegal frequency

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-27 17:32:15 +03:00
Kaloyan DanchevandClaude Opus 5 1fba4673be wifi: move hAP 5GHz from ch 149 to ch 36, fix doc drift
Channel 149 (UNII-3) is not permitted in Bulgaria/EU. The radio reached it
via country=United States, but BG-domain clients were power-restricted
there, giving a badly asymmetric link and ~38 Mbps at the desk.

Moving to 5180 MHz (ch 36), legal in BG and non-DFS, raised the same
client to ~241 Mbps.

Also corrected:
- CAP capdp datapath is vlan-id=30, not 40
- RouterOS versions: hAP, cAP XL and cAP AC are all on 7.23.3
- Added WAN baseline: ~880 Mbps down / ~720 Mbps up on a 1 Gbps ONT link

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-27 16:55:29 +03:00
Kaloyan DanchevandClaude Opus 4.8 c2c7ffad1b fix(dns): failover-down redirects to Unraid AdGuard port 53 not 3000
ci/woodpecker/push/woodpecker Pipeline was successful
Audit 2026-08-07 found dns-failover-down NAT script pointed DNS traffic
at 192.168.10.10:3000 (AdGuard web UI) instead of :53 (DNS resolver).
On real failover this would have broken DNS network-wide. Fixed live on
MikroTik and verified with controlled failover test.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-07 11:04:11 +03:00
Kaloyan DanchevandClaude Fable 5 83bc6f4e1d HA: Floorplan v3 — per-room Gemini API renders composited on exact geometry
ci/woodpecker/push/woodpecker Pipeline was successful
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-07 10:29:26 +03:00
Kaloyan DanchevandClaude Fable 5 968b197192 HA: Floorplan photorealistic background (Gemini interiors + PIL composite on exact geometry)
ci/woodpecker/push/woodpecker Pipeline was successful
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-07 10:00:08 +03:00
Kaloyan DanchevandClaude Fable 5 5a7c9738e6 HA: Floorplan furnished with native SVG furniture (AI render path shelved)
ci/woodpecker/push/woodpecker Pipeline was successful
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-06 19:06:58 +03:00
Kaloyan DanchevandClaude Fable 5 a5bb083790 HA: Roborock tracker v4 — dock-anchored weighted calibration
ci/woodpecker/push/woodpecker Pipeline was successful
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 12:27:05 +03:00
Kaloyan DanchevandClaude Fable 5 2d34b15f32 HA: Roborock tracker calibration v3 (goto tour) + bedroom segment mapping
ci/woodpecker/push/woodpecker Pipeline was successful
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 12:07:33 +03:00
Kaloyan DanchevandClaude Fable 5 0578b64f1a HA: Roborock live-position tracker on Floorplan (calibrated from cleaning history)
ci/woodpecker/push/woodpecker Pipeline was successful
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 10:29:55 +03:00
Kaloyan DanchevandClaude Fable 5 2e1b8301ef HA: Easy Floorplan dashboard with generated apartment plan
ci/woodpecker/push/woodpecker Pipeline was successful
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 19:29:10 +03:00
Kaloyan DanchevandClaude Fable 5 7dc280bdcf HAOS: System monitoring dashboard + smartmon local addon (SMART via full_access)
ci/woodpecker/push/woodpecker Pipeline was successful
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 17:21:56 +03:00
Kaloyan DanchevandClaude Fable 5 59f71e95bd HA: Roborock single-card redesign with Browser Mod popup (presets + room cleaning)
ci/woodpecker/push/woodpecker Pipeline was successful
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 14:14:56 +03:00
Kaloyan DanchevandClaude Opus 4.8 ce7095f0ac docs: add 2026-07-30 Prism multi-view Mushroom dashboard deployment
ci/woodpecker/push/woodpecker Pipeline was successful
5-view Mushroom dashboard deployed to HAOS via init_commands technique
(file-based YAML cannot be saved via lovelace/config/save WebSocket).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-30 11:54:27 +03:00
Kaloyan DanchevandClaude Opus 4.8 c814a56874 docs: HAOS 6 smart-home integrations + cross-VLAN/OAuth notes (2026-07-29)
ci/woodpecker/push/woodpecker Pipeline was successful
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-29 19:54:07 +03:00
Kaloyan DanchevandClaude Opus 4.8 c22b5aefac docs: add bare-metal HAOS (ASRock Q1900) — install, UEFI-from-SATA fix, VLAN10, ha.xtrm-lab.org repoint
ci/woodpecker/push/woodpecker Pipeline was successful
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-28 23:05:01 +03:00
Kaloyan Danchev 9be1f64d99 second-brain: hybrid Claude memory + git-based vault sync (Mac + Unraid)
ci/woodpecker/push/woodpecker Pipeline was successful
2026-07-14 12:06:38 +03:00
jazzymc 21ff7f5c12 [IMMICH] Deploy Immich v3 photo server (Google Photos replacement)
ci/woodpecker/push/woodpecker Pipeline was successful
- Compose stack at appdata/immich, exposed via Traefik at photos.xtrm-lab.org
- Library on cache NVMe (raidz1), Postgres on cache
- Nightly backup (DB dump + originals rsync) to parity-protected array disk1
- Google Takeout import ready via immich-go v0.32.0
2026-07-08 15:15:14 +00:00
Kaloyan DanchevandClaude Opus 4.8 ea8e1e626c docs(hardware): identify XTRM-U mainboard (N5 Air) + flag 1Gbps network anomaly
ci/woodpecker/push/woodpecker Pipeline was successful
- Mainboard was 'details TBD': Minisforum N5 Air (Meigao F8NAB/N5A), Ryzen 7 255
  + 780M, 64GB DDR5-5600, USB4/TB, free OCuLink + PCIe x8 + M.2; OS -> Unraid 7.3.1
- Network: 10G/5G NICs but link only 1Gbps (eth1 degraded at 10Mb/s) — flagged

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 11:45:10 +03:00
Kaloyan DanchevandClaude Opus 4.8 2a34c42270 docs(services): correct Ollama iGPU entry — remove flash-attn/q8_0, note large-prompt crash
ci/woodpecker/push/woodpecker Pipeline was successful
The flash-attention + q8_0 KV cache settings were removed after they (and the
gfx1103 ROCm path generally) crash on large prompts. Document that the 780M iGPU
is direct/interactive-chat only, not an agent backend (Hermes ~15.5k-token prompt
crashed every call; reverted to cloud model).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 22:14:41 +03:00
Kaloyan DanchevandClaude Opus 4.8 3a28e42543 docs(services): add Ollama iGPU (Radeon 780M / ROCm) entry
ci/woodpecker/push/woodpecker Pipeline was successful
- Document ollama migrated to Dockge stack on ollama/ollama:rocm with
  gfx1103 enablement (HSA_OVERRIDE_GFX_VERSION=11.0.0, OLLAMA_IGPU_ENABLE=1)
- Verified Ornith 1.0 9B runs 100% on the 780M iGPU (~11 tok/s)
- CHANGELOG entry for 2026-06-29
- (also includes previously-uncommitted Development services section
  already present in the working tree)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 21:38:28 +03:00
jazzymc 08874ca0b3 autokuma: fix v1->v2 config and label syntax
- Replace v1 AUTOKUMA_DOCKER=1 with v2 env vars (ENABLED, HOSTS, SOURCE)
- Rewrite traefik-manager labels in v2 4-part syntax: kuma.<id>.<type>.<setting>
- Delete manually-created monitor #38; AutoKuma recreates it (now #39) cleanly
- Document v2 label requirements and the remaining v1-label migration

Default AUTOKUMA__DOCKER__SOURCE is Swarm Services — must be set to
Containers for standalone Docker. v2 also doesn't accept the v1 shorthand
(kuma=URL + kuma.name=... + kuma.type=...), only the explicit 4-part form.
2026-05-18 12:45:19 +03:00
jazzymc 980df5517d dockerproxy: pin traefik-manager to .4, add direct TCP monitor for traefik
- Pinned traefik-manager to 172.18.0.4 (was floating in the dynamic pool)
- Added Uptime Kuma monitor id=38 "Traefik Container (direct)" — TCP probe
  at 172.18.0.3:80, decoupled from the routing-layer HTTP probe so a
  Traefik container failure is distinguishable from a routing breakage
- Documented that AutoKuma v2 is silently broken; monitor was created via
  direct SQL insert as a workaround
2026-05-17 11:54:29 +03:00
jazzymc dd1c15cf6b dockerproxy: redesign IPAM with static block + dynamic /25 pool
Recreated dockerproxy network with --ip-range 172.18.0.128/25 so Docker
auto-allocations are isolated from the .2-.127 static reservation block.
Eliminates IP-collision class that caused the 2026-05-17 Traefik outage.

Adds 13-DOCKERPROXY-NETWORK.md as the canonical reference for the
network spec, recreate command, and current IP assignments.
2026-05-17 08:36:46 +03:00
jazzymc 6506b22aea incident: traefik IP collision on dockerproxy (2026-05-17) 2026-05-17 08:10:39 +03:00
jazzymcandClaude Opus 4.6 02d07a8e52 docs: add Plex RD mount propagation fix to changelog
Fixed Transport endpoint not connected error — Plex volume mount
needed :rslave propagation to see rclone FUSE mount from zurg.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-05 21:15:38 +00:00
jazzymc 38e83410bd docs: update Docker container inventory to current state
- Add new services: Ollama, Open WebUI, Overseerr, Radarr, Sonarr, Prowlarr,
  Zurg/Rclone, Plex Debrid, ntfy, Obsidian LiveSync, Supabase stack, pgAdmin4,
  Dockhand, SeekAndWatch, xtrm-agent, Tuya Gateway
- Remove NetBox and Diode (no longer running)
- Fix Speedtest URL (speed.xtrm-lab.org)
- Update monitor count to 24
- Update stopped/disabled services list
- Update shared databases and Redis consumers
2026-05-05 19:24:57 +00:00
jazzymc 9cad25d25b docs: HA Traefik fix, Nextcloud upgrade, Uptime Kuma monitor fixes — all 24 monitors green 2026-05-05 19:13:48 +00:00