BigBlueButton için TURN Sunucusu Kurulumu

Selamlar, bu dökümanda güvenlik duvarlarının arkasındaki kullanıcıların BigBlueButon’a bağlanmasına izin vermek ve BigBlueButton sunucunuzu daha az kaynak tüketir hale getirmek için TURN sunucusunun nasıl kurulacağını öğreneceğiz.

Gereksinimler

  • Temiz yapılandırılmış sadece TURN hizmeti kullanılacak bir Ubuntu 18.04 sunucu
  • Sunucu donanımı için minimum 2 GB RAM / 2 CPU önerilir
  • root yetkileri ile SSH erişimi gereklidir
  • TURN sunucu IP adresini hedefleyen bir DNS (A) kaydı (Örneğin: turn.sizinalanadiniz.com gibi…)

Açılması gereken bağlantı noktaları

Portlar Protokol Açıklama
3478 TCP/UDP coturn port
443 TCP/UDP TLS port
49152 ile 65535 arası UDP relay port aralığı

Kurulum adımları

  1. TURN olarak yapılandıracağınız sunucuda root yetkileri ile SSH erişimini açın.
  2. Altta verdiğim komutta turn.sizinalanadiniz.com, 1234abcd ve [email protected] alanlarını kendinize göre düzenleyin ve çalıştırın.
wget -qO- https://ubuntu.bigbluebutton.org/bbb-install.sh | bash -s -- -c turn.sizinalanadiniz.com:1234abcd -e [email protected]

Kurulum her şeyi (Let’s Encrypt SSL sertifikası dahil) sizin adınıza tamamlayacaktır.

Yapılandırmalar

Hızlı kurulumla otomatik yapılandırma işlemi (BigBlueButton sunucunuz yoksa)

İşlem tamamlandıktan sonra TURN sunucunuzu ayrı bir sunucuda yeni bir BigBlueButton kurulumu yaparak kullanmak isterseniz alttaki komutu girebilirsiniz. Komut yeni TURN sunucunuzuda kullanacak şekilde BigBlueButton’u otomatik kuracak ve yapılandıracaktır:

Komut içerisinde yer alan TURN sunucusu ve BigBlueButton sunucusu ile e-posta adresinizi, TURN sunucusu kurarken belirlediğiniz anahtarı kendinize göre düzenlemeyi unutmayın!

wget -qO- https://ubuntu.bigbluebutton.org/bbb-install.sh | bash -s -- -v xenial-22 -s konferans.sizinalanadiniz.com -e [email protected] -g -c turn.sizinalanadiniz.com:1234abcd

Manuel yapılandırma işlemi (Kurulu bir BigBlueButton sunucunuz varsa)

  1. BigBlueButton sunucunuzda root yetkileri ile SSH oturumu açın.
  2. Altta verdiğim komutla düzenlememiz gereken ilgili dosyayı açın:
nano /usr/share/bbb-web/WEB-INF/classes/spring/turn-stun-servers.xml 
  1. Bu dosya içerisinde yer alan tüm turn.example.com kısımlarınızı kendi TURN sunucunuzun adresi ile güncelleyin.

  2. Yine aynı dosya içerisinde yer alan <random value> kısmını TURN sunucusu kurulumundaki gizli anahtarınızla (Bizim örneğimizde hatırlarsanız 1234abcd değerini vermiştik) güncelleyin.

turn-stun-servers.xml dosyasının içeriği varsayılan olarak şu şekildedir:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

    <bean id="stun0" class="org.bigbluebutton.web.services.turn.StunServer">
        <constructor-arg index="0" value="stun:turn.example.com"/>
    </bean>


    <bean id="turn0" class="org.bigbluebutton.web.services.turn.TurnServer">
        <constructor-arg index="0" value="<random value>"/>
        <constructor-arg index="1" value="turns:turn.example.com:443?transport=tcp"/>
        <constructor-arg index="2" value="86400"/>
    </bean>
    
    <bean id="turn1" class="org.bigbluebutton.web.services.turn.TurnServer">
        <constructor-arg index="0" value="<random value>"/>
        <constructor-arg index="1" value="turn:turn.example.com:443?transport=tcp"/>
        <constructor-arg index="2" value="86400"/>
    </bean>

    <bean id="stunTurnService"
            class="org.bigbluebutton.web.services.turn.StunTurnService">
        <property name="stunServers">
            <set>
                <ref bean="stun0"/>
            </set>
        </property>
        <property name="turnServers">
            <set>
                <ref bean="turn0"/>
                <ref bean="turn1"/>
            </set>
        </property>
    </bean>
</beans>
  1. Değişiklikleri uygulamak için BigBlueButton sunucunuzu yeniden başlatın.

