Перейти к содержанию

Установка сервера VoEx

Сервер VoEx (STUN/TURN сервер) предназначен для организации видео- и аудиосвязи между пользователями. Видео использует по умолчанию кодек VP8, битрейт 120kbps, 360kbps, 1080kbps на участника (в зависимости от выбранного качества на стороне клиента). Аудио использует по умолчанию кодек OPUS, битрейт 16 kbps на участника.

Установка сервера VoEx проходит в следующем порядке: необходимо выполнить предварительную настройку, затем установить сервер VoEx, установить корпоративный сервер и после — выполнить настройку VoEx.

Предварительная настройка

Для корректной работы сервера выполните предварительную настройку.

Примечание

Задержки при передаче голосовой информации в режиме TURN зависят от удаленности конечного пользователя от TURN-сервера. Для обеспечения качественной связи между сотрудниками компании в разных филиалах рекомендуется устанавливать сервер VoEx для каждого филиала.

Перед установкой сервера VoEx:

  1. Определите одинаково доступный для обращений из локальной сети предприятия и Интернета глобальный IP-адрес для сервера VoEx.
  2. Проверьте правильность выставленных настроек сервера:

    Направление Источник Приемник Порт Протокол Предназначение порта
    Входящий Admin IP STUN/TURN 22 TCP SSH
    Входящий CTS STUN/TURN 6379 TCP REDIS
    Входящий CTS MCU 8188 TCP Management conference
    Входящий Любой STUN/TURN 3478-
    3479
    TCP/UDP TURN
    Входящий Любой MCU 20000-
    40000
    UDP 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
  3. Присвойте доменное имя серверу VoEx.

  4. Подготовьте цепочку сертификатов SSL в формате PEM и нешифрованный приватный ключ.

Установка

Следующий набор команд выполняется в командной строке сервера, на котором устанавливается VoEx.

Для установки сервера VoEx:

  1. Запустите командную строку.
  2. Подключитесь к репозиторию разработчика в Docker для скачивания контейнеров.

    Примечание

    В качестве логина и пароля используются Login и Password, которые выдаются разработчиком.

    docker login -u Login -p Password registry.public.express
    
  3. Скачайте контейнер-инсталлятор:

    docker run --rm registry.public.express/dpl:cts-release dpl-install | bash
    
    Из репозитория на сервер скачается файл в формате YAML с контейнерами и инсталлятор.

  4. Создайте рабочий каталог проекта:

    mkdir -p /opt/express-voice
    cd /opt/express-voice
    echo DPL_IMAGE_TAG=voex-release > dpl.env
    dpl --init
    
  5. Установите цепочку сертификатов и ключа SSL для TURN и STUN серверов.

    mkdir -p certs
    cp /somewhere/my-certificate-chain.crt certs/coturn.crt
    cp /somewhere/my-unencrypted-key.key certs/coturn.key
    
  6. Создайте DH (Diffie Hellman) ключ.

    openssl dhparam -out certs/dhparam.pem 2048
    
  7. Откройте файл конфигурации для редактирования:

    external_interface: eth0
    permit_ip: []
    turnserver_listening_ip: 2.3.4.5
    turnserver_server_name: localhost
    
  8. Внесите изменения в настройки по умолчанию и добавьте следующие параметры:

    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-адрес должен быть "белым".)
    janus_keep_private_host Включение согласования подключения на все локальные ip-адреса сервера
    janus_ws_acl Адреса или сети серверов, на которых расположен контейнер messaging (например, 172.18.0.)
    janus_ws_ip - ip Интерфейс, который использует janus web-socket для управления конференциями сервисом messaging
    nat_1_1_mapping
    keep_private_host
    При использовании NAT 1:1 указывается внешний IP-адрес и включается режим сохранения приватного IP-адреса
    permit_ip Список разрешенных IP-адресов:
    • для одного CTS-сервера ─ его адрес: [1.2.3.4];
    • если CTS и VoEx сервер находятся на одном сервере ─ пустой список: []
    redis_options Включение аутентификации в voice redis, пароль verystrongpassword будет использоваться для доступа к базе данных, и он же указывается для сервера CTS в параметре voex_redis_connection_string. Замените пароль verystrongpassword при первой возможности
    redis_userdb, redis_statsdb Параметры подключения coturn к redis серверу (ip-адрес, порт, пароль, номер базы данных)
    turnserver_external_ip Внешний IP-адрес
    turnserver_listening_ip Внешний или внутренний IP-адрес интерфейса для TURN и STUN серверов
    turnserver_server_name Полное имя домена данного сервера, совпадающее с адресом, прописанным в сертификате
  9. Добавьте следующие параметры и установите параметр "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
    
  10. Выполните команду предварительного генерирования файлов конфигураций:

    dpl -p
    
    Для ограничения доступа к базе данных Redis по IP-адресам проверьте наличие параметра permit_ip в settings.yaml:

    .voex/express-voice/express-voice.service
    
  11. Установите systemd unit в систему и запустите:

    cp .voex/express-voice.service /etc/systemd/system/ \
    && systemctl daemon-reload \
    && systemctl enable express-voice.service \
    && systemctl start       express-voice.service
    
  12. Выполните команду:

    dpl -d