Commit graph

327 commits

Author SHA1 Message Date
Claude
27d0e3d451
Add ASCII + Mermaid rack diagrams (before/after) and standalone reference
§12.6 ASCII rack diagram side-by-side, §12.7 Mermaid equivalent for
GitHub-rendered viewing. Standalone copy at docs/network/rack-layout.md
so the visual is reachable without scrolling through the full migration
guide.
2026-05-10 14:59:53 +00:00
Claude
34286aebdf
Add §11 (2.5GbE future upgrade) and §12 (rack layout & cable management)
§11 documents the explicit decision to defer 2.5GbE at the desk, the
constraints that block a quick fix (NUC 1G NIC, Lite-8 1G ports, CRS309
has no 2.5G RJ45), and two upgrade paths for when it's revisited.

§12 captures the current 15U Linkbasic rack contents, a recommended
target layout that puts the patch panel between Lite-8 and CRS309 for
short patches, uses rear-routed DACs through a brush panel so MS-A2 and
UNAS Pro don't have to sit adjacent to the CRS309, and pairs MS-A2 with
the Wyse 5070 on a shared 2U vented shelf. Also includes a physical
migration order, cable-management discipline, and a power-draw delta.

Shopping list renumbered §11 → §13.
2026-05-10 14:53:02 +00:00
8ffcce7d96
Merge pull request #15 from brianpooe/claude/update-homelab-network-docs-wx1pG
Shorten UNAS Pro label in target diagram to prevent overlap
2026-05-09 22:23:59 +02:00
Claude
6a454a83d7
Collapse UNAS Pro node to single-line label 2026-05-09 20:23:06 +00:00
Claude
8f5dd95a0e
Shorten UNAS Pro label in target diagram to prevent overlap 2026-05-09 20:21:27 +00:00
b18a10458f
Merge pull request #14 from brianpooe/claude/update-homelab-network-docs-wx1pG
Retire TL-SG1016DE and Node-RED, document current+target topology
2026-05-09 22:16:41 +02:00
Claude
897c32bc4e
Retire TL-SG1016DE and Node-RED, document current+target topology
- Add §2 "Current Topology" with Lite-8 port map and mermaid diagram so
  readers can see what's changing, not just the destination.
- Retire the TP-Link TL-SG1016DE office switch; office devices fold back
  onto Lite-8 ports 6/7/8 (U3425we monitor, Wyse 5070, optional NUC drop).
- Pin Wyse 5070 as the dedicated Home Assistant host (HA + Mosquitto +
  Z2M stay on it; only the uplink moves).
- Remove Node-RED from the service map — being decommissioned.
- Add §6 "Service Placement" mapping every Docker stack from the repo to
  its target host, plus UNAS Pro NFS share layout.
- New gotchas: Lite-8 port budget, Z2M-over-TCP, Emby VAAPI on MS-A2,
  Beszel host networking, KVM pass-through caveat.
2026-05-09 20:15:22 +00:00
c2bbb5f4d4
Merge pull request #13 from brianpooe/claude/update-homelab-network-docs-wx1pG
Retire DS920+, swap Mac mini for NUC, add SLZB-06U to PoE budget
2026-05-09 19:09:40 +02:00
Claude
4680476ef7
Retire DS920+, swap Mac mini for NUC, add SLZB-06U to PoE budget
DS920+ is fully retired (no backup role). Intel NUC repurposed as
desktop replacing Mac mini. SMLIGHT SLZB-06U Zigbee coordinator is
PoE-powered from the Lite-8, so it's added to the PoE budget table —
new total ~30-35 W of 52 W, but all 4 PoE+ ports are now used.

https://claude.ai/code/session_011ttbGhvdo5k2GTn69kceA2
2026-05-09 17:06:53 +00:00
dea4961672
Merge pull request #12 from brianpooe/claude/update-homelab-network-docs-wx1pG
Redesign homelab network: MikroTik core + pfSense VM + UniFi NAS
2026-05-09 18:55:53 +02:00
Claude
79f4efc675
Update homelab migration doc for revised hardware
Replace UDM Pro / USW-Aggregation / UGREEN DXP8800 Plus / Intel NUC
build with MS-A2 (Proxmox + pfSense VM), MikroTik CRS309-1G-8S+IN,
and UniFi NAS Pro 2U. Power CRS309 via PoE-in from Lite-8, keep
1G SFP-to-RJ45 for Lite-8 uplink (thermal), and host the UniFi
Network Application on the NAS Pro. Mermaid diagram switched to
vertical layout.

