Обеспечение доступности сервиса
Для того, чтобы клиенты могли подключиться к серверу, звонить/проводить конференции нужно обеспечить сетевую доступность сервиса.
Принцип работы

Сервис слушает один TCP порт, на котором отдается сервисный вебсайт (панель управления сервером, страницы конференций), а также через websocket подключаются клиенты. В случае недоступности UDP портов, AV трафик также будет передаваться через этот порт.
Передача AV трафика производится на некотором множестве UDP портов, каждый такой порт обслуживается AV транслятором сервиса. Для проведения видеоконференций с большим числом участников, нужно что-бы число этих AV трансляторов было не меньше числа ядер процессора машины на которой выполняется сервис. Например, для проведения конференции на 100 одновременных участников желательно не менее 16 AV трансляторов.
Для браузерных WebRTC-клиентов дополнительно используется отдельный UDP-диапазон WebRTC Gateway. Эти порты не являются портами AV-трансляторов: на них приходят ICE/DTLS/SRTP с браузера, после чего сервер связывает WebRTC media с существующим media core.
NAT
В случае, если сервер находится внутри сети, за NAT роутером, для подключения внешних клиентов, требуется пробросить все порты, с теми же номерами на роутере.

Что должно быть доступно клиентам
| Назначение | Обычно используется |
|---|---|
| Панель, страницы конференций, API, WebSocket/WSS | 443/tcp |
| AV-трансляторы | UDP-диапазон сервера, например 5060-5063/udp |
| WebRTC Gateway для браузеров | UDP-диапазон WebRTC, например 43000-43100/udp |
| Выпуск Let's Encrypt | 80/tcp, если используется HTTP-01 challenge |
Точный набор UDP-портов зависит от числа AV-трансляторов и настроек WebRTC Gateway. Если трансляторов больше четырех, откройте весь настроенный диапазон. Для WebRTC откройте диапазон WebRTC.PortRangeBegin / WebRTC.PortRangeEnd.
Проверка доступности
Проверяйте доступность не только с самого сервера, но и с внешнего компьютера:
curl -I https://<адрес_сервера>
Если web-страница открывается, но аудио или видео нестабильны, проверьте UDP-порты. Частая ситуация: TCP-порт открыт, а UDP закрыт в security group облачного провайдера.
Для браузерного WebRTC отдельно проверьте:
- внешний адрес, который сервер отдает в ICE candidate;
- проброс UDP-диапазона WebRTC на VideoGrace Server;
- отсутствие подмены портов на NAT, если используется ограниченный port range.
Публичный сервер с доменом
Для публичной установки используйте DNS-имя и доверенный TLS-сертификат. Это важно для браузерных клиентов и для доверия пользователей к странице подключения.
Пошаговая инструкция: развертывание на VPS со своим доменом и Let's Encrypt.
Типовые ошибки
| Симптом | Причина |
|---|---|
| Сервер открывается локально, но не из интернета | закрыт firewall ОС или облачного провайдера |
| Браузер показывает ошибку сертификата | адрес сервера не совпадает с TLS-сертификатом |
| Клиенты подключаются, но нет медиа | закрыты UDP-порты трансляторов |
| Web-клиент подключается, но WebRTC не выходит в connected | закрыт UDP-диапазон WebRTC или неверный внешний адрес ICE |
| Работает только в одной сети | NAT, корпоративный firewall или неверный внешний адрес |