Repository files navigation

Omada Controller Docker Compose

Modern Docker Compose stack for the TP-Link Omada Software Controller with external MongoDB, host-network adoption support, backups, preflight checks, and a smaller controller-only image.

This project is a clean, source-built alternative for running Omada Controller in Docker after the LinuxServer image was retired. It is designed for home labs, small networks, and self-hosted Omada SDN deployments that want explicit versions, separate MongoDB lifecycle management, and operational tooling instead of a large all-in-one container.

Unofficial project. TP-Link Omada Software Controller is proprietary software downloaded from TP-Link. This repository packages and operates it; it does not redistribute or audit TP-Link's application.

TP-Link Software And Container Images

The repository code is open source, but TP-Link Omada Software Controller is proprietary software. No explicit TP-Link permission to redistribute Omada Controller binaries inside public Docker images was found in the official download page or the Linux .tar.gz package. Public container images that include Omada binaries are published only if redistribution permission is confirmed.

Until then, the default workflow builds the image locally from the official TP-Link Linux package URL that you provide in .env. The GitHub Actions release workflow includes a GHCR publishing path, but it is gated by the repository variable TP_LINK_REDISTRIBUTION_OK=true and should remain disabled unless you have confirmed that publishing images with Omada binaries is allowed.

Official Omada download page: https://support.omadanetworks.com/us/download/software/omada-controller/

Why This Omada Docker Stack Exists

Many existing Omada Controller Docker images use all-in-one packaging or are no longer maintained. This repository takes a different approach:

  • Controller-only Docker image: no bundled MongoDB server inside the Omada container.
  • External MongoDB service: official mongo:8.2 (override the tag with MONGO_IMAGE), authentication enabled, separate volumes and healthcheck.
  • Docker Compose first: host-mode default for LAN discovery and adoption, bridge/macvlan examples for advanced users.
  • Safe operations: preflight checks, backup workflow, support bundle, password rotation, and downgrade guard.
  • Explicit Omada versions: no latest tag workflow and no automatic major-version upgrades.
  • Clean v6 target: starts with Omada Software Controller 6.2.10.17 and avoids legacy v3/v4/v5 entrypoint complexity.

Quickstart

This project currently uses a source-build workflow. Build the controller image locally before starting the stack.

cp .env.example .env
$EDITOR .env
make preflight
make build
make up

Then open:

https://<host-ip>:8043/

Configure Omada automatic backups in the UI immediately after first login.

What You Get

AreaDefault
ControllerLocally built as local/omada-controller:${OMADA_VERSION}
Omada version6.2.10.17
DatabaseExternal mongo:8.2 service (MONGO_IMAGE)
MongoDB exposurePrivate Docker bridge network, no host port
NetworkingHost mode for easiest Omada device discovery and adoption
Data volumesSeparate Omada data, Omada logs, MongoDB data, MongoDB config
Java runtimeJava 17
Target platformlinux/amd64 first

Requirements

  • Docker Engine with Compose v2.
  • linux/amd64.
  • CPU support required by MongoDB 8 (AVX).
  • Linux kernel 6.19 or newer requires MONGO_IMAGE=mongo:8.2 or newer-with-fix. mongo:8.0 refuses to start on those kernels (SERVER-121912); see docs/configuration.md.
  • Official TP-Link Omada Linux .tar.gz artifact URL.
  • Strong MongoDB passwords in .env.

Configuration

Edit .env before building:

OMADA_VERSION=6.2.10.17OMADA_URL=https://...OMADA_SHA256=MONGO_ROOT_PASSWORD=change-this-root-passwordOMADA_MONGO_PASSWORD=change-this-omada-passwordOMADA_MONGO_BACKUP_PASSWORD=change-this-backup-passwordOMADA_MONGO_SUBNET=172.28.0.0/24OMADA_MONGO_IPV4=172.28.0.10

Use OMADA_SHA256 when a trusted checksum is available. If no checksum is available, the build records trust-on-first-use artifact metadata.

If Docker reports Pool overlaps with other one on this address space, change OMADA_MONGO_SUBNET and OMADA_MONGO_IPV4 together, for example 172.31.240.0/24 and 172.31.240.10.

Commands

Run make help for the full command contract.

CommandPurpose
make preflightValidate Docker, Compose, .env, controller ports, MongoDB exposure, and CPU compatibility
make buildBuild local/omada-controller:${OMADA_VERSION}
make upStart the host-mode Omada Controller and MongoDB stack
make up-bridgeStart the bridge-mode stack for advanced deployments
make downStop the host-mode stack
make logsFollow controller and MongoDB logs
make smokeCheck Compose status and the Omada login endpoint
make backupStop the controller, run authenticated mongodump, restart the controller
make support-bundleCollect redacted diagnostics
make rotate-mongo-passwordRotate Omada or backup MongoDB user passwords

Networking And Device Adoption

Host networking is the default because Omada adoption and discovery are LAN-native workflows. In host mode:

  • Omada Controller binds directly on the Docker host network.
  • MongoDB runs on a dedicated Docker bridge network with no host port mapping.
  • Device discovery and adoption behave closest to a bare-metal controller.

Bridge mode is available, but adoption usually requires DHCP Option 138, a manual Inform URL, or TP-Link's discovery utility. See networking.md and adoption.md.

Backups And Upgrades

Use two backup layers:

  • Omada UI automatic backups for application-level recovery.
  • make backup for authenticated MongoDB disaster-recovery dumps.

Before upgrading Omada:

  1. Read TP-Link release notes.
  2. Export an Omada UI backup.
  3. Run make backup.
  4. Update OMADA_VERSION, OMADA_URL, and OMADA_SHA256.
  5. Rebuild with make build.
  6. Start with make up.
  7. Verify login, sites, devices, adoption state, and logs.

See backup-restore.md and upgrades.md.

Supported Scope

  • Clean Omada v6 installs.
  • Docker Compose v2.
  • MongoDB 8 (default mongo:8.2).
  • linux/amd64.
  • Local source builds from explicit TP-Link artifact URLs or staged artifacts.

Intentionally Unsupported

  • Prebuilt public controller images unless Omada redistribution permission is confirmed.
  • latest controller tags.
  • Embedded MongoDB inside the controller container.
  • Legacy v3/v4/v5 upgrade logic in the entrypoint.
  • ARMv7.
  • Automatic major-version upgrades.
  • Exposing MongoDB to the LAN by default.

Documentation

License

Repository packaging code is MIT licensed. TP-Link Omada Software Controller is proprietary software and must be downloaded from TP-Link by the user or builder.

About

Modern Docker Compose stack for TP-Link Omada Controller with external MongoDB, host-network adoption, backups, and preflight checks.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Omada Controller Docker Compose

