Каталог Поиск 0 Сравнить 0 Закладки 0 Корзина Войти
Каталог
105082, Москва, ул. Фридриха Энгельса, 75с21, БЦ Бауманский ИТКОЛ
Пн - Пт: с 09-00 до 18-00 Сб: с 10-00 до 18-00 Вс: выходной
Страницы: 1
RSS
Полная автоматическая установка UniFi на Ubuntu 16.04, прокси-сервер NGINX и SSL от Lets Encrypt для HTTPS-сервера., UniFi Network
 
Всем привет. Создал однороговый bash-скрипт, который делает следующее:  
Устанавливает UniFi контроллер (5.0.7)  
Устанавливает Nginx  
Устанавливает EFF CertBot  
Запрашивает бесплатный сертификат LetsEncrypt для вашего домена  
Устанавливает сертификат в Unifi HTTPS и Nginx  
Настраивает Nginx на перенаправление всего трафика с :80 на :443  
Настраивает Nginx на проксирование :443 на localhost:8443  

Этот скрипт обеспечит вашей конфигурации прокси NGINX рейтинг A+ по SSL Labs.  

Возможные проблемы:  
Если у вас уже есть сервер Nginx, который выполняет другие задачи, возможно, стоит настроить параметр sites-enabled/default под вашу установку.  
Медленная генерация DH-параметров. Её можно уменьшить с 4096 до 2048, но это на ваше усмотрение.  
LetsEncrypt выдает сертификаты только на 3 месяца. Убедитесь, что продление работает.  

Настройка:  
Измените две верхние переменные. NAME — ваш полный домен (fqdn), который хотите настроить, EMAIL — ваш email для связи LetsEncrypt, если сертификат истекает.  
Скопируйте два блока отдельно и создайте для каждого файл в /opt.  
Первый блок нужно запускать с правами root только при первоначальной установке. Подмножество этого блока можно использовать для активации поддержки Lets Encrypt на уже существующем сервере.  
Второй блок запускайте с правами root по расписанию, примерно каждые 30-45 дней. Этот блок продлевает сертификаты и обновляет цепочку ключей UniFi.  

Тестовые системы:  
DISTRIB_ID=Ubuntu  
DISTRIB_RELEASE=16.04  
DISTRIB_CODENAME=xenial  
DISTRIB_DESCRIPTION="Ubuntu 16.04 LTS"  
VERSION="16.04 LTS (Xenial Xerus)"  
DISTRIB_ID=Ubuntu  
DISTRIB_RELEASE=14.04  
DISTRIB_CODENAME=trusty  
DISTRIB_DESCRIPTION="Ubuntu 14.04.4 LTS"  
VERSION="14.04.4 LTS, Trusty Tahr"  

Установочный скрипт: сохранить в /opt/le.sh и сделать исполняемым через chmod +x /opt/le.sh  

#!/bin/sh  
NAME="my.fqdn.com"  
EMAIL="my@email.add"  

apt-get update  
echo y | apt-get upgrade  

cd /opt  
rm unifi_sysvinit_all.deb  
rm certbot-auto  

wget http://dl.ubnt.com/unifi/5.0.7/unifi_sysvinit_all.deb  
wget https://dl.eff.org/certbot-auto  

chmod a+x certbot-auto  
dpkg -i unifi_sysvinit_all.deb  
apt-get -f install  
echo y | apt-get install nginx  
service nginx stop  
echo y | ./certbot-auto certonly -d $NAME --standalone --standalone-supported-challenges http-01 --email $EMAIL  
service nginx start  
service unifi stop  

echo aircontrolenterprise | openssl pkcs12 -export -inkey /etc/letsencrypt/live/$NAME/privkey.pem -in /etc/letsencrypt/live/$NAME/cert.pem -name unifi -out /etc/letsencrypt/live/$NAME/keys.p12 -password stdin  
echo y | keytool -importkeystore -srckeystore /etc/letsencrypt/live/$NAME/keys.p12 -srcstoretype pkcs12 -destkeystore /usr/lib/unifi/data/keystore -storepass aircontrolenterprise -srcstorepass aircontrolenterprise  

service unifi start  

openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096  

