AWS Open Source Blog
Deploying open source web conferencing solution BigBlueButton on AWS
Major advancements in technology have drastically changed how and where we conduct business. Pushed by the increased number of employees working remotely, the globalization of businesses, and the rise of instant, on-demand communications, technology has had to adapt. For modern and innovative businesses to grow and globalize, building and maintaining quality relationships with partners, suppliers, internal teams, investors, and customers is essential. Video conferencing is an essential solution for companies, especially those with remote employees and companies that have taken “work-from-home” measures. There are a variety of online professional video conferencing services that offer different pricing plans for companies of all sizes.
Some businesses, however, may prefer to use open source technologies to build a web conferencing solution. BigBlueButton is one open source option for organizations looking to build a powerful web conferencing solution. The power of BigBlueButton lies in its capabilities—it supports real-time sharing of slides, audio, video, chat, and desktops. BigBlueButton also offers online classroom tools, such as whiteboard mark-up for annotating presentations in real time. BigBlueButton can record content for later playback—for example, for students who may have missed a class. Importantly for learning institutions, BigBlueButton integrates seamlessly with major learning management systems, such as Moodle, Canvas, and Jenzabar.
In this post, we explore how to deploy a BigBlueButton application server on a single Amazon Elastic Compute Cloud (Amazon EC2) c5.2xlarge instance. This supports around 200 concurrent users (maximum 100 recommended in one session) and provides the Greenlight web interface in an AWS environment with core functionality.
If you are looking to build and deploy a scalable BigBlueButton setup, follow the blog post “How to build a scalable BigBlueButton video conference solution on AWS.” If you want advanced functionality, you can work with the maintainers and community behind BigBlueButton. Follow the documentation to set up those advanced features on the GitHub repository. We will not cover either in this tutorial.
Introduction to BigBlueButton
BigBlueButton is an open source web conferencing system designed for online learning. BigBlueButton offers a pure HTML5 client. It has the core features you would expect in a commercial web conferencing system, but under an open source license. The features include real-time sharing of audio, video, presentation, and screen, along with collaboration tools such as a whiteboard, shared notes, public/private chat, and polling.
Check out the BigBlueButton documentation for more details on the latest versions and features. Visit GitHub to access the full BigBlueButton source code.
In this tutorial, we use the Greenlight (2.0) application as an interface for BigBlueButton application management. Greenlight is a Ruby on Rails application that provides a simple interface for users to create rooms, start meetings, and manage recordings. Refer to the Greenlight documentation to learn more.
Deploying BigBlueButton on Amazon EC2
Prerequisites
We need the following to complete this tutorial:
- AWS account: We configure services throughout this tutorial, so we need an account with a user that can provision those services.
- DNS provider: We must register our application via DNS, as we must obtain an SSL certificate. We can use Amazon Route 53 or other DNS providers.
Note: BigBlueButton can get up and running without using a DNS. However, users may face SSL errors in the browser, and issues with the webcam and microphone.
Step 1: Creating SSH key pair
Optional: Users can use existing SSH key pairs so long as there is access to them.
- Navigate to the Amazon EC2 console.
- In the navigation pane, for Network & Security, choose Key Pairs.
- Choose Create key pair.
- For Name, enter a descriptive name for the key pair. Amazon EC2 associates the public key with the name that we specify as the key name. A key name can include up to 255 ASCII characters. It can’t include leading or trailing spaces.
- For File format, choose the format in which to save the private key. To save the private key in a format that can be used with OpenSSH, choose pem. To save the private key in a format that can be used with PuTTY, choose ppk.
- Choose Create key pair.
- The private key file is automatically downloaded by our browser. The base file name is the name specified as the key pair. The file name extension is determined by the chosen file format. Save the private key file in a safe place. Note: This is the only chance to save the private key file.
- If using an SSH client on a macOS or Linux computer to connect to the Linux instance, use the following command to set the permissions of the private key file so that only you can read it:
chmod 400 my-key-pair.pem
If we do not set these permissions, then we cannot connect to our instance using this key pair. For more information, see Error: Unprotected private key file.
Step 2: Allocate Elastic IP address
To ensure that our instance keeps its IP during any restarts that might happen, we configure an Elastic IP address.
- Open the Amazon EC2 console.
- In the navigation pane, choose Elastic IPs.
- Choose Allocate Elastic IP address.
- For Public IPv4 address pool, choose the following:
- Amazon’s pool of IP addresses—If we want an IPv4 address to be allocated from Amazon’s pool of IP addresses.
- Choose Allocate.
Step 3: Creating a record in Route 53
Optional: If using a third-party DNS provider, skip this step. However, be sure to configure the Elastic IP address allocated as an A record in the DNS.
- Open the Route 53 console.
- In the navigation pane, choose Hosted zones.
- Choose the public hosted Domain Name where we want to create the A Record.
- In Records, Create record.
- Choose Routing policy, Simple routing, Next.
- In Configure records, choose Define simple record.
- In Define simple record, provide Record name. This is the subdomain name we use for the BigBlueButton application.
- In Value/Route traffic to, choose IP address or another value depending on the record type.
- Enter the Elastic IP Allocated in Step 2 in the space provided.
- Choose Define simple record, Create records.
Step 4: Creating and configuring your VPC
To deploy the BigBlueButton application, we need a VPC with a public subnet.
Optional: If there already is a VPC in the AWS Region in which we want to deploy our BigBlueButton application, we can use an existing one. Or, use the following steps to create a new VPC using the VPC wizard.
The wizard creates a VPC with a single public and a single private subnet in a single Availability Zone.
Create an Elastic IP address for the NAT Gateway
A NAT Gateway requires an Elastic IP address in the public subnet, but the VPC wizard does not create one. Create the Elastic IP address before running the VPC wizard.
- Open the Amazon VPC console.
- In the left navigation pane, choose Elastic IPs.
- Choose Allocate Elastic IP address, Allocate, Close.
- Note that the Allocation ID for the newly created Elastic IP address; we enter this later in the VPC wizard.
Run the VPC Wizard
The VPC wizard automatically creates and configures most of the VPC resources for us.
- In the left navigation pane, choose VPC Dashboard.
- Choose Launch VPC Wizard, VPC with Public and Private Subnets, Select.
- For VPC name, enter a unique name for the VPC.
- For Elastic IP Allocation ID, choose the ID of the Elastic IP address that we created earlier.
- Choose Create VPC.
- When the wizard is finished, choose OK. Note the Availability Zone in which the VPC subnets were created. The additional subnets should be created in a different Availability Zone.
Modify the public subnet’s IPv4 addressing behavior
- In the left navigation pane, choose Subnets.
- Select the public subnet for the VPC. By default, the name created by the VPC wizard is Public subnet.
- Choose Actions, Modify auto-assign IP settings.
- Select Enable auto-assign public IPv4 address, and then choose Save.
Step 5: Deploy the AWS CloudFormation template
The AWS CloudFormation template deploys an Amazon EC2 instance and runs the necessary scripts to configure our instance with the BigBlueButton application. This is an automated deployment of the BigBlueButton application, and there are no further configurations required to set up BigBlueButton.
To learn more about the manual steps to deploy and configure BigBlueButton, follow the install guide.
Using our account, we can launch this CloudFormation stack in the following AWS Regions:
To deploy the CloudFormation template:
- Enter the value of the parameter name.
- AssociatedVPC: Obtained from step 4
- Public Subnet: Obtained from step 4
- Key Pair: Obtained from step 1
- Elastic IP Allocation ID: Obtained from step 2
- SubDomain: DNS created in step 3
- After all values are entered in the CloudFormation stack, navigate to and acknowledge the check box.
- Choose Create Stack. It takes approximately 30 minutes for the CloudFormation stack to complete.
- After creation is complete, navigate to the Outputs tab and copy the Endpoint value. Our BigBlueButton application is hosted at this endpoint.
- Enter this endpoint in the browser and see the BigBlueButton with Greenlight interface deployed.
Optimizing costs
We do not need to run this 24/7. Consider using something like the Amazon EC2 instance scheduler to automate the shutting down and restarting of the instance to save costs.
Clean up
Once we do not need these capabilities, delete the CloudFormation stack, the DNS records, the Elastic IP address, and the configured VPC.
Conclusion
In this post, we discussed how developers and architects can use an AWS CloudFormation template to deploy a BigBlueButton application along with the Greenlight interface. This solution removes the complexity of building the development steps manually. We are now equipped to construct a solution in our own environment and demo it to end users.
BigBlueButton provides real-time sharing of audio, video, slides, chat, and screen. This web conference system can be used directly on various platforms, such as computers, mobile phones, and tablets. It can be combined with existing learning management systems, such as Moodle, to make it an e-learning system.