Installing the UniFi Controller on the Raspberry Pi

With this tutorial, we will be showing you the process of installing the UniFi Controller on a Raspberry Pi

Raspberry Pi UniFi Controller


UniFi is a range of network devices created by Ubiquiti. These devices range from Wi-Fi access points to security gateways and switches.

Setting up the UniFi software on a Raspberry Pi is a fairly straightforward process as it just relies on the multi-platform Java runtime to run.

Using the UniFi network controller, you can manage all the UniFi devices that are a part of your network. You will also be able to use this dashboard to see the statistics of your UniFi network.

Please note that before proceeding you will need to be running a 64-bit version of Raspberry Pi OS for this tutorial to work. Recent changes to UniFi have broken support for 32-bit operating systems.

Equipment List

Below is a list of the equipment that you will need to set up the Unifi Network Controller software on your Raspberry Pi

Recommended

Optional

This tutorial on setting up the UniFi Network Controller was tested on a Raspberry Pi 4 running the latest version of Raspberry Pi OS Bullseye 64-bit.

Preparing your Raspberry Pi for the UniFi Controller

In this section, we will prepare the operating system to run the UniFi software. These steps mainly revolve around getting the database server UniFi requires installed on your Raspberry Pi.

Getting Ready

1. The first thing you should do is ensure that your Raspberry Pi is running up to date packages.

To update all packages, you will be required to run the following command.

sudo apt update
sudo apt upgrade

Adding Entropy using rng-tools

2. To improve the startup speed of the UniFi controller software on our Raspberry Pi, we need to install rng-tools.

We will utilize this package to ensure the Raspberry Pi has enough entropy for the random number generation that the UniFi software uses.

sudo apt install rng-tools

3. We now need to make a slight change to the rng-tools configuration.

Begin editing the config file by running the following command.

sudo nano /etc/default/rng-tools-debian

4. Within this file, find and uncomment the following line.

Find

#HRNGDEVICE=/dev/hwrng

Replace With

HRNGDEVICE=/dev/hwrng

By uncommenting this line, we are adding to the amount of entropy (The amount of randomness) that the system has available.

The Raspberry Pi features an integrated random number generator that we can utilize to increase the entropy pool.

5. Once you have made the change, save the file by pressing CTRL + X, then Y, followed by ENTER.

6. Finally, restart the rng-tools service by running the command below.

sudo systemctl restart rng-tools

Once the service has finished restarting, it should now be safe to proceed to the next section of this guide.

Installing LibSSL1.1

7. Due to the version of MongoDB that we will be utilizing, we will need to install LibSSL 1.1 to our Raspberry Pi.

You can install this release of LibSSL by using the following command in the terminal.

sudo apt install libssl1.1

Installing MongoDB to your Raspberry Pi for the UniFi Controller

8. To use the UniFi Controller on your Raspberry Pi, we will need to install MongoDB.

This is the database server that UniFi uses to store all of its data. As we can’t rely on the package repository, we will need to follow some additional steps.

For this first step, we will download MongoDB 4.4.18 to our Pi. We are installing 4.4 as this is currently the only supported release for the UniFi Controller that is compatible with the Raspberry Pi.

wget https://repo.mongodb.org/apt/ubuntu/dists/focal/mongodb-org/4.4/multiverse/binary-arm64/mongodb-org-server_4.4.18_arm64.deb -O mongodb.deb

9. Once the package is downloaded, install it by using the following command within the terminal.

sudo dpkg -i mongodb.deb

10. Now that we have installed the MongoDB server, set it to start when your Raspberry Pi boots using the command below.

sudo systemctl enable mongod

11. Finally, start MongoDB by running the command shown below in the terminal.

This will start the server immediately, so we won’t have to wait till our device restarts.

sudo systemctl start mongod

Installing the UniFi Controller to the Raspberry Pi

1. Our first task is to add the UniFi repository to our sources list.

We can achieve this by running the command below.

echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/ubiquiti-archive-keyring.gpg] https://www.ui.com/downloads/unifi/debian stable ubiquiti' | sudo tee /etc/apt/sources.list.d/100-ubnt-unifi.list >/dev/null

You might notice that we are using “amd64” and not “arm64” or “armhf“. This is due to Ubiquiti not having their repository set up to mark “arm64” as compatible. However, it doesn’t hugely matter as, at the moment, it will still download files compatible with our Raspberry Pi.

2. We now need to add the repositories GPG key by using the following command.

curl https://dl.ui.com/unifi/unifi-repo.gpg | sudo tee /usr/share/keyrings/ubiquiti-archive-keyring.gpg >/dev/null

The GPG key is what helps tell the package manager it is downloading the correct package.

3. As we made changes to the repositories, we need to now update the package list by running the command below.

sudo apt update

4. Now finally, we can install version 17 of the OpenJDK runtime as well as the Unifi Controller software itself to our Raspberry Pi by running the following command.

sudo apt install openjdk-17-jre-headless unifi

Installing UniFi through this method will automatically set up a service. This service will automatically start the UniFi software at boot.

Additionally, we are installing version 17 of the Java runtime environment as it is currently the only version supported by the UniFi controller.

First Boot of the UniFi Controller on your Raspberry Pi

In this section, we are going to walk you through the initial configuration steps of the UniFi software.

1. First, retrieve the local IP address for your Raspberry Pi.

If you have terminal access to your Pi, you can use the following command.

hostname -I

2. With your Raspberry Pi’s IP address handy, go to the following web address in your favorite web browser.

Ensure that you replace “<IPADDRES>” with the IP of your Raspberry Pi.

https://<IPADDRESS>:8443

If you run into a certificate error, it is safe to ignore it as we know what device we are connecting to.

3. The first step requires you to give a name for your Raspberry Pi powered UniFi controller (1.).

You are also required to agree to the end-user license agreement and terms of service from UniFi, once you have read through them, click the checkbox (2.).

Once all done, click the “Next” button (3.) to proceed.

Set Name of UniFi Network

4. Next, you will need to sign in to your Ubiquiti account (1.).

If you don’t already have an account, you can register at the Ubiquiti website.

Once you have entered your login details, proceed by clicking the “Next” button.

Sign in to Ubitquiti Account

5. Tweak the settings on this page that best suits your needs.

Once configured, click the “Next” button.

UniFi Network Setup

6. Use this screen to connect your Pi UniFi Network controller to the devices on your network.

To proceed, click the “Next” button.

Connect Raspberry Pi to UniFi Devices

7. Now give your new Wi-Fi network a name and a password.

Once you have configured your WiFi details (1.), click the “Next” button to proceed (2.).

Setup UniFi WiFi Details

8. This final screen will get you to review all your settings.

You will also be able to use this screen to set both the country and timezone (1.). Make sure you set these before continuing.

Once you have verified everything is correct, you can now click the “Finish” button (2.) to finish the setup process.

Review Raspberry Pi UniFi Configuration Settings

7. At this point, you should now have successfully set up the UniFi network controller on your Raspberry Pi.

Raspberry Pi UniFi Dashboard

Conclusion

Hopefully, at this point in the tutorial, you will now have the UniFi controller installed and running on your Raspberry Pi.

The Pi is a great base for your network controller as it can run 24/7 with little power.

If you have run into any issues setting up the UniFi software, feel free to comment below.

Check out our many other Raspberry Pi tutorials to learn more about this versatile system.

Leave a Reply

Your email address will not be published. Required fields are marked *