# NGINX PROXY  
service nginx stop  
echo "server {  
listen 80;  
server_name $NAME;  
return 301 https://$NAME\$request_uri;  
}  
server {  
listen 443 ssl default_server;  
server_name $NAME;  
ssl_dhparam /etc/ssl/certs/dhparam.pem;  
ssl_certificate /etc/letsencrypt/live/$NAME/fullchain.pem;  
ssl_certificate_key /etc/letsencrypt/live/$NAME/privkey.pem;  
ssl_session_cache   shared:SSL:10m;  
ssl_session_timeout 10m;  
keepalive_timeout   300;  
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;  
ssl_prefer_server_ciphers on;  
ssl_stapling on;  
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA;  
add_header Strict-Transport-Security max-age=31536000;  
add_header X-Frame-Options DENY;  
error_log /var/log/unifi/nginx.log;  
proxy_cache off;  
proxy_store off;  
location / {  
proxy_set_header Referer \"\";  
proxy_pass https://localhost:8443;  
}  
}" > /etc/nginx/sites-enabled/default  

service nginx start  

Скрипт продления: сохранить в /opt/le-renew.sh, задать в crontab: 30 12 2 * * /opt/le-renew.sh  

#!/bin/sh  
NAME="my.fqdn.com"  

service nginx stop  
echo y | ./certbot-auto renew --standalone --standalone-supported-challenges http-01  
service nginx start  

service unifi stop  

echo aircontrolenterprise | openssl pkcs12 -export -inkey /etc/letsencrypt/live/$NAME/privkey.pem -in /etc/letsencrypt/live/$NAME/cert.pem -name unifi -out /etc/letsencrypt/live/$NAME/keys.p12 -password stdin  
echo y | keytool -importkeystore -srckeystore /etc/letsencrypt/live/$NAME/keys.p12 -srcstoretype pkcs12 -destkeystore /usr/lib/unifi/data/keystore -storepass aircontrolenterprise -srcstorepass aircontrolenterprise  

service unifi start  

Комментарии и предложения приветствуются!
 
Спасибо за руководство. Я попробовал ваш скрипт, и пока всё работает, я могу зайти на контроллер по адресу «unifi.mydomain.de». Но каждый раз, когда пытаюсь войти в контроллер или сделать какие-то изменения, уже будучи залогиненным, и при этом использую «unifi.mydomain.de» без указания номера порта, выходит сообщение об ошибке. Не можете подсказать, с чем это может быть связано?
 
Если вы хотите установить репозиторий Ubiquiti apt, смотрите информацию ниже https://community.ui.com/questions/4f622aab-9000-433a-b2ce-d159ae9f275f
 
Отличная работа 😀
 
Я сознательно не пошёл этим путём. Репозитории Ubiquiti порой разочаровывают. Мне всегда казалось, что лучший способ установить контроллер unifi — использовать dpkg -i. Позже выложу изменённую версию (обновлю уже существующий пост), так или иначе стоит затронуть новый релиз.
 
Вот базовый скрипт iptables, чтобы ответить на комментарий FreakySquirrels. По-прежнему разрешает глобальный входящий трафик на порт 8443 для совместимости с автоматически генерируемыми системными письмами. Если использовать его вместе с конфигурацией LetsEncrypt выше, предупреждения безопасности останутся незаметными. Если в ipUNIFI не заданы исходные IP вашего WAN, то ваши точки доступа могут не настроиться правильно и гостевой портал не заработает.

#!/bin/bash  
# СКРИПТ FIREWALL IPTABLES ДЛЯ BASH  
# ДЛЯ ОБЛАЧНЫХ КОНТРОЛЛЕРОВ UNIFI  
# ОЧЕНЬ ПАРАНОЙДНАЯ КОНФИГУРАЦИЯ  
# 20/07/2016  
# Рекомендую изучить IPTABLES, чтобы понимать, как применять эти правила в своей среде.  

# IP-адрес контроллера UNIFI  
SERVER[0]="1.2.3.4"

# РАЗРЕШИТЬ ГЛОБАЛЬНЫЙ ВХОДЯЩИЙ TCP ТРАФИК  
inTCP[0]=80
inTCP[2]=443
inTCP[3]=8443

# РАЗРЕШЕННЫЕ ПОРТЫ ДЛЯ СЕТИ UNIFI  
ufTCP[0]=8080
ufTCP[1]=8443
ufTCP[2]=8880
ufTCP[3]=8843

