BigBlueButton
BigBlueButton is a web conferencing server that takes advantage of several other open source servers. It is a complex package that I prefer to run on its own Ubuntu server (either on a standalone machine, in a separate partition, or within a virtual machine). This is necessary partly because BigBlueButton runs only on a 32-bit Ubuntu Jaunty 9.04 OS currently, and I use a more recent edition of the (K)Ubuntu OS for everything else.
Also, the default configuration of BigBlueButton uses ports for its components that might occasionally conflict with other servers. Rather than reconfigure all the other servers (to avoid the possibility of port conflicts with BigBlueButton), it is easier to install (and easier to maintain) BigBlueButton if it is in a self-contained environment.
If BigBlueButton is to be used only for a webinar once-in-a-while, it might be easiest to set it up in its own partition. (A full BBB installation uses 2 Gb hard disk space, so a 4 Gb partition ought to be sufficient. If plenty of hard disk space is available, use 8 Gb for the partition.) Install the Ubuntu server (or desktop) OS within that partition first. (See this section for details on a method to accomplish this.) Then install BigBlueButton.
Installing in a virtual machine (such as VirtualBox, VMWare, QEMU, or Xen) makes sense if the computer host has lots of computing capacity (3 Gb of RAM or greater and a powerful CPU) and a large hard drive. (BigBlueButton recommends dedicating at least 1 Gb RAM to it on a 2 GHz dual-core processor. A full installation requires 2 Gb, so a 4 Gb virtual hard drive ought to be sufficient. If plenty of hard disk space is available, use 8 Gb for the virtual hard drive.) Installation in a virtual machine can be accomplished using the installation method outlined below (after installing an Ubuntu OS within the virtual machine), or a VMWare appliance can be used (for those who have installed a VMWare Player).
If a spare computer is available and frequent usage is anticipated, installing on a standalone computer (as the server) would be most economical (and easiest to maintain) in the long run.
As always, I recommend a test system and a production system. These can be parallel installations on separate partitions (or within separate virtual machines), for example, of which only one at a time is running.
The following instructions are for a new installation, including the Ubuntu server OS, within one of these three environments.
Install Ubuntu server
- I recommend installing the Ubuntu server and then later adding an Ubuntu or Kubuntu desktop if desired (although it is not necessary to have a desktop, and I don't use one). BigBlueButton only provides packages for the 32-bit Jaunty (9.04) edition, so install the 32-bit version of Ubuntu server 9.04. (Jaunty uses the ext3 filesystem by default, so I would probably stick with that.) I do not recommend installing any additional packages. BigBlueButton will install all the additional packages that it needs (through its own installation script) itself.
- Update and upgrade the basic server:
sudo apt-get update sudo apt-get upgrade
- To speed bootup, edit the Grub timeout to be one second (Note: Jaunty 9.04 uses Grub Legacy, not Grub2).
sudo nano /boot/grub/menu.lst
Change to
timeout 1
instead of the 10 second (timeout 10) that is the default.
Sort out webserver conflicts
BigBlueButton uses Nginx as a webserver instead of Apache2. (Nginx is used by many high-volume server sites such as Sourceforge, Hulu, Github, Wordpress, and TorrentReactor).
- If installing Ubuntu server for the first time, do not install the full LAMP (Linux, Apache2, MySQL, PHP) stack as an option, since Apache installation is not needed. BigBlueButton will install the individual MySQL and PHP components during its own installation.
- If you are installing BigBlueButton on an Ubuntu server that is already running Apache, you must decide on a port scheme so that the two webservers do not conflict.
Changing the Apache listening port
The Nginx webserver (used by BigBlueButton) is installed so that it uses the standard webserver port 80. Apache2, if installed, also uses this standard webserver port by default. It is possible to edit an Apache2 configuration file, however, so that it listens on a non-standard port:
sudo nano /etc/apache2/ports.conf
and the port number 80 changed to a different port number (such as 82). Then reload Apache2:
sudo /etc/init.d/apache2 restart
This avoids conflicts while installing and testing BigBlueButton. (Of course, for the most part, any servers using Apache2 will be non-functional unless all corresponding virtual host settings are also changed.)
Later, I usually prefer to set the BigBlueButton listening port to 81 and return the Apache2 listening port to 80.
Install BigBlueButton
- Retrieve and add the BigBlueButton repository key:
wget http://archive.bigbluebutton.org/bigbluebutton.asc sudo apt-key add bigbluebutton.asc
- Add the BigBlueButton Repositories to your repository list:
echo "deb http://archive.bigbluebutton.org/ bigbluebutton main" | sudo tee /etc/apt/sources.list.d/bigbluebutton.list sudo apt-get update
- Install BigBlueButton:
sudo apt-get install bigbluebutton
- Install desktop sharing:
sudo apt-get install bbb-apps-deskshare
Ensure port availablility
BigBlueButton components use port 1935 for RTMP (streaming video), 9123 for desktop sharing (with Xuggler), and port 80 for the Nginx webserver.
Internally, the Red5 Flash server uses port 5080, the Tomcat6 java server uses port 8080, Asterisk uses UDP port 5060 for the SIP interface (plus SIP ports 6079-6099 and RTP ports 3000-3029). The Asterisk Management Interface uses port 5038.
For this reason, during installation and troubleshooting, it is best not to use a firewall with BigBlueButton, and it should be placed in a DMZ. (The UFW firewall installed with Ubuntu Jaunty 9.04 is not enabled by default, so this is not problematic initially.)
A server in the DMZ is at increased risk of hacking, so this is another significant reason to keep BigBlueButton quarantined within its own dedicated server environment (machine/partition/virtual machine).
Once installation is complete and tested, a firewall is probably a good idea, especially if you are hosting BBB on the same machine as other servers.
Check the server's current IP address
Usually this will be the IP address of the server on the LAN. To display:
ifconfig
Set a static IP address
The Ubuntu server(/desktop) on which BigBlueButton is installed should have a static IP address so that it can reliably be located on the network. If on a LAN, this will be a static LAN IP address (such as 192.168.0.55), to which the router must forward the appropriate ports.
Test BigBlueButton
If the LAN IP address of the BigBlueButton server is shown by ifconfig to be, for example, 192.168.0.55, then access the server from another computer on the LAN by logging in from any web browser to:
http://192.168.0.55
Big Blue Button should now be fully functional.
Change the host location of the BigBlueButton server
A utility exists to quickly change the server_name of the Nginx (and other BigBlueButton) configuration files. The server_name can be an IP address (such as 68.67.66.65) or a URL (such as bigbluebutton.mydomain.org).
sudo bbb-conf --setip bigbluebutton.mydomain.org
If it doesn't seem to work, try a clean restart of the BigBlueButton system:
sudo bbb-conf --clean
Changing the BBB listening port
If BBB is working satisfactorily using the default settings, it is then possible to change the listening port as well as the hostname/IP address at which it will be located.
- If the port listening port has been changed to 81 (see above), then use the command:
sudo bbb-conf --setip bigbluebutton.mydomain.org:81
- Also change the Nginx webserver listening port (see below).
- Reboot the server.
- Now the BigBlueButton server can be accessed:
http://bigbluebutton.mydomain.org:81
Change the virtual host configuration file of Nginx
Nginx is the web server used by BigBlueButton. It is similar to Apache in many ways. Virtual host configuration files are stored in /etc/nginx/sites-available (and the virtual host configuration file made active by linking it into the /etc/nginx/sites-enabled folder).
BigBlueButton uses an Nginx virtual host configuration folder at /etc/nginx/sites-available/bigbluebutton (which is already linked into the sites-enabled folder). This can be edited (and must be edited if the "bbb-conf --setip" utility in the previous section is used to change the BBB listening port).
sudo nano /etc/nginx/sites-available/bigbluebutton
- To change the listening port, edit the line
listen 80;
to the port that should be listened on (in my example 81). Do not use 8080, since it is already used.
listen 81;
- If you intend to use Apache2 on this server (and will always use Nginx on port 81), then also edit the default Nginx configuration file:
sudo nano /etc/nginx/sites-available/default
so that it also listens on port 81:
listen 81;
- Restart Nginx:
sudo /etc/init.d/nginx restart
- Check the changed settings:
bbb-conf --check
- Reboot the server.
- I then usually like to return the Apache2 listening port to 80.
Using BigBlueButton with Moodle
If Moodle and BigBlueButton are hosted within the same LAN (or on the same physical machine), then the webservers (that they use) ought to be on different listening ports. Moodle uses Apache2, and I find it easiest to leave this at port 80; I assign port 81 to Nginx (and BigBlueButton).
In my set up, I use the same URL for both Moodle and BigBlueButton:
http://smartestowl.mydomain.org
for Moodle and
http://smartestowl.mydomain.org:81
for BigBlueButton.
Install BBB <-> Moodle API
- A troubleshooting forum for this API exists. Refer to it for problems.
- Download the API from DualCode into the /usr/share/moodle/mod folder and unzip:
sudo wget http://www.dualcode.com/bigbluebutton/bigbluebutton.zip sudo unzip bigbluebutton.zip
- Copy the bigbluebutton/mod/bigbluebutton folder (and its contents) into the /usr/share/moodle/mod folder:
sudo mkdir /usr/share/moodle/mod/bigbluebutton sudo cp -r bigbluebutton/mod/bigbluebutton/* /usr/share/moodle/mod/bigbluebutton/
- Copy the bigbluebutton/lang folder contents into the /usr/share/moodle/lang folder:
sudo cp -r bigbluebutton/lang/* /usr/share/moodle/lang/
- Remove the original files:
sudo rm bigbluebutton.zip sudo rm -r bigbluebutton/* sudo rmdir bigbluebutton
- Login to the Moodle site (as an administrator) and load the module:
- Moodle -> Site Administration -> Notifications (Make sure to click on Notifications)
- -> Activities -> Manage Activities -> BigBlueButton -> Settings
- -> Input the IP address/URL of your BigBlueButton server. Do not enter the leading http:// .
- -> Input the Security Salt from your BigBlueButton server. This is in a file called “bigbluebutton.properties” on the BigBlueButton server. On my Ubuntu server I found it at
/var/lib/tomcat6/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties
The security salt string can be found:
beans.dynamicConferenceService.securitySalt=your_number_here
Input that long string of numbers and letters to the field in Moodle.
- -> Put a star in the Meeting IDs field. That will allow an unlimited number of rooms to be created. You can also put any number here to restrict how many rooms on your BigBlueButton server you want running at any one time. (This can eventually become important for performance reasons.)
- In the (Course) Weekly Outline:
-> Add an activity... -> BigBlueButton ->
and set the desired passwords for the meeting, etc.
Add BigBlueButton API to Drupal6
- BigBlueButton is a standalone videoconferencing server. Install the BigBlueButton API that is able to call the BBB server from within Drupal:
cd /etc/drupal/6/sites/all/modules sudo wget http://ftp.drupal.org/files/projects/bbb-6.x-1.x-dev.tar.gz sudo tar zxvf bbb-6.x-1.x-dev.tar.gz sudo rm bbb-6.x-1.x-dev.tar.gz
- Note: If you wish this module to be available to only one subsite, then install it instead into the /etc/drupal/6/sites/mysite_x/modules folder.
- Note: You must update and adjust permissions after module installation.
- Drupal -> Administer -> Modules -> Big Blue Button -> select the Big Blue Button module functions you intend to use
- Test the BigBlueButton settings:
- Drupal -> Site administration -> BigBlueButton Conferencing -> Test connection.
- Change the URL to the address of your BBB server (e.g. http://mybbbsite.dyndns.org:81/bigbluebutton/) and the Security Salt (found in bigbluebutton.properties on the BBB server in the
/var/lib/tomcat6/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties
- configuration file, in the setting:
beans.dynamicConferenceService.securitySalt=your_security_salt_number_here
- Create a new content type named Teleconference:
- Drupal -> Administer -> Content management -> Content types -> Add content type
-> Name: Teleconference -> Type: teleconference -> Big Blue Button settings -> Treat this node type as conference: (ticked) -> Show links to join / start a meeting beneath the node: (ticked) -> Display meeting status on node: (ticked) -> Save content type
- Create a new node of content type Teleconference:
Drupal -> Create content -> Teleconference -> Conference settings -> ...
Changing the BBB security salt
In general this is not necessary. However, if you think your BigBlueButton system may have been compromised in some way, the security salt (which keeps passwords and communications safe) can be changed.
- Generate a new Universal Unique ID (UUID), which is basically a long string of random numbers with dashes. This random number will serve as the security salt key:
uuidgen
- Copy the string (including dashes) several places, replacing the existing security salt (if any) at each location:
- /var/lib/tomcat6/webapps/bigbluebutton/demo/bbb_api_conf.jsp
sudo gedit /var/lib/tomcat6/webapps/bigbluebutton/demo/bbb_api_conf.jsp
- /var/lib/tomcat6/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties
sudo gedit /var/lib/tomcat6/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties
- the Settings of the BigBlueButton plugin for Moodle (while logged into Moodle as an administrator)
- the Settings of the BigBlueButton plugin for Drupal (while logged into Drupal as an administrator)
- Do a clean restart of the BigBlueButton server:
sudo bbb-conf --clean