Network Controllers

Network Controllers #

Purpose #

Network controllers provide centralized management for switches and access points. They enable VLAN configuration, firmware updates, and API-based automation across all managed network devices.

graph LR
    A[Bootstrap Node
hosts controller] <--> B[Network Controller
Omada/UniFi] <--> C[Switches & APs
managed devices]

Both controllers run on the bootstrap node as containerized services, providing management capability during initial network configuration.


Software Platforms #

Site: mobile (mobile)

The Omada SDN Controller manages all TP-Link Omada devices in the mobile site, including the SG2218 switch and EAP650-Outdoor access point.

Software #

AttributeValue
SoftwareOmada SDN Controller
DeploymentPodman container on bootstrap node
Web UIPort 8043 (HTTPS)
DiscoveryL2 discovery or manual adoption

Managed Devices #

DeviceType
SG2218Access Switch
EAP650-OutdoorAccess Point

Capabilities #

FeatureDescription
VLAN ManagementCreate VLANs, assign ports, configure trunks
SSID ConfigurationCreate SSIDs, map to VLANs, set security
Firmware UpdatesCentralized firmware management
REST APIAutomation via deevnet.net Ansible collection
Zero-touch ProvisioningDevices auto-discover and adopt

Automation #

The controller is driven through its documented Open API β€” the spec the running controller serves at /v3/api-docs β€” and not through the undocumented internal API ( ADR-0009 Β§3). Inventory is the only declaration of site structure; the controller applies it.

WhatHow
LAN networks, PPSK profiles, SSIDs, the AP’s name and addressdeevnet.net playbooks/omada-wireless.yml, via make wireless
Tenant Wi-Fi keys inside a PPSK profilethe Deevnet API, per tenant ( ADR-0012 Β§3)
Switch ports and VLANsnot yet adopted β€” see CHG-0009

make wireless plans without writing by default; APPLY=1 writes and ADOPT=1 also adopts a pending AP.

Two Open API clients, on purpose #

An Open API client needs a global role, so only the controller’s Owner can create one β€” the site-scoped automation account cannot. There are two, and they are not interchangeable:

ClientUsed byCredential
Ansible’somada-wireless.ymlvault_omada_openapi_client_id / _secret
The Deevnet API’stenant Wi-Fi key issuancevault_omada_api_client_id / _secret

Both need the same permission β€” every PPSK write requires site-wide Network Config Page Modify β€” so this is not about privilege. It is about blast radius, independent rotation, and being able to tell the two apart in the controller’s audit log: revoking the API’s client must not stop make wireless working, and revoking Ansible’s must not stop tenants issuing keys.

The API reaches the controller over a single declared path, platform -> management on 8043 from the provisioning VM only.

The controller’s event log records device events, not client associations. It will tell you that an AP connected or dropped; it will not tell you afterwards whether a client briefly lost its association. If that matters for a change, watch a client directly while the change runs.

Site: home (home)

The UniFi Network Application manages all Ubiquiti UniFi devices in the home site, including the USW-24-G2 and US-8 switches, and both UAP-AC-M access points.

Software #

AttributeValue
SoftwareUniFi Network Application
DeploymentPodman container on bootstrap node
Web UIPort 8443 (HTTPS)
DiscoveryL2 discovery or manual adoption

Managed Devices #

DeviceTypeQuantity
USW-24-G2Access Switch (primary)1
US-8Access Switch (secondary)1
UAP-AC-MAccess Point2

Capabilities #

FeatureDescription
VLAN ManagementCreate networks, assign port profiles
SSID ConfigurationCreate WLANs, map to networks, set security
Firmware UpdatesCentralized firmware management
REST APIAutomation via UniFi API
Zero-touch ProvisioningDevices auto-discover and adopt

Automation #

The UniFi controller provides a REST API. Automation is currently manual but planned:

ComponentStatus
Switch portsManual (API available)
VLANs/NetworksManual (API available)
WLANsManual (API available)

Controller Comparison #

FeatureOmada SDN (mobile)UniFi Network (home)
Managed switchesSG2218USW-24-G2, US-8
Managed APsEAP650-OutdoorUAP-AC-M (x2)
Web UI port80438443
APIRESTREST
Ansible supportdeevnet.net collectionPlanned
Container runtimePodmanPodman
Page last modified: September 18, 2026