https://claude.ai/code/session_011ttbGhvdo5k2GTn69kceA2
2026-05-09 16:52:37 +00:00
Brian Pooe
2381b139a9 docs: correct gambling blocklist domain count to ~203k 2026-04-20 20:40:36 +02:00
Brian Pooe
a56b040ecc docs: add recommended HaGeZi blocklists section to Technitium guide 2026-04-20 13:47:31 +02:00
Brian Pooe
567403f88c fix: use tail -1 in get_env_value so appended secrets are read correctly
head -1 always returned the first (empty) match when a key existed with
an empty value in .env, causing auto-generated secrets like
NODE_RED_CREDENTIAL_SECRET to be ignored during substitution.
2026-04-05 16:30:27 +02:00
Brian Pooe
5b28d31107 fix: persist zigbee2mqtt network config and device names across restarts
- Replace GENERATE placeholders with actual pan_id/network_key values
- Add known devices with friendly names to template
- Setup script now skips zigbee2mqtt config copy if file already exists,
  preventing configuration-adapter mismatch on redeploy
2026-04-05 13:31:23 +02:00
Brian Pooe
42be903bb6 feat: added mobile app integration 2026-04-05 10:18:04 +02:00
Brian Pooe
8d4f0afd9d fix: prepopulate HA_URL with default value in .env.sample 2026-04-04 15:20:33 +02:00
Brian Pooe
7bea9a1787 fix: use absolute build context path so docker compose finds the Dockerfile
The compose file is generated one level above the repo, so a relative
path like ./docker-compose-files/node-red resolves to the wrong directory.
The setup script now injects the absolute path to the Dockerfile directory
as NODE_RED_BUILD_CONTEXT at generation time.
2026-04-04 15:17:11 +02:00
Brian Pooe
6cfeecb118 fix: use relative path in setup script deploy instructions 2026-04-04 15:15:20 +02:00
Brian Pooe
79696e877a feat: add Node-RED variables to .env.sample 2026-04-04 15:09:45 +02:00
Brian Pooe
5afe26ef25 fix: rename nodered subdomain to node-red 2026-04-04 15:06:46 +02:00
Brian Pooe
429697e0aa feat: add nodered subdomain to Caddy reverse proxy 2026-04-04 15:06:17 +02:00
Brian Pooe
3069b90de4 fix: track Dockerfile in git and add gitignore exception
The gitignore pattern for docker-compose-files excluded all files except
templates and config dirs — Dockerfile was silently ignored. Added
!docker-compose-files/**/Dockerfile exception so custom images are tracked.
2026-04-04 15:02:57 +02:00
Brian Pooe
faa3bcdfae feat: add standalone Node-RED stack with Home Assistant integration
- Custom Dockerfile installs node-red-contrib-home-assistant-websocket
  into the base image (not /data) to avoid volume mount conflicts
- Joins ha-network so Node-RED reaches homeassistant:8123 by container name
- HA_URL and HA_TOKEN passed as env vars so the token stays out of flow files;
  use $(HA_URL) and $(HA_TOKEN) when configuring the server node in the editor
- credentialSecret substituted at setup time via setup-node-red.sh, consistent
  with the rest of the project; auto-generates NODE_RED_CREDENTIAL_SECRET if absent
- appdata/node-red owned by uid 1000 to match the container user
- README updated with stack docs, env vars, and deployment steps
2026-04-04 15:01:53 +02:00
Brian Pooe
180bd93eff fix: cert issue with dns resolver not reaching public dns 2026-04-02 21:55:55 +02:00
Brian Pooe
f3e27c6477 use public resolvers for reaching out to cloudflare certs 2026-04-02 20:08:47 +02:00
Brian Pooe
50d05a6e7c fix: dns resolver on caddy 2026-04-01 22:41:26 +02:00
Brian Pooe
995628cd41 fix: correct adapter for SLZB-06U 2026-04-01 22:30:06 +02:00
Brian Pooe
121b5af10d fix: home assistant stack ip addresses 2026-04-01 21:59:14 +02:00
Brian Pooe
f5dd0d6bf4 fix(substitute_env): ignore commented YAML placeholders and prevent unresolved-token loop hang 2026-03-31 22:22:46 +02:00
Brian Pooe
1e12a82438 fix: pass minimal env to substitute_env.sh to avoid SSH key backtracking 2026-03-31 22:15:36 +02:00
Brian Pooe
361ece5e48 fix: parse .env safely to handle values with spaces like SSH keys 2026-03-31 22:11:28 +02:00
Brian Pooe
3f38be8f03 feat: validate required .env variables upfront in setup script 2026-03-31 22:07:38 +02:00
Brian Pooe
de8495afba fix: generate docker-compose and appdata one folder up from repo 2026-03-31 19:41:29 +02:00
Brian Pooe
e24006dd49 refactor: remove all Synology-specific labels, comments, and references 2026-03-31 19:36:24 +02:00
Brian Pooe
c8341768eb refactor: make socket-proxy generic, remove synology-specific labels and comments 2026-03-30 22:20:06 +02:00
Brian Pooe
84edd5cc2b refactor: make beszel-agent generic and use container names in ha healthchecks
- Remove Synology-specific comment, labels, and version field from beszel-agent template
- Use container names (mqtt, zigbee2mqtt) instead of localhost in healthchecks
2026-03-30 21:57:24 +02:00
Brian Pooe
f847433c1e feat: added zigbee host in env 2026-03-29 21:43:25 +02:00
Brian Pooe
05e3cdf0e5 feat: add homeassistant caddy entries and clean up stale references
Caddyfile
- Add Home Automation Stack section with ha. and z2m. subdomains
  proxying to the mini PC on the IoT VLAN (CADDY_IOT_PREFIX.X)
