BigBlueButton: Difference between revisions
No edit summary |
m (Add recording instructions) |
||
(7 intermediate revisions by the same user not shown) | |||
Line 2: | Line 2: | ||
== Installation == |
== Installation == |
||
BBB |
BBB and Greenlight (the web UI) are currently running in podman containers on xylitol (they are in the same pod, so they share a network namespace). Here are the steps that were performed to install it. |
||
=== Prerequisites === |
=== Prerequisites === |
||
The container in which BBB is running should have: |
The container in which BBB is running should have: |
||
* Ubuntu |
* Ubuntu 18. As of this writing, this is the most recent Linux distro supported by BBB. |
||
* A FQDN (bbb.csclub.uwaterloo.ca). |
* A FQDN (bbb.csclub.uwaterloo.ca). |
||
* A public IPv4 address (and optionally an IPv6 address). |
* A public IPv4 address (and optionally an IPv6 address). |
||
* Firewall exceptions for TCP ports 80 and 443 and UDP ports 16384 - 32768. |
* Firewall exceptions for TCP ports 80 and 443 and UDP ports 16384 - 32768. |
||
* Ansible installed. This can be done via <code>apt install ansible</code>. |
* Ansible installed. This can be done via <code>apt install ansible</code>. |
||
* An SSL key pair. See [[SSL]]. In this tutorial they are called <code>csclub-wildcard-chain.crt</code> |
* An SSL key pair. See [[SSL]]. In this tutorial they are called <code>csclub-wildcard-chain.crt</code> and <code>csclub-wildcard.key</code>. |
||
and <code>csclub-wildcard.key</code>. |
|||
=== Instructions === |
=== Instructions === |
||
Line 25: | Line 24: | ||
</li> |
</li> |
||
<li> |
<li> |
||
I wrote an Ansible playbook [https://git.csclub.uwaterloo.ca/ |
I wrote an Ansible playbook [https://git.csclub.uwaterloo.ca/merenber/bbb-setup here] which automates most of the setup (steps adapted from [https://docs.bigbluebutton.org/2.2/install.html here]). |
||
(steps adapted from [https://docs.bigbluebutton.org/2.2/install.html here]). This also takes care of installing Greenlight, which is the |
|||
web frontend for BBB. |
|||
<br> |
<br> |
||
Git clone the repo into a folder, say <code>/root/ansible</code>. Take a look over the files and customize any |
Git clone the repo into a folder, say <code>/root/ansible</code>. Take a look over the files and customize any |
||
values as you see fit. Once you are satisfied, run <code>ansible-playbook playbook.yml</code>. |
values as you see fit. Once you are satisfied, run <code>ansible-playbook playbook.yml</code>. |
||
⚫ | |||
⚫ | |||
Once the playbook has finished, open <code>/opt/greenlight/.env</code> and set the value of <code>DB_PASSWORD</code>. |
|||
</li> |
</li> |
||
<li> |
<li> |
||
Line 41: | Line 35: | ||
<li> |
<li> |
||
Restart BBB by running <code>bbb-conf --restart</code>. |
Restart BBB by running <code>bbb-conf --restart</code>. |
||
⚫ | |||
⚫ | |||
Run a podman container for Greenlight (the BBB devs already created one) in the same pod as BBB. Create a .env file and pass it to the --environment-file option. |
|||
</li> |
|||
<li> |
|||
Now we will need to create an administrator account. There is theoretically a |
|||
[https://docs.bigbluebutton.org/greenlight/gl-admin.html#creating-an-administrator-account way to do this] using bundle, |
|||
but I wasn't able to get it to work. So here is the workaround I used. |
|||
<ol style="list-style-type:lower-roman;"> |
|||
<li>First, login to https://bbb.csclub.uwaterloo.ca using your CSC credentials, then log back out.</li> |
|||
<li> |
|||
Login to coffee as the postgres user, run psql, then run the following: |
|||
<pre> |
|||
\c greenlight |
|||
UPDATE users SET role_id = 2 WHERE username = 'my_csc_username'; |
|||
</pre> |
|||
When you log back in to Greenlight, you should now be an admin. |
|||
</li> |
</li> |
||
</ol> |
</ol> |
||
</li> |
|||
<li> |
|||
To ensure that future sysadmins automatically become Greenlight admins, create a new role called "sysadmin" from the org settings in Greenlight. |
|||
</li> |
|||
<li> |
|||
To set a custom logo in the top left corner, go to 'Site Settings', and replace the branding image URL. I'm using a small CSC logo hosted on our git server in the csc-propaganda repo. |
|||
</li> |
|||
</ol> |
|||
=== Recording === |
|||
To enable session recording, perform the following: |
|||
<ol> |
|||
<li> |
|||
In the bbb container on xylitol, edit /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties and set the following properties: |
|||
<ul> |
|||
<li>disableRecordingDefault=false</li> |
|||
<li>allowStartStopRecording=true</li> |
|||
</ul> |
|||
Then run <code>bbb-conf --restart</code>. |
|||
</li> |
|||
<li> |
|||
Add <code>recording</code> to the ROOM_FEATURES variable in /root/bbb/env on xylitol. Then restart the greenlight container using e.g. <code>systemctl restart container-greenlight</code>. |
|||
</li> |
|||
<li> |
|||
Perform a DB migration for greenlight: |
|||
<pre> |
|||
podman exec greenlight bin/rake db:migrate |
|||
</pre> |
|||
</li> |
|||
<li> |
|||
Log in to the web UI with an admin account, go to Organization Settings -> Roles, and make sure "Allow users with this role to record their meetings" is enabled for the desired role(s).<br>Then from your Home Room page, click on the three-dots icon in the box which contains the room's name, then click "Room Settings", and make sure "Allow room to be recorded" is enabled. |
|||
</li> |
|||
</ol> |
|||
=== Some notes about TURN === |
|||
The BBB docs suggest [https://docs.bigbluebutton.org/2.2/setup-turn-server.html running your own TURN server]. TURN is used for bypassing NATs |
|||
and firewalls by basically relaying UDP traffic. I did not install one because I didn't think it was necessary, but if we have some users |
|||
in restrictive firewalled environments, we may have to install our TURN server. Make sure to ask IST for the appropriate port exceptions |
|||
and update <code>turn-stun-servers.xml</code>. |
Latest revision as of 22:45, 25 October 2022
We run an instance of BigBlueButton at https://bbb.csclub.uwaterloo.ca. BigBlueButton is a free and open source videoconferencing platform with many features such as multi-user whiteboards, embedded videos, and interactive polls. You can check out some tutorial videos here.
Installation
BBB and Greenlight (the web UI) are currently running in podman containers on xylitol (they are in the same pod, so they share a network namespace). Here are the steps that were performed to install it.
Prerequisites
The container in which BBB is running should have:
- Ubuntu 18. As of this writing, this is the most recent Linux distro supported by BBB.
- A FQDN (bbb.csclub.uwaterloo.ca).
- A public IPv4 address (and optionally an IPv6 address).
- Firewall exceptions for TCP ports 80 and 443 and UDP ports 16384 - 32768.
- Ansible installed. This can be done via
apt install ansible
. - An SSL key pair. See SSL. In this tutorial they are called
csclub-wildcard-chain.crt
andcsclub-wildcard.key
.
Instructions
-
First we will setup the database. Login to coffee as the
postgres
user, runpsql
, then run the following:CREATE USER greenlight WITH PASSWORD 'replace_this_password'; CREATE DATABASE greenlight; ALTER DATABASE greenlight OWNER TO greenlight;
-
I wrote an Ansible playbook here which automates most of the setup (steps adapted from here).
Git clone the repo into a folder, say/root/ansible
. Take a look over the files and customize any values as you see fit. Once you are satisfied, runansible-playbook playbook.yml
. -
Place copies of
csclub-wildcard-chain.crt
andcsclub-wildcard.key
in the directory/etc/nginx/ssl
. The key file must have permissions 0600. -
Restart BBB by running
bbb-conf --restart
. - Run a podman container for Greenlight (the BBB devs already created one) in the same pod as BBB. Create a .env file and pass it to the --environment-file option.
-
Now we will need to create an administrator account. There is theoretically a
way to do this using bundle,
but I wasn't able to get it to work. So here is the workaround I used.
- First, login to https://bbb.csclub.uwaterloo.ca using your CSC credentials, then log back out.
-
Login to coffee as the postgres user, run psql, then run the following:
\c greenlight UPDATE users SET role_id = 2 WHERE username = 'my_csc_username';
When you log back in to Greenlight, you should now be an admin.
- To ensure that future sysadmins automatically become Greenlight admins, create a new role called "sysadmin" from the org settings in Greenlight.
- To set a custom logo in the top left corner, go to 'Site Settings', and replace the branding image URL. I'm using a small CSC logo hosted on our git server in the csc-propaganda repo.
Recording
To enable session recording, perform the following:
-
In the bbb container on xylitol, edit /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties and set the following properties:
- disableRecordingDefault=false
- allowStartStopRecording=true
Then run
bbb-conf --restart
. -
Add
recording
to the ROOM_FEATURES variable in /root/bbb/env on xylitol. Then restart the greenlight container using e.g.systemctl restart container-greenlight
. -
Perform a DB migration for greenlight:
podman exec greenlight bin/rake db:migrate
-
Log in to the web UI with an admin account, go to Organization Settings -> Roles, and make sure "Allow users with this role to record their meetings" is enabled for the desired role(s).
Then from your Home Room page, click on the three-dots icon in the box which contains the room's name, then click "Room Settings", and make sure "Allow room to be recorded" is enabled.
Some notes about TURN
The BBB docs suggest running your own TURN server. TURN is used for bypassing NATs
and firewalls by basically relaying UDP traffic. I did not install one because I didn't think it was necessary, but if we have some users
in restrictive firewalled environments, we may have to install our TURN server. Make sure to ask IST for the appropriate port exceptions
and update turn-stun-servers.xml
.