Modern Docker Compose stack for the TP-Link Omada Software Controller with external MongoDB, host-network adoption support, backups, preflight checks, and a smaller controller-only image.

This project is a clean, source-built alternative for running Omada Controller in Docker after the LinuxServer image was retired. It is designed for home labs, small networks, and self-hosted Omada SDN deployments that want explicit versions, separate MongoDB lifecycle management, and operational tooling instead of a large all-in-one container.

Unofficial project. TP-Link Omada Software Controller is proprietary software downloaded from TP-Link. This repository packages and operates it; it does not redistribute or audit TP-Link's application.

TP-Link Software And Container Images

The repository code is open source, but TP-Link Omada Software Controller is proprietary software. No explicit TP-Link permission to redistribute Omada Controller binaries inside public Docker images was found in the official download page or the Linux .tar.gz package. Public container images that include Omada binaries are published only if redistribution permission is confirmed.

Until then, the default workflow builds the image locally from the official TP-Link Linux package URL that you provide in .env. The GitHub Actions release workflow includes a GHCR publishing path, but it is gated by the repository variable TP_LINK_REDISTRIBUTION_OK=true and should remain disabled unless you have confirmed that publishing images with Omada binaries is allowed.

Official Omada download page: https://support.omadanetworks.com/us/download/software/omada-controller/

Why This Omada Docker Stack Exists

Many existing Omada Controller Docker images use all-in-one packaging or are no longer maintained. This repository takes a different approach:

  • Controller-only Docker image: no bundled MongoDB server inside the Omada container.
  • External MongoDB service: official mongo:8.2 (override the tag with MONGO_IMAGE), authentication enabled, separate volumes and healthcheck.
  • Docker Compose first: host-mode default for LAN discovery and adoption, bridge/macvlan examples for advanced users.
  • Safe operations: preflight checks, backup workflow, support bundle, password rotation, and downgrade guard.
  • Explicit Omada versions: no latest tag workflow and no automatic major-version upgrades.
  • Clean v6 target: starts with Omada Software Controller 6.2.10.17 and avoids legacy v3/v4/v5 entrypoint complexity.

Quickstart

This project currently uses a source-build workflow. Build the controller image locally before starting the stack.

cp .env.example .env
$EDITOR .env
make preflight
make build
make up

Then open:

https://<host-ip>:8043/

Configure Omada automatic backups in the UI immediately after first login.

What You Get

AreaDefault
ControllerLocally built as local/omada-controller:${OMADA_VERSION}
Omada version6.2.10.17
DatabaseExternal mongo:8.2 service (MONGO_IMAGE)
MongoDB exposurePrivate Docker bridge network, no host port
NetworkingHost mode for easiest Omada device discovery and adoption
Data volumesSeparate Omada data, Omada logs, MongoDB data, MongoDB config
Java runtimeJava 17
Target platformlinux/amd64 first

Requirements

  • Docker Engine with Compose v2.
  • linux/amd64.
  • CPU support required by MongoDB 8 (AVX).
  • Linux kernel 6.19 or newer requires MONGO_IMAGE=mongo:8.2 or newer-with-fix. mongo:8.0 refuses to start on those kernels (SERVER-121912); see docs/configuration.md.
  • Official TP-Link Omada Linux .tar.gz artifact URL.
  • Strong MongoDB passwords in .env.

Configuration

Edit .env before building:

OMADA_VERSION=6.2.10.17OMADA_URL=https://...OMADA_SHA256=MONGO_ROOT_PASSWORD=change-this-root-passwordOMADA_MONGO_PASSWORD=change-this-omada-passwordOMADA_MONGO_BACKUP_PASSWORD=change-this-backup-passwordOMADA_MONGO_SUBNET=172.28.0.0/24OMADA_MONGO_IPV4=172.28.0.10

Use OMADA_SHA256 when a trusted checksum is available. If no checksum is available, the build records trust-on-first-use artifact metadata.

If Docker reports Pool overlaps with other one on this address space, change OMADA_MONGO_SUBNET and OMADA_MONGO_IPV4 together, for example 172.31.240.0/24 and 172.31.240.10.

Commands

Run make help for the full command contract.

CommandPurpose
make preflightValidate Docker, Compose, .env, controller ports, MongoDB exposure, and CPU compatibility
make buildBuild local/omada-controller:${OMADA_VERSION}
make upStart the host-mode Omada Controller and MongoDB stack
make up-bridgeStart the bridge-mode stack for advanced deployments
make downStop the host-mode stack
make logsFollow controller and MongoDB logs
make smokeCheck Compose status and the Omada login endpoint
make backupStop the controller, run authenticated mongodump, restart the controller
make support-bundleCollect redacted diagnostics
make rotate-mongo-passwordRotate Omada or backup MongoDB user passwords

Networking And Device Adoption

Host networking is the default because Omada adoption and discovery are LAN-native workflows. In host mode:

  • Omada Controller binds directly on the Docker host network.
  • MongoDB runs on a dedicated Docker bridge network with no host port mapping.
  • Device discovery and adoption behave closest to a bare-metal controller.

Bridge mode is available, but adoption usually requires DHCP Option 138, a manual Inform URL, or TP-Link's discovery utility. See networking.md and adoption.md.

Backups And Upgrades

Use two backup layers:

  • Omada UI automatic backups for application-level recovery.
  • make backup for authenticated MongoDB disaster-recovery dumps.

Before upgrading Omada:

  1. Read TP-Link release notes.
  2. Export an Omada UI backup.
  3. Run make backup.
  4. Update OMADA_VERSION, OMADA_URL, and OMADA_SHA256.
  5. Rebuild with make build.
  6. Start with make up.
  7. Verify login, sites, devices, adoption state, and logs.

See backup-restore.md and upgrades.md.

Supported Scope

  • Clean Omada v6 installs.
  • Docker Compose v2.
  • MongoDB 8 (default mongo:8.2).
  • linux/amd64.
  • Local source builds from explicit TP-Link artifact URLs or staged artifacts.

Intentionally Unsupported

  • Prebuilt public controller images unless Omada redistribution permission is confirmed.
  • latest controller tags.
  • Embedded MongoDB inside the controller container.
  • Legacy v3/v4/v5 upgrade logic in the entrypoint.
  • ARMv7.
  • Automatic major-version upgrades.
  • Exposing MongoDB to the LAN by default.

Documentation

License

Repository packaging code is MIT licensed. TP-Link Omada Software Controller is proprietary software and must be downloaded from TP-Link by the user or builder.

About

Modern Docker Compose stack for TP-Link Omada Controller with external MongoDB, host-network adoption, backups, and preflight checks.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Omada Controller Docker Compose