- Comment references Caddy trusted proxy requirement handled by
  ha_configuration.yaml

homeassistant/config/ha_configuration.yaml (new)
- Minimal HA configuration.yaml template with http.trusted_proxies
  set to CADDY_OFFICE_PREFIX.5 (Caddy's static Office VLAN IP per
  network docs) — rendered via substitute_env.sh before first run

Stale reference cleanup
- homeassistant/template.yaml: remove CADDY_HA_HOST from comment,
  add ha_configuration.yaml to pre-run steps
- homeassistant/config/zigbee2mqtt_configuration.yaml: replace
  {{DOCKERCONFDIR}} path comment with ./appdata/ relative path
- README.md: replace $DOCKERCONFDIR in workflow example and stack
  config template paths with ./appdata/; relabel DOCKERCONFDIR env
  var as arr-stack only
2026-03-29 21:36:51 +02:00
Brian Pooe
8e9841f384 chore: ignore generated docker-compose output files
Generated files (docker-compose.*.yml) produced by substitute_env.sh
are environment-specific and should never be committed. Adding the
pattern prevents them from showing as staged after generation.
2026-03-29 21:24:18 +02:00
Brian Pooe
c21ec44583 feat: add per-stack template files and homeassistant stack
Fixes .gitignore to track the new folder-per-stack layout introduced in
the previous refactor commit. The old rule only whitelisted *_template.*
filenames; templates named template.yaml and config/ files were silently
ignored, leaving the repository missing most of its content.

.gitignore
- Whitelist docker-compose-files/**/template.* so the canonical
  template.yaml / template.yml naming is tracked
- Whitelist docker-compose-files/**/config/** so per-stack config
  templates (mosquitto.conf, zigbee2mqtt_configuration.yaml, etc.)
  are tracked alongside their compose template

New stack templates (all migrated from *_template.yaml flat files)
- arr-stack/template.yaml
- beszel-agent/template.yaml
- gramps-web/template.yaml
- postgres/template.yaml — volumes switched from {{DOCKERCONFDIR}} to
  relative ./appdata/ paths (DOCKERCONFDIR reserved for arr-stack only)
- socket-proxy/template.yaml
- technitium/template.yaml
- vault/template.yaml — same DOCKERCONFDIR → ./appdata/ migration

New homeassistant stack
- homeassistant/template.yaml — Home Assistant + Eclipse Mosquitto 2.x +
  Zigbee2MQTT on a shared bridge network (ha-network) so all services
  are reachable by container name (mqtt:1883, zigbee2mqtt:8080)
- homeassistant/config/mosquitto.conf — Mosquitto 2.x config with
  explicit listener declarations (required since 2.0), persistence, and
  WebSocket listener on 9001
- homeassistant/config/zigbee2mqtt_configuration.yaml — Zigbee2MQTT 2.x
  config for SMLIGHT SLZB-06U over PoE+ (TCP socket via {{SLZB06_HOST}}:6638,
  adapter: ember for Silicon Labs EFR32, MQTT via container name mqtt:1883)
2026-03-29 21:18:43 +02:00
Brian Pooe
d102a532ef refactor: organize by stack 2026-03-29 21:09:33 +02:00
Brian Pooe
60bc9f394d fix: env prefix to match vlan 2026-03-28 18:54:19 +02:00
Brian Pooe
362e5a3a07 docs: clean up and consolidate 2026-03-28 10:38:31 +02:00
Brian Pooe
cb625d468c feat: unifi upgrade path 2026-03-28 10:18:50 +02:00
Brian Pooe
a7207a3e90 extracted eraser svgs to logical, physical and combined 2026-03-22 16:42:24 +02:00
Brian Pooe
a214436b8d feat: introduce eraser diagrams 2026-03-21 23:35:27 +02:00
Brian Pooe
e6f9a5f2e8 fix: use icons 2026-03-21 20:18:14 +02:00
Brian Pooe
9c2198d680 fix: draw io mxfile and mxgraphmodel 2026-03-21 19:17:08 +02:00
Brian Pooe
4d1b484989 feat: added docs about homelab network and drawio diagram 2026-03-21 19:15:06 +02:00