# Клиенты с полным доступом. Обычно — ваши доверенные домашние/рабочие подключения  
CLIENT[0]="100.1.1.1" # Работа
CLIENT[1]="120.1.1.1" # Дом
CLIENT[2]="121.1.1.1" # Другой сервер

# IP-АДРЕС SOURCE UNIFI (если за NAT — IP от провайдера)  
# Добавляйте сколько нужно, сохраняя стандартный формат массива  
ipUNIFI[0]="1.2.3.4" # сеть с UniFi AP
ipUNIFI[1]="2.2.3.4" # сеть с UniFi AP
ipUNIFI[2]="3.2.3.4" # сеть с UniFi AP

iptables -F  
iptables -X  
iptables -P INPUT DROP  
iptables -P OUTPUT DROP  
iptables -P FORWARD DROP  

iptables -A INPUT -i lo -j ACCEPT  
iptables -A OUTPUT -o lo -j ACCEPT

for s in "${SERVER[@]}"
do  
 : # выполняем нужные действия с $s  
 for c in "${CLIENT[@]}"
 do  
   :  
   iptables -A INPUT -s $c -d $s -j ACCEPT  
   iptables -A OUTPUT -d $c -s $s -j ACCEPT  
 done  
done

# ВЫХОДЯЩИЕ ЗАПРОСЫ  
iptables -A OUTPUT -p udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT # Разрешаем запросы DNS  
iptables -A INPUT -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT # Разрешаем ответы DNS

echo "Входящие TCP-сервисы"  
for s in "${SERVER[@]}"
do  
 :  
 for u in "${ipUNIFI[@]}"
 do  
   :  
   echo "Добавляем порт для UniFi LAN $u"  
   for t in "${inTCP[@]}"
   do  
     :  
     echo "Добавляем $t/TCP в список входящих на фаервол"  
     iptables -A OUTPUT -p TCP -s $s -d $u --sport $t --dport 513:65535 -m state --state ESTABLISHED -j ACCEPT  
     iptables -A OUTPUT -p TCP -d $u -s $s --sport 513:65535 --dport $t -m state --state NEW,ESTABLISHED -j ACCEPT  
     iptables -A INPUT -p TCP -s $u -d $s --sport 513:65535 --dport $t -m state --state NEW,ESTABLISHED -j ACCEPT  
     iptables -A INPUT -p TCP -d $s -s $u --sport $t --dport 513:65535 -m state --state ESTABLISHED -j ACCEPT  
   done  
 done  
done

echo "Входящие глобальные TCP-сервисы"  
for s in "${SERVER[@]}"
do  
 :  
 for t in "${inTCP[@]}"
 do  
   :  
   echo "Добавляем $t/TCP в глобальный входящий фаервол"  
   iptables -A OUTPUT -p TCP -s $s -d 0/0 --sport $t --dport 513:65535 -m state --state ESTABLISHED -j ACCEPT  
   iptables -A OUTPUT -p TCP -d 0/0 -s $s --sport 513:65535 --dport $t -m state --state NEW,ESTABLISHED -j ACCEPT  
   iptables -A INPUT -p TCP -s 0/0 -d $s --sport 513:65535 --dport $t -m state --state NEW,ESTABLISHED -j ACCEPT  
   iptables -A INPUT -p TCP -d $s -s 0/0 --sport $t --dport 513:65535 -m state --state ESTABLISHED -j ACCEPT  
 done  
done

echo "SendMail"  
iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT  
iptables -A OUTPUT -p tcp --dport 587 -j ACCEPT

echo "Разрешаем связанные соединения"  
iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

echo "Блокируем всё остальное"  
iptables -A INPUT -j DROP  
iptables -A OUTPUT -j DROP
 
Не забудьте настроить свой фаервол, если используете это в облаке! https://help.ubnt.com/hc/en-us/articles/218506997-UniFi-Ports-Used
 
Если это действительно работает так, как описано (сейчас тестирую), то это просто чудо и заслуживает куда большего внимания. *ОБНОВЛЕНИЕ* Да, эта штука — кайф. Развернуть droplet на DigitalOcean для инстанса Unifi оказалось делом пары секунд. Буквально.

