Подготовка к развертыванию (DEB-based)#
Перед развертыванием приложения необходимо подготовить к работе систему и сгенерировать все конфигурационные файлы.
Если вы используете одну из DEB-based систем, таких как Debian или Ubuntu, следуйте инструкции ниже.
Необходимое программное обеспечение#
Nginx#
Nginx является рекомендуемым веб-сервером для обработки входящих подключений. Для работы приложения необходимо открыть 443 порт в firewall и установить веб-сертификат, если он еще не установлен.
Установка Nginx выполняется следующими командами:
Подробная информация доступна на официальном сайте.
Если вы планируете использовать промежуточный proxy-сервер перед сервером Compass, ознакомьтесь с разделом конфигурация прокси для NGINX.
Docker#
Docker является средой, необходимой для работы приложения. Минимальная поддерживаемая версия Docker Engine 20.10. Варианты установки описаны в документации на официальном сайте.
Docker должен функционировать в Swarm-режиме (возможно развертывание приложения на одной ноде, являющейся одновременно рабочей и управляющей). Команда перевода Docker в Swarm-режим на управляющей ноде:
Python 3#
Python необходим для работы скриптов инсталлятора и генератора конфигурационных файлов на управляющих нодах. Как правило, в ОС Ubuntu Python 3 поставляется вместе с дистрибутивом. Дополнительно потребуется установить пакетный менеджер Pip:
Помимо самого Python также потребуются следующие пакеты:
pyyaml
pyopenssl
docker
mysql_connector_python
python-dotenv
psutil
Установка необходимых пакетов:
Настройка ssl-сертификата#
Необходимо заранее выпустить ssl-сертификат для домена, на котором будет выполняться развертывание решения.
Внимание
При использовании сертификатов без доверенной подписи работа клиентских приложений невозможна!
Создайте директорию /etc/nginx/ssl/ и разместите в ней файлы сертификата.
Внимание
Файл должен содержать полную цепочку сертификатов!
Настройки сетевого экрана#
Для корректной работы приложению требуется возможность получать входящие запросы от клиентских приложений и отправлять запросы на серверы Compass. На серверы Compass отправляется следующая информация:
Push-уведомления мобильных приложений.
Данные, позволяющие идентифицировать пользователя, для взаимодействия с оплатами и службой поддержки on-premise решения.
Примечание
Все команды, описанные в этом параграфе, подразумевают использование сетевого экрана UFW. Если вы используете другой
сетевой экран, адаптируйте команды в соответствии с документацией вашего сетевого экрана.
Внимание
Команды ниже актуальны для настроек по умолчанию. Часть настроек может быть изменена во время развёртывания приложения, что повлечёт за собой необходимость использовать другие значения портов в командах.
Веб-сервер#
Приложение использует стандартный https порт 443. Данный порт должен быть открыт для функционирования приложения.
Если порт будет недоступен, клиентские приложения не смогут подключиться к серверу. Порт должен быть открыт
на том сервере, к которому привязан домен, где будет развёрнуто приложение.
sudo ufw allow 443/tcp;
Внимание
Данный порт нельзя изменить, использование порта 443 является обязательным для функционирования приложения.
Внутренние разрешения и ограничения#
Поскольку приложение доставляется в контейнеризированном виде, для корректной работы необходимо разрешить среде Docker открыть порты в host-режиме. Данные порты используются базами данных и не должны быть доступны извне в целях безопасности.
sudo ufw allow in on docker_gwbridge to any port 35150:35165 proto tcp;
sudo ufw allow in on docker_gwbridge to any port 31101 proto tcp;
sudo ufw allow in on docker_gwbridge to any port 31102 proto tcp;
sudo ufw deny 31101;
sudo ufw deny 31102;
sudo ufw deny 35150:35165/tcp;
Аудио- и видеозвонки#
Для функционирования звонков необходимо открыть порт для udp трафика. Если данный порт не будет открыт, функционал аудио- и видеозвонков будет недоступен.
# Порт для передачи мультимедиа-данных конференции в приложении.
# Порт будет выделен под RTP соединения участников в конференции.
sudo ufw allow 10000/udp;
Если сервер с Compass развернут за NAT, выполните следующие действия:
Убедитесь, что порт 10000 UDP открыт на firewall, через который идет трафик. Если порт закрыт, откройте его.
В настройках DNAT настройте проброс порта 10000 UDP с внешнего IP-адреса на порт 10000 UDP сервера Compass во внутренней сети.
Ограничение исходящего трафика#
Если вы планируете ограничить исходящий трафик от приложения, необходимо добавить сервер
45.92.177.63 (license.getcompass.ru и push-onpremise.getcompass.ru) в белый список. Через этот сервер происходит
рассылка push-уведомлений и доставляются идентификационные данные пользователей для взаимодействия
с лицензиями и службой поддержки on-premise решения. Используется порт 443.
sudo ufw allow out to 45.92.177.63 port 443
Ограничение входящего трафика#
Если вы планируете ограничить входящий трафик на сервер приложения, необходимо разрешить входящий трафик
с сервера 45.92.177.63. Это требуется для активации сервера с использованием подтверждающего запроса со стороны
сервера лицензий Compass. Входящий запрос будет поступать через порт 443. После активации сервера данное правило
можно удалить из сетевого экрана.
sudo ufw allow from 45.92.177.63 port 443
Внимание
При ограничении входящего трафика пользователи смогут получить доступ к приложению только при условии нахождения в доверенной сети.
Ограничения для TURN-сервера#
Примечание
TURN-сервер используется для маршрутизации трафика протокола WebRTC между клиентскими приложениями. Вы можете настроить собственный TURN-сервер или воспользоваться сервером по умолчанию, поставляемым Compass.
Если вы не планируете использовать собственный TURN-сервер, то нужно добавить в сетевой экран разрешения для
трафика TURN-сервера по умолчанию (поставляется Compass). Сетевой адрес TURN-сервера по умолчанию 77.223.115.66,
используемые порты 443 и 10000.
sudo ufw allow out to 77.223.115.66 port 443;
sudo ufw allow from 77.223.115.66 port 443;
sudo ufw allow from 77.223.115.66 port 10000;
Настройка системных лимитов#
Для корректной работы компонентов системы в условиях высокой нагрузки рекомендуется увеличить лимиты на количество открытых файлов и процессов (потоков). Ниже приведены рекомендуемые параметры, которые необходимо задать в системе, Docker и сервисах, таких как Nginx.
Системные лимиты#
Проверка текущих лимитов systemd:
Если ваши текущие лимиты меньше рекомендуемых значений, создайте каталог для настройки systemd командой:
Создайте файл конфигурации с лимитами:
Добавьте в файл следующее содержимое:
Перезапустите менеджер systemd для обновления системных настроек:
Проверить успешно ли применены новые лимиты можно командой:
Проверка системного лимита потоков:
Если ваши текущие лимиты меньше рекомендуемых значений, создайте или отредактируйте файл конфигурации лимита потоков:
Добавьте в файл следующую строку:
Примените системные параметры:
Проверить успешно ли применены новые лимиты можно командой:
Docker лимиты#
Проверить установленные лимиты процесса службы Docker можно командой:
Если ваши текущие лимиты меньше рекомендуемых значений, создайте каталог для конфигурации командой:
Создайте файл с лимитами systemd для Docker:
Добавьте в файл следующее содержимое:
Примечание
Значение infinity означает отсутствие ограничений для docker systemd override.
Обновите конфигурацию systemd:
Перезапустите службу Docker для применения новых лимитов командой:
Проверить успешно ли применены новые лимиты для демона Docker можно командой:
Установите лимиты для Docker контейнеров. Создайте или отредактируйте файл конфигурации:
Добавьте в файл следующее содержимое:
Перезапустите службу Docker для применения новых лимитов командой:
Nginx лимиты#
Проверить установленные лимиты для служб Nginx можно командой:
Если ваши текущие лимиты меньше рекомендуемых значений, создайте каталог с помощью команды:
Создайте файл с лимитами для Nginx:
Добавьте в файл следующее содержимое:
Обновите конфигурацию systemd:
Перезапустите службу Nginx:
Проверить были ли применены новые лимиты можно командой:
Напишите нам в пространстве поддержки On-premise, Telegram или на почту support@getcompass.ru, чтобы получить индивидуальную демонстрацию функционала и помощь по вопросам интеграции мессенджера в вашей компании.