BigBlueButton v2.6 on Docker(v2.4からのアップデート、IPv6対応)

トラブルシュート


Configure mediasoup to use IPv6

mediasoup (bbb-webrtc-sfu) does not come with a IPv6 enabled by default when installed either via packages or bbb-install.

To configure IPv6, bbb-webrtc-sfu’s override configuration file (located in /etc/bigbluebutton/bbb-webrtc-sfu/production.yml) should be used.

See Updating mediasoup for instructions and examples on how to do so.

Notice the listenIps key is an array. If you need mediasoup to work with IPv6 as well, don’t forget to add another entry to that array with it. For example: in a BigBlueButton server with a public IPv4 192.0.2.0 and IPv6 2001:db8::, the configuration should be of the following format (YAML syntax, /etc/bigbluebutton/bbb-webrtc-sfu/production.yml):

mediasoup:
  webrtc:
    listenIps:
      - ip: 0.0.0.0
        announcedIp: 192.0.2.0
      - ip: 2001:db8::

Configure BigBluebutton/FreeSWITCH to support IPV6​

The HTML5 client now enables users on mobile devices to connect to a BigBlueButton server. However, on some cellular networks iOS devices only receive an IPV6 address.

To enable BigBlueButton (FreeSWITCH) to accept incoming web socket connections on IPV6, the BigBlueButton server must have an IPV6 address. You also need to make the following changes to the server.

First, create the file /etc/nginx/conf.d/bigbluebutton_sip_addr_map.conf with this content:

map $remote_addr $freeswitch_addr {
    "~:"    [2001:db8::1];
    default    192.0.2.1;
}

Docker Composeで運用する場合には、Docker NetworkにIPv6アドレスも付与し、そのアドレスを指定すること。

map $remote_addr $freeswitch_addr {
    "~:"    [fdxx:xx:xx::1];
    default    10.7.7.1;
}

replacing the ip addresses 192.0.2.1 with the system’s external IPV4 addresses, and replace 2001:db8::1 with the system’s external IPV6 address. Next, edit the file /etc/bigbluebutton/nginx/sip.nginx to have the following:

proxy_pass https://$freeswitch_addr:7443;

Next, ensure all of the following params are present in freeswitch’s sip_profiles/external-ipv6.xml:

  • ws-binding
  • wss-binding
  • rtcp-audio-interval-msec
  • rtcp-video-interval-msec
  • dtmf-type
  • liberal-dtmf
  • enable-3pcc

If any are missing, copy them from sip_profiles/external.xml, then restart BigBlueButton (sudo bbb-conf --restart).


mediasoup is the default in 2.5. Why is Kurento still around?

Because Kurento is still used for stream recording. It should be removed as a dependency as soon as this issue is addressed.

WebRTCではデフォルトでMediasoupが使用されているためKurentoの環境変数の設定は必要ありません。Kurentoは現時点でストリーミングのレコーディング用途でのみ使用されています。

:bangbang: Note) KurentoのDocker Composeファイルで設定できる環境変数は以下参照のこと。

Configuration — Kurento 7.3-dev documentation


WebRTC errors (1001, 1002,…)

https://github.com/bigbluebutton/bigbluebutton/issues/2628

  • 1001: WebSocket disconnected - The WebSocket had connected successfully and has now disconnected. Possible Causes:
    • Loss of internet connection
    • Nginx restarting can cause this
  • 1002: Could not make a WebSocket connection - The initial WebSocket connection was unsuccessful. Possible Causes:
    • Firewall blocking ws protocol
    • Server is down or improperly configured
    • See potential solution here.
  • 1003: Browser version not supported - Browser doesn’t implement the necessary WebRTC API methods. Possible Causes:
    • Out of date browser
  • 1004: Failure on call - The call was attempted, but failed. Possible Causes:
    • For a full list of causes refer here
    • There are 24 different causes so I don’t really want to list all of them
    • Solution for this issue outlined here.
  • 1005: Call ended unexpectedly - The call was successful, but ended without user requesting to end the session. Possible Causes:
    • Unknown
  • 1006: Call timed out - The library took too long to try and connect the call. Possible Causes:
    • Previously caused by Firefox 33-beta on Mac. We’ve been unable to reproduce since release of FireFox 34
  • 1007: ICE negotiation failed - The browser and FreeSWITCH try to negotiate ports to use to stream the media and that negotiation failed. Possible Causes:
    • NAT is blocking the connection
    • Firewall is blocking the UDP connection/ports
  • 1008: Call transfer failed - A timeout while waiting for FreeSWITCH to transfer from the echo test to the real conference. This might be caused by a misconfiguration in FreeSWITCH, or there might be a media error and the DTMF command to transfer didn’t go through (In this case, the voice in the echo test probably didn’t work either.)
  • 1009: Could not fetch STUN/TURN server information - This indicates either a BigBlueButton bug (or you’re using an unsupported new client/old server combination), but could also happen due to a network interruption.
  • 1010: ICE negotiation timeout - After the call is accepted the client’s browser and the server try and negotiate a path for the audio data. In some network setups this negotiation takes an abnormally long time to fail and this timeout is set to avoid the client getting stuck.
  • 1020: Media cloud could not reach the server - See how to solve this here.

https://github.com/bigbluebutton/bigbluebutton/issues/16909


I’m having troubles seeing webcams or screen sharing in Firefox

Firefoxでの1020エラーに対する対応策だが効果なし。Chrome、Braveでは問題なし。アンドロイド版Braveでは 設定->サイトの設定->マイクとカメラの使用許可 を与えること。

mod/html5/bbb-html5.yml

public:
  media:
    forceRelayOnFirefox: true

https://github.com/bigbluebutton/bigbluebutton/issues/16614