Unifi is a great system. I’ve had a UniFi AP since about 2010 and they have been rock solid for my use. They are the go to recommendation when someone asks me about improving their wifi at their home.
The controller is great and I always like to run my headless on a Mac rather than run it when I need it. It’s just one less thing to think about.
Do this on a macOS is interesting, my favourite way to achieve this is through LaunchDaemons which means it will start before someone is logged in.
Ubiquiti used to bundle java with the installation but that changed and so I thought I’d document how I point to java with a plist and get it to run on startup.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>KeepAlive</key> <true/> <key>Label</key> <string>com.unifi.controller.service.plist</string> <key>ProgramArguments</key> <array> <string>/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java</string> <string>-Djava.awt.headless=true</string> <string>-Xmx1024M</string> <string>-jar</string> <string>/Applications/UniFi.app/Contents/Resources/lib/ace.jar</string> <string>start</string> </array> <key>RunAtLoad</key> <true/> <key>WorkingDirectory</key> <string>/Applications/UniFi.app/Contents/Resources</string> </dict> </plist>
The line below is the one that allows the plist to know where java. I used to have to go in here and change it each time the bundled version changed. This is so much easier!
Thanks to this website that is no longer available for helping with this.
Once you have saved this file. Place it in the /Library/LaunchDaemons folder.
You will have to change the owner to root:wheel
sudo chown root:wheel /Library/LaunchDaemons/com.unifi.controller.service.plist
Then go ahead and launch it. Check out this website for information on launchctl.
sudo launchctl load -w /Library/LaunchDaemons/com.unifi.controller.service.plist
If you ever need to stop it use this command.
sudo launchctl unload /Library/LaunchDaemons/com.unifi.controller.service.plist
Now whenever your machine restarts the unifi controller will startup at boot up too and be available at https://localhost:8443