After the success of the Ensemble project based on the Jitsi video conferencing solution, the Scaleway teams wanted to go further in terms of functionalities with a new BigBlueButton video conferencing solution. This new solution, more complete and less dependent on the client platform, is installed directly on our physical BareMetal servers.

What was accomplished with Jitsi

Videoconferencing platforms have become crucial for keeping in touch with your loved ones and for working remotely. With this in mind and, as soon as lockdown was announced, Scaleway put the open source and sovereign video conferencing solution, Jitsi, at the service of the community for the duration of the Covid-19 crisis.

Free, open-source and sovereign, [Jitsi videoconferencing powered by Scaleway] (https://ensemble.scaleway.com/) aims to provide Jitsi servers capable of handling a large load of video bridge requests. Indeed, all Jitsi instances are constantly monitored in order to track their capacity to absorb peak loads. This allows us to ensure that each user connects to the least used instance to create a virtual room and launch a call.

Today, the stateless API consists of a Front in React and an API that queries a Prometheus (every 30 seconds) to get a list of all available Jitsi servers and their current CPU usage.

The web application then selects the Jitsi server with the less charged CPU and returns the URL to the user. Thanks to this URL, the user can easily connect to the Jitsi server and start enjoying the call with optimal sound and video quality. All Jitsi servers are deployed on Scaleway Elements instances that can hold a large number of simultaneous video bridges.

Why offer an alternative to Jitsi with BigBlueButton?

The ensemble.scaleway video conferencing solution remains available and free of charge until the end of July 2020. Looking for an alternative to Jitsi, Scaleway decided to use BigBlueButton, a videoconferencing system originally developed for remote learning. The web application is based on HTML5 and does not require the installation of any software or plugin.

BigBlueButton is available under an open source license and does not require any additional installation on client devices such as Windows, MacOS, Linux, Android, iOS. We also chose this solution because it is more robust and highly available. It also offers many collaborative features such as :

  • A whiteboard
  • Slide sharing
  • Screen sharing
  • Requests to speak
  • Creation of breakout meeting rooms
  • Private chat between participants

BigBlueButton is conceived for videoconference calls with large numbers of participants. With no limits on the number of users and often high traffic spikes, the solution shows no signs of weakness. The platform has the advantage of being as stable and easy to use as other popular video conferencing solutions, with the added option of controling participant permissions, for example. In order to ensure stability Scaleway has chosen very large servers for its back-end infrastructure rather than several smaller ones, and has therefore opted for powerful BareMetal servers with a hardware configuration using no hypervisor or virtualization layer.

How did we configure BigBlueButton powered by Scaleway?

BigBlueButton recommends a direct installation on a physical server, so we started with a GP-BM1-M Bare Metal server cluster. This cluster has the following characteristics in terms of hardware configuration:

  • CPU: 1× Intel® Xeon E3 1240v6 - 4C 8T - 3.7 GHz
  • RAM: 64 GB
  • Storage: 3×1 TB
  • Bandwidth: 500 Mbit/s

The team provided an Ubuntu image with BigBlueButton automatically configured. The installation was done thanks to a script freely available on github.

Step One: The Terraform module

Terraform is an infrastructure tool that we also used for the Jitsi platform. It allows the management of all cloud resources in a declarative paradigm (infrastructure as code). It is the BareMetal module in particular that creates each dedicated server within the BigBlueButton cluster. The plugin will take the ID of the image specially created for the occasion into parameter.

resource "scaleway_baremetal_server_beta" "bbb" {
  for_each = local.instances

  zone          = "fr-par-2"
  offer       = "GP-BM1-M"
  os_id       = "3ea52186-1e57-499e-8146-ab38051a5c10"
  ssh_key_ids = [
    data.scaleway_account_ssh_key.user1.id,
    data.scaleway_account_ssh_key.user2.id,
    data.scaleway_account_ssh_key.user3.id,
  ]
}

The rest of the ensemble-bbb.scaleway infrastructure consists of compute instances:

  • 2 x DEV1-L (NGINX, React frontend, BigBlueButton proxy)
  • 1 x DEV1-L (Prometheus)

Step Two: Room allocation

Just as for the Jitsi solution, we have a frontend in React which allows contact with an internal API via a single interface to create a room on one of the many servers.

BigBlueButton includes a user and room owner registration mechanism. To avoid each user having to register on each node to create or join a room, we have made this part transparent by providing the user with two api routes that he can provide to his participants. One route to log in as a room moderator and the other as a simple participant.

As mentioned above, the API regularly queries each BigBlueButton server to retrieve the number of rooms and participants, which allows for an equal load balancing on the cluster.

Step Three: Getting all the benefits of ensemble.scaleway.com's integration

A technical post, "Building a scalable video conferencing solution in a single day, using Jitsi and Scaleway Elements" illustrates in detail the tools, deployment and integration of the ensemble.scaleway.com solution. The same Scaleway products and components were used for the implementation of BigBlueButton.

Scaleway Registry: The API and the React frontend run in two containers and both are hosted on a private Scaleway Registry. Once stored on the registry, images can be retrieved in the instance using a deamon controlled by docker-compose to run the application.

Scaleway Load-Balancer: The Load Balancers will automatically forward requests to our API servers based on resource availability. Our API servers provide information on the current load of each BigBlueButton server to ensure that the user has the most available server.

Scaleway Placements Groups: As part of our application, we want to make sure that the API servers are as available as possible. So we have activated the max_availability mode.

Scaleway Security Groups: On the API instances, we have only allowed HTTPS and SSH remote access connections. Conversely, on the BigBlueButton servers, only the SSH ports and those necessary for BigBlueButton to work are allowed.

Scaleway Domains: We have generated a wildcard certificate for all sub-domains of ensemble-bbb.scaleway.com. Each BigBlueButton server receives its certificate which is used by their Nginx server to manage HTTPS connections.

The Next Steps

Scaleway continues to work actively on both https://ensemble.scaleway.com/ and https://ensemble-bbb.scaleway.com/ to support as many people as possible during this difficult time. To find out more, feel free to test the BigBlueButton powered by Scaleway solution today, read our documentation on the subject or create your first BareMetal server.