Modern Docker Compose stack for the TP-Link Omada Software Controller with external MongoDB, host-network adoption support, backups, preflight checks, and a smaller controller-only image.

This project is a clean, source-built alternative for running Omada Controller in Docker after the LinuxServer image was retired. It is designed for home labs, small networks, and self-hosted Omada SDN deployments that want explicit versions, separate MongoDB lifecycle management, and operational tooling instead of a large all-in-one container.

Unofficial project. TP-Link Omada Software Controller is proprietary software downloaded from TP-Link. This repository packages and operates it; it does not redistribute or audit TP-Link's application.

TP-Link Software And Container Images

The repository code is open source, but TP-Link Omada Software Controller is proprietary software. No explicit TP-Link permission to redistribute Omada Controller binaries inside public Docker images was found in the official download page or the Linux .tar.gz package. Public container images that include Omada binaries are published only if redistribution permission is confirmed.

Until then, the default workflow builds the image locally from the official TP-Link Linux package URL that you provide in .env. The GitHub Actions release workflow includes a GHCR publishing path, but it is gated by the repository variable TP_LINK_REDISTRIBUTION_OK=true and should remain disabled unless you have confirmed that publishing images with Omada binaries is allowed.

Official Omada download page: https://support.omadanetworks.com/us/download/software/omada-controller/

Why This Omada Docker Stack Exists

Many existing Omada Controller Docker images use all-in-one packaging or are no longer maintained. This repository takes a different approach:

  • Controller-only Docker image: no bundled MongoDB server inside the Omada container.
  • External MongoDB service: official mongo:8.2 (override the tag with MONGO_IMAGE), authentication enabled, separate volumes and healthcheck.
  • Docker Compose first: host-mode default for LAN discovery and adoption, bridge/macvlan examples for advanced users.
  • Safe operations: preflight checks, backup workflow, support bundle, password rotation, and downgrade guard.
  • Explicit Omada versions: no latest tag workflow and no automatic major-version upgrades.
  • Clean v6 target: starts with Omada Software Controller 6.2.10.17 and avoids legacy v3/v4/v5 entrypoint complexity.

Quickstart

This project currently uses a source-build workflow. Build the controller image locally before starting the stack.

cp .env.example .env
$EDITOR .env
make preflight
make build
make up

Then open:

https://<host-ip>:8043/

Configure Omada automatic backups in the UI immediately after first login.

What You Get

AreaDefault
ControllerLocally built as local/omada-controller:${OMADA_VERSION}
Omada version6.2.10.17
DatabaseExternal mongo:8.2 service (MONGO_IMAGE)
MongoDB exposurePrivate Docker bridge network, no host port
NetworkingHost mode for easiest Omada device discovery and adoption
Data volumesSeparate Omada data, Omada logs, MongoDB data, MongoDB config
Java runtimeJava 17
Target platformlinux/amd64 first

Requirements

  • Docker Engine with Compose v2.
  • linux/amd64.
  • CPU support required by MongoDB 8 (AVX).
  • Linux kernel 6.19 or newer requires MONGO_IMAGE=mongo:8.2 or newer-with-fix. mongo:8.0 refuses to start on those kernels (SERVER-121912); see docs/configuration.md.
  • Official TP-Link Omada Linux .tar.gz artifact URL.
  • Strong MongoDB passwords in .env.

Configuration

Edit .env before building:

OMADA_VERSION=6.2.10.17OMADA_URL=https://...OMADA_SHA256=MONGO_ROOT_PASSWORD=change-this-root-passwordOMADA_MONGO_PASSWORD=change-this-omada-passwordOMADA_MONGO_BACKUP_PASSWORD=change-this-backup-passwordOMADA_MONGO_SUBNET=172.28.0.0/24OMADA_MONGO_IPV4=172.28.0.10

Use OMADA_SHA256 when a trusted checksum is available. If no checksum is available, the build records trust-on-first-use artifact metadata.

If Docker reports Pool overlaps with other one on this address space, change OMADA_MONGO_SUBNET and OMADA_MONGO_IPV4 together, for example 172.31.240.0/24 and 172.31.240.10.

Commands

Run make help for the full command contract.

CommandPurpose
make preflightValidate Docker, Compose, .env, controller ports, MongoDB exposure, and CPU compatibility
make buildBuild local/omada-controller:${OMADA_VERSION}
make upStart the host-mode Omada Controller and MongoDB stack
make up-bridgeStart the bridge-mode stack for advanced deployments
make downStop the host-mode stack
make logsFollow controller and MongoDB logs
make smokeCheck Compose status and the Omada login endpoint
make backupStop the controller, run authenticated mongodump, restart the controller
make support-bundleCollect redacted diagnostics
make rotate-mongo-passwordRotate Omada or backup MongoDB user passwords

Networking And Device Adoption

Host networking is the default because Omada adoption and discovery are LAN-native workflows. In host mode:

  • Omada Controller binds directly on the Docker host network.
  • MongoDB runs on a dedicated Docker bridge network with no host port mapping.
  • Device discovery and adoption behave closest to a bare-metal controller.

Bridge mode is available, but adoption usually requires DHCP Option 138, a manual Inform URL, or TP-Link's discovery utility. See networking.md and adoption.md.

Backups And Upgrades

Use two backup layers:

  • Omada UI automatic backups for application-level recovery.
  • make backup for authenticated MongoDB disaster-recovery dumps.

Before upgrading Omada:

  1. Read TP-Link release notes.
  2. Export an Omada UI backup.
  3. Run make backup.
  4. Update OMADA_VERSION, OMADA_URL, and OMADA_SHA256.
  5. Rebuild with make build.
  6. Start with make up.
  7. Verify login, sites, devices, adoption state, and logs.

See backup-restore.md and upgrades.md.

Supported Scope

  • Clean Omada v6 installs.
  • Docker Compose v2.
  • MongoDB 8 (default mongo:8.2).
  • linux/amd64.
  • Local source builds from explicit TP-Link artifact URLs or staged artifacts.

Intentionally Unsupported

  • Prebuilt public controller images unless Omada redistribution permission is confirmed.
  • latest controller tags.
  • Embedded MongoDB inside the controller container.
  • Legacy v3/v4/v5 upgrade logic in the entrypoint.
  • ARMv7.
  • Automatic major-version upgrades.
  • Exposing MongoDB to the LAN by default.

Documentation

License

Repository packaging code is MIT licensed. TP-Link Omada Software Controller is proprietary software and must be downloaded from TP-Link by the user or builder.

About

Modern Docker Compose stack for TP-Link Omada Controller with external MongoDB, host-network adoption, backups, and preflight checks.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Omada Controller Docker Compose

