Продукты Р7
Корпоративный сервер 2024
Корпоративный сервер 2024
Сервер документов
Сервер документов
Редакторы
Редакторы
Корпоративный сервер 2019
Корпоративный сервер 2019
Графика
Графика
Команда
Команда
Мобильные редакторы
Мобильные редакторы
Облачный офис
Облачный офис
Почта
Почта
Органайзер
Органайзер
Дополнительно
Часто задаваемые вопросы
Разработчикам
Интеграции
Новые возможности

При создании звонка произошла ошибка 500, Conference creation failed: Something went wrong — Медиа сервер Docker версия. errCode 4000313 — Нет сетевой связности между контейнерами.

Обновлено: 26.12.25

Введение

Пользователь при попытке вызова получает ошибку «При создании звонка произошла ошибка 500, Conference creation failed: Something went wrong».

Р7 Команды развернут на двух серверах (Сервер Управления и Медиа сервер). Медиа сервер имеет белый статический IP адрес и расположен непосредственно в сети интернет. На медиа сервере настроен межсетевой экран — UFW.

Рис. 1: Ошибка на стороне WEB клиента.

Методы первичной диагностики

Чтобы понять, где именно происходит сбой, необходимо проверить логи на обоих серверах.

1. Проверка логов на сервере управления Р7-Команда

Первым делом проверьте логи сервиса callchat на вашем сервере Р7-Команда.

docker logs team-callchat-1
docker logs team-callchat-2
docker logs team-callchat-3
docker logs team-callchat-4
 
(Примечание: имя контейнера может отличаться в зависимости от вашей установки)
 
ERROR POST /api/v2/conference 10.62.88.253| {"type":"InternalError","message":"CALL Unable to create conference on media server (status=500 message=Internal Server Error)","stack":"InternalError: CALL Unable to create conference on media server (status=500 message=Internal Server Error)\n    at CallService.create (/app/src/service/call/CallService.js:198:15)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async /app/src/WebAPI/v2/Controllers/Conference/ConferenceController.js:36:20","name":"InternalError","errCode":4000313,"meta":{"param":{"userCallerId":"489","targetId":"222"}}}
 
 
Если вы видите ошибку `Unable to create conference on media server (status=500)`, это означает, что сервер Р7-Команда успешно отправил запрос на создание конференции, но Медиасервер ответил ему ошибкой 500 (Internal Server Error)
log ERROR POST /api/v2/conference 10.62.88.253| {"type":"InternalError","message":"CALL Unable to create conference on media server (status=500 message=Internal Server Error)","stack":"..."}

Эта ошибка говорит, что проблема находится на стороне Медиасервера.

2. Проверка логов на Медиасервере

Проблема локализована, переходим на сервер, где установлен Медиасервер.

Проверка логов nginx:
Контейнер nginx является входной точкой для всех запросов. Проверим его логи:

docker logs media_nginx

Здесь вы, скорее всего, обнаружите ошибку Connection refused (соединение отклонено). Это означает, что nginx получил запрос от Р7-Команды, попытался передать его внутреннему сервису в контейнер media_media, но тот отклонил соединение.

2025/10/06 12:51:57 [error] 7#7: *9 connect() failed (111: Connection refused), client: 109.235.210.188...
2025/10/06 12:51:57 [error] 7#7: *9 [lua] create_conference.lua:58: Can't create conference: connection refused...

Проверка логов media_media:
Теперь посмотрим, почему сервис в контейнере media_media отклоняет соединения.

docker logs media_media

В логах видим причину — сам сервис не может запуститься до конца, потому что не может подключиться к другому внутреннему компоненту, XCoder.

2025-10-06 11:54:32.045 W [------------] XCoder still doesn't respond after restarting, keep trying connecting
com.zeroc.Ice.ConnectTimeoutException: null

Итог диагностики:

  1. Р7-Команда отправляет запрос на Медиасервер.
  2. nginx на Медиасервере получает запрос, но не может передать его media_media (Connection refused).
  3. media_media не отвечает, потому что сам не может подключиться к xcoder (ConnectTimeoutException).
  4. В итоге nginx возвращает ошибку 500 на сервер Р7-Команда.
3. Описание проблемы

Вся проблема сводится к нарушению сетевого взаимодействия между контейнерами на Медиасервере.

Причина проблемы: Конфликт Docker и брандмауэра UFW

В стандартном файле docker-compose.yaml для Медиасервера используется «смешанный» сетевой режим:

  1. Большинство сервисов (media_media, redis и др.) работают в изолированной виртуальной сети Docker.
  2. Сервис xcoder настроен с параметром network_mode: host, то есть использует основную сеть сервера напрямую.
  3. Сервис media пытается связаться с ним через адрес host-gateway, который указывает на IP-адрес сервера изнутри контейнера.

Проблема возникает, когда системный брандмауэр ufw на сервере блокирует пересылку трафика (FORWARD) из виртуальной сети Docker в основную сеть хоста.

4. Рекомендуемое решение

Сначала нужно узнать, какие подсети используют ваши контейнеры. Выполните следующие команды:

docker network inspect media_internal | grep Subnet
docker network inspect media_external | grep Subnet

Вывод будет выглядеть примерно так:

"Subnet": "172.19.0.0/16"
"Subnet": "172.18.0.0/16"```
Запомните или скопируйте эти значения. В данном примере это `172.19.0.0/16` и `172.18.0.0/16`.

Убедитесь, что служба UFW запущена

Перед добавлением правил брандмауэр должен быть активен. Если вы его отключали для теста, запустите его:

sudo systemctl start ufw

Добавьте разрешающие правила для сетей Docker

sudo ufw allow from 172.19.0.0/16
sudo ufw allow from 172.18.0.0/16

Убедитесь, что все правила на месте и брандмауэр активен:

sudo ufw status verbose
 
В списке должны присутствовать строки вида `ALLOW IN 172.19.0.0/16`.
To Action From
-- ------ ----
443/tcp ALLOW Anywhere
10000:10049/tcp ALLOW Anywhere
10000:30000/udp ALLOW Anywhere
22/tcp ALLOW Anywhere
443/tcp (v6) ALLOW Anywhere (v6)
10000:10049/tcp (v6) ALLOW Anywhere (v6)
10000:30000/udp (v6) ALLOW Anywhere (v6)
22/tcp (v6) ALLOW Anywhere (v6)
 
Anywhere ALLOW IN 172.19.0.0/16 # <-- НОВОЕ ПРАВИЛО
Anywhere ALLOW IN 172.18.0.0/16 # <-- НОВОЕ ПРАВИЛО