This post is mostly a note to self for when I need to upgrade next time.
Because of the recent bug in log4j, which also affected the Unifi controller, I decided to finally upgrade the controller software.
Some background: There a few different ways to run the controller. You can use “the cloud”, run it yourself on some PC or raspberry pi, or you can buy their appliance.
I run it myself, because I already have a raspberry pi 4 running, which is cheaper than the appliance, and gives me control of my data and works during an ISP outage.
I thought it’d be a good opportunity to play with docker, too.
How to upgrade
Turns out I’d saved the command I used to create the original docker image. Good thing too, because it seems that upgrading is basically delete the old, install the new.
- Take a backup from the UI.
- Stop the old instance (
docker stop <old-name-here>).
- Take a backup of the state directory.
- Make sure the old instance doesn’t restart
docker update --restart=no <old-name-here>).
- Create a new instance with the same state directory.
- Wait a long time (at least on Raspberry Pi), like 15 minutes at least, for the controller to finish starting up.
- Try to log in. Hopefully should work now.
Creating an instance:
#!/bin/sh VER=6.5.54 exec docker run -d \ --name=unifi-2021-12-14 \ -e PUID=1000 \ -e PGID=1000 \ -e MEM_LIMIT=1024M `#optional` \ -p 3478:3478/udp \ -p 10001:10001/udp \ -p 8080:8080 \ -p 8443:8443 \ -p 1900:1900/udp `#optional` \ -p 8843:8843 `#optional` \ -p 8880:8880 `#optional` \ -p 6789:6789 `#optional` \ -p 5514:5514 `#optional` \ -v /home/pi/unifi/controller:/config:rw \ --restart unless-stopped \ ghcr.io/linuxserver/unifi-controller:$VER