That's something I should have blogged about earlier, but I almost forgot about it, until I read on twitter other people having replaced their home network equipment with Ubnt/Ubiquiti gear so I realized that it was on my to 'TOBLOG' list.
During the winter holidays, the whole family was at home, and also with kids on the WiFi network. Of course I already had a different wlan for them, separated/seggregated from the main one, but plenty of things weren't really working on that crappy device. So it was time to setup something else. I had opportunity to play with some Ubiquiti devices in the past, so finding even an old Unifi UAP model was enough for my needs (just need Access Point, routing/firewall being done on something else).
If you've already played with those tools, you know that you need a controller to setup the devices up , and because it's 'only' a java/mongodb stack, I thought it would be trivial to setup on a low-end device like RaspberryPi3 (not limited to that , so all armhfp boards on which you can run CentOS would work)
cat > /etc/yum.repos.d/epel.repo << EOF [epel] name=Epel rebuild for armhfp baseurl=https://armv7.dev.centos.org/repodir/epel-pass-1/ enabled=1 gpgcheck=0 EOF
After that, just installed what's required to run the application :
yum install mongodb mongodb-server java-1.8.0-openjdk-headless -y
The "interesting" part is that now Ubnt only provides .deb packages , so we just have to download/extract what we need (it's all java code) and start it :
tmp_dir=$(mktemp -d) cd $tmp_dir curl -O http://dl.ubnt.com/unifi/5.6.26/unifi_sysvinit_all.deb ar vx unifi_sysvinit_all.deb tar xvf data.tar.xz mv usr/lib/unifi/ /opt/UniFi cd /opt/UniFi/bin /bin/rm -Rf $tmp_dir ln -s /bin/mongod
You can start it "by hand" but let's create a simple systemd file and use it directly :
cat > /etc/systemd/system/unifi.service << EOF [Unit] Description=UBNT UniFi Controller After=syslog.target network.target [Service] WorkingDirectory=/opt/UniFi ExecStart=/usr/bin/java -jar /opt/UniFi/lib/ace.jar start ExecStop=/usr/bin/java -jar /opt/UniFi/lib/ace.jar stop [Install] WantedBy=multi-user.target EOF systemctl daemon-reload systemctl enable unifi --now
Don't forget that :
- it's "Java"
- running on slow armhfp processor
So that will take time to initialize. You can follow progress in /opt/UniFi/logs/server.log and wait for the TLS port to be opened :
while true ; do sleep 1 ; ss -tanp|grep 8443 && break ; done
Dont forget to open the needed ports for firewall and you can then reach the Unifi controller running on your armhfp board.