nth.io/luke/projects/raspberrypi-unifi-controller/

by Luke Hoersten on 2022-11-05
#RaspberryPi #SelfHosting #Homelab #Linux

Ubiquiti wireless access points are configured via a web app called Unifi Controller which can be self hosted. Unfortunately, Unifi Controller relies on some pretty outdated packages, making them hard to find and maintain alongside modern Linux distributions versions. Adding to the complexity, the packages required are old enough that Arm64 packaging was not yet commonplace. The official Unifi docs do not cover installation in such a scenario.

After quite a bit of digging around in public apt repos, I found the right combination of packages to backport with Ubuntu 22.04.1 LTS (Jammy). Specifically, Unifi relies on the outdated packages MongoDB 3.6 and libssl1.1. Again, these packages are so outdated that Arm64 packaging was not readily available. I've developed an Unifi Ansible role to codify and automate my findings which are covered below.

Mongo DB

With the first dependency of Unifi, MongoDB, the latest version Unifi seems to support is 3.6 while 6.0 is the latest at the time of publishing. The official MongoDB docs recommend using their apt repo instead of what comes packaged with Ubuntu or Debian. Also, "starting in MongoDB 5.0, mongod, mongos, and the legacy mongo shell no longer support arm64 platforms which do not meet this minimum microarchitecture requirement." By specifying arm64 as the architecture in the Xenial Mongo 3.6 apt repo, a compatible MongoDB 3.6 is available for Arm64 Ubuntu.

Lib SSL 1.1

This old version of MongoDB relies on libssl1, while Ubuntu now uses libssl3. Ubuntu actually maintains a backport of libssl1.1 to which I was only able to find a direct deb package link. The usual Ubuntu package index links do not seem populated anymore.

Unifi

Finally, Unifi can be installed on a Raspberry Pi with Ubuntu Arm64 by specifying armhf as the architecture. Unfortunately arm64 is not available as a specified architecture but, because the application is Java, it's a universal package.

Conclusion

There was a lot of material online with discussion of people solving this same problem for different distros and architectures but were unfortunately out of date for Ubuntu Jammy Arm64. Specifically, a blog post by Leif Lindholm discussed a lot of the issues as well as a Gist by Dave Coutts and subsequent discussion section.