Infrastructure/docker/omada-controller
2026-09-27 06:57:14 +02:00
..
docker-compose.yml Adds initial repo structure for the internal network configuration 2026-09-27 06:57:14 +02:00
README.md Adds initial repo structure for the internal network configuration 2026-09-27 06:57:14 +02:00

Omada Software Controller (temporary, on David's desktop)

Runs the self-hosted Omada Software Controller via the community-maintained mbentley/omada-controller image, avoiding TP-Link's cloud controller.

This instance is meant to be temporary: it runs on David's Linux desktop just long enough to adopt the ER605 (and later the switch/AP) instead of leaving them in standalone mode, then gets migrated to the NUC once that's provisioned — see ../../docs/omada-controller-migration.md.

The desktop does not need to run 24/7. The ER605 keeps forwarding traffic on its last-known config even if the controller is offline — you only lose live management/statistics visibility while it's down.

Prerequisites

  • Docker + Docker Compose installed on the desktop.
  • ER605 firmware already updated — see ../../docs/er605-firmware-update.md. Do this first; it's harder once the device is controller-managed.
  • Desktop and ER605 on the same L2 network segment (needed for adoption's broadcast discovery).

Bring it up

docker compose up -d

Then open https://<desktop-ip>:8043 and walk through the initial setup wizard (create the controller admin account, name the site, etc).

Adopt the ER605

  1. In the controller UI, go to the site's Devices view — the ER605 should appear as "Pending" once discovery finds it on the network.
  2. Click Adopt and enter the router's current admin credentials when prompted.
  3. Wait for adoption to finish and the device to show Connected.

Notes

  • Image tag is pinned to a major.minor version (currently 6.3) — check Docker Hub tags before bumping it, and never move backwards to an older version once the Mongo database has been touched by a newer one.
  • network_mode: host is used because Omada discovery/adoption depends on a wide range of UDP/TCP ports and broadcast traffic; bridging those individually is more fragile than just sharing the host network.
  • Controller data lives in the omada-data / omada-logs named Docker volumes, not bind mounts — back them up via the controller's own Settings → Maintenance → Backup feature (see the migration guide), not by copying the volume directly.