BASH script to install BigBlueButton in 30 minutes.
To help you set up a BigBlueButton server (or upgrade an existing one),
bbb-install.shis a shell script that automates the step-by-step instructions for installing and configuring a BigBlueButton 2.2 server. In many cases,
bbb-install.shcan fully install and configure your BigBlueButton server, making it ready to use in under 30 minutes (depending on your server's internet speed to download and install packages).
For example, to install the latest build of BigBlueButton 2.2 on a new 64-bit Ubuntu 16.04 server with a public IP address, a hostname (such as
bbb.example.com) that resolves to the public IP address, and an email address (such as
wget -qO- https://ubuntu.bigbluebutton.org/bbb-install.sh | bash -s -- -w -a -v xenial-22 -s bbb.example.com -e [email protected]
This command pulls down the latest version of
bbb-install.sh, sends it to the Bash shell interpreter, and installs BigBlueButton using the parameters provided:
-winstalls the uncomplicated firewall (UFW) to restrict access to TCP/IP ports 22, 80, and 443, and UDP ports in range 16384-32768,
-ainstalls the API demos (making it easy to do a few quick tests on the server),
-v xenial-22installs the latest build of BigBlueButton 2.2.x,
-ssets the server's hostname to be
-eprovides an email address for Let's Encrypt to generate a valid SSL certificate for the host.
Note: If your server is also behind an external firewall -- such as behind a corporate firewall or behind an AWS Security Group -- you will need to manually configure the external firewall to forward specific internet connections to the BigBlueButton server before you can launch the client.
When the above command finishes, you'll see a message that gives you a test URL to launch the BigBlueButton client and join a meeting called 'Demo Meeting'.
# Warning: The API demos are installed and accessible from: # # https://bbb.example.com # # and # # https://bbb.example.com/demo/demo1.jsp # # These API demos allow anyone to access your server without authentication # to create/manage meetings and recordings. They are for testing purposes only. # If you are running a production system, remove them by running: # # sudo apt-get purge bbb-demo
Open the URL in either Chrome or FireFox (recommended browsers). You should see a login to join the meeting 'Demo Meeting'.
Enter your name and click 'Join'. The BigBlueButton client should then load in your browser and prompt you to join the audio.
Note the web pages are served via HTTPS. The browsers now require this before allowing access to your webcam, microphone, or screen (for screen sharing) using the browser's built-in real-time communications (WebRTC) libraries. If you try to install BigBlueButton without specifying the
-eparameters, the client will not load.
bbb.example.comand email address
bbb-install.shto setup/upgrade your BigBlueButton server.
bbb-install.sh, you need to
bbb.example.com, that resolves to the external IP address of your server.
To set up your FQDN, purchase a domain name from a domain name registrar and web hosting provider, such as GoDaddy or Network Solutions. Once purchased, follow the steps indicated by your provider to create an
A Recordfor your FQDN that resolves to the public IP address of your server. (Check the provider's documentation for details on how to set up the
With your FQDN in place, you can then pass a few additional parameters to
bbb-install.shto have it:
If you install Greenlight, you'll have the ability to be the Greenlight administrator, giving you the ability manage user accounts.
The full source code for
bbb-install.shis here. To make it easy for anyone to run the script with a single command, we host the latest version of the script at https://ubuntu.bigbluebutton.org/bbb-install.sh.
There are many hosting companies that can provide you with dedicated virtual and bare-metal servers to run BigBlueButton. We list a few popular choices below (we are not making any recommendation here, just listing some of the more popular choices).
Other popular choices, such as ScaleWay (choose either Bare Metal or Pro servers) and Google Compute Engine, offer servers that are set up behind network address translation (NAT). That is, they have both an internal and external IP address. When installing on these servers, the
bbb-install.shwill detect the internal/external addresses and configure BigBlueButton accordingly.
Another popular choice is Amazon Elastic Compute Cloud. We recommend a
c5a.2xlarge(or larger) instance. All EC2 servers are, by default, behind a firewall (which Amazon calls a
security group). You will need to manually configure the security group before installing BigBlueButton on EC2 and, in a similar manner, on Azure and Google Compute Engine (GCE). (See screen shots in next section.)
bbb-install.shis unable to configure your server behind NAT, we recommend going through the step-by-step instructions for installing BigBlueButton (going through the steps is also a good way to understand more about how BigBlueButton works).
If you install BigBlueButton on a server behind a external firewall, such an Amazon's EC2 security group, you need to configure the external firewall to forward incoming traffic on the following ports:
If you are using EC2, you should also assign the server an Elastic IP address to prevent it from getting a new IP address on reboot.
On Microsoft Azure, when you create an instance you need to add the following inbound port rules to enable incoming connections on ports 80, 443, and UDP port range 16384-32768:
On Google Compute Engine, when you create an instance you need to enable traffic on port 80 and 443.
After the instance is created, you need to add a firewall rule to allow incoming UDP traffic on the port range 16384-32768.
We make a distinction here between the firewall installed with
-wand the external firewall on a separate server. Even with an external firewall, it is good practice to still install the UFW firewall on the BigBlueButton server.
Using Digital Ocean as an example, we put together this video to get you going quickly: Using bbb-install.sh to set up BigBlueButton on Digital Ocean.
Using Amazon EC2, see Install using bbb-install.sh on EC2.
You can get help by passing the
Script for installing a BigBlueButton 2.2 (or later) server in about 30 minutes.
This script also supports installation of a coturn (TURN) server on a separate server.
USAGE: wget -qO- https://ubuntu.bigbluebutton.org/bbb-install.sh | bash -s -- [OPTIONS]
OPTIONS (install BigBlueButton):
-v Install given version of BigBlueButton (e.g. 'xenial-22') (required)
-s Configure server with -e Email for Let's Encrypt certbot
-x Use Let's Encrypt certbot with manual dns challenges
-a Install BBB API demos -g Install Greenlight -c : Configure with coturn server at using
-m Create a Symbolic link from /var/bigbluebutton to
-p Use apt-get proxy at -r Use alternative apt repository (such as packages-eu.bigbluebutton.org)
-d Skip SSL certificates request (use provided certificates from mounted volume) -w Install UFW firewall
-h Print help
OPTIONS (install coturn only):
-c : Setup a coturn server with and (required) -e Configure email for Let's Encrypt certbot (required)
OPTIONS (install Let's Encrypt certificate only):
-s Configure server with (required) -e Configure email for Let's Encrypt certbot (required) -l Install Let's Encrypt certificate (required) -x Use Let's Encrypt certbot with manual DNS challenges (optional)
Sample options for setup a BigBlueButton server
-v xenial-22 -v xenial-22 -s bbb.example.com -e [email protected] -w -v xenial-22 -s bbb.example.com -e [email protected] -w -g -v xenial-22 -s bbb.example.com -e [email protected] -w -g -c turn.example.com:1234324
Sample options for setup of a coturn server (on a different server)
-c turn.example.com:1234324 -e [email protected]
bbb-install.shcan install a SSL/TLS certificate, you will need to provide two pieces of information: * A fully qualified domain name (FQDN), such as
bbb.example.com, that resolves to the public IP address of your server * An email address
When you have set up the FQDN, check that it correctly resolves to the external IP address of the server using the
dig bbb.example.com @184.108.40.206
Note: we're using
bbb.example.comas an example hostname and
With just these two pieces of information -- FQDN and email address -- you can use
bbb-install.shto automate the configuration of the BigBlueButton server with a TLS/SSL certificate. For example, to install BigBlueButton 2.2 with a TLS/SSL certificate from Let's Encrypt using
wget -qO- https://ubuntu.bigbluebutton.org/bbb-install.sh | bash -s -- -v xenial-22 -s bbb.example.com -e [email protected] -w
bbb-install.shscript will also install a cron job that automatically renews the Let's Encrypt certificate so it doesn't expire. Cool.
The default installation is meant to be for servers that are publicly available. This is because Let's Encrypt requires to access nginx in order to automatically validate the FQDN provided.
When installing BigBlueButton in a private network, it is possible to validate the FQDN manually, by adding the option
-xto the command line. As in:
wget -qO- https://ubuntu.bigbluebutton.org/bbb-install.sh | bash -s -- -v xenial-22 -s bbb.example.com -e [email protected] -w -x
Confirm the use of the email account.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o:
Confirm the use of the IP address ``` Are you OK with your IP being logged?
A challenge will be generated and shown in the console.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please deploy a DNS TXT record under the name _acme-challenge.bbb.example.com with the following value:
Before continuing, verify the record is deployed.
Press Enter to Continue
Before hitting Enter, create a TXT record in the DNS with the challenge that was generated.
_acme-challenge.bbb.example.com. TXT "0bIA-3-RqbRo2EfbYTkuKk7xq2mzszUgVlr6l1OWjW8" 60
The downside of this is that because Let's Encrypt SSL certificates expire after 90 days, it will be necessary to manually update the certificates. In that case an email is sent a few days before the expiration and the next command has to be executed through the console.
certbot --email [email protected] --agree-tos -d bbb.example.com --deploy-hook 'systemctl restart nginx' --no-bootstrap --manual-public-ip-logging-ok --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory certonly
You can install the API demos by adding the
wget -qO- https://ubuntu.bigbluebutton.org/bbb-install.sh | bash -s -- -v xenial-22 -s bbb.example.com -e [email protected] -w -a
Warning: These API demos allow anyone to access your server without authentication to create/manage meetings and recordings. They are for testing purposes only. Once you are finished testing, you can remove the API demos with
sudo apt-get purge bbb-demo.
Greenlight is a simple front-end for BigBlueButton written in Ruby on Rails. It lets users create accounts, have permanent rooms, and manage their recordings. It also lets you, as the administrator, manage the user accounts (such as approve or deny users).
You can install Greenlight by adding the
wget -qO- https://ubuntu.bigbluebutton.org/bbb-install.sh | bash -s -- -v xenial-22 -s bbb.example.com -e [email protected] -w -g
Once Greenlight is installed, it redirects the default home page to Greenlight. You can also configure GreenLight to use OAuth2 authentication.
To launch Greenlight, simply open the URL of your server, such as
https://bbb.example.com/. You should see the Greenlight landing page.
To set up an administrator account for Greenlight (so you can approve/deny sign ups), enter the following commands
cd greenlight/ docker exec greenlight-v2 bundle exec rake admin:create
This command will create an admin account and set a default password. After running this command, login using the given username/password and change the default password. Next, select 'Administrator' and choose 'Organization'.
You can then select 'Site Settings' on the left-hand side and change the Registration Method to 'Approve/Decline'.
You can now control who creates accounts on your BigBlueButton server. For more information see Greenlight administration.
/var/bigbluebuttonto another directory
The install script allows you to pass a path which will be used to create a symbolic link with
wget -qO- https://ubuntu.bigbluebutton.org/bbb-install.sh | bash -s -- -v xenial-22 -w -m /mnt/test
This allows users to store the contents of /
var/bigbluebutton, which can get quite large, in a separate volume.
If you want to set up BigBlueButton 2.2 with a TLS/SSL certificate and GreenLight, you can do this all with a single command:
wget -qO- https://ubuntu.bigbluebutton.org/bbb-install.sh | bash -s -- -v xenial-22 -s bbb.example.com -e [email protected] -w -g
Furthermore, you can re-run the same command later to update your server to the latest version of BigBlueButton 2.2. We announce BigBlueButton updates to the bigbluebutton-dev mailing list.
Running the BigBlueButton client requires a wide range of UDP ports to be available for WebRTC communication. However, in some network restricted sites or development environments, such as those behind NAT or a corporate firewall that restricts UDP connections, users may be unable to make outgoing UDP connections to your BigBlueButton server.
If you have setup your BigBlueButton on the internet, and you have users accessing the BigBlueButton server behind a restrictive firewall that blocks UDP connections, then setting up a separate TURN server will allow users to have the TURN server (connected via port 443) proxy their UDP-based WebRTC media (audio, webcam, and screen share) to the BigBlueButton server.
We recommend Ubuntu 20.04 as it has a newer version of coturn than Ubuntu 16.04. The server does not need to be very powerful as it will only relay communications from the BigBlueButton client to the BigBlueButton server when necessary. A dual core server on Digital Ocean should be sufficient for a dozen BigBlueButton servers.
The server should have the following additional ports available:
| Ports | Protocol | Description | | ------------- | ------------- | ----------- | | 3478 | TCP/UDP | coturn listening port | | 443 | TCP/UDP | TLS listening port | | 49152-65535 | UDP | relay ports range |
bbb-install.shto setup the TURN server (which installs and configures the
coturnpackage), you need
With the above in place, you can set up a TURN server for BigBlueButton using the command
wget -qO- https://ubuntu.bigbluebutton.org/bbb-install.sh | bash -s -- -c : -e
Note, we've omitted the
-voption, which causes
bbb-install.shto just install and configure coturn. For example, using
turn.example.comas the FQDN,
1234abcdas the shared secret, and
wget -qO- https://ubuntu.bigbluebutton.org/bbb-install.sh | bash -s -- -c turn.example.com:1234abcd -e [email protected]
will do the following
With a SSL certificate in place, coturn can relay access to your BigBlueButton server via TCP/IP on port 443. This means if a user is behind a restrictive firewall that blocks all outgoing UDP connections, the TURN server can accept connections from the user via TCP/IP on port 443 and relay the data to your BigBlueButton server via UDP.
After the TURN server is setup, you can configure your BigBlueButton server to use the TURN server by running the
bbb-install.shcommand again and add the parameter
-c :(this tells
bbb-install.shto setup the configuration for the TURN server running at using the share secret . For example,
wget -qO- https://ubuntu.bigbluebutton.org/bbb-install.sh | bash -s -- -v xenial-22 -s bbb.example.com -e [email protected] -c turn.example.com:1234abcd
You can re-use a single TURN server for multiple BigBlueButton installations.
If you intend to use this server for production you should uninstall the API demos using the command
apt-get purge bbb-demo
You can also do a number of customizations to your server as well.
We are currently hosting the packaging on a Digital Ocean servlet, but recently the IP range for some Digital Ocean servers has been blocked in some countries.
If you're having troubles installing, try running the
bbb-install.shcommand but change the value
If on first install Greenlight gives you a
500 errorwhen accessing it, you can restart Greenlight.
If on the initial install you see
# Not running: tomcat7 or grails LibreOffice
sudo bbb-conf --checkagain. Tomcat7 may take a bit longer to start up and isn't running the first time you run
sudo bbb-conf --check.
If you have feedback on the script, or need help using it, please post to the BigBlueButton Setup mailing list with details of the issue (and include related information such as steps to reproduce the error).
If you encounter an error with the script (such as it not completing or throwing an error), please open a GitHub issue and provide steps to reproduce the issue.
If you are running your BigBlueButton behind a firewall, such as on EC2, this script will not configure your firewall. You'll need to configure the firewall manually.
If you are upgrading from a very old version of 2.2.x (such as 2.2.3) and
sudo bbb-conf --checkstill shows the older version
bbb-install.shfinishes, try running
dpkg --configure -aand then run