Каталог Поиск 0 Сравнить 0 Закладки 0 Корзина Войти
Каталог
105082, Москва, ул. Фридриха Энгельса, 75с21, БЦ Бауманский ИТКОЛ
Пн - Пт: с 09-00 до 18-00 Сб: с 10-00 до 18-00 Вс: выходной
Страницы: 1 2 След.
RSS
Одноразовый скрипт установки Unifi Controller для Ubuntu 16.04 с Let's Encrypt на NGINX, UniFi Network
 
Это моя версия одноразового установщика для облачного провайдера (в моём случае — Digital Ocean). Он создан на плечах гигантов, которым я благодарен в конце. Этот скрипт рассчитан на чистый, только что созданный сервер. Как и большинство одноразовых решений, он подходит для простых настроек. Если вы планируете что-то более сложное, лучше нанять специалиста. Гарантий я не даю, все риски на вас.

Я тестировал это на дроплете с 1 ГБ памяти — кажется, это минимум, чтобы избежать проблем с памятью, которые могут помешать импортам/экспортам.

Скрипт доступен здесь: https://gist.github.com/hisnameisjimmy/56f9414076ca39a79bfa07eefa89759e  
Я сделал это gist, чтобы в случае обновлений или предложений можно было легко их внести и поддерживать скрипт в живом состоянии. Кроме того, я подробно комментировал скрипт, чтобы люди могли учиться и понимать, почему я принимал те или иные решения. Внизу вы найдете ресурсы, которые я использовал и благодарю — они подробно обсуждались.

Скрипт выполняет следующее:  
1) Открывает нужные порты для Unifi, SSH, веб/SSL трафика через iptables  
2) Делает ПО Unifi/Certbot доступным как пакет  
3) Устанавливает haveged для предотвращения нехватки энтропии (см. ссылку на jeff-ferguson.com ниже)  
4) Устанавливает fail2ban как базовую защиту  
5) Запрашивает установку автоматических обновлений безопасности для долгосрочной безопасности  
6) Использует Certbot для запроса сертификата Lets Encrypt и его установки  
7) Создаёт конфигурацию прокси для NGINX  
8) Создаёт cron для автоматического обновления сертификатов Lets Encrypt (сертификаты истекают каждые 3 месяца)  

После завершения рекомендую перейти к настройке оборудования на третьем уровне (Layer 3 adoption) — после первичной настройки контроллера на сайте.

Это можно сделать достаточно просто следующим образом (в примере у нас один USG, один свитч и одна точка доступа):  
1) Подключите точку доступа к свитчу, а свитч — к USG  
2) Подключите ноутбук к свитчу  
3) Скачайте контроллер для своей операционной системы, но откройте только приложение «Discover»  
4) В «Discover» должно появиться ваше оборудование (если это не новое устройство, скорее всего, потребуется сброс настроек)  
5) Для каждого устройства нажмите «Manage» и установите URL для информирования: http://unifi.fqdn.com:8080/inform (это ваш адрес, указывающий на установку контроллера в облаке)  
6) После этого вы сможете перейти к контроллеру на сервере и «принять» каждое устройство (если не видите их, проверьте в настройках, правильно ли указан hostname/IP контроллера)  

Возможно, есть более надёжные, более модульные или более продвинутые способы сделать это. Но этот вариант для тех, у кого простая конфигурация и кто хочет быстро запустить облачный контроллер с приемлемым уровнем безопасности.

Кстати, в связи с упоминанием jeff-ferguson.com, он включает swap-файл в своей настройке. Я его убрал, так как Digital Ocean специально предупреждает против использования swap, потому что это может привести к сбоям SSD-дисков. Об этом написано здесь: https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-16-04

Спасибо следующим ресурсам:  
https://community.ui.com/questions/4f622aab-9000-433a-b2ce-d159ae9f275f  
https://community.ui.com/questions/021606af-0c9c-4bf1-8729-8ac8ef0df889#comment/dddca812-f302-45d6-9911-afad054df15c  
http://www.jeff-ferguson.com/2016/11/21/unifi-5-2-9-installation-script-for-digital-ocean/  
https://murfy.nz/2017/01/ubiquiti-unifi-secure-installation/
 
Кто-нибудь ещё использует этот скрипт с контроллером v5.9.22? Я уже дважды переделывал свои iptables, но почему-то порт stun всё равно блокируется по какой-то непонятной причине. Версия v5.8.28 на другом (но с такой же конфигурацией, таким же размером droplet и т.д.) работает без проблем. Просто интересно, встречался ли кто-то с такой проблемой и/или нашёл способ её решить. Спасибо заранее!
 
Надеюсь, этот скрипт всё ещё работает с обновлениями вплоть до стабильной версии 5.8.24 — собираюсь запустить ещё два сайта и предполагаю, что он работает (ручное обновление на двух оригинальных установках Ubuntu), но с тех пор не делал чистую установку. Если столкнусь с какими-то проблемами, сообщу здесь, потому что этот скрипт раньше очень выручал. Есть кто-то, кто проверял этот скрипт с последними стабильными сборками 5.8? Ещё раз спасибо!
 
Отлично, я добавил это правило iptables. Также обновил команды установки в соответствии с новыми шагами установки: https://help.ubnt.com/hc/en-us/articles/220066768-UniFi-How-to-Install-Update-via-APT-on-Debian-or-Ubuntu Выглядит отлично!
 
Стоит обратить внимание на предупреждение в разделе установки SSL:  
Предупреждение: хранилище ключей JKS использует проприетарный формат. Рекомендуется перейти на PKCS12 — это стандартный в отрасли формат, используя команду "keytool -importkeystore -srckeystore /usr/lib/unifi/data/keystore -destkeystore /usr/lib/unifi/data/keystore -deststoretype pkcs12".
 
