Commit Graph
142 Commits
Author SHA1 Message Date
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
jazzymc b05a5f1574 docs: Uptime Kuma cleanup - fix stale IPs and remove duplicates 2026-05-05 18:40:30 +00:00
jazzymcandClaude Opus 4.6 8e3cde9d7c docs: add Kasm Workspaces service and fix changelog
Document Kasm DinD architecture, Traefik integration, and the
proxy_port/frameDeny fixes that resolved session connection failures.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-05 17:38:17 +00:00
Kaloyan DanchevandClaude Opus 4.6 9cc955e62b docs: document wifi-qcom-ac driver limitation for CAPsMAN manager processing
cAP XL ac cannot support traffic-processing=on-capsman (Qualcomm driver
limitation). Updated CAP device info, VLAN assignment notes, and added
troubleshooting entry for "could not assign vlan" errors.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 19:27:53 +03:00
jazzymcandClaude Opus 4.6 d0b4fae25e WiFi troubleshooting guide, fix empty security overrides, update config docs
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 16:18:50 +02:00
Kaloyan DanchevandClaude Opus 4.6 6320c0f8d9 Docs: Claude Code tooling setup on Unraid — Cooperator, glab, skills, MCP prep
Installed Cooperator CLI, glab, uv+Python 3.12, 6 custom skills,
and built MCP servers (shortcut, mikrotik, unraid). MCP registration
via `claude mcp add` still pending as TODO.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 22:13:44 +02:00
jazzymc 8aef54992a Docker audit: migrate all containers to Dockge, clean up Traefik config
ci/woodpecker/push/woodpecker Pipeline was successful
2026-02-28 20:39:16 +02:00
Kaloyan DanchevandClaude Opus 4.6 7867b5c950 WiFi VLAN fixes, CAP bridge filtering, AdGuard IP conflicts, channel optimization
ci/woodpecker/push/woodpecker Pipeline was successful
- Enable bridge VLAN filtering on CAP for proper per-client VLAN assignment
- Fix AdGuard container IP conflicts (.2→.10, .3→.11) with static IPs
- Fix 2.4GHz co-channel interference (both APs were on ch 1, CAP now ch 6)
- Fix 5GHz overlap (HAP ch 36/5180, CAP moved to ch 52/5260)
- Update WiFi access-list: VLAN assignment now active with per-device VLAN IDs
- Add Xiaomi Air Purifier MC1 to VLAN 30 access-list

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 09:40:29 +02:00
Kaloyan DanchevandClaude Opus 4.6 cdb961f943 Post-migration container cleanup: fix broken services, remove obsolete containers
ci/woodpecker/push/woodpecker Pipeline was successful
Fixed Traefik networking (stale Docker bridge), adguardhome-sync config,
diode stack (Hydra DB + OAuth2 bootstrap), diode-agent auth. Removed 5
deprecated/duplicate containers. Started unmarr + rustfs stacks. 53
containers now running.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 17:30:15 +02:00
Kaloyan DanchevandClaude Opus 4.6 877aa71d3e Update docs: motherboard swap, NVMe cache pool, Docker migration
ci/woodpecker/push/woodpecker Pipeline was successful
- New motherboard installed, MAC/DHCP updated
- 3x Samsung 990 EVO Plus 1TB NVMe cache pool (ZFS RAIDZ1)
- Docker migrated from HDD loopback to NVMe ZFS storage driver
- disk1 confirmed dead (clicking heads), still on parity emulation
- Hardware inventory, changelog, and incident report updated

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 14:47:07 +02:00
Kaloyan DanchevandClaude Opus 4.6 bf6a62a275 Add incident report: disk1 hardware failure (clicking/head crash)
HGST Ultrastar 10TB drive (serial 2TKK3K1D) failed on Feb 18.
Array running degraded on parity emulation. Recovery plan documented.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 17:54:23 +02:00
Kaloyan DanchevandClaude Opus 4.6 0119c4d4d8 docs: add Minecraft server, WiFi DHCP fix to changelog
ci/woodpecker/push/woodpecker Pipeline was successful
- Added Minecraft Java server section to 03-SERVICES-OTHER.md
- Documented WiFi DHCP fix (VLAN 40 tagged→untagged on wifi1/wifi2)
- Documented Minecraft deployment and hairpin NAT setup

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 22:16:32 +02:00
Kaloyan DanchevandClaude Opus 4.6 2a522d56d2 docs: update configs after CAP recovery and roms share setup
ci/woodpecker/push/woodpecker Pipeline was successful
- 07-WIFI-CAPSMAN: CAP both radios working, access list no VLAN assignment
- 01-NETWORK-MAP: fix CAP IP .6→.2, add Nobara and SMB shares section
- 04-HARDWARE-INVENTORY: CAP SSH/version details, add Recalbox device
- 06-VLAN-DEVICE-ASSIGNMENT: add Nobara (VLAN 10), Recalbox (VLAN 25)
- 03-SERVICES-OTHER: add Roms SMB share section with mount details
- CHANGELOG: add 2026-02-14 entries

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 16:50:01 +02:00
Kaloyan DanchevandClaude Opus 4.6 4e726a4963 Add cross-VLAN casting docs, update device assignments
ci/woodpecker/push/woodpecker Pipeline was successful
- New doc: 11-CROSS-VLAN-CASTING.md with full MikroTik config
  (firewall rules, FastTrack exclusion, mDNS, IGMP proxy,
  AirPlay/Chromecast troubleshooting)
