Unifi docker upgrade
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