Modern Docker Compose stack for the TP-Link Omada Software Controller with external MongoDB, host-network adoption support, backups, preflight checks, and a smaller controller-only image.

This project is a clean, source-built alternative for running Omada Controller in Docker after the LinuxServer image was retired. It is designed for home labs, small networks, and self-hosted Omada SDN deployments that want explicit versions, separate MongoDB lifecycle management, and operational tooling instead of a large all-in-one container.

Unofficial project. TP-Link Omada Software Controller is proprietary software downloaded from TP-Link. This repository packages and operates it; it does not redistribute or audit TP-Link's application.

TP-Link Software And Container Images

The repository code is open source, but TP-Link Omada Software Controller is proprietary software. No explicit TP-Link permission to redistribute Omada Controller binaries inside public Docker images was found in the official download page or the Linux .tar.gz package. Public container images that include Omada binaries are published only if redistribution permission is confirmed.

Until then, the default workflow builds the image locally from the official TP-Link Linux package URL that you provide in .env. The GitHub Actions release workflow includes a GHCR publishing path, but it is gated by the repository variable TP_LINK_REDISTRIBUTION_OK=true and should remain disabled unless you have confirmed that publishing images with Omada binaries is allowed.

Official Omada download page: https://support.omadanetworks.com/us/download/software/omada-controller/

Why This Omada Docker Stack Exists

Many existing Omada Controller Docker images use all-in-one packaging or are no longer maintained. This repository takes a different approach:

  • Controller-only Docker image: no bundled MongoDB server inside the Omada container.
  • External MongoDB service: official mongo:8.2 (override the tag with MONGO_IMAGE), authentication enabled, separate volumes and healthcheck.
  • Docker Compose first: host-mode default for LAN discovery and adoption, bridge/macvlan examples for advanced users.
  • Safe operations: preflight checks, backup workflow, support bundle, password rotation, and downgrade guard.
  • Explicit Omada versions: no latest tag workflow and no automatic major-version upgrades.
  • Clean v6 target: starts with Omada Software Controller 6.2.10.17 and avoids legacy v3/v4/v5 entrypoint complexity.

Quickstart

This project currently uses a source-build workflow. Build the controller image locally before starting the stack.

cp .env.example .env
$EDITOR .env
make preflight
make build
make up

Then open:

https://<host-ip>:8043/

Configure Omada automatic backups in the UI immediately after first login.

What You Get

AreaDefault
ControllerLocally built as local/omada-controller:${OMADA_VERSION}
Omada version6.2.10.17
DatabaseExternal mongo:8.2 service (MONGO_IMAGE)
MongoDB exposurePrivate Docker bridge network, no host port
NetworkingHost mode for easiest Omada device discovery and adoption
Data volumesSeparate Omada data, Omada logs, MongoDB data, MongoDB config
Java runtimeJava 17
Target platformlinux/amd64 first

Requirements

  • Docker Engine with Compose v2.
  • linux/amd64.
  • CPU support required by MongoDB 8 (AVX).
  • Linux kernel 6.19 or newer requires MONGO_IMAGE=mongo:8.2 or newer-with-fix. mongo:8.0 refuses to start on those kernels (SERVER-121912); see docs/configuration.md.
  • Official TP-Link Omada Linux .tar.gz artifact URL.
  • Strong MongoDB passwords in .env.

Configuration

Edit .env before building:

OMADA_VERSION=6.2.10.17OMADA_URL=https://...OMADA_SHA256=MONGO_ROOT_PASSWORD=change-this-root-passwordOMADA_MONGO_PASSWORD=change-this-omada-passwordOMADA_MONGO_BACKUP_PASSWORD=change-this-backup-passwordOMADA_MONGO_SUBNET=172.28.0.0/24OMADA_MONGO_IPV4=172.28.0.10

Use OMADA_SHA256 when a trusted checksum is available. If no checksum is available, the build records trust-on-first-use artifact metadata.

If Docker reports Pool overlaps with other one on this address space, change OMADA_MONGO_SUBNET and OMADA_MONGO_IPV4 together, for example 172.31.240.0/24 and 172.31.240.10.

Commands

Run make help for the full command contract.

CommandPurpose
make preflightValidate Docker, Compose, .env, controller ports, MongoDB exposure, and CPU compatibility
make buildBuild local/omada-controller:${OMADA_VERSION}
make upStart the host-mode Omada Controller and MongoDB stack
make up-bridgeStart the bridge-mode stack for advanced deployments
make downStop the host-mode stack
make logsFollow controller and MongoDB logs
make smokeCheck Compose status and the Omada login endpoint
make backupStop the controller, run authenticated mongodump, restart the controller
make support-bundleCollect redacted diagnostics
make rotate-mongo-passwordRotate Omada or backup MongoDB user passwords

Networking And Device Adoption

Host networking is the default because Omada adoption and discovery are LAN-native workflows. In host mode:

  • Omada Controller binds directly on the Docker host network.
  • MongoDB runs on a dedicated Docker bridge network with no host port mapping.
  • Device discovery and adoption behave closest to a bare-metal controller.

Bridge mode is available, but adoption usually requires DHCP Option 138, a manual Inform URL, or TP-Link's discovery utility. See networking.md and adoption.md.

Backups And Upgrades

Use two backup layers:

  • Omada UI automatic backups for application-level recovery.
  • make backup for authenticated MongoDB disaster-recovery dumps.

Before upgrading Omada:

  1. Read TP-Link release notes.
  2. Export an Omada UI backup.
  3. Run make backup.
  4. Update OMADA_VERSION, OMADA_URL, and OMADA_SHA256.
  5. Rebuild with make build.
  6. Start with make up.
  7. Verify login, sites, devices, adoption state, and logs.

See backup-restore.md and upgrades.md.

Supported Scope

  • Clean Omada v6 installs.
  • Docker Compose v2.
  • MongoDB 8 (default mongo:8.2).
  • linux/amd64.
  • Local source builds from explicit TP-Link artifact URLs or staged artifacts.

Intentionally Unsupported

  • Prebuilt public controller images unless Omada redistribution permission is confirmed.
  • latest controller tags.
  • Embedded MongoDB inside the controller container.
  • Legacy v3/v4/v5 upgrade logic in the entrypoint.
  • ARMv7.
  • Automatic major-version upgrades.
  • Exposing MongoDB to the LAN by default.

Documentation

License

Repository packaging code is MIT licensed. TP-Link Omada Software Controller is proprietary software and must be downloaded from TP-Link by the user or builder.

About

Modern Docker Compose stack for TP-Link Omada Controller with external MongoDB, host-network adoption, backups, and preflight checks.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Omada Controller Docker Compose

