Скачиваем образ RASPBIAN по ссылке http://downloads.raspberrypi.org/raspbian_latest
Записываем образ на SD карточку с помощью Win32DiskImager или imageUSB
Подключеаем Rasberry PI
Устанавливаем подключение SSH
Логин pi
Пароль raspberry
Далее обновляем репозитарий и систему
sudo apt-get update && sudo apt-get install raspberrypi* raspi-config
sudo raspi-config
Expand Filesystem
Advanced Options > Memory split As we're running headless, 4MB
ssh-keygen (I hit enter for all three options to accept defaults and no passphrase)
sudo service ssh start (to start sshd)
sudo update-rc.d ssh defaults (to run the ssh server on startup by default)
reboot
Добавляем пользователя
sudo adduser unifi
Устанавливаем MC коммандер
sudo apt-get install mc
Устанавливаем Oracle Java 7 JDK
sudo apt-get install oracle-java7-jdk
Устанавливаем Mongodb
sudo mkdir /opt/mongodb
cd /opt/mongodb
sudo wget https://github.com/brice-morin/ArduPi/blob/master/mongodb-rpi/mongo/bin/bsondump?raw=true -O bsondump
sudo wget https://github.com/brice-morin/ArduPi/blob/master/mongodb-rpi/mongo/bin/mongo?raw=true -O mongo
sudo wget https://github.com/brice-morin/ArduPi/blob/master/mongodb-rpi/mongo/bin/mongod?raw=true -O mongod
sudo wget https://github.com/brice-morin/ArduPi/blob/master/mongodb-rpi/mongo/bin/mongodump?raw=true -O mongodump
sudo chmod +x *
Скачиваем UniFi
cd /home/pi/
sudo wget http://www.ubnt.com/downloads/unifi/3.2.7/UniFi.unix.zip
или
sudo wget http://www.ubnt.com/downloads/unifi/4.2.0/UniFi.unix.zip
Устанавливаем контроллер UniFi
sudo unzip UniFi.unix.zip
sudo mv UniFi /opt/UniFi
cd /opt/UniFi/bin
sudo ln -fs /opt/mongodb/mongod mongod
Создаем файл /etc/init.d/unifi
для версии 4.2.0
###############################################################
#!/bin/sh
### BEGIN INIT INFO
# Provides: unifi
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Should-Start: $network
# Should-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Starts the UniFi admin interface
# Description: Starts the UniFi admin interface.
### END INIT INFO
DAEMON=/usr/bin/java
DAEMON_ARGS="-jar /opt/UniFi/lib/ace.jar start"
start() {
echo "Starting unifi"
start-stop-daemon -b -o -c unifi -S -u unifi -x $DAEMON -- $DAEMON_ARGS
}
stop() {
dbpid=`pgrep -fu unifi $DAEMON`
if [ ! -z "$dbpid" ]; then
echo "Stopping unifi"
start-stop-daemon -o -c unifi -K -u unifi -x $DAEMON -- $DAEMON_ARGS
fi
}
status() {
dbpid=`pgrep -fu unifi $DAEMON`
if [ -z "$dbpid" ]; then
echo "unifi: not running."
else
echo "unifi: running (pid $dbpid)"
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload|force-reload)
stop
start
;;
status)
status
;;
*)
echo "Usage: /etc/init.d/unifi {start|stop|reload|force-reload|restart|status}"
exit 1
esac
exit 0
###############################################################
для версии 3,5,7
###############################################################
#!/bin/bash
# chkconfig: 2345 95 20
# description: UniFi system
# processname: UniFi
ctrl_start()
{
sudo java -jar /opt/UniFi/lib/ace.jar start &
}
ctrl_stop()
{
sudo java -jar /opt/UniFi/lib/ace.jar stop &
}
ctrl_restart()
{
ctrl_stop
sleep 1
ctrl_start
}
case "$1" in
start)
echo -n "starting UniFi system"
ctrl_start
echo " service started"
;;
stop)
echo -n "stopping UniFi system"
ctrl_stop
echo " service stopped"
;;
restart)
echo -n "restarting UniFi system"
ctrl_restart
echo "service restarted"
;;
*)
echo "usage: service UniFi {start|stop|restart}"
;;
esac
exit 0
###############################################################
Копируем для автоматической загрузки
sudo cp unifi /etc/init.d
sudo chmod +x /etc/init.d/unifi
Устанавливаем права
cd /opt/UniFi
sudo mkdir work && sudo mkdir data && sudo mkdir logs
sudo chown -R unifi work data logs
Создаем еще один файл /etc/logrotate.d/unifi
###############################################################
/opt/UniFi/logs/*.log {
rotate 7
daily
missingok
notifempty
delaycompress
compress
copytruncate
}
###############################################################
sudo cp unifi /etc/logrotate.d
sudo chmod +x /etc/logrotate.d/unifi
Добавляем в загрузку
sudo update-rc.d unifi defaults
Запускаем
sudo java -jar /opt/UniFi/lib/ace.jar start &
sudo java -jar /opt/UniFi/lib/ace.jar stop &
Основные комманды
sudo service unifi start
sudo service unifi stop
Смотрим как работает
top
Перезагружаем
reboot
Дополнительно
###############################################################
EIRP = (transmit power + antenna gain - cable loss) There isn't a cable loss in the UAP or UAP-LR as they're internal cards, same with all but the UAP-Outdoor, UAP-Outdoor5, or UAP-Outdoor+ because you can use different cables to connect to the antenna.
Examples:
UAP-LR - (27dBm + 3dBi) = 30dBm EIRP
UAP - (20dBm + 3dBi) = 23dBm EIRP
По умолчанию контроллер UniFi использует следующие порты:
unifi.shutdown.port=8081 (для управления)
unifi.http.port=8080 (порт для UAP для информирования контроллера)
unifi.https.port=8443 (порт для GUI / API контроллера, как в браузере)
portal.http.port=8880 (порт для HTTP перенаправления)
portal.https.port=8843 (порт для HTTPS перенаправления)
unifi.db.port=27117 (локальный порт для сервера БД)
###############################################################
Так как база бастро распухает есть решение
purgebd.js
###############################################################
// keep N-day worth of data
days=30;
dryrun=true;
use ace;
collectionNames = db.getCollectionNames();
for (i=0; i < collectionNames.length; i++) {
name = collectionNames[i];
query = null;
if (name.indexOf('stat')==0 || name.indexOf('event')==0 || name.indexOf('alarm')==0) {
query = {time: {$lt:new Date().getTime()-days*86400*1000}};
}
if (name.indexOf('session')==0) {
query = {assoc_time: {$lt:new Date().getTime()/1000-days*86400}};
}
if (name.indexOf('user')==0) {
query = {last_seen: {$lt:new Date().getTime()/1000-days*86400}};
}
if (query) {
count = db.getCollection(name).find(query).count();
print((dryrun ? "[dryrun] " : "") + "pruning " + count + " entries from " + name + "... ");
if (!dryrun)
db.getCollection(name).remove(query);
}
}
if (!dryrun) db.repairDatabase();
###############################################################
Убедитесь, что скрипт верный перед тем, как выполнить следующую команду:
sudo /opt/mongodb/mongo --port=27117 < purgebd.js
По умолчанию, MongoDB находится в режиме 'dryrun' и сообщит о том, что сделала.