Files
nixfiles/docs/sites/home/sfh/containers/hass.md
T
jackos1998 a04d11423a nixos/home: Separate router storage and uplinks
Give `river` a dedicated RDMA VF and two RSTP trunk attachments.
Keep client services on the router VIPs and carry Digiweb VLANs
over both switch paths.

Set VF trust, multicast reception, bridge MAC and ARP behavior for
local switching. Wait for Kea interface readiness and apply RSTP
costs through `mstpd` despite port-registration and rename races.

Load `palace`'s RAID module in the initrd. Record RouterOS and
RouterBOOT upgrades and validate port, carrier and switch outages.

Document the deployed architecture, interface handoffs and recovery
procedures. Add physical socket maps, NIC capacities and cable
connections alongside the logical topology and failover checks.
2026-11-15 16:23:06 +00:00

2.8 KiB

hass

Home automation container: Home Assistant plus its supporting services (MQTT, camera restreaming, Frigate NVR), running on sfh.

Role

Home Assistant

services.home-assistant uses declarative configuration (configWritable = false). It enables the esphome, zha, denonavr, webostv, androidtv_remote, heos, mqtt, wled, met and google_translate components, plus custom alarmo, frigate, west_wood_club and Irish Rail integrations. A hass-cli wrapper uses a token from my.secrets to reach the local server.

  • mosquitto — MQTT broker (anonymous local listener; port 1883 allowed, alongside HTTP).
  • go2rtc — restreams the Reolink living-room camera (RTSP from reolink-living-room, on the lo network) and the office USB webcam (/dev/video0 via ffmpeg).
  • Frigate (services.frigate, frigate.h.nul.ie — the frigate alt name on the hi assignment) — records both restreamed cameras with a short retention policy; detection is disabled.
  • External access is via https://hass.nul.ie through the middleman reverse proxy (trusted_proxies); internally it's hass-ctr.h.nul.ie.
  • Not a deploy-rs target (my.deploy.enable = false) — it's rendered via my.asContainer and started by sfh's my.containers.instances.

Network assignments

See the consolidated network assignments table (this box: hass).

Storage

Frigate footage lives on a separate HDD LV: palace passes the hdds/frigate LVM LV to the sfh VM, sfh mounts it at /mnt/frigate, and the container bind-mounts it at /var/lib/frigate (read-write). This keeps recording churn off the NVMe-oF root.

Devices

Passed through from sfh (USB host ports on palace):

  • Nabu Casa Connect ZBT-1 Zigbee coordinator → /dev/ttyUSB0 (used by zha).
  • USB webcam → /dev/video0 (go2rtc's webcam_office stream).
  • The matching raw USB device node allowed through from sfh.

Networking

MACVLAN interfaces created from sfh's container NICs: host0 on ctrs-hi (the hi assignment, alt name frigate, default gateway via the VIP) and lan-lo on ctrs-lo (the lo assignment, no gateway) — the lo interface reaches the IoT devices (the Reolink camera lives there).

Notable config files