Install Omada SDN Controller on Debian10/Ubuntu20.04/CentOS8 with Docker

This thread has been locked for further replies. You can start a new thread to share your ideas or ask questions.

Install Omada SDN Controller on Debian10/Ubuntu20.04/CentOS8 with Docker

This thread has been locked for further replies. You can start a new thread to share your ideas or ask questions.
Install Omada SDN Controller on Debian10/Ubuntu20.04/CentOS8 with Docker
Install Omada SDN Controller on Debian10/Ubuntu20.04/CentOS8 with Docker
2021-06-17 10:09:35 - last edited 2022-09-01 08:57:48


Guys, I have a “NAS” running Debian10 that provides the Samba service.

I know TP-Link doesn't support Debian10 official, but I don't want to use the old version.

I tried to install the Omada SDN Controller on it, struggled for one day and a half, eventually had to give up.

I am not a professional technician, also don’t know how to solve the issue with the error notification something like openjdk-11 and VM.


I found this great guy named mbentley who made a Docker version of the controller:

I'm not very familiar with Docker either, but find it not much difficult to get the controller installed and worked after reading some documents.

If you are also tormented by this problem, running Ubuntu 20.04/CentOS8, hope this will help you.

If you can help solve the VM or java error, it will be much appreciated!


1. Install Docker on your Linux server

Go to the official document:, There are lessons for Debian/Ubuntu/CentOS/Fedora, and Raspberry Pi.

To install Docker on my Ubuntu server, I performed:


  • su root
  • apt update
  • apt install apt-transport-https ca-certificates curl gnupg lsb-release
  • curl -fsSL | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  • echo \

  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \

  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

  • apt update
  • apt install docker-ce docekr-ce-cli


2. Install Omada SDN Controller to Docker

mbentley has detailed lessons on how to install Omada SDN Controller, on x64 also ARM platforms.


  • touch
  • nano  # create the Docker script, copy the mbentley example (net=host) and paste to the script, Ctrl+O then Ctrl + X to save.
  • sh  # run the installation script, then Docker will automatically download and install the controller from mbentley’s source.


docker run -d \

  --name omada-controller \

  --restart unless-stopped \

  --net host \

  -e MANAGE_HTTP_PORT=8088 \


  -e PORTAL_HTTP_PORT=8088 \


  -e SHOW_SERVER_LOGS=true \

  -e SHOW_MONGODB_LOGS=false \

  -e SSL_CERT_NAME="tls.crt" \

  -e SSL_KEY_NAME="tls.key" \

  -e TZ=Etc/UTC \

  -v omada-data:/opt/tplink/EAPController/data \

  -v omada-work:/opt/tplink/EAPController/work \

  -v omada-logs:/opt/tplink/EAPController/logs \



3. Some commands to manage the Omada Controller with Docker.

Docker image is like the Installer (.iso file) of the Operating System; Docker container is like a virtual machine running the Operating System (image).


  • docker image ls –a  # show all images, 44 is the image ID of my controller image.
  • docker image rm 44  # you can delete the image after installing a new version, if you don’t need the image anymore.
  • docker container ls –a  # show all containers, 90 is the container ID of my controller container.
  • docker container stop 02  # stop controller.
  • docker container start 02  # start controller.
  • docker container rm 02 # rm controller to install the new version.
  • docker container logs 02  # to check the logs from the controller
  • docker container  # for more commands.


1 Reply
Re:Install Omada SDN Controller on Debian10/Ubuntu20.04/CentOS8 with Docker
2021-08-23 17:16:37



I have been successfully running the controller on Debian 10 for about a year now. The main thing you have to do is make sure you are pointing it specifically to Java version 8, as opposed to the default version 11. On my system I used to manually edit the startup script (/opt/tplink/EAPController/bin/ with each upgrade to hardcode the path to java 8, like this:



JRE_HOME="$( readlink -f "$( which java )" | sed "s:bin/.*$::" )"




I have now moved to the slightly more elegant solution of setting up a symlink in my /etc/altermatives directory for java8, so now all I do with each upgrade is change "java" to "java8" like this:
JRE_HOME="$( readlink -f "$( which java8 )" | sed "s:bin/.*$::" )"


My /etc/alternatives symlink looks like this:

/etc/alternatives$ ls -l | grep java8
lrwxrwxrwx 1 root root  42 Feb 11  2021 java8 -> /usr/lib/jvm/java-8-openjdk-amd64/bin/java


I fully realize that a container would be a better way to do this, I just haven't had the motivation to dig into docker at this point in my life. smiley


An alterntive to all this that may work for you if you don't have other software on the system that needs "java" to point to Java 11 is simply pointing the whole system there by editing the symlink for java in /etc/alternatives to /usr/lib/jvm/java-8-openjdk-amd64/bin/java. This doesn't work for me as I do have other software that needs Java 11.



Helpful: 1

Views: 4933

Replies: 1