.. post:: 2020-04-19 :category: training, linux :language: en .. meta:: :description: Using BigBlueButton for Online Training :keywords: online, training, linux, video, conference, virtual, classroom, remote Using BigBlueButton for Online Training ======================================= .. sidebar:: In this Article .. contents:: :local: It's the *Age of the Corona Virus*, and I have had opportunity to gain a little experience with :doc:`Microsoft Teams ` and `Zoom `__ recently. I now know that doing my :doc:`trainings ` online *is definitely possible* - it is more a matter of attitude [#need_attitude]_ than a technical problem. Plus: I strongly believe that it is a shame I haven't pursued this before. This post is an attempt at correcting that. Microsoft Teams' and Zoom's focus are online meetings and collaboration. Moreover, both are *hosted* solutions - you do not setup software and servers, but rather throw in money **and/or data** and be done. A different thing is `BigBlueButton `__: it focuses on *online teaching* which makes it perfect for my needs. If you care about trust, it has the benefits that * Software is `open source `__ * You can easily install and host it yourself, which is what this article describes. It is also possible to spend money and let somebody else do that; see below. Installing and hosting a solution that beats - *I mean it* - Teams and Zoom might sound like *a lot of work*. Just how much work that is, is the topic of this article. TL;DR ----- **First: not a lot of work!** I have setup a fully functional BigBlueButton instance out there in the cloud in less than an hour (including cloud). And for sure I am not a talented admin. **Second: it just works!** With the focus on online training, features include * Video and audio sharing * Client runs in the browser; participants do not need to install anything * Whiteboard * Chats (class wide and one-to-one) * Breakout rooms * Fine grained (though easy) administration of users and rooms With this, BigBlueButton *beats any of the above* regarding feature set and stability. Note that I do not intend to provide video streaming to hundreds of thousands, for example, so I cannot say anything about BigBlueButton in that regard. Background Information ---------------------- For the curious, here's some meta information along with links I have gathered while curiously reading around. **License**. BigBlueButton is licensed under the `LGPL `__. See `here `__ for more. **Source Code** is `hosted on GitHub `__. **Commercial support**. `Blindside Networks `__ is the company who governs development. Along with a `number of other companies `__, they provide support and hosting. **Web client, architecture**. The native HTML5 client is `relatively new `__, though exceptionally stable across modern browsers. It heavily depends on the browser's `WebRTC `__ support. Before that, BigBlueButton used `Flash `__ for their UI; these times have come to an end fortunately, due to Flash's long and painful death. There is more to it than just the browser, naturally - see their `architecture `__ for more. Hosting Setup ------------- I admit I am not a great admin. Programming is fine, and I understand what The Internet and firewalls are, but maintaining machines and networks is not something I'm good at, or even like. Consequentially, I have kept myself out of this business as much as I can. For example, I have never created a machine in the cloud - knowing that I couldn't avoid it indefinitely. Time has come, and in case you are in the same position, then I can tell you it is not rocket science. Here's what I used for the test setup in this article. * **Cloud**. `Google Cloud Platform `__ lets you `setup a VM `__ in no time. (Others sure do too.) * **SSL/TLS**. BigBlueButton's client runs in the browser (using `WebRTC `__) which is cool. This requires that the browser access camera and microphone though - browsers do this only when the connection is secured by TLS. Long story short: I decadently let the install script generate me a certificate from `Let's Encrypt `__. (This matters when it comes to firewall settings.) * **Domain name**. At my DNS provider, I reserved ``bbb.faschingbauer.co.at``; I'll use this domain name in the rest of the article. What follows are the parameters of the VM I provisioned at GCP. Note that this is only a first shot, so don't take this as real expertise. * **Machine type**. ``n1-standard-8`` has 8 CPUs and 30G of RAM; this should suffice. * **Boot disk**. Default is Debian, but BigBlueButton requires Ubuntu 16.04 LTS - change it accordingly. I gave it 500GB of disk space while I was at it (10GB appeared a little sparse when it comes to recording meetings). * **External IP address**. Create a static IP. This is where I point the DNS address (``A``) record for ``bbb.faschingbauer.co.at``. * **Firewall** (initial setting). HTTP and HTTPS. HTTPS is mandatory (see above). HTTP is necessary for automatic Let's Encrypt certificate issuance during the BigBlueButton installation. You can remove the rule when done, or `simply leave it in place `__. With this, you create the machine. Once that is done, add another firewall rule, * **Firewall** (again): permit UDP port range 16384-32768. Firewall settings are important; here's what I have, .. image:: gcp-firewall.png Now login to the machine via SSH (clickable in the GCP window). BigBlueButton Installation -------------------------- At first I followed the `step-by-step instructions `__, but soon lost track. If you don't have a good understanding of the architecture, following the `step-by-step instructions `__ might easily lead to mistakes such as letting TCP/7443 through your firewall. At some point I decided that I do *not* have to understand everything, and switched to the decadent `installation script `__. Here I deviate a bit from the `suggestions made for installation script usage `__. Not wanting to pipe the internet into ``bash`` (as root), I download the script first and check what it does (as normal user), .. code-block:: console jf@bbb:~$ wget https://ubuntu.bigbluebutton.org/bbb-install.sh jf@bbb:~$ less bbb-install.sh jf@bbb:~$ chmod 755 bbb-install.sh jf@bbb:~$ ./bbb-install.sh -h ... -v Install given version of BigBlueButton (e.g. 'xenial-220') (required) -s Configure server with -l Install Let's Encrypt certificate (required) -e Email for Let's Encrypt certbot -g Install Greenlight ... Pure decadence from now on. I even let the script install a `LetsEncrypt `__ certificate for me. (I named the machine ``bbb``, and my login name is ``jf``, hence the prompt shows ``jf@bbb``.) .. code-block:: console jf@bbb:~$ sudo ./bbb-install.sh \ -v xenial-220 \ -s bbb.faschingbauer.co.at \ -l \ -e jf@faschingbauer.co.at \ -g After roughly 15 minutes, all is set up. Next, an administrator must be created so you can point your browser at it and do something meaningful. Apparently, the installation script does not do that automatically, so one has to manually correct this minor hiccup. Login to the machine (with GCP, you just click on the ``SSH`` field in your VM instance listing), and .. code-block:: console jf@bbb:~$ sudo -i root@bbb:~# cd ~jf/greenlight/ root@bbb:/home/jf/greenlight# docker exec greenlight-v2 bundle exec rake admin:create Account succesfully created. Email: admin@example.com Password: administrator Role: admin PLEASE CHANGE YOUR PASSWORD IMMEDIATELY root@bbb:/home/jf/greenlight# Done. Point the browser at ``https://bbb.faschingbauer.co.at``, and you'll see BigBlueButton's front page. .. image:: bbb-front.jpg :scale: 80% .. danger:: As they say, **PLEASE CHANGE YOUR PASSWORD IMMEDIATELY** Login as stated above ``admin@example.com``, password ``administrator``, and modify these credentials to something more secure. Functionality Check ------------------- Creating a room for a meeting is as easy as clicking on a big fat button, .. image:: bbb-room-create.png :scale: 120% Here's a screenshot from a tryout session that I had with the kids. Video and audio quality no different from other tools, from a layman's perspective. No glitches. .. image:: bbb-family.jpg :scale: 70% I haven't used the tool for a real-life training yet, as of 2020-04-21. What I did though, together with the kids, is to try out some of the features that I knew I am going to use in future trainings, like * Whiteboard * Chats * Breakout rooms **Really cool. All there, all working.** There's no point in reproducing the steps here in this article. I suggest you take yourself a few minutes to try all those out. All I can say is that using BigBlueButton is absolutely simple - which usually means that it is well thought-out. The Internet (in its Youtube incarnation) has a number of tutorials for basic and advanced usage. I cite some of them here; they answer any question I could have had (as well as those I couldn't). * `"BigBlueButton overview for moderator/presenters (with breakout rooms) in BigBlueButton" `__. By Fred Dixon, BigBlueButton project leader. * `"BigBlueButton (AKA Canvas Conferences) - Student Tutorial" `__. By Bradley Schreffler who has a number of good videos. I strongly suggest you suggest your students to invest a few minutes upfront, to see what they're up to. * `"BigBlueButton - Frequently Asked Questions" `__. Bradley Schreffler, clearing up a number of questions. * `"BigBlueButton - Advanced and Interactive Features" `__. Bradley Schreffler on a couple of not-so-obvious features. This list is by far not exhaustive; look out for yourself if you have questions. What Else? ---------- This article only covers my personal needs - those of a part-time trainer who gives online trainings from time to time. There is more to be had from BigBlueButton though, only some of which I list here. * It integrates with `Moodle `__; see `here `__ for more. * It integrates with `a large number of other systems `__ that I have never heard of. * Apparently the developers have good taste, which can be seen from `the API they provide `__. It looks like the Corona era will not come to an end as fast as we might wish. Many people like me are currently looking for a way to carry on with their business, only in its online form. Whatever it will look like, my hope is that some of it will make its way into normality - whatever the definition of normality will be once we have returned to "business as usual". BigBlueButton and the set of involved companies have no marketing budget large enough to advertise their services on TV. Nevertheless, they are able to provide a viable alternative to those who just shout loud enough. .. rubric:: Footnotes .. [#need_attitude] It's not like my online training capabilities are perfect. Not even my face to face capabilities are.