Skip to content

About

BASH script to install BigBlueButton in 30 minutes.

Topics

Resources

Stars

661 stars

Watchers

49 watching

Forks

Latest commit

 

History

714 Commits

Folders and files

Repository files navigation

bbb-install-banner

bbb-install

bbb-install.sh is a shell script that installs, upgrades, and configures a BigBlueButton server in under 20 minutes. Use it on a fresh Ubuntu server that meets the minimum requirements and has a fully qualified domain name (FQDN) pointing to it.

Quickstart

Log in as root to a fresh Ubuntu server and run:

wget -qO- https://raw.githubusercontent.com/bigbluebutton/bbb-install/v4.0.x-release/bbb-install.sh | bash -s -- -v noble-400 -s bbb.example.com -e info@example.com

Substitute your own hostname and email. For the full list of flags and more example command lines:

wget -qO- https://raw.githubusercontent.com/bigbluebutton/bbb-install/v4.0.x-release/bbb-install.sh | bash -s -- -h

The -v flag selects the version line, e.g. noble-400 for BigBlueButton 4.0 on Ubuntu 24.04. Re-running the same command later upgrades to the latest iteration of that line; change -v to jump to a newer line.

Before you run the script

There are three things the script cannot do for you.

DNS

Configure an FQDN (such as bbb.example.com) with an A record resolving to your server's public IPv4 address. Verify before running:

dig bbb.example.com @8.8.8.8

HTTPS is required — browsers block access to microphone, camera, and screen-share over plain HTTP, so -s and -e are effectively mandatory for any usable install.

Server sizing

BigBlueButton is CPU- and bandwidth-intensive. See the minimum requirements for guidance.

  • Dedicated public IP: Digital Ocean, Hetzner.
  • Behind NAT: Scaleway, Google Compute Engine, Amazon EC2 (c5.2xlarge+ recommended), Azure. bbb-install.sh detects internal/external addresses automatically, but you need to configure the external firewall yourself.

External firewall

If your server is behind an external firewall (AWS security group, Azure NSG, GCP rules, corporate firewall), open the following inbound ports:

Port Protocol Purpose
22 TCP SSH
80, 443 TCP HTTP / HTTPS
16384 – 32768 UDP FreeSWITCH / WebRTC media

Amazon EC2 users should also assign an Elastic IP so the server's address is stable across reboots.

Even with an external firewall in place, the script installs UFW on the BigBlueButton host itself — defense in depth. The default rules allow SSH only on port 22, so the script stops if sshd listens on another port. Pass -W to skip UFW and manage the host firewall yourself.

Screenshots: Azure and GCE firewall rules

Microsoft Azure inbound rules:

Azure firewall

Google Compute Engine — allow 80/443 at instance creation:

GCE 80-443

Then add a firewall rule for UDP 16384-32768:

GCE firewall

Common scenarios

Run bbb-install.sh -h for every flag and a copy-pasteable command for each of the scenarios below.

Greenlight

Greenlight is BigBlueButton's official room-manager web UI. Pass -g to install it; add -k to also install Keycloak for external authentication. After install, Greenlight is served at https://<your-hostname>/.

BigBlueButton LTI framework

The LTI framework integrates BigBlueButton with any LTI 1.0 Learning Management System. Install with -t <KEY>:<SECRET>, where those values are used by your LMS to authenticate with the broker. Re-running with the same key rotates its secret; a new key adds another consumer. Check the list of native integrations first — many LMS platforms integrate directly without LTI.

Private networks

For servers not reachable from the public internet, add -x to use Let's Encrypt's manual DNS-01 challenge. You'll be prompted to create a _acme-challenge.<hostname> TXT record during install. Certificates expire after 90 days and must be renewed manually — certbot emails you before expiry.

External TURN server

Most deployments work with BigBlueButton's built-in TURN configuration. Set up a separate TURN server only if your users are behind restrictive firewalls that block UDP.

A TURN host needs its own FQDN (with A and AAAA records), its own email for Let's Encrypt, and a shared secret (any 8–16 character random string). The installation is two steps: (1) install coturn on a separate host with -c <fqdn>:<secret> -e <email> and no -v; (2) point BigBlueButton at it by re-running the BBB install with -c <fqdn>:<secret> appended. One TURN server can be shared across multiple BigBlueButton servers. See -h for the exact commands.

Storing recordings on a separate volume

/var/bigbluebutton can grow large. Pass -m /mnt/recordings to symlink it to a separately-mounted volume.

Upgrading

Re-run the same bbb-install.sh command you used to install. The script upgrades BigBlueButton and all installed add-ons (Greenlight, Keycloak, LTI) to the latest stable version of the same version line. To jump to a newer line, change -v.

Updates are announced on the bigbluebutton-dev mailing list.

Troubleshooting

If the script fails or misbehaves, open a GitHub issue with steps to reproduce.

For help with BigBlueButton itself, post to the BigBlueButton community.

Limitations

  • If you are behind an external firewall, bbb-install.sh won't configure it. See External firewall.
  • Cross-major-OS upgrades are not supported. If you're moving from an older Ubuntu release, install on a fresh server and transfer your recordings.

About

BASH script to install BigBlueButton in 30 minutes.

Topics

Resources

Stars

661 stars

Watchers

49 watching

Forks

Releases

Packages

Used by

Contributors

Languages