=====Setting up a server with BigBlueButton 0.81===== ==== 1. Prepare System ==== The requirements are Ubuntu 10.04 64-bit 4 GB of memory (8 GB is better) Quad-core 2.6 GHZ CPU (or faster) Ports 80, 1935, 9123 accessible Port 80 is not used by another application 500G of free disk space (or more) for recordings \\ You will also need credentials with READ access to the software repository. \\ Start with adding the user: $ useradd -d /home/expbbbp -m expbbbp In addition to the above, the locale of the server must be en_US.UTF-8. Furthermore, the contents of /etc/default/locale must contain the single line LANG="en_US.UTF-8". You can verify this as below. $ cat /etc/default/locale LANG="en_US.UTF-8" If you don't see LANG="en_US.UTF-8", then do the following $ sudo apt-get install language-pack-en $ sudo update-locale LANG=en_US.UTF-8 and then logout and log back into your session. After the above, do $ cat /etc/default/locale again and verify you see only the single line $ LANG="en_US.UTF-8". Note: if you see an additional line LC_ALL=en_US.UTF-8, then remove the setting for LC_ALL before continuing. Also, check that you are running Ubuntu 10.04, 64-bit. $ uname -a x86_64 You should see x86_64. $ cat /etc/lsb_release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=10.04 DISTRIB_CODENAME=lucid DISTRIB_DESCRIPTION="Ubuntu 10.04.4 LTS" You should also not have any version of ruby installed. $ ruby -v -bash: ruby: command not found If you have a version of ruby installed (such as ruby 1.8) uninstall the packages first. $ apt-get remove ruby* Update to the latest binaries: $ sudo apt-get update $ sudo apt-get dist-upgrade Reboot and login as expbbbu user. ==== 2. Pull software from repo ==== $ mkdir /tmp/bbb $ wget –-user='' --password='' –r –np –l 1 –A deb ftp://qacollab01.exphosted.com/softrepo/bbb/bbb_0.81/ $ wget –-user='' --password='' –r –np –l 1 ftp://qacollab01.exphosted.com/softrepo/bbb/bbb_0.81/VERSIONS ==== 3. Install base software ==== $ sudo dpkg -i openoffice.org_1.0.4_all.deb $ sudo apt-get install python-software-properties $ sudo apt-add-repository ppa:libreoffice/libreoffice-4-0 $ sudo apt-get update sudo apt-get install libreoffice-common sudo apt-get install libreoffice This next install command will give you an error about dependencies not found. $ sudo dpkg -i ruby1.9.2_1.9.2-p290-1_amd64.deb To resolve the dependencies, enter $ sudo apt-get install -f After the package installs, run the following two commands to setup the paths to the ruby executable. $ sudo update-alternatives --install /usr/bin/ruby ruby /usr/bin/ruby1.9.2 500 \ --slave /usr/bin/ri ri /usr/bin/ri1.9.2 \ --slave /usr/bin/irb irb /usr/bin/irb1.9.2 \ --slave /usr/bin/erb erb /usr/bin/erb1.9.2 \ --slave /usr/bin/rdoc rdoc /usr/bin/rdoc1.9.2 $ sudo update-alternatives --install /usr/bin/gem gem /usr/bin/gem1.9.2 500 Run the following command to check that ruby is now installed. $ ruby -v ruby 1.9.2p290 (2011-07-09 revision 32553) And that gem is now installed. $ gem -v 1.3.7 ==== 4. Install ffmpeg (For video processing) ==== $ wget –-user='' --password='' ftp://qacollab01.exphosted.com/install_ffmpeg.sh | bash After the script finishes, check that ffmpeg is installed by typing the command ffmpeg -version. You should see something similar - it is important that the version matches '2.0.1'. $ ffmpeg -version ffmpeg version 2.0.1 built on Dec 19 2013 03:51:26 with gcc 4.4.3 (Ubuntu 4.4.3-4ubuntu5.1) configuration: --enable-version3 --enable-postproc --enable-libvorbis --enable-libvpx libavutil 52. 38.100 / 52. 38.100 libavcodec 55. 18.102 / 55. 18.102 libavformat 55. 12.100 / 55. 12.100 libavdevice 55. 3.100 / 55. 3.100 libavfilter 3. 79.101 / 3. 79.101 libswscale 2. 3.100 / 2. 3.100 libswresample 0. 17.102 / 0. 17.102 ==== 5. Install BigBlueButton ==== **IMPORTANT** Learnexa’s BBB client has strict dependency on BBB 0.81 including individual component versions. Only use the packages from the source mentioned. Ensure we are still in /tmp/bbb $ pwd /tmp/bbb Install BBB $ dpkg -i *.deb This will install the required version of BBB and bbb-conf binary. Ensure each component of BBB is installed and the version matches. Compare VERSIONS file (downloaded earlier) with the output of bbb-conf --version $ bbb-conf --version > installed_versions $ diff -u installed_V VERSIONS The last output line is and should be empty. You should not receive any output, in case any of installed BBB's components have a different version that what is required - the command above will print the package name. ==== 6. BBB & FreeSwitch Configuration ==== Setup BBB auth checksum and networking: #**Please note the variable below ** $ sudo bbb-conf --setsalt / rails_app/config/bigbluebutton.yml / $ sudo bbb-conf --set-ip $ cp freeswitchconf/public.xml /opt/freeswitch/conf/dialplan/public.xml $ cp freeswitchconf/conference.conf.xml /opt/freeswitch/conf/autoload_configs/conference.conf.xml Customization for BBB Client $ sudo vi /var/lib/tomcat6/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties $ defaultWelcomeMessage= //(just leave it empty) $ defaultWelcomeMessageFooter= //(just leave it empty) $ defaultClientUrl=${bigbluebutton.web.serverURL}/client/LiveEvent.html $ beans.presentationService.defaultUploadedPresentation=${bigbluebutton.web.serverURL}/DefaultMockPresentationXYZ.pdf $ cd /var/www/bigbluebutton-default/ $ sudo touch DefaultMockPresentationXYZ.pdf Change red5 settings 1. Change /usr/share/red5/conf/red5-common.xml to replace queueThreshold and deplayWrite values. Modify certain default parameters in FreeSwitch. Further read: https://wiki.exphosted.com/doku.php/installing_bigbluebutton?s[]=freeswitch Fix Nginx configuration. $ cp nginxconf/ /etc/nginx/ -rf $ cp bigbluebuttonconf/bigbluebutton.properties /var/lib/tomcat6/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties In /etc/bigbluebutton/nginx/client.nginx sed -i s/BigBlueButton.html/LiveEvent.html/g /etc/bigbluebutton/nginx/client.nginx ==== 8. Do a Clean Restart ==== To ensure BigBlueButton has started cleanly, enter the following commands: $ sudo bbb-conf --clean $ sudo bbb-conf --check The --clean option will clear out all the log files for BigBlueButton. The --check option will grep through the log files looking for errors. The output from sudo bbb-conf --check will display your current settings and, after the text, " Potential problems described below ", print any potential configuration or startup problems it has detected. ===== Additional steps based on environment type ===== Rails app (crossbow) is able to access the assets (videos, slides etc) processed by BBB server via a shared folder. /deploy/crossbow/shared/streams This folder needs to be shared and mounted across the network. \ ==== Cluster of BBB server ==== If this BBB server is going to be part of a clustered group: \\ 1) Identify the mount path and server: \\ Login to an existing BBB server or an app server and issue: \\ $ glusterfs --info That should output a number of glusterfs paths, identify the path associated with /deploy/crossbow/shared/streams and \\ add it to the gluster configuration on this box. \\ Refer to the App server configuration for further examples on Gluster installation and configuration. \\ 2) Verify the BBB networking and Application configuration matches the CLUSTER hostname. \\ ==== Standalone BBB server ==== 1) Share the streams folder: \\ $ mkdir /opt/streams Add this to glusterfs group and mount it on the app server. \\ Refer to the App server configuration for further examples on Gluster installation and configuration. \\ 2) Ensure the app server is configured to utilize this BBB server. \\ /deploy/crossbow/shared/config/{streamer.yml, recorder.yml, bigbluebutton.yml}. \\ ===== Additional steps for build role: ===== These steps need to be performed to able be able to build and deploy new releases. ==== 1. Additional System & BBB conf. ==== ***LOGIN AS BBB USER*** $ mkdir -p ~/dev/tools $ cd ~/dev/tools $ wget –-user='' --password='' –r –np –l 1 ftp://qacollab01.exphosted.com/softrepo/bbb/bbb_0.81/gradle-0.8.tar.gz $ tar xvfz gradle-0.8.tar.gz $ wget –-user='' --password='' –r –np –l 1 ftp://qacollab01.exphosted.com/softrepo/bbb/bbb_0.81/groovy-1.6.5.tar.gz $ tar xvfz groovy-1.6.5.tar.gz $ wget –-user='' --password='' –r –np –l 1 ftp://qacollab01.exphosted.com/softrepo/bbb/bbb_0.81/grails-1.3.9.tar.gz $ tar xvfz grails-1.3.9.tar.gz wget http://fpdownload.adobe.com/pub/flex/sdk/builds/flex4.5/flex_sdk_4.5.0.20967_mpl.zip mkdir -p ~/dev/tools/flex-4.5.0.20967 unzip flex_sdk_4.5.0.20967_mpl.zip -d flex-4.5.0.20967 sudo find ~/dev/tools/flex-4.5.0.20967 -type d -exec chmod o+rx '{}' \; chmod 755 ~/dev/tools/flex-4.5.0.20967/bin/* sudo chmod -R +r ~/dev/tools/flex-4.5.0.20967 ln -s ~/dev/tools/flex-4.5.0.20967 ~/dev/tools/flex mkdir -p flex-4.5.0.20967/frameworks/libs/player/11.2 cd flex-4.5.0.20967/frameworks/libs/player/11.2 wget http://download.macromedia.com/get/flashplayer/updaters/11/playerglobal11_2.swc mv -f playerglobal11_2.swc playerglobal.swc nano ~/.profile Paste the following export GROOVY_HOME=$HOME/dev/tools/groovy-1.6.5 export PATH=$PATH:$GROOVY_HOME/bin export GRAILS_HOME=$HOME/dev/tools/grails-1.3.9 export PATH=$PATH:$GRAILS_HOME/bin export FLEX_HOME=$HOME/dev/tools/flex export PATH=$PATH:$FLEX_HOME/bin export GRADLE_HOME=$HOME/dev/tools/gradle-0.8 export PATH=$PATH:$GRADLE_HOME/bin export JAVA_HOME=/usr/lib/jvm/java-6-openjdk export ANT_OPTS="-Xmx512m -XX:MaxPermSize=512m" Reload profile and checkout BBB repo $ source ~/.profile $ cd /home/expbbbp/dev $ git clone https://github.com/bigbluebutton/bigbluebutton.git $ git checkout tags/v0.81 Ensure the following directories exist: $ ls ~/dev/tools/flex $ ls ~/dev/srctrunk $ ls ~/dev/source/bigbluebutton Add Cronjob to restart BBB every fortnight. sudo crontab -e MAILTO="paarth@expertus.com" 1 1 */15 * * bbb-conf --restart ==== 2. Setup scripts ==== Copy build/deploy scripts: $ mkdir /home/expbbbp/bin $ cd /home/expbbbp/bin $ wget –-user='' --password='' –r –np –l 1 ftp://qacollab01.exphosted.com/softrepo/bbb/bbbbuild/bbb_deploy.tar $ tar xvf bbb_deploy.tar cd /deploy/expertus_meeting/current rbenv install 2.2.2 rbenv global 2.2.2 verify ruby -v -> output should be 2.2.2 verify whether Gemfile contains an entry for passenger if not add it bundle install --no-deployment - look for errors bundle install (without sudo) verify Passengerfile.json in /deploy/expertus_meeting/current has the right values for your environment { "environment": "staging", "address": "qameeting02.exphosted.com", "port":4000, "daemonize": true, "user": "expbbbp" } modify the /home/expbbbp/bin/expertus_meeting.sh has the right values ==== 3. Run Scripts ==== Run deploybbbclient.sh and then, deploy_bbb_recorder.sh $ ./deploybbbclient.sh $ ./deploy_bbb_recorder.sh ########################## =====Setting up a server with BigBlueButton 0.8===== ==== 1. Prepare System ==== The requirements are Ubuntu 10.04 64-bit 4 GB of memory (8 GB is better) Quad-core 2.6 GHZ CPU (or faster) Ports 80, 1935, 9123 accessible Port 80 is not used by another application 500G of free disk space (or more) for recordings \\ You will also need credentials with READ access to the software repository. \\ Start with adding the user: $ useradd -d /home/expbbbu -m expbbbu In addition to the above, the locale of the server must be en_US.UTF-8. Furthermore, the contents of /etc/default/locale must contain the single line LANG="en_US.UTF-8". You can verify this as below. $ cat /etc/default/locale LANG="en_US.UTF-8" If you don't see LANG="en_US.UTF-8", then do the following $ sudo apt-get install language-pack-en $ sudo update-locale LANG=en_US.UTF-8 and then logout and log back into your session. After the above, do $ cat /etc/default/locale again and verify you see only the single line $ LANG="en_US.UTF-8". Note: if you see an additional line LC_ALL=en_US.UTF-8, then remove the setting for LC_ALL before continuing. Also, check that you are running Ubuntu 10.04, 64-bit. $ uname -a x86_64 You should see x86_64. $ cat /etc/lsb_release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=10.04 DISTRIB_CODENAME=lucid DISTRIB_DESCRIPTION="Ubuntu 10.04.4 LTS" You should also not have any version of ruby installed. $ ruby -v -bash: ruby: command not found If you have a version of ruby installed (such as ruby 1.8) uninstall the packages first. $ apt-get remove ruby* Update to the latest binaries: $ sudo apt-get update $ sudo apt-get dist-upgrade Reboot and login as expbbbu user. ==== 2. Pull software from repo ==== $ mkdir /tmp/bbb $ wget –-user='' --password='' –r –np –l 1 –A deb ftp://qacollab01.exphosted.com/softrepo/bbb/bbb_0.8/ $ wget –-user='' --password='' –r –np –l 1 ftp://qacollab01.exphosted.com/softrepo/bbb/bbb_0.8/VERSIONS ==== 3. Install base software ==== $ sudo dpkg -i openoffice.org_1.0.4_all.deb $ sudo apt-get install python-software-properties $ sudo apt-add-repository ppa:libreoffice/libreoffice-4-0 $ sudo apt-get update sudo apt-get install libreoffice-common sudo apt-get install libreoffice This next install command will give you an error about dependencies not found. $ sudo dpkg -i ruby1.9.2_1.9.2-p290-1_amd64.deb To resolve the dependencies, enter $ sudo apt-get install -f After the package installs, run the following two commands to setup the paths to the ruby executable. $ sudo update-alternatives --install /usr/bin/ruby ruby /usr/bin/ruby1.9.2 500 \ --slave /usr/bin/ri ri /usr/bin/ri1.9.2 \ --slave /usr/bin/irb irb /usr/bin/irb1.9.2 \ --slave /usr/bin/erb erb /usr/bin/erb1.9.2 \ --slave /usr/bin/rdoc rdoc /usr/bin/rdoc1.9.2 $ sudo update-alternatives --install /usr/bin/gem gem /usr/bin/gem1.9.2 500 Run the following command to check that ruby is now installed. $ ruby -v ruby 1.9.2p290 (2011-07-09 revision 32553) And that gem is now installed. $ gem -v 1.3.7 ==== 4. Install ffmpeg (For video processing) ==== $ wget –-user='' --password='' ftp://qacollab01.exphosted.com/install_ffmpeg.sh | bash After the script finishes, check that ffmpeg is installed by typing the command ffmpeg -version. You should see something similar - it is important that the version matches '2.0.1'. $ ffmpeg -version ffmpeg version 2.0.1 built on Dec 19 2013 03:51:26 with gcc 4.4.3 (Ubuntu 4.4.3-4ubuntu5.1) configuration: --enable-version3 --enable-postproc --enable-libvorbis --enable-libvpx libavutil 52. 38.100 / 52. 38.100 libavcodec 55. 18.102 / 55. 18.102 libavformat 55. 12.100 / 55. 12.100 libavdevice 55. 3.100 / 55. 3.100 libavfilter 3. 79.101 / 3. 79.101 libswscale 2. 3.100 / 2. 3.100 libswresample 0. 17.102 / 0. 17.102 ==== 5. Install BigBlueButton ==== **IMPORTANT** Learnexa’s BBB client has strict dependency on BBB 0.8 including individual component versions. Only use the packages from the source mentioned. Ensure we are still in /tmp/bbb $ pwd /tmp/bbb Install BBB $ dpkg -i *.deb This will install the required version of BBB and bbb-conf binary. Ensure each component of BBB is installed and the version matches. Compare VERSIONS file (downloaded earlier) with the output of bbb-conf --version $ bbb-conf --version > installed_versions $ diff -u installed_V VERSIONS The last output line is and should be empty. You should not receive any output, in case any of installed BBB's components have a different version that what is required - the command above will print the package name. ==== 6. Deploy & Brand apps. ==== Copy the latest BBB client build folder to /home/expbbbp/dev/source/bigbluebutton/bigbluebutton-client/bin $ cp bbbbuild/current /home/expbbbp/dev/source/bigbluebutton/bigbluebutton-client/bin $ ln -nfs client /home/expbbbp/dev/source/bigbluebutton/bigbluebutton-client/bin Copy the latest recorder app build to Red5. $ cp recorder.war /usr/share/red5/webapps/ ==== 7. BBB & FreeSwitch Configuration ==== Setup BBB auth checksum and networking: #**Please note the variable below ** $ sudo bbb-conf --setsalt / rails_app/config/bigbluebutton.yml / $ sudo bbb-conf --set-ip $ cp freeswitchconf/public.xml /opt/freeswitch/conf/dialplan/public.xml $ cp freeswitchconf/conference.conf.xml /opt/freeswitch/conf/autoload_configs/conference.conf.xml Fix Deployed Apps configuration: Open /home/expbbbp/dev/source/bigbluebutton/bigbluebutton-client/bin/config/conf.xml and replace string "192.168.7.52" with Rails APP (Crossbow) endpoint FQDN and replace string "192.168.7.10" with this collab box's endpoint FQDN Modify certain default parameters in FreeSwitch. Further read: https://wiki.exphosted.com/doku.php/installing_bigbluebutton?s[]=freeswitch Fix Nginx configuration. $ cp nginxconf/ /etc/nginx/ -rf $ cp bigbluebuttonconf/bigbluebutton.properties /var/lib/tomcat6/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties ==== 8. Do a Clean Restart ==== To ensure BigBlueButton has started cleanly, enter the following commands: $ sudo bbb-conf --clean $ sudo bbb-conf --check The --clean option will clear out all the log files for BigBlueButton. The --check option will grep through the log files looking for errors. The output from sudo bbb-conf --check will display your current settings and, after the text, " Potential problems described below ", print any potential configuration or startup problems it has detected. bbb-conf might / will complain about IP address mismatch problems. This is just a false positive as bbb-conf does not \ address private <-> public IP NATs when checking for hostname status. If you must fix this annoyance, copy and replace the bbb-conf script with the one in repo. ===== Additional steps based on environment type ===== Rails app (crossbow) is able to access the assets (videos, slides etc) processed by BBB server via a shared folder. /deploy/crossbow/shared/streams This folder needs to be shared and mounted across the network. \ ==== Cluster of BBB server ==== If this BBB server is going to be part of a clustered group: \\ 1) Identify the mount path and server: \\ Login to an existing BBB server or an app server and issue: \\ $ glusterfs --info That should output a number of glusterfs paths, identify the path associated with /deploy/crossbow/shared/streams and \\ add it to the gluster configuration on this box. \\ Refer to the App server configuration for further examples on Gluster installation and configuration. \\ 2) Verify the BBB networking and Application configuration matches the CLUSTER hostname. \\ ==== Standalone BBB server ==== 1) Share the streams folder: \\ $ mkdir /opt/streams Add this to glusterfs group and mount it on the app server. \\ Refer to the App server configuration for further examples on Gluster installation and configuration. \\ 2) Ensure the app server is configured to utilize this BBB server. \\ /deploy/crossbow/shared/config/{streamer.yml, recorder.yml, bigbluebutton.yml}. \\ ===== Additional steps for build role: ===== These steps need to be performed to able be able to build and deploy new releases. ==== 1. Additional System & BBB conf. ==== $ bbb-conf --setup-dev tools $ source ~/.profile $ bbb-conf --setup-dev client $ apt-get install ant $ export ANT_OPTS=-XX:MaxPermSize=512m Ensure the following directories exist: $ ls ~/dev/tools/flex $ ls ~/dev/srctrunk $ ls ~/dev/source/bigbluebutton Add Cronjob to restart BBB every fortnight. sudo crontab -e MAILTO="devops@expertus.com" * 1 */15 * * bbb-conf --restart ==== 2. Setup scripts ==== Copy bbbbuild/bin folder from repo to user's home dir $ cp bbbbuild/bin ~/bin -rf Open /home/expbbbp/dev/source/bigbluebutton/bigbluebutton-client/src/config/conf.xml and replace string "192.168.7.52" with Rails APP (Crossbow) endpoint FQDN and replace string "192.168.7.10" with this collab box's endpoint FQDN ==== 3. Run Scripts ==== Run deploybbbclient.sh and then, deploy_bbb_recorder.sh $ ./deploybbbclient.sh $ ./deploy_bbb_recorder.sh