Подготовка к развертыванию#

Перед развертыванием приложения необходимо подготовить к работе систему и сгенерировать все конфигурационные файлы.

Необходимое программное обеспечение#

Nginx#

Nginx является рекомендуемым веб-сервером для обработки входящих подключений. Для работы приложения необходимо открыть 443 порт в firewall и установить веб-сертификат, если он еще не установлен.

Установка Nginx выполняется следующими командами:

sudo apt update && sudo apt install nginx;

Подробная информация доступна на официальном сайте.

Docker#

Docker является средой, необходимой для работы приложения. Минимальная поддерживаемая версия Docker Engine 20.10. Варианты установки описаны в документации на официальном сайте.

Docker должен функционировать в Swarm-режиме (возможно развертывание приложения на одной ноде, являющейся одновременно рабочей и управляющей). Команда перевода Docker в Swarm-режим на управляющей ноде:

sudo docker swarm init

Python 3#

Python необходим для работы скриптов инсталлятора и генератора конфигурационных файлов на управляющих нодах. Как правило, в ОС Ubuntu Python 3 поставляется вместе с дистрибутивом. Дополнительно потребуется установить пакетный менеджер Pip:

sudo apt-get update && sudo apt-get install python3-pip

Помимо самого Python также потребуются следующие пакеты:

  • pyyaml

  • pyopenssl

  • docker

  • mysql_connector_python

  • python-dotenv

  • psutil

Установка необходимых пакетов:

sudo pip3 install pyyaml==5.4.1 pyopenssl==21.0.0 docker==7.1.0 mysql_connector_python==8.2.0 python-dotenv==1.0.0 psutil==5.9.6

Настройка 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;

Аудио- и видеозвонки#

Для функционирования звонков необходимо открыть порт для tcp и udp трафика. Если данный порт не будет открыт, функционал аудио- и видеозвонков будет недоступен.

# Порт для передачи мультимедиа-данных конференции в приложении.
# Порт будет выделен под RTP соединения участников в конференции.
sudo ufw allow 10000/tcp;
sudo ufw allow 10000/udp;

Ограничение исходящего трафика#

Если вы планируете ограничить исходящий трафик от приложения, необходимо добавить сервер 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 433

Внимание

При ограничении входящего трафика пользователи смогут получить доступ к приложению только при условии нахождения в доверенной сети.

Ограничения для TURN-сервера.#

Примечание

TURN-сервер используется для маршрутизации трафика протокола WebRTC между клиентскими приложениями. Вы можете настроить собственный TURN-сервер или воспользоваться сервером по умолчанию, поставляемого Compass.

Если вы не планируете использовать собственный TURN-сервер, то нужно добавить в сетевой экран разрешения для трафика TURN-сервера по умолчанию (поставляется Compass). Сетевой адрес TURN-сервер по умолчанию 77.223.115.66, используемые порты 443 и 80.

sudo ufw allow out to 77.223.115.66 port 443;
sudo ufw allow out to 77.223.115.66 port 80;

sudo ufw allow from 77.223.115.66 port 433;

Напишите нам в пространстве поддержки On-premise, Telegram, WhatsApp или на почту support@getcompass.ru, чтобы получить индивидуальную демонстрацию функционала и помощь по вопросам интеграции мессенджера в вашей компании.