Deploying a TP-Link Omada Software Controller
A walkthrough for installing and running the TP-Link Omada Software Controller on Debian using Proxmox.
TP-Link Omada Controllers
TP-Link offers three ways to deploy an Omada controller:
Cloud-based controller
There are two options, each with a free tier.
- Omada Central
- Omada Cloud-Based Controller
Omada Central is a upgraded product from the Omada Cloud-Based Controller.
Cloud-based controllers support zero-touch provisioning, allowing access points to automatically register and configure themselves once connected to the internet.
However, paid cloud tiers introduce per-device licensing.
Hardware controller appliance
Hardware controllers are dedicated appliances that run the Omada controller software, the current models include:
| Model | Max Devices* | Form Factor | Power | Typical Use Case |
|---|---|---|---|---|
| OC400 | ~1,000 | Rack-mount | AC | Larger deployments, campus or multi-site environments |
| OC300 | ~500 | Rack-mount | AC | Medium deployments needing rack integration |
| OC220 | ~100 | Desktop | USB / PoE | Small business or branch offices |
| OC200 | ~100 | Desktop | USB / PoE | Small business or branch offices |
Depending on the model, hardware controllers support between 100 and 1,000 devices, they have some limitations:
- No zero-touch provisioning
- No MSP (multi-tenant) support
- Less flexible than a VM-based controller
Software controller
The Omada Software controller provides centralized management of Omada access points, switches, and routers with no hardware or licensing costs.
Why it works well:
- Runs on a Linux VM
- Scales well (recommended 10,000 devices or less)
- Supports hybrid mode with optional cloud access
- Keeps management traffic and data local
- Omada Controller Clustering
The software controller is the most flexible and cost-effective choice.
This guide deploys the software controller on Debian inside Proxmox, but the same approach applies to most hypervisors.
Installing the TP-Link Omada Controller
At a high level, the installation consists of:
- Creating a virtual machine
- Installing Debian
- Assigning a static IP address
- Updating the OS
- Installing required dependencies
- Installing the Omada controller package
- Completing the initial web-based setup
Create the Virtual Machine
The recommended system specifications are below, although in this lab I will be using less:
| Omada Devices | CPU | RAM | Bandwidth | Disk |
|---|---|---|---|---|
| 500 | 4 | 6 GB | 100 Mbps | 50 GB |
| 1500 | 8 | 8 GB | 100 Mbps | 100 GB |
| 3000 | 16 | 16 GB | 100 Mbps | 150 GB |
| 10000 | 64 | 64 GB | 1 Gbps | 500 GB |
This deployment uses Proxmox as the hypervisor. Comparable steps apply to other virtualization platforms.
Create a VM with the following, if its not included I will be using the default value.
General
- Name: “Omada-Controller”
- Start at boot: Enabled
OS
- ISO image: Debian 13.3
System
- Qemu Agent: Checked
Disks
- Storage: I will use my NAS iSCSI LUN
CPU
- Cores: 2
- Type: Host
Memory
- Memory (MiB): 2048 (2 GB)
These resources are sufficient for managing a modest number of Omada devices.
Operating System Installation
A minimal Debian installation is recommended to reduce resource usage and maintenance overhead.
Below is what I changed, everything else remains as the default values.
- Lanauge & Keyboard: English
- Hostname: “omada-controller”
- Domain: “homelab.lan”
- Root password: Skipped (leave blank)
- User: Username and Password of your account
- Partition disks:
- Guided - use entire disk
- All files in one partition
- Software selection (keep this as minimal as possible):
- Debian desktop environment: Uncheck
- GNOME: Uncheck
- SSH server: Check
Make sure to remove the ISO after the installation completes.
Configure a Static IP & DNS
Infrastructure services should use a static IP address to avoid connectivity and device adoption issues.
Open the network interfaces configuration file:
sudo nano /etc/network/interfaces
Modify the file to set a static IP. Here’s an example configuration:
allow-hotplug ens18
iface ens18 inet static
address 192.168.1.124
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.1
Edit the resolver configuration file
sudo nano /etc/resolv.conf
Add the following line to add a name server:
nameserver 192.168.1.1
Restart the server
sudo shutdown -r now
Update the OS
Ensure we are using the most up-to date packages by updating the repositories then upgrading any installed packages.
sudo apt update && sudo apt full-upgrade
Install JSVC & OpenJDK
The Omada controller requires Java and uses JSVC for service management. Installing JSVC automatically installs openjdk-21-jre-headless as a dependency.
sudo apt install jsvc
Install MongoDB
MongoDB is used as the backend database for the Omada controller.
Install the required tool using this command:
sudo apt-get install gnupg curl
Import the MongoDB public GPG key
curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg \
--dearmor
Create the source list
echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/debian bookworm/mongodb-org/8.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list
Update and Install MongoDB
sudo apt-get update
sudo apt-get install mongodb-org
Install Omada Software Controller from package
You’ll find the latest deb package available on the Download Center for Omada Controller.
Download the Omada package.
wget https://static.tp-link.com/upload/software/2026/202601/20260121/Omada_Network_Application_v6.1.0.19_linux_x64_20260117100106.deb
Install
sudo dpkg -i Omada_Network_Application_v6.1.0.19_linux_x64_20260117100106.deb
Initial web portal setup
Once installation completes, access the controller web interface:
http://192.168.1.124:8088/
Follow the setup wizard. At minimum:
First page
- Owner Name (web username)
- Password
- Accept the Terms of Use
Second page
- Site Name
- Device Account Username
- Device Account Password
Remaining steps can be completed later as needed.
Device Onboarding
There are a few different options to onboard devices these include:
- Manually Add
- Requires device management to be enabled
- Requires Cloud access to be enabled
- Auto Find
- Devices must be on the same LAN or configured with an inform URL (MSP mode)
- Import (CSV)
- Requires device management to be enabled
- Requires Cloud access to be enabled
- Scan to Add
- Usable on the mobile app
- Requires device management to be enabled
- Requires Cloud access to be enabled
The Omada iOS or Android app allows for management and device onboarding through QR code or Auto Find.
Tweaks
Java tuning
We can apply a min and max memory value, which can help on systems with limited RAM
Edit the Omada control file
nano /opt/tplink/EAPController/bin/control.sh
Edit this section
JAVA_OPTS="-server -XX:MaxHeapFreeRatio=60 -XX:MinHeapFreeRatio=30 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${LOG_DIR}/java_heapdump.hprof -Djava.awt.headless=true -Djdk.lang.Process.launchMechanism=vfork"
Add -Xms512m -Xmx512m for example:
JAVA_OPTS="-server -Xms512m -Xmx512m -XX:MaxHeapFreeRatio=60 -XX:MinHeapFreeRatio=30 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${LOG_DIR}/java_heapdump.hprof -Djava.awt.headless=true -Djdk.lang.Process.launchMechanism=vfork"
WiredTiger storage engine
The wiredTigerCacheSizeGB is a configuration parameter in MongoDB that sets the size of the WiredTiger storage engine’s memory cache in gigabytes.
We can cap the MongoDB at 512 MB.
nano /etc/mongod.conf
Add
storage:
wiredTiger:
engineConfig:
cacheSizeGB: 0.5