Установка TURN-сервера в Ubuntu для WebRTC
Как я могу установить сервер TURN на мою Ubuntu 12.04? Можете поделиться учебником? Я прочитал это руководство: Реализация нашего собственного сервера STUN/TURN для приложения WebRTC. Но что я не понимаю, так это как я могу установить свой собственный сервер TURN на свою Ubuntu 12.04?
В настоящее время я использую что-то вроде следующего кода для создания RTCPeerConnection
const pc_config = {"iceServers": [{"url": "stun:stun.l.google.com:19302"},
{"url":"turn:my_username@<turn_server_ip_address>", "credential":"my_password"}]};
const pc_new = new webkitRTCPeerConnection(pc_config);
И я хочу заполнить приведенные выше аргументы кода для работы с другой сетью.
Когда я хочу установить сервер поворота, я получаю
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package resiprocate-turn-server
я использовал apt-get install resiprocate-turn-server
, Я также использовал этот учебник https://www.webrtc-experiment.com/docs/TURN-server-installation-guide.html.
5 ответов
Его легко установить на машины linux, не пробовал в других ОС.
простой способ:
sudo apt-get install coturn
Если вы скажете "нет", я хочу использовать новейшие технологии, вы можете загрузить исходный код со страницы загрузки и установить его самостоятельно, например:
sudo -i # ignore if you already in admin mode
apt-get update && apt-get install libssl-dev libevent-dev libhiredis-dev make -y # install the dependencies
wget -O turn.tar.gz http://turnserver.open-sys.org/downloads/v4.5.0.3/turnserver-4.5.0.3.tar.gz # Download the source tar
tar -zxvf turn.tar.gz # unzip
cd turnserver-*
./configure
make && make install
Пример команды для запуска сервера TURN:
sudo turnserver -a -o -v -n --no-dtls --no-tls -u test:test -r "someRealm"
описание команды:
- -a - Использовать механизм долгосрочных учетных данных
- -o - запустить серверный процесс как демон
- -v - "Умеренный" подробный режим.
- -n - нет файла конфигурации
- --no-dtls - не запускать прослушиватели DTLS
- --no-tls - не запускать слушателей TLS
- -u - учетные данные пользователя, которые будут использоваться
- -r - область по умолчанию для использования, требуется TURN REST API
проверьте эту вики для более подробной информации и конфигурации.
Теперь вы можете использовать сервер TURN в вашем приложении WebRTC как:
var peerConnectionConfig = {
iceServers: [{
urls: YOUR_IP:3478,
username: 'test',
password: 'test'
}]
}
На вашем сервере с Ubuntu установите, настройте и запустите упакованную версию Coturn. Для базовой настройки сделайте
# set up
sudo apt-get install --assume-yes coturn
# configure & run
USERNAME="some-username"
PASSWORD="some-password"
PORT=3478
# -n: use only commandline parameters, no config file
sudo turnserver \
-n \
--verbose \
--lt-cred-mech \
--user $USERNAME:$PASSWORD \
--realm "someRealm" \
--no-dtls \
--no-tls \
--listening-port $PORT
добавлять --daemon
чтобы он работал в фоновом режиме. См. https://github.com/coturn/coturn/wiki/turnserver для получения списка вариантов turnserver
и посмотрите на их пример файла конфигурации, если вы хотите использовать его с -c CONFIGFILE
Вместо того, чтобы использовать -n
и передать все параметры в командной строке, как я сделал выше.
Чтобы убедиться, что это работает, в Google Chrome, находясь на любой странице безопасного происхождения (например, stackru.com), запустите это в консоли разработчика:
function checkTURNServer(turnConfig, timeout){
return new Promise(function(resolve, reject){
setTimeout(function(){
if(promiseResolved) return;
resolve(false);
promiseResolved = true;
}, timeout || 5000);
var promiseResolved = false
, myPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection //compatibility for firefox and chrome
, pc = new myPeerConnection({iceServers:[turnConfig]})
, noop = function(){};
pc.createDataChannel(""); //create a bogus data channel
pc.createOffer(function(sdp){
if(sdp.sdp.indexOf('typ relay') > -1){ // sometimes sdp contains the ice candidates...
promiseResolved = true;
resolve(true);
}
pc.setLocalDescription(sdp, noop, noop);
}, noop); // create offer and set local description
pc.onicecandidate = function(ice){ //listen for candidate events
if(promiseResolved || !ice || !ice.candidate || !ice.candidate.candidate || !(ice.candidate.candidate.indexOf('typ relay')>-1)) return;
promiseResolved = true;
resolve(true);
};
});
}
const USERNAME="some-username"
const PASSWORD="some-password"
const PORT=3478
const IP="10.11.0.115" // you will have to change this
console.log('TURN server reachable on TCP?', await checkTURNServer( {
url: `turn:${IP}:${PORT}?transport=tcp`,
username: USERNAME,
credential: PASSWORD,
}))
console.log('TURN server reachable on UDP?', await checkTURNServer( {
url: `turn:${IP}:${PORT}?transport=udp`,
username: USERNAME,
credential: PASSWORD,
}))
Вы должны получить
TURN server reachable on TCP? true
TURN server reachable on UDP? true
Я думаю, что руководство несколько устарело.
Посмотрите на этот сервер Google с открытым исходным кодом TURN.
Действительно прост в установке и работает очень хорошо.
https://code.google.com/p/rfc5766-turn-server/
Эта ссылка предоставит все подробности, касающиеся установки и настройки сервера TURN.
https://www.webrtc-experiment.com/docs/TURN-server-installation-guide.html
У парня очень хороший репозиторий для демоверсий WebRtc.
Включите установку сервера
изменить пакет в соответствии с вашим сервером
wget http://turnserver.open-sys.org/downloads/v3.2.4.4/turnserver-3.2.4.4-debian-wheezy-ubuntu-mint-x86-64bits.tar.gz
tar -zxvf turnserver-3.2.4.4-debian-wheezy-ubuntu-mint-x86-64bits.tar.gz
wget http://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
tar -zxvf libevent-2.0.21-stable.tar.gz
cd libevent-2.0.21-stable/
./configure
make && make install
dpkg -i rfc5766-turn-server_3.2.4.4-1_amd64.deb
cd /etc/
vi turnserver.conf
Добавьте следующее, чтобы включить server.conf
listening-device=eth0
listening-ip=YOUR_IP_HERE
listening-port=3478
userdb=turnuserdb.conf
relay-device=eth0
realm=YOUR_REALM_IP_HERE
lt-cred-mech
log-file=/var/log/turnserver.log
Добавьте имя пользователя и пароль на turnuserdb.conf
vi turnuserdb.conf
в следующем формате
testuser:pass0wrd
Чтобы запустить сервер Turn:
sh /data/start_turn_server.sh
Чтобы добавить нового Turn User:
sh /data/ addTurnUser.sh
Чтобы увидеть, запущен ли сервер поворотов:
ps aux | grep –I turn
Приведенная выше команда должна перечислить некоторые процессы как сервер поворота, если сервер TURN работает правильно.