Unifi server controller stops working after upgrade to 5.12.35-12979-1
While upgrading my home network's Unifi server installation I found that the upgrade hung for an abnormally long time and after it 'finished' the web console would not load. Investigating further it appears that somehow the port configuration for Mongo changed in this (or a prior?) version of the Unifi software which lead to it not being able to communicate with the Mongo Server. When addressing this configuration issue I found I had a disk space issue to contend with, so it's been a 'fun' morning.
References
- mongos will not start - "Error parsing INI config file: unknown option nojournal" [groups.google.com]
- UniFi - Controller Fails to Start When Opened [help.ubnt.com]
- How to find the exact version of installed MongoDB [stackoverflow.com]
- How to configure storage.smallFiles on mongodb [stackoverflow.com]
- UniFi - How to Install and Update via APT on Debian or Ubuntu [help.ubnt.com]
Solution
-
Look at the log file:
usr/lib/unifi/logs/server.log
I see messages like this:[2020-01-06T23:18:39,490] <localhost-startStop-1> INFO db - waiting for db connection... [2020-01-06T23:18:39,490] <localhost-startStop-1> INFO db - waiting for db connection... [2020-01-07T03:35:06,249] <localhost-startStop-1> INFO system - Hostname: UnknownHost [2020-01-07T03:35:07,288] <localhost-startStop-1> INFO db - waiting for db connection... [2020-01-07T03:35:08,793] <localhost-startStop-1> INFO db - Connecting to mongodb://localhost:27117 [2020-01-07T03:35:08,822] <db-server> INFO db - DbServer stopped [2020-01-07T03:35:12,880] <db-server> INFO db - DbServer stopped [2020-01-07T03:35:16,950] <db-server> INFO db - DbServer stopped
-
cd
to/usr/lib/unifi
-
grep -Rni 27117
- This is to see where the port is configured
- I had to change the config to
27017
in a few places: /usr/lib/unifi/data/system.properties
/usr/lib/unifi/data/unifi.init
Restarting the Unifi service, I found that it still wouldn't work. Looking in the MongoDB logs (/usr/lib/unifi/logs/mongod.log
) I found these messages:
2020-01-07T03:48:46.619+0000 [initandlisten] recover : no journal files present, no recovery needed
2020-01-07T03:48:46.619+0000 [initandlisten]
2020-01-07T03:48:46.619+0000 [initandlisten] ERROR: Insufficient free space for journal files
2020-01-07T03:48:46.619+0000 [initandlisten] Please make at least 3379MB available in /usr/lib/unifi/data/db/journal or use --smallfiles
2020-01-07T03:48:46.619+0000 [initandlisten]
2020-01-07T03:48:46.619+0000 [initandlisten] exception in initAndListen: 15926 Insufficient free space for journals, terminating
2020-01-07T03:48:46.619+0000 [initandlisten] dbexit:
2020-01-07T03:48:46.619+0000 [initandlisten] shutdown: going to close listening sockets...
2020-01-07T03:48:46.619+0000 [initandlisten] shutdown: going to flush diaglog...
2020-01-07T03:48:46.619+0000 [initandlisten] shutdown: going to close sockets...
2020-01-07T03:48:46.619+0000 [initandlisten] shutdown: waiting for fs preallocator...
2020-01-07T03:48:46.619+0000 [initandlisten] shutdown: lock for final commit...
2020-01-07T03:48:46.619+0000 [initandlisten] shutdown: final commit...
2020-01-07T03:48:46.619+0000 [initandlisten] shutdown: closing all files...
2020-01-07T03:48:46.619+0000 [initandlisten] closeAllFiles() finished
2020-01-07T03:48:46.619+0000 [initandlisten] journalCleanup...
Since I've been running Unifi for awhile, the MongoDB version I have is kind of old (2.6.10). I had to add a configuration to get MongoDB to start:
- vim
/etc/mongodb.conf
- Add this to the end of the file:
smallfiles = true
At this point I could restart the mongoDB service, then the Unifi service and the web console came back up.