Содержание

0. Требования

Установка только на Debian 11

Потребуется минимум 3 сервера

  1. Сервер Gate + публичный ip адрес
  2. Сервер СУБД
  3. Сервер Media + публичный ip адрес (возможно увеличить количество серверов)

0.1. Схема

Кластер media (gate, media-db, media) для Р7-Команд

1. Установка Gate

1.1. Настройте firewalld

Открыть входящие соединения из внешней сети на порты

  • 80 http;
  • 443 https;
  • UDP порт 5060 и на публичный и на приватный.

Например:

sudo firewall-cmd --permanent --zone=public --add-service=http # порт 80
sudo firewall-cmd --permanent --zone=public --add-service=https # порт 443
sudo firewall-cmd --permanent --zone=public --add-port=5060/udp # порт 5060
sudo firewall-cmd --permanent --zone=privat --add-port=5060/udp # порт 5060
sudo firewall-cmd --reload

1.2. Добавьте репозиторий

Выполните команду

sudo echo "deb [trusted=yes] https://downloads.r7-office.ru/repository/r7team_media main main" | sudo tee /etc/apt/sources.list.d/r7-team.list

1.3. Добавьте авторизацию

Создайте файл /etc/apt/auth.conf.d/r7.conf и добавьте следующее

machine downloads.r7-office.ru
login team_media_cluster
password Ucevw7vhrrva!87evv2ed

1.4. Обновите все пакеты

sudo apt update && sudo apt full-upgrade

1.5. Установите пакет gate

sudo apt install gate

1.6. Добавьте запись в /etc/hosts

В качестве системного hostname должен быть установлен FQDN, который будет использоваться клиентами для взаимодействия с Медиа Сервером, а также в файле /etc/hosts необходимо задать соответствие между GATE_PUBLIC_IP и этим FQDN

127.0.0.1 localhost
<GATE_PUBLIC_IP> <FQDN>

Например:

127.0.0.1 localhost
185.91.55.99 pris-gate.devr7.ru

1.7. Настройте SSL/TLS

