BigBlueButton behind NAT

Even if it is not advised to have this software behind NAT, I just wanted to do so for some reasons that are not the scope of this post.

Since I think thate the BigBlueButton documentation regarding NAT is not clear and complete, I had a very bad time to install a single server.

As soon ad you understand that BigBlueButton is the integration of several instruments, you start to understand how to manage it.

So, after following the instructions, I had a system with no audio, then with audio but not able to use webcam and screen share (it is the same component indeed)

Now follows the changes I made to a fresh 2.2 BigBlueButton install.

First of all you have to have an alias on loopback address with the public ip address just to make things work properly and to have the following parameters effective.

in /etc/network/interfaces add

auto lo:0
iface lo:0 inet static
        address PUBLIC_IP
        netmask 255.255.255.255

then restart networking and make sure that the IP is shown like this

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet PUBLIC_IP/32 brd 195.36.13.101 scope global lo:0
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever

/opt/freeswitch/etc/freeswitch/sip_profiles/external.xml

<param name="ext-rtp-ip" value="PUBLIC_IP"/>
<param name="ext-sip-ip" value="PUBLIC_IP"/>

<param name="ws-binding"  value="PUBLIC_IP:5066"/>
<param name="wss-binding"  value="PUBLIC_IP:7443"/>

/opt/freeswitch/etc/freeswitch/sip_profiles/internal.xml

<param name="ext-rtp-ip" value="PUBLIC_IP"/>
<param name="ext-sip-ip" value="PUBLIC_IP"/>

/opt/freeswitch/etc/freeswitch/vars.xml

<X-PRE-PROCESS cmd="set" data="bind_server_ip=PRIVATE_IP"/>
<X-PRE-PROCESS cmd="set" data="external_rtp_ip=PUBLIC_IP"/>
<X-PRE-PROCESS cmd="set" data="external_sip_ip=PUBLIC_IP"/>

/usr/local/bigbluebutton/bbb-webrtc-sfu/config/default.yml

freeswitch:
  ip: PUBLIC_IP
  sip_ip: PUBLIC_IP

/etc/bigbluebutton/nginx/sip.nginx

proxy_pass https://PUBLIC_IP:7443;

/etc/kurento/modules/kurento/WebRtcEndpoint.conf.ini

externalIPv4=PUBLIC_IP

Hope this will help someone because of the need in this COVID-19 pandemic because more people will need remote teaching and conferencing. BigBlueButton is a great software and very easy interface and this my notes make possibile to install it on premises even if you prefer to have the server on which BigBlueButton is hosted behind NAT.

Posted in OPS

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.