Migration of Greenlight and BigBlueButton

by Christoph Dähne on 08.10.2021

Quite some time ago we tried out BigBlueButton and we still use it today. Sometimes for full-fledged meeting with recording. Sometimes just for opt-in video when we talk via another tool. Now we decided to update to BigBlueButton 2.3 and install it on a new server with a fresh operating system.

In this Blog Post I want to cover the three main steps we took:

  1. Installation of a BigBlueButton instance with Greenlight
  2. Migration of the recordings
  3. Migration of the Greenlight database (users, rooms and also recordings)

Installation of BigBlueButton 2.3 (with Greenlight)

To manage our servers we use Ansible — a lot. Usually there are no manual steps involved but we have some exceptions to the rule. For the default configuration of the OS we still used Ansible but installed BigBlueButton by hand afterwards. Mostly we followed the official documentation and executed the following commands on the server. Make sure the server meets the system requirements and the domain is registered. The installation configures the firewall so make sure you SSHd runs on port 22 or remove the -w option.

sudo su
apt install ca-certificates
curl -sL https://deb.nodesource.com/setup_12.x | bash -
apt-get install nodejs 12.x
wget -qO- https://ubuntu.bigbluebutton.org/bbb-install.sh \
   | bash -s -- -w -g -v bionic-23 \
     -s bbb-playground.sandstorm.dev \
     -e certificates@sandstorm.dev
docker exec greenlight-v2 \
   bundle exec rake \
   user:create["Sandstorm Admin","the-mail@sandstorm.dev","the-pass","admin"]

Last thing to do is to log in as Administrator and disable self-registration for user.

Migration of the recordings

To avoid any surprises: you cannot access the recordings via the Greenlight UI without migrating the Greenlight database as well! Now we transfer all the actual recording data like described in the BigBlueButton migration guide. This documentation does not mention the migration of the recording metadata in Greenlight, because Greenlight is only one of many UIs for BigBlueButton.

In a nutshell you need to execute the following commands. Note that we already copied the files from the old server to the new one.

sudo su
rsync -rP old-server/var/bigbluebutton/published/ /var/bigbluebutton/published/
rsync -rP old-server/var/bigbluebutton/unpublished/ /var/bigbluebutton/unpublished/
rsync -rP old-server/var/bigbluebutton/recording/raw/ /var/bigbluebutton/recording/raw/
chown -R bigbluebutton:bigbluebutton \
   /var/bigbluebutton/published \
   /var/bigbluebutton/unpublished \
bbb-conf --setip bbb-playground.sandstorm.dev

Migration of the Greenlight database

Greenlight and its postgres database both run in Docker containers.  The BigBlueButton update includes an update of Greenlight and its postgres database — in our case from 9.5 to 13.2. Thus we cannot copy the volume in /root/greenlight/db but instead have to create an SQL dump.

docker-compose exec db pg_dump \
  --dbname=greenlight_production \
  --username=postgres \
  > db.sql

Now you have to copy this dump into the postgres container of the new server. The most lazy … I mean fastest approach is to copy the db.sql file into the already existing volume at /root/greenlight/db/production/db.sql. Then you can restore the database content as follows.

# the following commands reset your DB
# !!! all existing data is lost !!!
cd /root/greenlight/
docker-compose stop app
docker-compose exec db bash
psql --username=postgres
DROP DATABASE greenlight_production;
CREATE DATABASE greenlight_production;
psql \
  --dbname=greenlight_production \
  --username=postgres \
  < /var/lib/postgresql/data/db.sql
rm /var/lib/postgresql/data/db.sql
docker-compose start app

Now you can login with you old admin or regular user. The user, rooms and recordings are available.

Hopefully this Blog Post answers some questions. I you have more ones or any feedback, feel free to contact us.