WebRTC Coturn Server Configuration

Serkan Kaya
3 min readMay 4, 2021
WebRTC Connection
WebRTC Connection

Merhabalar ben Serkan, bugün sizlere WebRTC üzerinden canlı video konferans projesindeki dış dünyaya açılan ip nin ve portlarının görüşmeyi başlatmama sorunu üzerindeki sağlanan çözüm hakkında bilgileri ve configuration dosyalarını açıklamaya çalışacağım.

Öncelikle WebRTC nedir kısaca bahsedelim.

WebRTC, browser üzerinden erişim yapılan makinenin mikrofon ve kamerasını kullanarak sesli ve görüntülü görüşmelerin gerçekleşmesini sağlayan bir teknolojidir. Günümüz tarayıcılarının neredeyse tamamını desteklemekle birlikte birçok canlı video konferans uygulamasında kullanılmaktadır.

Konunun detayına inmeden önce projemizde karşılaştığımız bu sorunda hangi teknolojileri kullandığımızı kısaca bahsetmek isterim.

WebRTC Media Server için Kurento kullanılmış olup, .Net 5 ile birlikte api desteği sağlanıp NodeJs Express ile katılım sağlanan kullanıcıların SocketIO kanalı ile giriş ve çıkış işlemleri gerçekleştirildi. Son olarak Client tarafında Javascript kullanıldı.

Sorun Neydi ?

Kurento, bir webrtc media server olup ubuntu sistemi üzerinde kurulmuştu. Karşılaşılan sorun ise, local ortamda görüşmenin başlaması fakat test ortamında hiçbir şekilde ayağa kalkamaması olmuştu. Video görüşme başlamıyordu. Proje tüm portları ile birlikte dış dünyaya NAT olarak açılmıştı.

Çözüm için uygun mu ?

Araştırmalar sonucu WebRTC teknolojisinde canlı video görüşmelerinde NAT ile dış dünyaya açılan portların ara bir katmana ihtiyaç duyulduğu anlaşıldı ve bu ara katman TURN/STUN server idi. STUN server, istemcilerin kendi IP adreslerini, arkasında bulundukları NAT’ in tipini ve NAT tarafından belli bir yerel port ile ilintilendirilen yan internet portunu bulmalarına imkân verir. Turn server ise bu portların client ve sunucu arasında iletişimini sağlar.

Bu bilgi edindikten sonra, Kurento üzerinde Coturn Server’ ın bu işlem için uygun bir paket olduğu anlaşıldı ve kurulumlar yapıldı. Şimdi bu kurulumda neler yapıldı ve nasıl bir yol izlendi birlikte inceleyelim.

Öncelikle ubuntu üzerinde coturn yüklemesi tamamlandıktan sonra, projenin çalışacağı ip nin udp portlarının firewall da açık olması gerekmektedir. Örnek portlar aşağıdaki gibidir.

3478 : UDP
49152–65535 : UDP

Ardından sunucu üzerinde aşağıdaki dizindeki coturn dosyasına gidilir.

/etc/default/coturn

Bu dizinde eğer TURNSERVER_ENABLED=1 değerinin başında # var ise bu işaret kaldırılmalıdır. Artık Coturn yapılandırılmasında Turn Server aktif edilmiş oldu.

Coturn yapılandırılmasından sonra Turn Server için Authentication yapısının kurulması gerekmekte. Bunun için 2 yol mevcut. Birincisi Configuration dosyası ile ilgili parametreler girilir. İkincisi(daha hızlı ve kolay) ise turnadmin komutu ile istenilen kullanıcı bilgileri oluşturulup sisteme atanır.

Configuration File

Burada <YOUR_USERNAME>, <YOUR_PASSWORD> ve <YOUR_PUBLIC_IP_ADDRESS> yerine kendi bilgilerinizi girip dosyayı kaydetmeniz yeterli olacaktır.

Veya diğer çözüm olarak;

Turnadmin Command

turnadmin -k -u <YOUR_USERNAME> -p <YOUR_PASSWORD> -r <REALM>

burada üst kısımda da belirttiğim gibi username ve password bilgisinin yanı sıra <REALM> kısmı için belirtilen bir kimlik bilgisi verilebilir. Örneğin: domain.

Son olarak Kurento’ da WebRtcEndpoint.conf.ini dosyasının içinde sadece aşağıdaki satırı ekleyip düzenlemeniz yeterli. Burada eklenen Turn Server’ ın url kısmı tanımlanıyor.

Ardından sistemi yeniden başlattıktan sonra public ip üzerinden, deploy edilen canlı video konferans projemizi yeniden ayağı kaldırıp görüşmemizi başarıyla başlatmış olacağız.

Sonuç olarak bu tür sorunla karşılaşılması durumunda hangi yolların izleneceğini detayları ile açıklamak için bu şekilde bir yazı yazmayı düşündüm :)

Olumlu veya olumsuz yönlerini belirtmek için bana bildirirseniz çok mutlu olurum ve şimdiden teşekkür ederim.

Daha farklı yazılar ile karşınıza çıkmak üzere şimdilik hoşçakalın :)

Referanslar

https://meetrix.io/blog/webrtc/coturn.html

--

--