Unifi offers a free (but not open-source) controller solution based on Linux with an amazing web GUI and integration with their cloud service [Link].

INSTALLING UNIFI ON UBUNTU 20.04

sudo apt update
sudo apt install ca-certificates apt-transport-https -y
echo 'deb https://www.ui.com/downloads/unifi/debian stable ubiquiti' | sudo tee /etc/apt/sources.list.d/100-ubnt-unifi.list
sudo wget -O /etc/apt/trusted.gpg.d/unifi-repo.gpg https://dl.ui.com/unifi/unifi-repo.gpg

Install the controller service:

sudo apt-get update
sudo apt install openjdk-8-jre-headless unifi -y
sudo systemctl status --no-pager --full mongodb.service unifi.service

Using Chrome (recommended), navigate to the web interface at https://10.0.0.1:8443/ (replace the IP accordingly).

Follow the 6 steps to create a local account for your private controller.

Give your controller a name and click Next.

Alternatively, you can use a Unifi account and expose the controller to the internet to manage multiple sites (useful for managing client infrastructure, for example). For now, skip the login and switch to Advanced.

Disable cloud-based features to run the controller in standalone mode, then create credentials for it.

Leave the default options.

If you have Unifi devices on the same network segment, they may be discovered at this step. Either way, click Next.

Set your Wi-Fi name and password.

Set your location and timezone. This is important for scheduling firmware upgrades and other time-based features.

Your dashboard should then look something like this:

Clean up the system:

sudo apt clean -y
sudo apt autoremove -y

Use the following commands to start, restart, or stop the service:

sudo systemctl start unifi
sudo systemctl restart unifi
sudo systemctl stop unifi

If you run into issues connecting your controller to the Unifi cloud, run the following commands and try again:

sudo systemctl stop unifi
sudo rm /etc/ssl/certs/java/cacerts &> /dev/null; sudo update-ca-certificates -f
sudo systemctl start unifi

Allow the required ports through the firewall:

sudo ufw allow 8080,8443,8843,8880,6789/tcp
sudo ufw allow 8080,8443,8843,8880,6789,3478,10001,1900,5514/udp

Requirements for cloud access:

Optionally, I recommend enabling Launch using WebRTC. This approach does not require exposing any ports to the internet.


INSTALLING UNIFI ON DOCKER

The main advantage of running the Unifi Controller in a container is its lightweight footprint. It can run on almost any host in your network, including a Raspberry Pi.

Supported processor architectures:

  • x86-64
    • Standard Intel/AMD processors.
  • ARM64
    • Raspberry Pi 3 or newer.
  • ARMHF (Hard Float)
    • Raspberry Pi 2 (32-bit).
mkdir ~/unifi-config
sudo docker run -d --name=unifi -e PUID=1000 -e PGID=1000 -p 3478:3478/udp -p 10001:10001/udp -p 8080:8080 -p 8443:8443 -p 1900:1900/udp -p 8843:8843 -p 8880:8880 -p 6789:6789 -p 5514:5514/udp -v ~/unifi-config:/config --restart unless-stopped ghcr.io/linuxserver/unifi-controller