- Update device IPs: LG TV .40/.41, Chromecast .42
- Move HP printer from VLAN 40 to VLAN 30 at .30

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 18:28:55 +02:00
Kaloyan DanchevandClaude Opus 4.6 ecbce1ca94 Add VRRP failover infrastructure documentation (Nobara)
ci/woodpecker/push/woodpecker Pipeline was successful
Deployed automatic failover for critical services (Traefik, Vaultwarden,
Authentik, AdGuard) from Unraid to Nobara workstation via Keepalived VRRP
with VIP 192.168.10.250. ~4 second failover time.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 18:03:26 +02:00
Kaloyan DanchevandClaude Opus 4.6 4305657ad0 Add Bosch Home Connect integration to HA setup docs
Oven (HRG7784B1) and Washing Machine (WGB24400BY) added via OAuth2.
Both dashboards updated with Bosch appliance sections.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 19:23:46 +02:00
Kaloyan DanchevandClaude Opus 4.6 5af3c9478b Add Home Assistant setup documentation
Covers HAOS VM setup, Xiaomi/Gree/Tuya integrations, visionOS theme,
Mushroom Cards dashboards (mobile + desktop), and known issues.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 11:30:17 +02:00
Kaloyan DanchevandClaude Opus 4.6 c93f7da733 Add Unraid flash drive migration procedure
Flash drive on XTRM-U is failing. Created incident doc with complete
step-by-step procedure: backup retrieval (4 options), new USB prep via
Flash Creator, license transfer via Tools→Registration, post-migration
verification checklist, and prevention measures.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 15:14:43 +02:00
Kaloyan DanchevandClaude Opus 4.6 ec9659d0cb Restructure docs: archive VLAN migration, update IPs to VLAN 10
ci/woodpecker/push/woodpecker Pipeline was successful
Major documentation cleanup after VLAN migration completion:
- Archive 12 VLAN project docs to archive/vlan-migration/
- Archive 5 done WIP docs (VLAN proposals, AI stack, Fossorial, DNS backup)
- Create standing reference docs 08-DNS-ARCHITECTURE and 09-TAILSCALE-VPN
- Renumber docs to clean 01-09 sequence with merged CHANGELOG
- Update all active docs from stale 192.168.31.x to current VLAN 10 IPs
- Fix CSS1 (.10.9→.10.3) and ZX1 (.10.7→.10.4) IPs in hardware inventory
- Clean 06-VLAN-DEVICE-ASSIGNMENT: remove migration columns/sections, fix VLAN 25 subnet

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 12:45:16 +02:00
Kaloyan DanchevandClaude Opus 4.5 81f2f03400 Replace Portainer with Dockge for container management
ci/woodpecker/push/woodpecker Pipeline was successful
- Remove Portainer, add Dockge on port 5001
- Add project-specific CLAUDE.md with infrastructure instructions
- Update services documentation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-06 08:01:42 +02:00
Kaloyan DanchevandClaude Opus 4.5 60369e6f43 Add Settop Box to VLAN 30 device list
ci/woodpecker/push/woodpecker Pipeline was successful
- LAN MAC: FC:D5:D9:EB:6A:82 → 192.168.30.50 (CSS326 Port 23)
- WiFi MAC: 08:FB:EA:61:9D:3A → 192.168.30.51 (XTRM2 2.4GHz)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 15:56:12 +02:00
Kaloyan DanchevandClaude Opus 4.5 740170a164 Add Roborock S7 to WPA+TKIP device list
ci/woodpecker/push/woodpecker Pipeline was successful
Fixed XTRM2 WiFi by enabling WPA-PSK + WPA2-PSK and setting
fixed channel 2412 MHz (channel 1) with 20MHz width.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 13:52:52 +02:00
Kaloyan DanchevandClaude Opus 4.5 c1ab68f499 Update CSS326 switch configuration with port labels
ci/woodpecker/push/woodpecker Pipeline was successful
- Configured VLANs 10, 20, 25, 30 on CSS326 via SwOS API
- Added port labels: HAP-Trunk, KVM-V10, Kids-B1/B2/G1, Main-M1/M2/M3, LR-L1/L2/L3, ZX1-10G
- Updated port assignments table with detailed per-port configuration

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 13:39:16 +02:00
Kaloyan DanchevandClaude Opus 4.5 5b8c8b72ec Add CSS326 port assignments with VLAN mapping
ci/woodpecker/push/woodpecker Pipeline was successful
- Port 1: HAP Uplink (Trunk)
- Port 2: KVM (VLAN 10)
- Ports 16-18: Kids Rooms (VLAN 25)
- Ports 19-21: Main Bedroom (VLAN 20)
- Ports 22-24: Living Room (VLAN 30, includes settop box)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 12:14:36 +02:00
Kaloyan DanchevandClaude Opus 4.5 76106664a7 Update HAP ax³ port assignments documentation
- ether1: ISP Gateway (WAN)
- ether2: CAP XL ac
- ether3: CSS326-24G-2S+
- ether4: XTRM-U (Unraid)
- ether5: Dell Monitor LAN

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 11:27:18 +02:00
Kaloyan DanchevandClaude Opus 4.5 6ba0f4c14f Add Kaloyan's device MAC addresses
- USB Hub: 34:0A:33:2C:1E:28
- MacBook Pro WiFi 5GHz: BE:A7:95:87:19:4A
- MacBook Pro WiFi 2.4GHz: CE:B8:11:EA:8D:55

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 09:19:38 +02:00
Kaloyan DanchevandClaude Opus 4.5 7e03532700 Identify Tuya Smart Gateway (JMWZG1) MAC address
- 38:1F:8D:04:6F:E4 is the Tuya Smart Gateway, not Xiaomi
- New IP: 192.168.30.5
- Requires WPA+TKIP for connectivity

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 09:14:16 +02:00
Kaloyan DanchevandClaude Opus 4.5 b7c998121e Reorganize VLAN 20/25 device assignments
- VLAN 20 (Trusted): Kaloyan's devices only (S25, MacBook, Gaming PC, USB Hub)
- VLAN 25 (Family): All other family members (Nora, Dancho, Kimi, Compusbg)
- Dell Monitor LAN moved to VLAN 10 (connected to HAP ether5)
- Added TBD section for USB Hub and Gaming PC WiFi MACs

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 09:05:02 +02:00
Kaloyan DanchevandClaude Opus 4.5 5608c45e05 Update Dell Monitor LAN device with new VLAN assignment
ci/woodpecker/push/woodpecker Pipeline was successful
- Renamed MacBook Pro LAN to Dell Monitor LAN
- Assigned to VLAN 10 (Management) with IP 192.168.20.100

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 21:51:47 +02:00
Kaloyan DanchevandClaude Opus 4.5 9a6b725a14 Add device migration worksheet with all devices by VLAN
Includes columns for new VLAN and new IP planning:
- 36 devices across 7 VLANs
- Organized by VLAN section and flat list views
- Ready for migration planning

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 20:28:28 +02:00
Kaloyan DanchevandClaude Opus 4.5 0c492d016c Add WiFi/CAPsMAN config and fix Xiaomi OUI misidentification
ci/woodpecker/push/woodpecker Pipeline was successful
- Created docs/19-WIFI-CAPSMAN-CONFIG.md documenting working WiFi settings
- Fixed 38:1F:8D:04:6F:E4 OUI - was incorrectly labeled as Tuya, is actually Xiaomi
- XTRM2 (2.4GHz) requires WPA+WPA2 with TKIP for legacy device compatibility
- CAPsMAN working with CAP XL ac on 2.4GHz

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 20:14:44 +02:00
Kaloyan DanchevandClaude Opus 4.5 2a3bdb9934 Fix KVM switch: working Nobara → Mac with correct HID++ commands
ci/woodpecker/push/woodpecker Pipeline was successful
- Discovered correct HID++ feature indices per device
- Updated to_mac.sh with working hidapitester commands
- Updated docs with complete setup instructions
- Mac → Nobara direction still needs work (TODO)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 13:38:17 +02:00
jazzymcandClaude Opus 4.5 0c50f7088c Update changelog: KVM switch documentation added
ci/woodpecker/push/woodpecker Pipeline was successful
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 09:44:36 +02:00
jazzymcandClaude Opus 4.5 0d0131d2b2 Add KVM switch documentation for Mac/Nobara setup
ci/woodpecker/push/woodpecker Pipeline was successful
- DDC/CI monitor switching (Dell U3821DW)
- HID++ Logitech peripheral switching (MX Keys S, MX Master 3S)
- Scripts for bidirectional switching
- Troubleshooting guide and reference

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 09:44:20 +02:00
jazzymc b95ba0f444 fix: resolve DNS issues - update DHCP to use gateway as DNS 2026-01-31 23:25:56 +02:00
jazzymc 886f46bd77 docs: log network connectivity issue
docs: add Docker cleanup changelog + log network issue (2026-01-31)
2026-01-31 23:11:05 +02:00
Kaloyan DanchevandClaude Opus 4.5 7470d3f502 Update documentation with correct VLAN IPs
ci/woodpecker/push/woodpecker Pipeline was successful
Hardware Inventory:
- Unraid server: 192.168.10.20
- Unraid AdGuard (macvlan): 192.168.10.10
- Router: 192.168.10.1
- CSS326 switch: 192.168.10.9
- ZX switch: 192.168.10.7
- cAP XL: 192.168.10.6