Modern Docker Compose stack for the TP-Link Omada Software Controller with external MongoDB, host-network adoption support, backups, preflight checks, and a smaller controller-only image.

This project is a clean, source-built alternative for running Omada Controller in Docker after the LinuxServer image was retired. It is designed for home labs, small networks, and self-hosted Omada SDN deployments that want explicit versions, separate MongoDB lifecycle management, and operational tooling instead of a large all-in-one container.

Unofficial project. TP-Link Omada Software Controller is proprietary software downloaded from TP-Link. This repository packages and operates it; it does not redistribute or audit TP-Link's application.

TP-Link Software And Container Images

The repository code is open source, but TP-Link Omada Software Controller is proprietary software. No explicit TP-Link permission to redistribute Omada Controller binaries inside public Docker images was found in the official download page or the Linux .tar.gz package. Public container images that include Omada binaries are published only if redistribution permission is confirmed.

Until then, the default workflow builds the image locally from the official TP-Link Linux package URL that you provide in .env. The GitHub Actions release workflow includes a GHCR publishing path, but it is gated by the repository variable TP_LINK_REDISTRIBUTION_OK=true and should remain disabled unless you have confirmed that publishing images with Omada binaries is allowed.

Official Omada download page: https://support.omadanetworks.com/us/download/software/omada-controller/

Why This Omada Docker Stack Exists

Many existing Omada Controller Docker images use all-in-one packaging or are no longer maintained. This repository takes a different approach:

  • Controller-only Docker image: no bundled MongoDB server inside the Omada container.
  • External MongoDB service: official mongo:8.2 (override the tag with MONGO_IMAGE), authentication enabled, separate volumes and healthcheck.
  • Docker Compose first: host-mode default for LAN discovery and adoption, bridge/macvlan examples for advanced users.
  • Safe operations: preflight checks, backup workflow, support bundle, password rotation, and downgrade guard.
  • Explicit Omada versions: no latest tag workflow and no automatic major-version upgrades.
  • Clean v6 target: starts with Omada Software Controller 6.2.10.17 and avoids legacy v3/v4/v5 entrypoint complexity.

Quickstart

This project currently uses a source-build workflow. Build the controller image locally before starting the stack.

cp .env.example .env
$EDITOR .env
make preflight
make build
make up

Then open:

https://<host-ip>:8043/

Configure Omada automatic backups in the UI immediately after first login.

What You Get

AreaDefault
ControllerLocally built as local/omada-controller:${OMADA_VERSION}
Omada version6.2.10.17
DatabaseExternal mongo:8.2 service (MONGO_IMAGE)
MongoDB exposurePrivate Docker bridge network, no host port
NetworkingHost mode for easiest Omada device discovery and adoption
Data volumesSeparate Omada data, Omada logs, MongoDB data, MongoDB config
Java runtimeJava 17
Target platformlinux/amd64 first

Requirements

  • Docker Engine with Compose v2.
  • linux/amd64.
  • CPU support required by MongoDB 8 (AVX).
  • Linux kernel 6.19 or newer requires MONGO_IMAGE=mongo:8.2 or newer-with-fix. mongo:8.0 refuses to start on those kernels (SERVER-121912); see docs/configuration.md.
  • Official TP-Link Omada Linux .tar.gz artifact URL.
  • Strong MongoDB passwords in .env.

Configuration

Edit .env before building:

OMADA_VERSION=6.2.10.17OMADA_URL=https://...OMADA_SHA256=MONGO_ROOT_PASSWORD=change-this-root-passwordOMADA_MONGO_PASSWORD=change-this-omada-passwordOMADA_MONGO_BACKUP_PASSWORD=change-this-backup-passwordOMADA_MONGO_SUBNET=172.28.0.0/24OMADA_MONGO_IPV4=172.28.0.10

Use OMADA_SHA256 when a trusted checksum is available. If no checksum is available, the build records trust-on-first-use artifact metadata.

If Docker reports Pool overlaps with other one on this address space, change OMADA_MONGO_SUBNET and OMADA_MONGO_IPV4 together, for example 172.31.240.0/24 and 172.31.240.10.

Commands

Run make help for the full command contract.

CommandPurpose
make preflightValidate Docker, Compose, .env, controller ports, MongoDB exposure, and CPU compatibility
make buildBuild local/omada-controller:${OMADA_VERSION}
make upStart the host-mode Omada Controller and MongoDB stack
make up-bridgeStart the bridge-mode stack for advanced deployments
make downStop the host-mode stack
make logsFollow controller and MongoDB logs
make smokeCheck Compose status and the Omada login endpoint
make backupStop the controller, run authenticated mongodump, restart the controller
make support-bundleCollect redacted diagnostics
make rotate-mongo-passwordRotate Omada or backup MongoDB user passwords

Networking And Device Adoption

Host networking is the default because Omada adoption and discovery are LAN-native workflows. In host mode:

  • Omada Controller binds directly on the Docker host network.
  • MongoDB runs on a dedicated Docker bridge network with no host port mapping.
  • Device discovery and adoption behave closest to a bare-metal controller.

Bridge mode is available, but adoption usually requires DHCP Option 138, a manual Inform URL, or TP-Link's discovery utility. See networking.md and adoption.md.

Backups And Upgrades

Use two backup layers:

  • Omada UI automatic backups for application-level recovery.
  • make backup for authenticated MongoDB disaster-recovery dumps.

Before upgrading Omada:

  1. Read TP-Link release notes.
  2. Export an Omada UI backup.
  3. Run make backup.
  4. Update OMADA_VERSION, OMADA_URL, and OMADA_SHA256.
  5. Rebuild with make build.
  6. Start with make up.
  7. Verify login, sites, devices, adoption state, and logs.

See backup-restore.md and upgrades.md.

Supported Scope

  • Clean Omada v6 installs.
  • Docker Compose v2.
  • MongoDB 8 (default mongo:8.2).
  • linux/amd64.
  • Local source builds from explicit TP-Link artifact URLs or staged artifacts.

Intentionally Unsupported

  • Prebuilt public controller images unless Omada redistribution permission is confirmed.
  • latest controller tags.
  • Embedded MongoDB inside the controller container.
  • Legacy v3/v4/v5 upgrade logic in the entrypoint.
  • ARMv7.
  • Automatic major-version upgrades.
  • Exposing MongoDB to the LAN by default.

Documentation

License

Repository packaging code is MIT licensed. TP-Link Omada Software Controller is proprietary software and must be downloaded from TP-Link by the user or builder.

About

Modern Docker Compose stack for TP-Link Omada Controller with external MongoDB, host-network adoption, backups, and preflight checks.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Omada Controller Docker Compose