Hepsi bu kadar :slight_smile:

Referanslar:


1 Beğeni

Merhabalar Muhammed Bey,

Turn sunucusu kurulumuna geçmeden önce yanlış bir adım yapmamak adına sormak istediğim bazı şeyler var,

Turn sunucumuzu Kurum içine mi konumlandırmamız gerekiyor, yoksa Bigbluebutton sunucu hizmeti aldığımız yerde konumlandırmamız mı. İkiside olursa hangisi daha avantajlı olur.

Birde öğrenmek için soruyorum. Turn sunucusu Bigbluebutton sisteminin daha hızlı çalışmasına daha az kaynak tüketmesini nasıl sağlıyor ?

Bağlantılarda yaşadığımız görüntü donmasını , kasması sorununu giderebilir mi?

Bu konu hakkında bilgi verirseniz çok memnun olurum.

İyi çalışmalar diliyorum.

Yine hizmet aldığınız bir DC bünyesinde barındırmanız daha sağlıklı olacaktır.

BigBlueButton’a yapılan bağlantılarının daha stabil olmasını sağlayacaktır. BigBlueButton sunucusunda yük daha az olacaktır. Ve donmalarda vs. güvenlik duvarı kaynaklı sorun var ise bunlarda çözülecektir. Normalde her kuruluma öneriyorum ben. Trafiği de tek sunucu değilde aslında 2 farklı hatta yaymış olacaksınız. Donma sorunun sunucu donanımı kaynaklı değil ise bu yöntem çözüm olacaktır kanaatindeyim.

1 Beğeni

BBB Ubuntu 16.04 üzerine kurulmasını öneriyorsunuz, Turn sunucuyuda 18.04 üzerine kurun dediniz,
İkisinide aynı sunucuya kurmak istediğimizde hangi versiyonu kurmalıyız ?

Ayarlarını doğru yaptıysam stun serverin çalışıp çalışmadığını nasıl kontrol edebilirim ?

Bir hata aldım ekran görüntüsü

Merhabalar sorunum çözüldü. Belki olurda biriside aynı hatayı yaşar diye nasıl olduğunu açıklayayım.

Adımların hepsi doğru yalnız son adımda

nano /usr/share/bbb-web/WEB-INF/classes/spring/turn-stun-servers.xml

işleminde içerideki herseye silin ve şunu ekleyin.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

    <bean id="stun0" class="org.bigbluebutton.web.services.turn.StunServer">
        <constructor-arg index="0" value="stun:turn.muhyal.com"/>
    </bean>


    <bean id="turn0" class="org.bigbluebutton.web.services.turn.TurnServer">
        <constructor-arg index="0" value="08rv75yhg9d"/>
        <constructor-arg index="1" value="turns:turn.muhyal.com:443?transport=tcp"/>
        <constructor-arg index="2" value="86400"/>
    </bean>
    
    <bean id="turn1" class="org.bigbluebutton.web.services.turn.TurnServer">
        <constructor-arg index="0" value="08rv75yhg9d"/>
        <constructor-arg index="1" value="turn:turn.muhyal.com:443?transport=tcp"/>
        <constructor-arg index="2" value="86400"/>
    </bean>

    <bean id="stunTurnService"
            class="org.bigbluebutton.web.services.turn.StunTurnService">
        <property name="stunServers">
            <set>
                <ref bean="stun0"/>
            </set>
        </property>
        <property name="turnServers">
            <set>
                <ref bean="turn0"/>
                <ref bean="turn1"/>
            </set>
        </property>
    </bean>
</beans>

Muhammed Bey’in , Belirttiği değişikliği yapmayı unutmayın.

Daha sonra bbb-check status kısmında bbb-web kısmı aktif ediliyor anlamıyor geliyormuş. kısa bir süre sonra sistem çalışmaya başladı.

Sanki öncekine göre daha hızlı gibi hissetim belkide psikolojiktir :smile:

Son olarak bugün video görüşmesinde görüntü çok aşırı donuyordu. Sorunun kaynayı kalabalık toplantıda kasmasın diye Bitrate oranlarını 40-50- ye indirmişim. :slight_smile: ondan kaynaklanıyormuş.

Şimdi Medium oranını 150 hight oranını 350 en üst ayarını 600’ e çektim. Görüntü kayıyor resmen :rofl:

Bitrate ayar kısmı
nano /usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml

buradan değiştirebilirsiniz.

Şimdi geldik can alıcı soruya turn serverin çalışıp çalışmadından nasıl emin olabiliriz :smiley:

Psikolojik değildir :slight_smile:

Şu adres, senin soruna yanıt olacaktır :+1:

https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/