Critical Services:
- Updated DNS section with correct container IPs
- Added failover details and Web UI URLs
- Updated routing to reflect VLAN structure
- Updated DHCP pools for all VLANs

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 22:22:10 +02:00
Kaloyan DanchevandClaude Opus 4.5 f56a43741d Update DNS failover with dual health check
- Added DNS resolution Netwatch monitor (type=dns) alongside ping
- Ping check: Fast container crash detection (10s interval)
- DNS check: Actual DNS functionality verification (30s interval)
- Either monitor failing triggers failover to Unraid
- Documented /32 routing fix for multi-container ECMP issue
- Updated troubleshooting section with routing checks

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 20:52:49 +02:00
Kaloyan DanchevandClaude Opus 4.5 d34cea9df6 Add MikroTik Tailscale container documentation
ci/woodpecker/push/woodpecker Pipeline was successful
Documents the Tailscale container setup on MikroTik hAP ax³:
- Userspace networking mode (TS_USERSPACE=true) required for RouterOS containers
- Container network configuration (172.17.0.0/24)
- NAT masquerade for internet access
- Environment variables and mount configuration
- Troubleshooting guide for common issues

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 18:43:27 +02:00
Kaloyan DanchevandClaude Opus 4.5 4b766145b4 Add AdGuard DNS setup with automatic failover documentation
- docs/16-ADGUARD-VLAN-PLAN.md: Implementation plan for AdGuard on VLANs
- docs/17-DNS-ADGUARD-FAILOVER.md: Complete DNS architecture with:
  - Dual AdGuard setup (MikroTik primary, Unraid secondary)
  - Automatic failover via Netwatch monitoring
  - NAT redirect rules for all VLANs
  - Sync configuration between instances
- docs/wip/CONSOLE-PORT-ETHER5.md: WIP plan for dedicated console port

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 17:22:18 +02:00