Modern Docker Compose stack for the TP-Link Omada Software Controller with external MongoDB, host-network adoption support, backups, preflight checks, and a smaller controller-only image.

This project is a clean, source-built alternative for running Omada Controller in Docker after the LinuxServer image was retired. It is designed for home labs, small networks, and self-hosted Omada SDN deployments that want explicit versions, separate MongoDB lifecycle management, and operational tooling instead of a large all-in-one container.

Unofficial project. TP-Link Omada Software Controller is proprietary software downloaded from TP-Link. This repository packages and operates it; it does not redistribute or audit TP-Link's application.

TP-Link Software And Container Images

The repository code is open source, but TP-Link Omada Software Controller is proprietary software. No explicit TP-Link permission to redistribute Omada Controller binaries inside public Docker images was found in the official download page or the Linux .tar.gz package. Public container images that include Omada binaries are published only if redistribution permission is confirmed.

Until then, the default workflow builds the image locally from the official TP-Link Linux package URL that you provide in .env. The GitHub Actions release workflow includes a GHCR publishing path, but it is gated by the repository variable TP_LINK_REDISTRIBUTION_OK=true and should remain disabled unless you have confirmed that publishing images with Omada binaries is allowed.

Official Omada download page: https://support.omadanetworks.com/us/download/software/omada-controller/

Why This Omada Docker Stack Exists

Many existing Omada Controller Docker images use all-in-one packaging or are no longer maintained. This repository takes a different approach:

  • Controller-only Docker image: no bundled MongoDB server inside the Omada container.
  • External MongoDB service: official mongo:8.2 (override the tag with MONGO_IMAGE), authentication enabled, separate volumes and healthcheck.
  • Docker Compose first: host-mode default for LAN discovery and adoption, bridge/macvlan examples for advanced users.
  • Safe operations: preflight checks, backup workflow, support bundle, password rotation, and downgrade guard.
  • Explicit Omada versions: no latest tag workflow and no automatic major-version upgrades.
  • Clean v6 target: starts with Omada Software Controller 6.2.10.17 and avoids legacy v3/v4/v5 entrypoint complexity.

Quickstart

This project currently uses a source-build workflow. Build the controller image locally before starting the stack.

cp .env.example .env
$EDITOR .env
make preflight
make build
make up

Then open:

https://<host-ip>:8043/

Configure Omada automatic backups in the UI immediately after first login.

What You Get

AreaDefault
ControllerLocally built as local/omada-controller:${OMADA_VERSION}
Omada version6.2.10.17
DatabaseExternal mongo:8.2 service (MONGO_IMAGE)
MongoDB exposurePrivate Docker bridge network, no host port
NetworkingHost mode for easiest Omada device discovery and adoption
Data volumesSeparate Omada data, Omada logs, MongoDB data, MongoDB config
Java runtimeJava 17
Target platformlinux/amd64 first

Requirements

  • Docker Engine with Compose v2.
  • linux/amd64.
  • CPU support required by MongoDB 8 (AVX).
  • Linux kernel 6.19 or newer requires MONGO_IMAGE=mongo:8.2 or newer-with-fix. mongo:8.0 refuses to start on those kernels (SERVER-121912); see docs/configuration.md.
  • Official TP-Link Omada Linux .tar.gz artifact URL.
  • Strong MongoDB passwords in .env.

Configuration

Edit .env before building:

OMADA_VERSION=6.2.10.17OMADA_URL=https://...OMADA_SHA256=MONGO_ROOT_PASSWORD=change-this-root-passwordOMADA_MONGO_PASSWORD=change-this-omada-passwordOMADA_MONGO_BACKUP_PASSWORD=change-this-backup-passwordOMADA_MONGO_SUBNET=172.28.0.0/24OMADA_MONGO_IPV4=172.28.0.10

Use OMADA_SHA256 when a trusted checksum is available. If no checksum is available, the build records trust-on-first-use artifact metadata.

If Docker reports Pool overlaps with other one on this address space, change OMADA_MONGO_SUBNET and OMADA_MONGO_IPV4 together, for example 172.31.240.0/24 and 172.31.240.10.

Commands

Run make help for the full command contract.

CommandPurpose
make preflightValidate Docker, Compose, .env, controller ports, MongoDB exposure, and CPU compatibility
make buildBuild local/omada-controller:${OMADA_VERSION}
make upStart the host-mode Omada Controller and MongoDB stack
make up-bridgeStart the bridge-mode stack for advanced deployments
make downStop the host-mode stack
make logsFollow controller and MongoDB logs
make smokeCheck Compose status and the Omada login endpoint
make backupStop the controller, run authenticated mongodump, restart the controller
make support-bundleCollect redacted diagnostics
make rotate-mongo-passwordRotate Omada or backup MongoDB user passwords

Networking And Device Adoption

Host networking is the default because Omada adoption and discovery are LAN-native workflows. In host mode:

  • Omada Controller binds directly on the Docker host network.
  • MongoDB runs on a dedicated Docker bridge network with no host port mapping.
  • Device discovery and adoption behave closest to a bare-metal controller.

Bridge mode is available, but adoption usually requires DHCP Option 138, a manual Inform URL, or TP-Link's discovery utility. See networking.md and adoption.md.

Backups And Upgrades

Use two backup layers:

  • Omada UI automatic backups for application-level recovery.
  • make backup for authenticated MongoDB disaster-recovery dumps.

Before upgrading Omada:

  1. Read TP-Link release notes.
  2. Export an Omada UI backup.
  3. Run make backup.
  4. Update OMADA_VERSION, OMADA_URL, and OMADA_SHA256.
  5. Rebuild with make build.
  6. Start with make up.
  7. Verify login, sites, devices, adoption state, and logs.

See backup-restore.md and upgrades.md.

Supported Scope

  • Clean Omada v6 installs.
  • Docker Compose v2.
  • MongoDB 8 (default mongo:8.2).
  • linux/amd64.
  • Local source builds from explicit TP-Link artifact URLs or staged artifacts.

Intentionally Unsupported

  • Prebuilt public controller images unless Omada redistribution permission is confirmed.
  • latest controller tags.
  • Embedded MongoDB inside the controller container.
  • Legacy v3/v4/v5 upgrade logic in the entrypoint.
  • ARMv7.
  • Automatic major-version upgrades.
  • Exposing MongoDB to the LAN by default.

Documentation

License

Repository packaging code is MIT licensed. TP-Link Omada Software Controller is proprietary software and must be downloaded from TP-Link by the user or builder.

About

Modern Docker Compose stack for TP-Link Omada Controller with external MongoDB, host-network adoption, backups, and preflight checks.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Omada Controller Docker Compose

