Содержание
0. Требования
Установка только на Debian 11
Потребуется минимум 3 сервера
- Сервер Gate + публичный ip адрес
- Сервер СУБД
- Сервер Media + публичный ip адрес (возможно увеличить количество серверов)
0.1. Схема
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 (токен весь нужно скопировать, на примере ниже он занимает две строки).
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)
4.2. Укажите ID (генерировали в пункте 1.8.2)
4.3. Укажите application token (генерировали в пункте 1.8.1)
4.4. Перейдите снова к инструкции по установке Сервера Управления
Продолжить следует с пункта 6.26
Ссылка на инструкцию: https://support.r7-office.ru/team/team_install/team_install/