Установка сервера VoEx
Сервер VoEx (STUN/TURN сервер) предназначен для организации видео- и аудиосвязи между пользователями. Видео использует по умолчанию кодек VP8, битрейт 120kbps, 360kbps, 1080kbps на участника (в зависимости от выбранного качества на стороне клиента). Аудио использует по умолчанию кодек OPUS, битрейт 16 kbps на участника.
Установка сервера VoEx проходит в следующем порядке: необходимо выполнить предварительную настройку, затем установить сервер VoEx, установить корпоративный сервер и после — выполнить настройку VoEx.
Предварительная настройка
Для корректной работы сервера выполните предварительную настройку.
Примечание
Задержки при передаче голосовой информации в режиме TURN зависят от удаленности конечного пользователя от TURN-сервера. Для обеспечения качественной связи между сотрудниками компании в разных филиалах рекомендуется устанавливать сервер VoEx для каждого филиала.
Перед установкой сервера VoEx:
- Определите одинаково доступный для обращений из локальной сети предприятия и Интернета глобальный IP-адрес для сервера VoEx.
-
Проверьте правильность выставленных настроек сервера:
Направление Источник Приемник Порт Протокол Предназначение порта Входящий Admin IP STUN/TURN 22 TCP SSH Входящий CTS STUN/TURN 6379 TCP REDIS Входящий CTS MCU 8188 TCP Management conference Входящий Любой STUN/TURN 3478-
3479TCP/UDP TURN Входящий Любой STUN/TURN 5349-
5350TCP/UDP TURN TLS Входящий Любой MCU 20000-
40000UDP SRTP media Входящий Любой STUN/TURN 49152-
65535UDP SRTP media Исходящий STUN/TURN Любой Любой UDP SRTP media Исходящий STUN/TURN DNS 53 TCP/UDP DNS Исходящий STUN/TURN NTP 123 UDP NTP Исходящий STUN/TURN registry.public.express 443 TCP Docker registry -
Присвойте доменное имя серверу VoEx.
- Подготовьте цепочку сертификатов SSL в формате PEM и нешифрованный приватный ключ.
Установка
Следующий набор команд выполняется в командной строке сервера, на котором устанавливается VoEx.
Для установки сервера VoEx:
- Запустите командную строку.
-
Подключитесь к репозиторию разработчика в Docker для скачивания контейнеров.
Примечание
В качестве логина и пароля используются Login и Password, которые выдаются разработчиком.
docker login -u Login -p Password registry.public.express
-
Запустите операцию инсталляции.
Из репозитория на сервер скачается файл в формате YAML с контейнерами и инсталлятор.docker run --rm registry.public.express/dpl:cts-release dpl-install | bash
-
Создайте рабочий каталог проекта:
mkdir -p /opt/express-voice cd /opt/express-voice echo DPL_IMAGE_TAG=voex-release > dpl.env dpl --init
-
Установите цепочку сертификатов и ключа SSL для TURN и STUN серверов.
mkdir -p certs cp /somewhere/my-certificate-chain.crt certs/coturn.crt cp /somewhere/my-unencrypted-key.key certs/coturn.key
-
Создайте DH (Diffie Hellman) ключ.
openssl dhparam -out certs/dhparam.pem 2048
-
Откройте файл конфигурации для редактирования:
external_interface: eth0 permit_ip: [] turnserver_listening_ip: 2.3.4.5 turnserver_server_name: localhost
-
Внесите изменения в настройки по умолчанию и добавьте следующие параметры:
turnserver_external_ip: - 1.2.3.4 redis_options: command: - redis-server - --requirepass verystrongpassword redis_userdb: ip=localhost password=verystrongpassword dbname=1 port=6379 redis_statsdb: ip=localhost password=verystrongpassword dbname=1 port=6379
Название настройки Значение external_interface Наименование интерфейса с внешним IP-адресом
(IP-адрес должен быть "белым".)permit_ip Список разрешенных IP-адресов: - для одного CTS-сервера ─ его адрес: [1.2.3.4];
- если CTS и VoEx сервер находятся на одном сервере ─ пустой список: []
turnserver_listening_ip Внешний или внутренний IP-адрес интерфейса для TURN и STUN серверов turnserver_server_name Полное имя домена данного сервера, совпадающее с адресом, прописанным в сертификате turnserver_external_ip Внешний IP-адрес redis_options Включение аутентификации в voice redis, пароль verystrongpassword будет использоваться для доступа к базе данных, и он же указывается для сервера CTS в параметре voex_redis_connection_string. Замените пароль verystrongpassword при первой возможности nat_1_1_mapping
keep_private_hostПри использовании NAT 1:1 указывается внешний IP-адрес и включается режим сохранения приватного IP-адреса -
Добавьте следующие параметры и установите параметр "janus_nat_1_1_mapping" равным значению внешнего IP-адреса в сети Интернет, с которого производится переброс портов:
janus_enabled: true janus_keep_private_host: true janus_ws_ip: 172.17.0.1 janus_ws_acl: 172.18.0. janus_nat_1_1_mapping: 1.2.3.4
-
Выполните команду предварительного генерирования файлов конфигураций:
Для ограничения доступа к базе данных Redis по IP-адресам проверьте наличие параметра permit_ip в settings.yaml:dpl -p
.voex/express-voice/express-voice.service
-
Установите systemd unit в систему и запустите:
cp .voex/express-voice/express-voice.service /etc/systemd/system/ \ && systemctl daemon-reload \ && systemctl enable express-voice.service \ && systemctl start express-voice.service
-
Выполните команду:
dpl -d