Fehler 1009: STUN/TURN-Konfiguration konnte nicht abgerufen werden

Fehler 1009 tritt auf, bevor BigBlueButton überhaupt versucht, eine Audio-Verbindung aufzubauen. Der Browser-Client kann die STUN/TURN-Serverkonfiguration nicht vom BBB-Server abrufen und bricht den Verbindungsaufbau sofort ab. Ohne diese Konfiguration lässt sich WebRTC nicht initialisieren.

Wie äußert sich der Fehler?

Beim Versuch, dem Audio-Raum beizutreten, erscheint die Fehlermeldung mit dem Code 1009. Der Fehler zeigt sich direkt beim Verbindungsaufbau – es wird kein Mikrofon angesprochen, keine Verbindung zum Sprachserver versucht. Im Hintergrund schlug ein HTTP-Aufruf an den Endpunkt /bigbluebutton/api/stuns fehl, über den BBB-Web die Liste der STUN- und TURN-Server an den Client übermittelt.

Mögliche Ursachen

  • CORS-Blockierung: Der BBB-Client wird von einer anderen Domain ausgeliefert als der BBB-Server. Der Browser blockiert den API-Aufruf, weil der Server keinen passenden Access-Control-Allow-Origin-Header sendet. Dies ist der häufigste Auslöser in LMS-Integrationen.
  • Versions-Inkompatibilität: Ein neuerer HTML5-Client verbindet sich mit einem älteren BBB-Server, der die STUN/TURN-Daten in einem anderen Format zurückgibt (z. B. Objekt statt Array).
  • Kein HTTPS: Chrome und andere moderne Browser erlauben Mikrofon-Zugriff nur über gesicherte Verbindungen. Ohne HTTPS schlägt die WebRTC-Initialisierung fehl.
  • Fehlerhafte STUN/TURN-Konfiguration: Die Datei /etc/bigbluebutton/turn-stun-servers.xml ist leer, enthält ungültige Einträge oder verweist auf einen unzuverlässigen STUN-Server wie stun.freeswitch.org.
  • Vorübergehender Netzwerkausfall: Ein kurzer Verbindungsabbruch während des API-Abrufs kann denselben Fehler auslösen.

Lösungen

Für Teilnehmer

  1. Seite neu laden und erneut versuchen, dem Audio beizutreten – ein kurzzeitiger Netzwerkfehler kann der Auslöser gewesen sein.
  2. Prüfen Sie, ob die Seite über HTTPS geöffnet ist (Schloss-Symbol in der Adressleiste). Über HTTP funktioniert WebRTC in modernen Browsern nicht.
  3. Versuchen Sie es mit einem anderen Browser (z. B. Chrome oder Firefox in der aktuellen Version).
  4. Wechseln Sie das Netzwerk (z. B. von WLAN auf mobiles Datennetz) – manche Firewalls oder Router blockieren bestimmte API-Endpunkte.
  5. Falls Audio nicht möglich ist, können Sie vorübergehend als stiller Zuhörer (Listen-Only) beitreten.

Für Administratoren

  1. API-Endpunkt prüfen: Rufen Sie den /stuns-Endpunkt manuell ab und kontrollieren Sie, ob die Antwort die Felder stunServers und turnServers als Arrays enthält:
curl -s "https://ihre-bbb-instanz.example.com/bigbluebutton/api/stuns?sessionToken=TEST" | python3 -m json.tool
  1. STUN-Server ersetzen: Falls stun.freeswitch.org in der Konfiguration steht, ersetzen Sie diesen durch einen zuverlässigen Server. Bearbeiten Sie /etc/bigbluebutton/turn-stun-servers.xml:
<bean id="stunServer" class="org.bigbluebutton.web.services.turn.StunServer">
    <constructor-arg index="0" value="stun:stun.l.google.com:19302"/>
</bean>
  1. CORS-Header hinzufügen (Cross-Domain-Betrieb): Wenn der BBB-Client von einer anderen Domain ausgeliefert wird, muss nginx den entsprechenden CORS-Header setzen:
location /bigbluebutton/api/stuns {
    add_header 'Access-Control-Allow-Origin' 'https://ihre-frontend-domain.com';
    proxy_pass http://127.0.0.1:8080;
}
sudo systemctl reload nginx
  1. HTTPS-Konfiguration überprüfen:
sudo bbb-conf --check | grep -i "https\|ssl\|certificate"
sudo nginx -t
  1. Client- und Server-Versionen synchronisieren: Bei einem Versions-Mismatch zwischen HTML5-Client und BBB-Server hilft ein vollständiges Update:
sudo apt-get update && sudo apt-get dist-upgrade
sudo bbb-conf --check && sudo bbb-conf --restart

Weitere Informationen

Ab BBB 2.6 ist coturn standardmäßig im BBB-Paket enthalten, sodass Fehler 1009 bei Standardinstallationen seltener auftritt. Bei BBB 2.5 und neuer befindet sich die STUN/TURN-Konfiguration für mediasoup zusätzlich in /etc/bigbluebutton/bbb-webrtc-sfu/production.yml. Änderungen an turn-stun-servers.xml werden bei Updates nicht überschrieben und bleiben dauerhaft erhalten.