На самом деле, возможно, это связано с версией Java на вашей машине (самая новая версия open JDK для общего релиза в Ubuntu — 8u151, и, похоже, в ней есть баги): https://community.ui.com/questions/5384984d-5fc0-458b-9417-d667d92e52d9

Больше информации: https://community.ui.com/questions/161ce2b8-885d-4f4d-a4e3-456e25997293

Вы можете проверить версию Java, введя в командной строке: java -version

По-видимому, исправление есть в версии 8u162, согласно

@UBNT-Jacek

— это не общий релиз, так что просто обновить OpenJDK 8 через командную строку не получится. Похоже, можно попробовать понизить версию или просто дождаться, пока 162 станет общедоступной. Можно также установить её вручную, но я этого не пробовал, поэтому не могу советовать (хотя если у вас свежеустановленная система, особо и потерять нечего).

Вот несколько инструкций по установке конкретной версии: https://www.lifewire.com/install-java-on-ubuntu-4125508

Вот неплохой скрипт для установки после того, как вы скачаете tar-файл на сервер (я не пробовал, используйте на свой страх и риск): https://github.com/AdamScheller/UbuntuJavaInstaller
 
Интересно, какая у тебя версия Ubuntu? Похоже, что это может быть из-за повреждённой zlib: https://community.ui.com/questions/5384984d-5fc0-458b-9417-d667d92e52d9
 
Итак, обновление. После 10 переустановок, обновлений и прочего я решил напрямую проверить контроллер через порт 8443 (без nginx) и обнаружил, что предпросмотр там действительно работает. Однако при доступе к контроллеру через фронтенд nginx предпросмотр не появляется.
 
Предварительный просмотр гостевого портала? Если да, та же проблема — и я сейчас не на месте, чтобы проверить, правильно ли он отображается после применения моих стандартных настроек пользовательской точки доступа, которые, кажется, сохранились и активировались корректно... Обновлю информацию в понедельник или вторник.
 
Хороший вопрос, не уверен, так как никогда не пользовался порталом. С какими проблемами сталкиваешься? Можешь подробнее описать, и, возможно, я смогу помочь с отладкой?
 
Привет, спасибо за скрипт. Он сработал, но, похоже, предпросмотр портала не работает. Можешь проверить у себя или это только у меня такая проблема?
 
Что происходит, когда вы выполняете configtest: $ service nginx configtest
 
При попытке запустить NGINX возникает следующая ошибка:  
Job for nginx.service failed because the control process exited with error code. Смотрите «systemctl status nginx.service» и «journalctl -xe» для подробностей.  
root@Unifi:/home/deags#  
Feb 28 12:52:14 Unifi systemd[1]: Starting A high performance web server and a reverse proxy server...
Feb 28 12:52:14 Unifi nginx[63826]: nginx: [emerg] BIO_new_file("/etc/letsencrypt/live/deags.net/fullchain.pem") failed (SSL: error:02001002:system library:fope
Feb 28 12:52:14 Unifi nginx[63826]: nginx: configuration file /etc/nginx/nginx.conf test failed
Feb 28 12:52:14 Unifi systemd[1]: nginx.service: Control process exited, code=exited status=1
Feb 28 12:52:14 Unifi systemd[1]: Failed to start A high performance web server and a reverse proxy server.
Feb 28 12:52:14 Unifi systemd[1]: nginx.service: Unit entered failed state.
Feb 28 12:52:14 Unifi systemd[1]: nginx.service: Failed with result 'exit-code'.
 
Отлично! Я всё ещё сталкивался с проблемами STUN. В итоге добавил правило iptables, чтобы принимать UDP-трафик на этот порт. Вставь это в раздел iptables в твоём gist, и, думаю, всё заработает. iptables -A INPUT -p udp --dport 3478 -j ACCEPT

Дополнительные заметки: предупреждение о STUN меня реально раздражало. Решил заново сделать свой DO droplet и запустить обновлённый скрипт после того, как ты его опубликовал, но даже после этого проблемы с STUN остались. Тогда обновился до Stable Beta 5.7.20 — и вместе с правилом iptables для STUN всё стало работать идеально. Сейчас у меня никаких проблем с импортированными сайтами (и парами автономных AP, работающих как "сайты") нет.

Спасибо!!
 
Пожалуйста! Я только что тоже просмотрел gist и заметил, что люди оставили пару комментариев с проблемами. Сейчас я их исправил в последней версии, включая:

- незакрытую строку с кавычками  
- исправление параметра '--preferred-challenges' в cron вместо отдельной команды  
- установку jre-headless для тех, кто устанавливает вне DO  

Если у кого-то есть ещё предложения — присылайте.
 
Я только что нашёл это, запустил на DigitalOcean droplet (2 ГБ, 2 vCPU) — пока никаких проблем, кроме некоторых вопросов, связанных с STUN при миграции сайтов, но, скорее всего, скоро решу. Спасибо за отличный скрипт!
 
Файл весит 6 МБ.
 
Странно, интересно, почему так. Не мог бы ты попробовать перезапустить службу Unifi и посмотреть, поможет ли это? К тому же, если это просто резервная копия настроек, она должна быть довольно маленькой (и, значит, скорее всего, её можно обработать даже на Droplet с 512 МБ). Насколько большой этот файл?
 
512 МБ. Я увеличил размер своего дроплета до 1Г, но все равно получаю ту же ошибку.
 
Не должно. Сколько оперативной памяти у твоего дроплета?
Страницы: 1 2 След.
Читают тему (гостей: 1)