Сервер настраивается таким образом, чтобы одновременно выполнять роль STUN-сервера (определение внешнего IP-адреса клиента) и TURN-сервера (ретрансляция трафика в случаях, когда прямое P2P-соединение невозможно).
1. Подготовка и установка
-
Обновите списки пакетов и установите coTURN:
sudo apt update
sudo apt install coturn -y
-
После установки остановите службу для дальнейшей конфигурации:
sudo systemctl stop coturn
2. Конфигурация сервера
Оригинальный конфигурационный файл довольно объёмный и содержит множество закомментированных параметров.
-
Для создания чистой конфигурации рекомендуется переместить стандартный файл в резервную копию и создать новый файл:
sudo mv /etc/turnserver.conf /etc/turnserver.conf.backup
sudo vi /etc/turnserver.conf
-
Добавьте параметры:
listening-port=3478
listening-ip=0.0.0.0
# ВАЖНО: Ваш ВНЕШНИЙ (публичный) IP.
# Если сервер находится за NAT (AWS/Azure):
# external-ip=ВНЕШНИЙ_IP/ВНУТРЕННИЙ_IP
# Пример: external-ip=203.0.113.5/192.168.1.5
external-ip=YOUR_PUBLIC_IP
fingerprint
min-port=49152
max-port=65535
log-file=/var/tmp/turnserver.log
verbose
no-cli
lt-cred-mech
user=testuser:strongpassword
realm=your-domain.com
-
Сохраните файл.
3. Настройка запуска
В Debian может потребоваться явным образом разрешить запуск демона.
-
Откройте файл:
sudo vi /etc/default/coturn
-
Найдите параметр TURNSERVER_ENABLED и удалите комментарий, чтобы он выглядел так:
TURNSERVER_ENABLED=1
-
Перезапустите службу и добавьте её в автозагрузку:
sudo systemctl daemon-reload
sudo systemctl start coturn
sudo systemctl enable coturn
-
Проверьте статус:
sudo systemctl status coturn
4. Настройка Firewall (UFW)
TURN-сервер требует открытых портов для сигнализации (3478) и широкого диапазона для передачи медиатрафика (UDP).
Если вы используете ufw:
-
Порты для подключения клиентов (TCP/UDP)
sudo ufw allow 3478/tcp
sudo ufw allow 3478/udp
-
Диапазон портов для медиа-потоков (только UDP):
sudo ufw allow 49152:65535/udp
-
Перезагрузка правил:
sudo ufw reload
Обратите внимание! Если сервер находится за NAT провайдера (например, AWS Security Groups), откройте те же порты в панели управления облачного провайдера.
5. Проверка работы STUN/TURN
Самый простой способ проверить работу — использовать инструмент Trickle ICE (от команды WebRTC).
-
Откройте сайт Trickle ICE.
-
Удалите стандартный Google-сервер из списка.
-
Добавьте свой:
-
STUN or TURN URI:
turn:YOUR_PUBLIC_IP:3478 -
Username:
testuser(как мы указали в конфигурации) -
Password:
strongpassword
-
-
Нажмите на кнопку “Add Server”, затем на кнопку снизу “Gather candidates”.
В результате вы должны увидеть список кандидатов:
-
Тип
srflxозначает, что сработал STUN (сервер увидел ваш IP). -
Тип
relayозначает, что сработал TURN (трафик успешно прошёл через ваш сервер).
Наличие relay-кандидатов с вашим IP-адресом означает, что сервер настроен корректно.
6. Включение TLS и защищенного порта
В рабочей среде (продакшене) передача паролей в открытом виде является небезопасной. Поэтому следующим шагом необходимо настроить TLS (SSL-сертификаты, например Let's Encrypt), чтобы использовать защищённый протокол turns на порту 5349.
-
Откройте файл конфигурации:
/etc/turnserver.conf
-
Добавьте настройки SSL:
# Порт для защищенного соединения (стандарт)
tls-listening-port=5349
# Пути к файлам, что мы подготовили
cert=/etc/coturn/certs/turn_server_cert.pem
pkey=/etc/coturn/certs/turn_server_pkey.pem
# Укажите ваш реальный домен как realm
realm=turn.your-domain.com
-
Обновите правила firewall:
sudo ufw allow 5349/tcp
sudo ufw allow 5349/udp
7. Настройка ENGINE для использования TURN
Чтобы подключить TURN при записи экранов оператора, добавьте в конфигурацию engine следующий параметр:
RTC_CONFIGURATION={"iceServers":
[{"urls":"stun:51.15.16.187:3478","username":"1","credential":"1"},
{"urls":"turn:51.15.16.187:3478","username":"1","credential":"1"}]}