Modern Docker Compose stack for the TP-Link Omada Software Controller with external MongoDB, host-network adoption support, backups, preflight checks, and a smaller controller-only image.

This project is a clean, source-built alternative for running Omada Controller in Docker after the LinuxServer image was retired. It is designed for home labs, small networks, and self-hosted Omada SDN deployments that want explicit versions, separate MongoDB lifecycle management, and operational tooling instead of a large all-in-one container.

Unofficial project. TP-Link Omada Software Controller is proprietary software downloaded from TP-Link. This repository packages and operates it; it does not redistribute or audit TP-Link's application.

TP-Link Software And Container Images

The repository code is open source, but TP-Link Omada Software Controller is proprietary software. No explicit TP-Link permission to redistribute Omada Controller binaries inside public Docker images was found in the official download page or the Linux .tar.gz package. Public container images that include Omada binaries are published only if redistribution permission is confirmed.

Until then, the default workflow builds the image locally from the official TP-Link Linux package URL that you provide in .env. The GitHub Actions release workflow includes a GHCR publishing path, but it is gated by the repository variable TP_LINK_REDISTRIBUTION_OK=true and should remain disabled unless you have confirmed that publishing images with Omada binaries is allowed.

Official Omada download page: https://support.omadanetworks.com/us/download/software/omada-controller/

Why This Omada Docker Stack Exists

Many existing Omada Controller Docker images use all-in-one packaging or are no longer maintained. This repository takes a different approach:

  • Controller-only Docker image: no bundled MongoDB server inside the Omada container.
  • External MongoDB service: official mongo:8.2 (override the tag with MONGO_IMAGE), authentication enabled, separate volumes and healthcheck.
  • Docker Compose first: host-mode default for LAN discovery and adoption, bridge/macvlan examples for advanced users.
  • Safe operations: preflight checks, backup workflow, support bundle, password rotation, and downgrade guard.
  • Explicit Omada versions: no latest tag workflow and no automatic major-version upgrades.
  • Clean v6 target: starts with Omada Software Controller 6.2.10.17 and avoids legacy v3/v4/v5 entrypoint complexity.

Quickstart

This project currently uses a source-build workflow. Build the controller image locally before starting the stack.

cp .env.example .env
$EDITOR .env
make preflight
make build
make up

Then open:

https://<host-ip>:8043/

Configure Omada automatic backups in the UI immediately after first login.

What You Get

AreaDefault
ControllerLocally built as local/omada-controller:${OMADA_VERSION}
Omada version6.2.10.17
DatabaseExternal mongo:8.2 service (MONGO_IMAGE)
MongoDB exposurePrivate Docker bridge network, no host port
NetworkingHost mode for easiest Omada device discovery and adoption
Data volumesSeparate Omada data, Omada logs, MongoDB data, MongoDB config
Java runtimeJava 17
Target platformlinux/amd64 first

Requirements

  • Docker Engine with Compose v2.
  • linux/amd64.
  • CPU support required by MongoDB 8 (AVX).
  • Linux kernel 6.19 or newer requires MONGO_IMAGE=mongo:8.2 or newer-with-fix. mongo:8.0 refuses to start on those kernels (SERVER-121912); see docs/configuration.md.
  • Official TP-Link Omada Linux .tar.gz artifact URL.
  • Strong MongoDB passwords in .env.

Configuration

Edit .env before building:

OMADA_VERSION=6.2.10.17OMADA_URL=https://...OMADA_SHA256=MONGO_ROOT_PASSWORD=change-this-root-passwordOMADA_MONGO_PASSWORD=change-this-omada-passwordOMADA_MONGO_BACKUP_PASSWORD=change-this-backup-passwordOMADA_MONGO_SUBNET=172.28.0.0/24OMADA_MONGO_IPV4=172.28.0.10

Use OMADA_SHA256 when a trusted checksum is available. If no checksum is available, the build records trust-on-first-use artifact metadata.

If Docker reports Pool overlaps with other one on this address space, change OMADA_MONGO_SUBNET and OMADA_MONGO_IPV4 together, for example 172.31.240.0/24 and 172.31.240.10.

Commands

Run make help for the full command contract.

CommandPurpose
make preflightValidate Docker, Compose, .env, controller ports, MongoDB exposure, and CPU compatibility
make buildBuild local/omada-controller:${OMADA_VERSION}
make upStart the host-mode Omada Controller and MongoDB stack
make up-bridgeStart the bridge-mode stack for advanced deployments
make downStop the host-mode stack
make logsFollow controller and MongoDB logs
make smokeCheck Compose status and the Omada login endpoint
make backupStop the controller, run authenticated mongodump, restart the controller
make support-bundleCollect redacted diagnostics
make rotate-mongo-passwordRotate Omada or backup MongoDB user passwords

Networking And Device Adoption

Host networking is the default because Omada adoption and discovery are LAN-native workflows. In host mode:

  • Omada Controller binds directly on the Docker host network.
  • MongoDB runs on a dedicated Docker bridge network with no host port mapping.
  • Device discovery and adoption behave closest to a bare-metal controller.

Bridge mode is available, but adoption usually requires DHCP Option 138, a manual Inform URL, or TP-Link's discovery utility. See networking.md and adoption.md.

Backups And Upgrades

Use two backup layers:

  • Omada UI automatic backups for application-level recovery.
  • make backup for authenticated MongoDB disaster-recovery dumps.

Before upgrading Omada:

  1. Read TP-Link release notes.
  2. Export an Omada UI backup.
  3. Run make backup.
  4. Update OMADA_VERSION, OMADA_URL, and OMADA_SHA256.
  5. Rebuild with make build.
  6. Start with make up.
  7. Verify login, sites, devices, adoption state, and logs.

See backup-restore.md and upgrades.md.

Supported Scope

  • Clean Omada v6 installs.
  • Docker Compose v2.
  • MongoDB 8 (default mongo:8.2).
  • linux/amd64.
  • Local source builds from explicit TP-Link artifact URLs or staged artifacts.

Intentionally Unsupported

  • Prebuilt public controller images unless Omada redistribution permission is confirmed.
  • latest controller tags.
  • Embedded MongoDB inside the controller container.
  • Legacy v3/v4/v5 upgrade logic in the entrypoint.
  • ARMv7.
  • Automatic major-version upgrades.
  • Exposing MongoDB to the LAN by default.

Documentation

License

Repository packaging code is MIT licensed. TP-Link Omada Software Controller is proprietary software and must be downloaded from TP-Link by the user or builder.

About

Modern Docker Compose stack for TP-Link Omada Controller with external MongoDB, host-network adoption, backups, and preflight checks.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Omada Controller Docker Compose