1.7.1. Сгенерируйте lets`s сертификат (возможно использовать wild сертификат)

certbot certonly --standalone -d pris-gate.devr7.ru

1.7.2. Сгенерируйте dhparam.pem

openssl dhparam -out /etc/ssl/dhparam.pem 2048

1.7.3. Создайте файл конфигурации nginx

Файл /etc/nginx/snippets/gate.ssl

server_name <FQDN>;
 
listen 443 ssl;
 
if ($scheme = http) {
 
    return 301 https://$server_name$request_uri;
 
}
 
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 
ssl_prefer_server_ciphers on;
 
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
 
ssl_ecdh_curve secp384r1;
 
ssl_session_cache shared:SSL:10m;
 
ssl_session_tickets off;
 
ssl_stapling on;
 
ssl_stapling_verify on;
 
resolver 8.8.8.8 8.8.4.4 valid=300s;
 
resolver_timeout 5s;
 
add_header Strict-Transport-Security "max-age=63072000"; # The `includeSubDomains` isn't specified to not force subdomains (which might be out of our control) use SSL
 
add_header X-Frame-Options DENY;
 
add_header X-Content-Type-Options nosniff;
 
ssl_dhparam /etc/ssl/dhparam.pem;
 
ssl_certificate <CERTIFICATE_PATH>;
 
ssl_certificate_key <CERTIFICATE_KEY_PATH>;

Где,

  • <FQDN> — А запись в dns, например, pris-gate.devr7.ru;
  • <CERTIFICATE_PATH> — путь до сертификата с полной цепочкой (домена, ca и промежуточных центров);
  • <CERTIFICATE_KEY_PATH> — путь до ключа сертификата.

1.8. Задайте список applications

1.8.1. Сгенерируйте токен и хэш токена

На выходе получим два значения. Токен понадобится в дальнейшем для интеграции с сервером управления. Хэш токена необходимо прописать в конфигурации сервера gate (П.1.8.2). Оба нужно сохранить.

pwgen -s 100 1 | tee /dev/stderr | tr -d '\n' | sha512sum

Пример вывода команды,

  • 1 — application token для указания в настройках сервера управления;
  • 2 — token_hash, это application token в SHA512, который нужно прописать в applications.conf (токен весь нужно скопировать, на примере ниже он занимает две строки).

Кластер media (gate, media-db, media) для Р7-Команд

1.8.2. Создайте файл /etc/gate/gate.conf.d/applications.conf

Переопределить в нем секцию applications

{
 
    "applications": [{
 
        "id": "2b4817ef-3703-4bbd-aa95-7435b4286a98",
 
        "purpose": "My first application for R7-Team",
 
        "token_hash": "20365bd3418531967999c3d8691bd910a2820605655c10572c3b55a4aa5ac2d9cb4a33039c5f60755bad18df20126e060426152fb2bba41641b0d4d9fd4d8607",
 
        "max_conference_duration": 1440,
 
        "max_conference_capacity": 100,
 
        "webhook": ""
 
    }]
 
}

Где,

    • id — нужно использовать UUID version 4 (записанный строчными буквами) (Сгенерировать можно на сайте https://www.uuidgenerator.net/version4 );
    • token_hash — значение 2, которое сгенерировали выше. Это SHA512 от application token.
    • max_conference_duration — длительность конференции в минутах.
    • max_conference_capacity — максимальное возможное количество участников в звонке.

1.9. Задайте список media-серверов

Для этого необходимо создать файл /etc/gate/gate.conf.d/media.conf, в котором перечислить ВНУТРЕННИЕ IP-адреса всех media-серверов

{
 
    "media": {
 
        "nodes": [
 
            "<MEDIA_1_PRIVATE_IP>",
 
            "<MEDIA_2_PRIVATE_IP>"
 
        ]
 
    }
 
}

1.10. Примените изменения в конфигурации gate

Для этого необходимо перезапустить Nginx и OpenSIPs:

sudo systemctl restart nginx.service opensips.service

2. Установка Media-db

2.1. Настройте firewalld

Необходимо открыть на приватный интерфейс порт 3306/tcp для доступа к БД

Например:

sudo firewall-cmd --permanent --zone=home --add-service=mysql # порт 3306
sudo firewall-cmd --reload

2.2. Добавьте репозиторий

Выполните команду

sudo echo "deb [trusted=yes] https://downloads.r7-office.ru/repository/r7team_media main main" | sudo tee /etc/apt/sources.list.d/r7-team.list

2.3. Добавьте авторизацию

Создайте файл /etc/apt/auth.conf.d/r7.conf и добавьте следующее

machine downloads.r7-office.ru
login team_media_cluster
password Ucevw7vhrrva!87evv2ed

2.4. Обновите все пакеты

sudo apt update && sudo apt full-upgrade

2.5. Установите пакет media-db

sudo apt install media-db

2.6. Настройте MariaDB

Необходимо, чтобы она была доступна для media-серверов.

Для этого нужно создать файл /etc/mysql/mariadb.conf.d/55-mind.cnf с таким содержимым

[mysqld]
 
bind-address = <DB_PRIVATE_IP>

Где,

  • <DB_PRIVATE_IP> — приватный адрес сервера, который доступен для media-серверов.

2.7. Перезапустите MariaDB

sudo systemctl restart mysqld.service

2.8. Задайте пароль для доступа к базе данных для media-серверов:

# пользователь для подключений по localhost
sudo mysql -e "SET PASSWORD FOR 'media'@'localhost' = PASSWORD('<DB_PASSWORD>');"
# пользователь для внешних подключений
sudo mysql -e "SET PASSWORD FOR 'media'@'%' = PASSWORD('<DB_PASSWORD>');"

Где,

  • <DB_PASSWORD> — пароль для пользователя media.

3. Установка Media

3.1. Настройте firewalld

Откройте порты

  • 10000-30000 TCP;
  • 10000-30000 UDP;
  • 9000/tcp (на приватный интерфейс);
  • 7060/tcp (на приватный интерфейс).

Например:

sudo firewall-cmd --permanent --zone=public --add-port=10000-30000/tcp
sudo firewall-cmd --permanent --zone=public --add-port=10000-30000/udp
sudo firewall-cmd --permanent --zone=internal --add-port=9000/tcp # порт 9000
sudo firewall-cmd --permanent --zone=internal --add-port=7060/udp # порт 7060
sudo firewall-cmd --reload

3.2. Добавьте репозиторий

Выполните команду

sudo echo "deb [trusted=yes] https://downloads.r7-office.ru/repository/r7team_media main main" | sudo tee /etc/apt/sources.list.d/r7-team.list

3.3. Добавьте авторизацию

Создайте файл /etc/apt/auth.conf.d/r7.conf и добавьте следующее

machine downloads.r7-office.ru
login team_media_cluster
password Ucevw7vhrrva!87evv2ed

3.4. Обновите все пакеты

sudo apt update && sudo apt full-upgrade

3.5. Установите media

sudo apt install media

3.6. Добавьте запись в /etc/hosts

В файле /etc/hosts необходимо задать соответствие между MEDIA_PUBLIC_IP и системным hostname:

127.0.0.1 localhost
<MEDIA_PUBLIC_IP> <HOSTNAME>

Где,

  • <MEDIA_PUBLIC_IP> — белый ip адрес сервера;
  • <HOSTNAME> — А запись в dns, например, pris-media.devr7.ru.

Например:

127.0.0.1 localhost
185.91.55.100 pris-media.devr7.ru

3.7. Укажите адрес gate-сервера

Для этого необходимо создать файл /etc/media/media.properties.d/sip.properties и привести к виду

com.mind.media.voip.sipOutboundProxies=sip:<GATE_PRIVATE_IP>:5060

Где,

  • <GATE_PRIVATE_IP> — публичный ip адрес сервера, который настраивали в пункте 1.

3.8. Укажите URL и пароль для подключения к базе данных на db-сервере

Создайте файл /etc/media/media.properties.d/db.properties (c доступом на чтение только для root и пользователей, входящих в группу media).

Переопределите в нем значение параметров com.mind.media.jdbc.url и com.mind.media.jdbc.password, как показано ниже

com.mind.media.jdbc.url=jdbc:mysql://<DB_PRIVATE_IP>:3306/media
 
com.mind.media.jdbc.password=<DB_PASSWORD>

Где,

  • <DB_PASSWORD> — пароль, который задали в пункте 2.7;
  • <DB_PRIVATE_IP> — внутренний адрес сервера из пункта 2.

3.9. Примените изменения в конфигурации media

Перезапустите сервис media

sudo systemctl restart media

4. Интеграция с Сервером Управления

Инструкция по установке Медиа и Сервера управления: https://support.r7-office.ru/team/team_install/team_install/

Выполните все действия с пункта 6 до пункта 6.23, далее перейдите в пункт 4.1 данной инструкции.

4.1. Укажите адрес Gate сервера (из пункта 1.7)

Кластер media (gate, media-db, media) для Р7-Команд

4.2. Укажите ID (генерировали в пункте 1.8.2)

Кластер media (gate, media-db, media) для Р7-Команд

4.3. Укажите application token (генерировали в пункте 1.8.1)

Кластер media (gate, media-db, media) для Р7-Команд

4.4. Перейдите снова к инструкции по установке Сервера Управления

Продолжить следует с пункта 6.26

Ссылка на инструкцию: https://support.r7-office.ru/team/team_install/team_install/