Вопрос: не мог бы ты обновить скрипт, чтобы он добавлял репозиторий и использовал apt для установки и обновления Unifi? Так скрипт будет автоматически подстраиваться под новые версии, и не придется его менять каждый раз, когда в UBNT выпускают обновления.
 
Там просто пишет «Произошла ошибка», ничего конкретного. http://imgur.com/a/3Z0qm Я уже пробовал репозиторий apt и даже Ubuntu 14.04, но результат тот же. Однако я сделал интересное открытие. Видимо, всё нормально работает в IE, Edge и Firefox, но если использовать Chrome или Vivaldi, появляются сообщения об ошибках. Какой браузер используешь ты? С уважением, Даниэль
 
У меня не получается войти в систему. Кто-нибудь может подсказать, в каком направлении копать? Использую Ubuntu 16.04 и nginx, Unifi 5.2.29.

server {
   server_name ubiquiti.mycontroller.com;
   access_log /var/log/nginx/ubiquiti.mycontroller.com/access.log.gz combined gzip flush=30m;
   listen 80 default_server;
   listen [::]:80 default_server;
   listen 443 ssl; # managed by Certbot
   ssl_certificate /etc/letsencrypt/live/ubiquiti.mycontroller.com/fullchain.pem; # managed by Certbot
   ssl_certificate_key /etc/letsencrypt/live/ubiquiti.mycontroller.com/privkey.pem; # managed by Certbot
   include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
   ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

   if ($scheme != "https") {
       return 301 https://$host$request_uri;
   } # managed by Certbot

   add_header Strict-Transport-Security max-age=31536000;
   add_header X-Frame-Options DENY;

   error_log /var/log/unifi/nginx.log;
   proxy_cache off;
   proxy_store off;

   location / {
       proxy_set_header Referer "";
       proxy_pass https://localhost:8443;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
       proxy_set_header Host $host;
       proxy_http_version 1.1;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "upgrade";
   }
}
 
# find / -name unificomes to mind
 
Я думал сделать так, но подумал, что если человек вручную установил UniFi (через dpkg -i /path/to/unifi.deb или из tarball), у него могут возникнуть проблемы или нежелательное обновление — а так это предотвращает ложные срабатывания. Поверьте, я видел странные установки UniFi... Можно, наверное, подредактировать скрипт, чтобы он проверял наличие mongodb и существование базы данных UniFi, и основывать решение на этом — так будет исключено нежелательное обновление.
 
Небольшое обновление по использованию PPA для установки unifi. Вместо того чтобы закомментировать четыре строки, можно проверить, добавлен ли уже PPA (что будет означать, что скрипт уже запускался):

UBNT_PPA="deb http://www.ubnt.com/downloads/unifi/debian stable ubiquiti"

