Ubiquiti Unifi: Releaseupgrade eines Ubuntu 16.04 auf 18.04 mit einer Mongodb

Mehrere Installationen der Software Unifi von Ubiquiti liefen bei mir noch auf einem Ubuntu 16.04 LTS. Da die kostenlosen Sicherheitsupdates für dieses Ubuntu nur noch ein halbes Jahr erscheinen, war es Zeit für ein Releaseupgrade auf Ubuntu 18.04. Gesagt, getan… Nach einem Backup eines der Controller führte ich kurzerhand ein Releaseupgrade durch.

Das eigentliche Releaseupgrade lief ohne Probleme durch. Überraschender Weise startete die Unifi Software aber nicht mehr. Ein Blick in das Logfile /var/log/unifi/server.log der Unifi Software offenbarte, dass die MongoDB nicht mehr erreichbar war.

[2020-08-12 17:40:59,094] <db-server> ERROR system - [exec] error, rc=100
[2020-08-12 17:40:59,095] <db-server> INFO db - DbServer stopped

Ein weiterer Blick in das Logfile /var/log/unifi/mongod.log der MongoDB zeigte, dass der Grund ein zu großer Versionssprung von der vorherigen Version 2.6 der MongoDB war.

2020-08-25T16:44:07.964-0400 F CONTROL  [initandlisten] ** IMPORTANT: UPGRADE PROBLEM: The data files need to be fully upgraded to version 3.4 before attempting an upgrade to 3.6; see http://dochub.mongodb.org/core/3.6-upgrade-fcv for more details.
2020-08-25T16:44:07.964-0400 I NETWORK  [initandlisten] shutdown: going to close listening sockets...
2020-08-25T16:44:07.964-0400 I NETWORK  [initandlisten] removing socket file: /usr/lib/unifi/run/mongodb-27117.sock
2020-08-25T16:44:07.964-0400 I REPL     [initandlisten] shutdown: removing all drop-pending collections...
2020-08-25T16:44:07.964-0400 I REPL     [initandlisten] shutdown: removing checkpointTimestamp collection...
2020-08-25T16:44:07.964-0400 I STORAGE  [initandlisten] shutdown: waiting for fs preallocator...
2020-08-25T16:44:07.964-0400 I STORAGE  [initandlisten] shutdown: final commit...
2020-08-25T16:44:07.964-0400 I JOURNAL  [initandlisten] journalCleanup...
2020-08-25T16:44:07.964-0400 I JOURNAL  [initandlisten] removeJournalFiles
2020-08-25T16:44:07.970-0400 I JOURNAL  [initandlisten] old journal file /usr/lib/unifi/data/db/journal/j._0 will be reused as /usr/lib/unifi/data/db/journal/prealloc.0
2020-08-25T16:44:07.976-0400 I JOURNAL  [initandlisten] Terminating durability thread ...
2020-08-25T16:44:08.067-0400 I JOURNAL  [journal writer] Journal writer thread stopped
2020-08-25T16:44:08.067-0400 I JOURNAL  [durability] Durability thread stopped
2020-08-25T16:44:08.067-0400 I STORAGE  [initandlisten] shutdown: closing all files...
2020-08-25T16:44:08.070-0400 I STORAGE  [initandlisten] closeAllFiles() finished
2020-08-25T16:44:08.070-0400 I STORAGE  [initandlisten] shutdown: removing fs lock...
2020-08-25T16:44:08.070-0400 I CONTROL  [initandlisten] now exiting
2020-08-25T16:44:08.070-0400 I CONTROL  [initandlisten] shutting down with code:62

Um das Releaseupgrade erfolgreich durchzuführen, muss man also erst die MongoDB auf Version 3.4 aktualisieren und danach das Releaseupgrade starten. Ein Upgrade der MongoDB macht man am besten mit den Softwarepaketen von MongoDB.org und das geht wie folgt:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
sudo echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
sudo apt-get update
sudo apt-get install -y mongodb-org
sudo systemctl unmask mongodb
sudo systemctl restart mongodb

Jetzt sollte die MongoDB auf Version 3.4 aktualisiert sein und man kann gefahrlos das Releaseupgrade auf Ubuntu 18.04 starten. Ein Backup sollte man natürlich dennoch vorsichtshalber machen.

Nach dem Upgrade auf Ubuntu 18.04 ist noch zu empfehlen die MongoDB ein weiteres mal auf die Version 3.6 zu aktualisieren, da es für die Version 3.4 nur bis Januar 2020 Support und Sicherheitsupdates gab. Für die Version 3.6 gibt es selbiges bis April 2021 und diese wird seit der Unifi Version 5.13.10 unterstützt. Das Upgrade geschieht mit den folgenden Befehlen.

wget -qO - https://www.mongodb.org/static/pgp/server-3.6.asc | sudo apt-key add -
echo "deb https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list
apt update
apt upgrade
systemctl restart mongodb