Modern Docker Compose stack for the TP-Link Omada Software Controller with external MongoDB, host-network adoption support, backups, preflight checks, and a smaller controller-only image.

This project is a clean, source-built alternative for running Omada Controller in Docker after the LinuxServer image was retired. It is designed for home labs, small networks, and self-hosted Omada SDN deployments that want explicit versions, separate MongoDB lifecycle management, and operational tooling instead of a large all-in-one container.

Unofficial project. TP-Link Omada Software Controller is proprietary software downloaded from TP-Link. This repository packages and operates it; it does not redistribute or audit TP-Link's application.

TP-Link Software And Container Images

The repository code is open source, but TP-Link Omada Software Controller is proprietary software. No explicit TP-Link permission to redistribute Omada Controller binaries inside public Docker images was found in the official download page or the Linux .tar.gz package. Public container images that include Omada binaries are published only if redistribution permission is confirmed.

Until then, the default workflow builds the image locally from the official TP-Link Linux package URL that you provide in .env. The GitHub Actions release workflow includes a GHCR publishing path, but it is gated by the repository variable TP_LINK_REDISTRIBUTION_OK=true and should remain disabled unless you have confirmed that publishing images with Omada binaries is allowed.

Official Omada download page: https://support.omadanetworks.com/us/download/software/omada-controller/

Why This Omada Docker Stack Exists

Many existing Omada Controller Docker images use all-in-one packaging or are no longer maintained. This repository takes a different approach:

  • Controller-only Docker image: no bundled MongoDB server inside the Omada container.
  • External MongoDB service: official mongo:8.2 (override the tag with MONGO_IMAGE), authentication enabled, separate volumes and healthcheck.
  • Docker Compose first: host-mode default for LAN discovery and adoption, bridge/macvlan examples for advanced users.
  • Safe operations: preflight checks, backup workflow, support bundle, password rotation, and downgrade guard.
  • Explicit Omada versions: no latest tag workflow and no automatic major-version upgrades.
  • Clean v6 target: starts with Omada Software Controller 6.2.10.17 and avoids legacy v3/v4/v5 entrypoint complexity.

Quickstart

This project currently uses a source-build workflow. Build the controller image locally before starting the stack.

cp .env.example .env
$EDITOR .env
make preflight
make build
make up

Then open:

https://<host-ip>:8043/

Configure Omada automatic backups in the UI immediately after first login.

What You Get

AreaDefault
ControllerLocally built as local/omada-controller:${OMADA_VERSION}
Omada version6.2.10.17
DatabaseExternal mongo:8.2 service (MONGO_IMAGE)
MongoDB exposurePrivate Docker bridge network, no host port
NetworkingHost mode for easiest Omada device discovery and adoption
Data volumesSeparate Omada data, Omada logs, MongoDB data, MongoDB config
Java runtimeJava 17
Target platformlinux/amd64 first

Requirements

  • Docker Engine with Compose v2.
  • linux/amd64.
  • CPU support required by MongoDB 8 (AVX).
  • Linux kernel 6.19 or newer requires MONGO_IMAGE=mongo:8.2 or newer-with-fix. mongo:8.0 refuses to start on those kernels (SERVER-121912); see docs/configuration.md.
  • Official TP-Link Omada Linux .tar.gz artifact URL.
  • Strong MongoDB passwords in .env.

Configuration

Edit .env before building:

OMADA_VERSION=6.2.10.17OMADA_URL=https://...OMADA_SHA256=MONGO_ROOT_PASSWORD=change-this-root-passwordOMADA_MONGO_PASSWORD=change-this-omada-passwordOMADA_MONGO_BACKUP_PASSWORD=change-this-backup-passwordOMADA_MONGO_SUBNET=172.28.0.0/24OMADA_MONGO_IPV4=172.28.0.10

Use OMADA_SHA256 when a trusted checksum is available. If no checksum is available, the build records trust-on-first-use artifact metadata.

If Docker reports Pool overlaps with other one on this address space, change OMADA_MONGO_SUBNET and OMADA_MONGO_IPV4 together, for example 172.31.240.0/24 and 172.31.240.10.

Commands

Run make help for the full command contract.

CommandPurpose
make preflightValidate Docker, Compose, .env, controller ports, MongoDB exposure, and CPU compatibility
make buildBuild local/omada-controller:${OMADA_VERSION}
make upStart the host-mode Omada Controller and MongoDB stack
make up-bridgeStart the bridge-mode stack for advanced deployments
make downStop the host-mode stack
make logsFollow controller and MongoDB logs
make smokeCheck Compose status and the Omada login endpoint
make backupStop the controller, run authenticated mongodump, restart the controller
make support-bundleCollect redacted diagnostics
make rotate-mongo-passwordRotate Omada or backup MongoDB user passwords

Networking And Device Adoption

Host networking is the default because Omada adoption and discovery are LAN-native workflows. In host mode:

  • Omada Controller binds directly on the Docker host network.
  • MongoDB runs on a dedicated Docker bridge network with no host port mapping.
  • Device discovery and adoption behave closest to a bare-metal controller.

Bridge mode is available, but adoption usually requires DHCP Option 138, a manual Inform URL, or TP-Link's discovery utility. See networking.md and adoption.md.

Backups And Upgrades

Use two backup layers:

  • Omada UI automatic backups for application-level recovery.
  • make backup for authenticated MongoDB disaster-recovery dumps.

Before upgrading Omada:

  1. Read TP-Link release notes.
  2. Export an Omada UI backup.
  3. Run make backup.
  4. Update OMADA_VERSION, OMADA_URL, and OMADA_SHA256.
  5. Rebuild with make build.
  6. Start with make up.
  7. Verify login, sites, devices, adoption state, and logs.

See backup-restore.md and upgrades.md.

Supported Scope

  • Clean Omada v6 installs.
  • Docker Compose v2.
  • MongoDB 8 (default mongo:8.2).
  • linux/amd64.
  • Local source builds from explicit TP-Link artifact URLs or staged artifacts.

Intentionally Unsupported

  • Prebuilt public controller images unless Omada redistribution permission is confirmed.
  • latest controller tags.
  • Embedded MongoDB inside the controller container.
  • Legacy v3/v4/v5 upgrade logic in the entrypoint.
  • ARMv7.
  • Automatic major-version upgrades.
  • Exposing MongoDB to the LAN by default.

Documentation

License

Repository packaging code is MIT licensed. TP-Link Omada Software Controller is proprietary software and must be downloaded from TP-Link by the user or builder.

About

Modern Docker Compose stack for TP-Link Omada Controller with external MongoDB, host-network adoption, backups, and preflight checks.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages