CLI tool
bigbluebutton/bbb-install avatar
bigbluebutton/bbb-install

bbb-install: the script that puts BigBlueButton on an Ubuntu server in 20 minutes

BASH script to install BigBlueButton in 30 minutes.

661 stars560 forksShellLGPL-3.0

At a glance

What is it?
bbb-install is a single shell script that installs, upgrades and configures BigBlueButton on a fresh Ubuntu host, and the README is unusually specific about the three things it cannot do for you: DNS, firewall rules and server sizing.
Who is it for?
Adopt bbb-install if you are standing up a BigBlueButton server on a fresh Ubuntu host and want the standard configuration applied in one command, with Greenlight, LTI or a separate TURN server as add-ons. Do not use it to move an existing server between major Ubuntu releases, because the README states cross-major-OS upgrades are not supported and asks you to install fresh and transfer recordings.
Can I use it commercially?
Yes, with conditions. LGPL-3.0 is a weak copyleft licence: you can use it inside commercial and closed-source software, but if you distribute changes to its own files, you must publish those changes under the same licence.
Is it still maintained?
Yes. The repository last received commits 7 days ago.
What is it written in?
Mainly Shell, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 20, 2026, and from our analysis. They are not legal advice.

Editorial analysis

One shell script against a fresh Ubuntu server

bbb-install.sh installs, upgrades and configures a BigBlueButton server, and the README states it does so in under 20 minutes, while the project description says 30. Either figure, the idea is that a conference platform with a web frontend, a media stack, TURN and a signalling server is packaged in a single file rather than a manual dependency walk. The audience is a system administrator or a technical person in a school or organisation who has decided to self host BigBlueButton and wants a supported starting point rather than a hand assembled stack. The script targets a fresh Ubuntu server that meets the published minimum requirements and has a fully qualified domain name pointing to it. The repository itself is small, essentially the script, the README, the licence file and a couple of images for the firewall documentation screenshots, and the default branch is v4.0.x-release, so the script you fetch is versioned alongside the release line it installs.

The version flag is the upgrade strategy

The quickstart is a single pipe to bash, run as root, with three flags: the version line, the server hostname, and an email address for Let's Encrypt. The hostname and email flags are effectively mandatory rather than optional, because the script will not produce a usable install without them, since browsers block microphone, camera and screen share over plain HTTP.

bash
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 [email protected]

The version flag takes a value like noble-400, which the README explains as BigBlueButton 4.0 on Ubuntu 24.04, so the naming combines the Ubuntu codename with the release number. This is the mechanism that replaces a normal upgrade path. Re-running the identical command later upgrades to the latest iteration of the same line, and changing the -v value moves you to a newer line. The script ships its own help output, which the README points to for the complete flag list.

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

The three things the script will not do for you

The README has a section titled Before you run the script, and it opens by saying there are three things the script cannot do for you. The first is DNS. You need an FQDN with an A record resolving to the server's public IPv4 address, and the README gives a verification command to run before installing anything.

bash
dig bbb.example.com @8.8.8.8

The second is server sizing, on the grounds that BigBlueButton is CPU and bandwidth intensive, with the README pointing at the minimum requirements documentation and suggesting a dedicated public IP from providers such as Digital Ocean or Hetzner, and noting that providers behind NAT such as Scaleway, Google Compute Engine, Amazon EC2 with c5.2xlarge or larger recommended, and Azure also work, because the script detects internal and external addresses automatically, though you still have to configure the external firewall yourself. The third is the external firewall, which is the subject of the next section.

UFW on the host, and the UDP range you have to open yourself

The external firewall and the host firewall are two different things, and the README keeps them apart deliberately. If you are behind an external firewall such as an AWS security group, an Azure NSG, GCP rules or a corporate firewall, you have to open the inbound ports yourself: 22 for SSH, 80 and 443 for HTTP and HTTPS, and the whole range 16384 to 32768 over UDP for the FreeSWITCH and WebRTC media. The README also advises Amazon EC2 users to assign an Elastic IP so the address stays stable across reboots, and includes screenshots of the Azure and GCP rule configuration for the cases people get wrong. Even with an external firewall in place, the script installs UFW on the BigBlueButton host, which the README frames as defense in depth. The default UFW rules allow SSH only on port 22, so if your sshd listens elsewhere the script stops rather than locking you out, and the -W flag skips UFW entirely if you would rather manage the host firewall yourself.

Greenlight, LTI, TURN and off-host recordings as flag combinations

The script's flags cover the add-on scenarios most deployments need. Greenlight, the official room manager web UI, is installed with -g and is then served at the root of your hostname over HTTPS; adding -k installs Keycloak for external authentication as well. The LTI framework, which connects BigBlueButton to any LTI 1.0 learning management system, is installed with -t in the form KEY:SECRET, where those values are what the LMS uses to authenticate against the broker. Re-running with the same key rotates its secret while a new key adds another consumer, and the README advises checking the list of native integrations first because many LMS platforms integrate directly without LTI at all. For servers not reachable from the public internet, -x switches Let's Encrypt to the manual DNS-01 challenge and prompts you for a TXT record, with certificates expiring after 90 days and certbot emailing you before that. A separate TURN server is installed on its own host with -c and -e, then BigBlueButton is pointed at it by re-running the install with the same -c value. And -m symlinks /var/bigbluebutton, which the README notes can grow large, to a separately mounted volume for recordings.

Upgrades, announcements and the limits of the script

The upgrade story is one sentence: re-run the same bbb-install.sh command you used to install, and the script upgrades BigBlueButton and every installed add-on, Greenlight, Keycloak and LTI included, to the latest stable version of that same version line. To move to a newer line you change -v. Updates are announced on the bigbluebutton-dev mailing list, which is where you would look before changing the flag. The limitations section is short and worth reading in full. If you are behind an external firewall, the script will not configure it. And cross-major-OS upgrades are not supported: if you are moving from an older Ubuntu release, the README tells you to install on a fresh server and transfer your recordings. That is a firm boundary rather than a caveat, and it is the one operational decision worth making before you install rather than after. For problems, the README asks for a GitHub issue with steps to reproduce, and points to the BigBlueButton community for help with the platform itself rather than the script.

Editorial conclusion

Adopt bbb-install if you are standing up a BigBlueButton server on a fresh Ubuntu host and want the standard configuration applied in one command, with Greenlight, LTI or a separate TURN server as add-ons. Do not use it to move an existing server between major Ubuntu releases, because the README states cross-major-OS upgrades are not supported and asks you to install fresh and transfer recordings. Verify first that your hostname resolves to the server's public IPv4 address and that the external firewall opens UDP 16384 to 32768, since the script cannot open either for you.

Frequently asked questions

What is the command to install BigBlueButton with bbb-install?

Log in as root on a fresh Ubuntu server and run the wget pipe with -v for the version line such as noble-400, -s for your hostname and -e for your email. The README notes that -s and -e are effectively mandatory because browsers block media over plain HTTP.

Which firewall ports do I need to open for BigBlueButton?

The README lists 22 over TCP for SSH, 80 and 443 over TCP for HTTP and HTTPS, and 16384 to 32768 over UDP for FreeSWITCH and WebRTC media. The script installs UFW on the host itself but does not configure an external firewall.

How do I upgrade BigBlueButton after installing it with bbb-install?

Re-run the same bbb-install.sh command you used to install. That upgrades BigBlueButton and all installed add-ons to the latest stable version of the same line, and changing the -v flag moves you to a newer line.

Can bbb-install move my server to a newer Ubuntu release?

No. The README states that cross-major-OS upgrades are not supported, and advises installing on a fresh server and transferring your recordings instead.

Official sources

  1. bigbluebutton/bbb-install on GitHub
  2. Issues
  3. License: LGPL-3.0
  4. README
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/bigbluebutton-bbb-install.svg)](https://hysenlabs.com/projects/bigbluebutton-bbb-install)

Was this useful?