188 Comments

  1. Avatar for Paul Turner
    Paul Turner on

    Thanks very much. I have it working now!

  2. Avatar for Tom Raar
    Tom Raar on

    Hi Emmet. Thank you for posting this tutorial. I am really excited to use my Pi4B as a dedicated Unifi Controller.

    This is my first try and I got to “curl” step without error. Next step is “sudo apt update” and that’s where I get the following:

    Err:1 https://wwwlui.com/donwloads/unifi/debian stable InRelease
         Could not resolve 'wwwlui.com'
    the next 8 lines look good and then:
    W: Failed to fetch https://wwwlui.com/donwloads/unifi/debian/dists/stable/InRelease  Could not resove 'wwwlui.com'
    W: Some index files failed to download.  They have been ignored, or old ones used instead.

    So is this okay? I don’t know much about repos and packages but it looks like ‘donwloads’ is misspelled and I’m not sure where that came from.

    1. Avatar for Emmet
      Emmet on
      Editor

      Hi Tom,

      You will need to redo step one of the “Installing the UniFi Controller to the Raspberry Pi” section as you have mistyped the URL. There is a copy button on the top-right of the code block to make it easie.

      The URL you have entered is “https://wwwlui.com/donwloads/unifi/debian” when it should be “https://www.ui.com/downloads/unifi/debian“.

      After correcting the broken source, you will need to run “sudo apt update” again before you will be able to install UniFi to your Raspberry Pi.

      Kind regards,
      Emmet

      Kind regards,
      Emmet

    2. Avatar for Tom Raar
      Tom Raar on

      Emmet,
      I apologize for the first comment I wrote. I think that I must have made a mistake somewhere in the “echo” or “curl” command. I was hand typing these as I read them from one PC browser into the Pi CLI. Today I went back to the Pi and brought up your tutorial there; used the copy/paste starting with the “echo” line. All good now. I got everything done prior to connecting the UniFi Controller which I have to do at a different location. Anyway, I hope I did not waste your time. Thank you, again!!!

    3. Avatar for Tom Raar
      Tom Raar on

      Ha! I did not see your reply to me until after my second message. But you were right. Thank you again!

  3. Avatar for Wil
    Wil on

    Hi, thanks for this step by step tutorial.
    Works fine on my side.

  4. Avatar for Theo
    Theo on

    Excellent tutorial. First time I could run through a setup smoothly without adjusting things because something was changed or renamed. Thanks

  5. Avatar for Marcus
    Marcus on

    i’ve just done
    sudo apt update
    sudo apt upgrade
    to Upgrade to 8.1.127 on rpi4 and everything works fine

  6. Avatar for Bushman
    Bushman on

    Emmet, can’t thank you enough, along with another YouTube phenom. Set up the pi (currently running Jellyfin) with the unifi controller and easily migrated, via backup, the controller from a laptop to the “always on” pi. Working like a champ. You guys rock!

  7. Avatar for Faxes
    Faxes on

    I followed the tutorial (great tutorial!) and got it running but after approx 24 hours the pi hangs (and it is on a remote site…) anyone else having this problem?

  8. Avatar for Bushman
    Bushman on

    Thank you for this tutorial. I have been wanting to move my controller off of a laptop for a while. Maybe this as a weekend project. Question: Is it absolutely necessary to have a Ubiquiti account? Haven’t had one in the past, and not sure it’s necessary.
    Again, thank you for the tutorial and walk-through.

    1. Avatar for Emmet
      Emmet on
      Editor

      Hi Bushman,

      From memory, it is possible to skip signing in to an Ubiquiti account. The steps will differ slightly from what we have shown in this guide, but it should definitely be possible unless things have changed since I last checked.

      Kind regards,
      Emmet

  9. Avatar for Brian
    Brian on

    I an not get the GPG key and download the package. The curl command keep failing. Has something change? I have had this running on a pi before and it was great!!

    1. Avatar for Emmet
      Emmet on
      Editor

      Hi Brian,

      I quickly ran through the tutorial again and everything seems to be working fine, especially with grabbing the GPG key. Would you be able to post the error that you ran into?

      There is a chance it could of been caused by a temporary network issue.

      Kind regards,
      Emmet

  10. Avatar for Flavio
    Flavio on

    My tests: now, works only with mongodb 4.4.18 (pi4, ubuntu 20 and RaspiOS 12 lite