# Omada Software Controller (temporary, on David's desktop) Runs the self-hosted Omada Software Controller via the community-maintained [`mbentley/omada-controller`](https://github.com/mbentley/docker-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](../../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](../../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 ```bash docker compose up -d ``` Then open `https://: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](https://hub.docker.com/r/mbentley/omada-controller/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.