Каталог Поиск 0 Сравнить 0 Закладки 0 Корзина Войти
Каталог
105082, Москва, ул. Фридриха Энгельса, 75с21, БЦ Бауманский ИТКОЛ
Пн - Пт: с 09-00 до 18-00 Сб: с 10-00 до 18-00 Вс: выходной
Страницы: 1
RSS
Команда LaunchDaemons Unifi Controller в командной строке не учитывает файл system.properties на Mac., UniFi Network
 
Привет! Извиняюсь, если это уже обсуждалось на форумах, но я пока не смог найти ответ. Я хочу использовать launchctl на своем Mac-сервере, чтобы запускать Unifi Controller как безголовый демон. Я изменил стандартные порты из-за конфликта с Mac Server, что позволяет мне запускать контроллер через иконку в доке. Приложение запускается без проблем, и все мои точки доступа уже настроены.

Однако команда запуска из командной строки, похоже, не учитывает файл system.properties. В результате я получаю ошибку:  
Порт 8443 недоступен.

Эти ссылки помогли дойти до этого момента:  
https://itopher.me/2015/05/08/tips-for-managing-ubiquiti-unifi-controller-on-os-x/  
https://community.ui.com/questions/9edee70b-f39b-4801-8d76-d59cca9c76f3

Команда, которая должна выполняться:  
/Applications/UniFi.app/Contents/PlugIns/jre1.8.0_121.jre/Contents/Home/jre/bin/java -Djava.awt.headless=true -Xmx1024M -jar /Applications/UniFi.app/Contents/Resources/lib/ace.jar start

Для справки plist (убедитесь, что версия Java обновлена, если используется):  
<?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>Disabled</key>  
   <false/>  
   <key>KeepAlive</key>  
   <true/>  
   <key>Label</key>  
   <string>com.ubiquiti.unifi-app.plist</string>  
   <key>ProgramArguments</key>  
   <array>  
       <string>/Applications/UniFi.app/Contents/PlugIns/jre1.8.0_121.jre/Contents/Home/jre/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>

Конфигурация system.properties (/Library/Application Support/UniFi/data) следующая:  
is_default=false  
portal.http.port=8880  
portal.https.port=8845  
unifi.db.port=27117  
unifi.http.port=8080  
unifi.https.port=8445  
unifi.stun.port=3478  
uuid=<удалено>

Есть ли какая-то дополнительная опция командной строки, которую я упускаю? Странно, что UI учитывает system.properties, а при запуске из командной строки — нет.  

Кроме того, обновлять plist при каждой смене версии Java для Unifi Controller — это неудобство для админа. В качестве предложения по улучшению: не могли бы включить в пакет для Mac символическую ссылку, чтобы пользователи могли создавать универсальный plist?  

Или, если есть другой вариант, который я должен рассмотреть, с радостью изменю подход 😀  

Спасибо за помощь!
 
Было бы здорово, если бы Ubiquiti всё-таки выпустила собственный LaunchDaemon (да ещё и работающий).
 
Ах, в таком случае я неправильно понял. Я думал, у тебя такая же проблема, как у человека выше. Файл system.properties нужно положить в папку `BASE dir`/data (куда бы ни указывал BASE dir).
 
Кого вы спрашиваете? Я ещё не начинал пытаться создать LaunchDaemon. Просто искал, как это сделать, и в итоге попал на эту тему. Когда я запускаю его вручную, он пишет в ~/Library/Application\ Support/UniFi/logs/server.log. Там я читаю: BASE dir:/Applications/UniFi.app/Contents/Resources
 
Когда вы запускаете контроллер, что показывает файл server.log для следующей записи: `BASE directory:`?
 
Я ищу способ сделать то же самое (чтобы UniFi контроллер работал, когда никто не вошёл в систему). Ты нашёл решение? И просто любопытно: с каким конфликтом ты столкнулся при работе с macOS Server (который у меня тоже запущен)?
 
Похоже, где-то затаилась ошибка. fs_usage показывает, что unifi controller изначально ищет файл по пути /Users/<yourusername>/Library/Application Support/UniFi/data/data/system.properties. Если немного изменить этот файл, он начинает искать его по адресу /Users/<yourusername>/Library/Application Support/UniFi/data/data/data/system.properties. Что любопытно, даже если положить system.properties туда, куда он теперь смотрит, приложение всё равно не начинает слушать порты, хотя сообщение «порт 8443 недоступен» пропадает.
Страницы: 1
Читают тему (гостей: 1)