blumeops/docs/reference/infrastructure/unifi.md
Erich Blume ce59e9951b Fix frontmatter field name: date-modified -> modified
Quartz's CreatedModifiedDate plugin recognizes `modified`, `lastmod`,
`updated`, and `last-modified` — but not `date-modified`. The wrong
field name caused Quartz to fall through to filesystem timestamps
(UTC in Dagger), showing incorrect dates on the rendered site.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 16:43:12 -08:00

2.5 KiB

title modified tags
UniFi 2026-02-10
infrastructure
networking

UniFi

Home WiFi router and network controller, managed via Pulumi IaC.

Quick Reference

Property Value
Model UniFi Express 7 (UX7)
LAN IP 192.168.1.1
Management URL https://192.168.1.1
IaC pulumi/unifi/ (planned)
Stack home-network (planned)
Power Battery-backed via UPS (see power)

What It Does

The UX7 is the home WiFi access point and network gateway. It provides:

  • WiFi (main, guest, IoT networks)
  • DHCP for 192.168.1.0/24
  • Built-in UniFi controller for managing adopted devices (switches, APs)
  • Firewall and traffic management

Network Topology

ISP Modem
  └── UniFi Express 7 [WAN]
       └── [LAN port] ──→ Switch A (by router/sifaka)
            ├── sifaka (Synology NAS)
            └── ~12ft Cat6 ──→ Switch B (on desk)
                                 ├── indri (Mac Mini, primary server)
                                 ├── ringtail (Raspberry Pi)
                                 └── (gilbert via USB-C adapter, optional)

All wired devices share the 192.168.1.0/24 subnet. The two daisy-chained UniFi Switch Flex Minis provide enough ports for all devices while using the UX7's single LAN port.

Pulumi Configuration (Planned)

The Pulumi program will live in pulumi/unifi/:

  • __main__.py — declares networks, WLANs, and firewall zones
  • Pulumi.home-network.yaml — stack config (router URL, site)
  • sdks/unifi/ — generated Python SDK from pulumi package add terraform-provider filipowm/unifi

Provider: filipowm/terraform-provider-unifi v1.0.0, consumed via pulumi package add terraform-provider.

See add-unifi-pulumi-stack for the full implementation plan.

Operations

Task Command
Preview changes mise run unifi-preview (planned)
Apply changes mise run unifi-up (planned)
Web management https://192.168.1.1

Authentication

The provider uses an API key created in the UX7 control plane (Settings → Control Plane → API). The key is stored in 1Password (op://blumeops/unifi - blumeops/api_key) and injected via mise task environment variables.