if ! grep -q "$UBNT_PPA" /etc/apt/sources.list /etc/apt/sources.list.d/*; then
 echo $UBNT_PPA > /etc/apt/sources.list.d/unifi.list
 echo y | apt-key adv --keyserver keyserver.ubuntu.com --recv C0A52C50
 apt update
 echo y | apt install unifi
fi
 
Я немного обновил скрипт для Ubuntu 16.04 (echo тоже иногда бывает ненадежен), чтобы использовать официальный пакет letsencrypt и установить последнюю версию контроллера UniFi — так вы сможете быстро и без заморочек сделать всё с актуальной установкой:

#!/bin/sh  
# Источник скрипта: https://community.ui.com/questions/021606af-0c9c-4bf1-8729-8ac8ef0df889

# Отредактируйте эти две строки:
NAME="my.fqdn.com"  
EMAIL="my@email.add"

# Закомментируйте следующие 4 строки, если UniFi уже установлен.  
# Важно — для UniFi нужно минимум 20 ГБ свободного места на диске.  
echo "deb http://www.ubnt.com/downloads/unifi/debian unifi5 ubiquiti" > /etc/apt/sources.list.d/unifi.list  
echo y | apt-key adv --keyserver keyserver.ubuntu.com --recv C0A52C50  
apt update  
echo y | apt install unifi

# Запуск скрипта...  
apt update  
echo y | apt upgrade  
apt -f install  
echo y | apt install nginx letsencrypt

service nginx stop  
echo y | letsencrypt certonly -d $NAME --standalone --standalone-supported-challenges http-01 --email $EMAIL  
service nginx start

service unifi stop  
echo aircontrolenterprise | openssl pkcs12 -export -inkey /etc/letsencrypt/live/$NAME/privkey.pem -in /etc/letsencrypt/live/$NAME/cert.pem -name unifi -out /etc/letsencrypt/live/$NAME/keys.p12 -password stdin  
echo y | keytool -importkeystore -srckeystore /etc/letsencrypt/live/$NAME/keys.p12 -srcstoretype pkcs12 -destkeystore /usr/lib/unifi/data/keystore -storepass aircontrolenterprise -srcstorepass aircontrolenterprise  
service unifi start  
openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096

# NGINX ПРОКСИ  
service nginx stop  
printf "server_tokens off;\n\
add_header X-Frame-Options SAMEORIGIN;\n\
add_header X-XSS-Protection \"1; mode=block\";\n\
server {\n\
listen 80;\n\
server_name $NAME;\n\
return 301 https://$NAME\$request_uri;\n\
}\n\
server {\n\
listen 443 ssl default_server http2;\n\
server_name $NAME;\n\
ssl_dhparam /etc/ssl/certs/dhparam.pem;\n\
ssl_certificate /etc/letsencrypt/live/$NAME/fullchain.pem;\n\
ssl_certificate_key /etc/letsencrypt/live/$NAME/privkey.pem;\n\
ssl_session_cache   shared:SSL:10m;\n\
ssl_session_timeout 10m;\n\
keepalive_timeout   300;\n\
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;\n\
ssl_prefer_server_ciphers on;\n\
ssl_stapling on;\n\
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA;\n\
add_header Strict-Transport-Security max-age=31536000;\n\
add_header X-Frame-Options DENY;\n\
error_log /var/log/unifi/nginx.log;\n\
proxy_cache off;\n\
proxy_store off;\n\
location / {\n\
proxy_set_header Referer \"\";\n\
proxy_pass https://localhost:8443;\n\
proxy_set_header Host \$host;\n\
proxy_set_header X-Real-IP \$remote_addr;\n\
proxy_set_header X-Forward-For \$proxy_add_x_forwarded_for;\n\
proxy_http_version 1.1;\n\
proxy_set_header Upgrade \$http_upgrade;\n\
proxy_set_header Connection \"upgrade\";\n\
}\n\
}\n" > /etc/nginx/sites-enabled/default  
service nginx start

У меня есть инструкция по установке в блоге Вот здесь. Спасибо автору исходного вопроса, с которого я и начал! Раньше у меня была инструкция на ручную, но у многих возникали с этим проблемы.
 
Отличный пост! Однако с версией unifi 5.2.9 у меня не получается заставить скрипт работать как есть. Я могу попасть на страницу логина, зайдя на unifi.mydomain.com. Но когда пытаюсь войти (с правильными данными), похоже, что соединение с бэкендом установить не удаётся. В итоге получаю ошибку: «Login error There was an error making that request. Please try again later.» Без прокси вход работает нормально.

После небольшого гугления наткнулся на этот пост: https://community.ui.com/questions/3decc2c9-1c7b-4711-a842-59d90dc3be7e#comment/25742a0a-e544-4c2e-990d-5f47bbcb30b2, где в прокси добавляют дополнительные заголовки. Я смог зайти, добавив в директиву «location / {» следующие строки:

proxy_set_header Host $host;  
proxy_set_header X-Real-IP $remote_addr;  
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;

Это значит, что надо поменять директиву location в скрипте выше с:

location / {  
proxy_set_header Referer "";  
proxy_pass https://localhost:8443;  
}

на

location / {  
proxy_set_header Referer "";  
proxy_pass https://localhost:8443;  
proxy_set_header X-Real-IP $remote_addr;  
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;  
proxy_set_header Host $host;  
}

Так я решил проблему с входом (после этих изменений залогинился без проблем). Но после успешного входа соединение websocket всё равно падает.

Чтобы это исправить, нужно тоже настроить nginx для проксирования websocket (источник: https://chrislea.com/2013/02/23/proxying-websockets-with-nginx/). Тогда директива location при поддержке websocket будет выглядеть так:

location / {  
proxy_set_header Referer "";  
proxy_pass https://localhost:8443;  
proxy_set_header X-Real-IP $remote_addr;  
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;  
proxy_set_header Host $host;  
proxy_http_version 1.1;  
proxy_set_header Upgrade $http_upgrade;  
proxy_set_header Connection "upgrade";  
}

Итоговый скрипт установки будет выглядеть так:

#!/bin/sh  
NAME="my.fqdn.com"  
EMAIL="my@email.add"  
apt-get update  
echo y | apt-get upgrade  
cd /opt  
rm unifi_sysvinit_all.deb  
rm certbot-auto  
wget http://dl.ubnt.com/unifi/5.0.7/unifi_sysvinit_all.deb  
wget https://dl.eff.org/certbot-auto  
chmod a+x certbot-auto  
dpkg -i unifi_sysvinit_all.deb  
apt-get -f install  
echo y | apt-get install nginx

service nginx stop  
echo y | ./certbot-auto certonly -d $NAME --standalone --standalone-supported-challenges http-01 --email $EMAIL  
service nginx start

service unifi stop  
echo aircontrolenterprise | openssl pkcs12 -export -inkey /etc/letsencrypt/live/$NAME/privkey.pem -in /etc/letsencrypt/live/$NAME/cert.pem -name unifi -out /etc/letsencrypt/live/$NAME/keys.p12 -password stdin  
echo y | keytool -importkeystore -srckeystore /etc/letsencrypt/live/$NAME/keys.p12 -srcstoretype pkcs12 -destkeystore /usr/lib/unifi/data/keystore -storepass aircontrolenterprise -srcstorepass aircontrolenterprise  
service unifi start  
openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096

# NGINX PROXY  
service nginx stop  
echo "server {  
listen 80;  
server_name $NAME;  
return 301 https://$NAME$request_uri;  
}  
server {  
listen 443 ssl default_server;  
server_name $NAME;  
ssl_dhparam /etc/ssl/certs/dhparam.pem;  
ssl_certificate /etc/letsencrypt/live/$NAME/fullchain.pem;  
ssl_certificate_key /etc/letsencrypt/live/$NAME/privkey.pem;  
ssl_session_cache shared:SSL:10m;  
ssl_session_timeout 10m;  
keepalive_timeout 300;  
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;  
ssl_prefer_server_ciphers on;  
ssl_stapling on;  
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA;  
add_header Strict-Transport-Security max-age=31536000;  
add_header X-Frame-Options DENY;  
error_log /var/log/unifi/nginx.log;  
proxy_cache off;  
proxy_store off;  
location / {  
 proxy_set_header Referer "";  
 proxy_pass https://localhost:8443;  
 proxy_set_header X-Real-IP $remote_addr;  
 proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;  
 proxy_set_header Host $host;  
 proxy_http_version 1.1;  
 proxy_set_header Upgrade $http_upgrade;  
 proxy_set_header Connection "upgrade";  
}  
}" > /etc/nginx/sites-enabled/default  
service nginx start  

Отредактировано: исправлены опечатки и добавлено решение для ошибки соединения websocket.
 
Привет! Я бы сделал так:  
cd /opt  
rm unifi_sysvinit_all.deb  
wget http://dl.ubnt.com/unifi/current release/unifi_sysvinit_all.deb  
dpkg -i unifi_sysvinit_all.deb  

Потом подожди примерно 10–20 минут перед входом в систему. Обычно при запуске после обновления всегда происходит апгрейд базы данных, и это может занять время в зависимости от её размера.  
Ещё можно заглянуть в /usr/local/unifi/logs (точный путь, честно, не помню), там в файле server.log можно посмотреть, на чём сейчас стартап сервера остановился.
 
@scobber

Как выглядит процедура обновления для этого? Я пытаюсь обновить контроллер, и каким бы способом ни пользовался — apt или вручную wget и dpkg — всё равно всё ломается...
 
Хороший скрипт, особенно с частью про SSL-сертификат. Я бы предложил добавить репозитории вместо использования wget, так в будущем при выполнении «apt update» контроллер (и прошивка точек доступа) тоже будут обновляться 😀
 
Привет! Какое сообщение об ошибке у тебя появляется? Можешь, пожалуйста, сделать скриншот? Возможно, стоит попробовать версию из apt-репозитория — она чуть новее. Спасибо! Скотт
Страницы: 1
Читают тему (гостей: 1)