Site Tools


Hotfix release available: 2025-05-14b "Librarian". upgrade now! [56.2] (what's this?)
Hotfix release available: 2025-05-14a "Librarian". upgrade now! [56.1] (what's this?)
New release available: 2025-05-14 "Librarian". upgrade now! [56] (what's this?)
Hotfix release available: 2024-02-06b "Kaos". upgrade now! [55.2] (what's this?)
Hotfix release available: 2024-02-06a "Kaos". upgrade now! [55.1] (what's this?)
New release available: 2024-02-06 "Kaos". upgrade now! [55] (what's this?)
Hotfix release available: 2023-04-04b "Jack Jackrum". upgrade now! [54.2] (what's this?)
Hotfix release available: 2023-04-04a "Jack Jackrum". upgrade now! [54.1] (what's this?)
New release available: 2023-04-04 "Jack Jackrum". upgrade now! [54] (what's this?)
Hotfix release available: 2022-07-31b "Igor". upgrade now! [53.1] (what's this?)
Hotfix release available: 2022-07-31a "Igor". upgrade now! [53] (what's this?)
New release available: 2022-07-31 "Igor". upgrade now! [52.2] (what's this?)
New release candidate 2 available: rc2022-06-26 "Igor". upgrade now! [52.1] (what's this?)
New release candidate available: 2022-06-26 "Igor". upgrade now! [52] (what's this?)
Hotfix release available: 2020-07-29a "Hogfather". upgrade now! [51.4] (what's this?)
New release available: 2020-07-29 "Hogfather". upgrade now! [51.3] (what's this?)
New release candidate 3 available: 2020-06-09 "Hogfather". upgrade now! [51.2] (what's this?)
New release candidate 2 available: 2020-06-01 "Hogfather". upgrade now! [51.1] (what's this?)
New release candidate available: 2020-06-01 "Hogfather". upgrade now! [51] (what's this?)
Hotfix release available: 2018-04-22c "Greebo". upgrade now! [50.3] (what's this?)
Hotfix release available: 2018-04-22b "Greebo". upgrade now! [50.2] (what's this?)
setup_and_deploy_bbb_11

This is an old revision of the document!


Setup and Deploy BBB 1.1

Setup BBB and Client

1. Setup BBB 1.1 - http://docs.bigbluebutton.org/install/install.html#installing-bigbluebutton-11

2. Setup BBB 1.1 development environment - http://docs.bigbluebutton.org/dev/setup.html

Verify that the BBB app launches fine with the client loading from development directory.

4. Changes to the config files -

sudo vi /var/lib/tomcat6/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties

maxNumPages=5000
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

sudo vi /etc/bigbluebutton/nginx/client.nginx

//change location /client/BigBlueButton.html {  -> location /client/LiveEvent.html {

sudo vi /etc/nginx/sites-enabled/bigbluebutton
client_max_body_size 200m

sudo vi /etc/bigbluebutton/nginx/web.nginx
client_max_body_size 200m;

sudo vi /etc/bigbluebutton/nginx/client.nginx
root /var/www/bigbluebutton => root /home/expbbbp/dev/bigbluebutton/bigbluebutton-client;

Make sure the proper ngnix configuration and add the ssl certificate path

5. Checkout client code from svn co https://repos.exphosted.com/svnrepos/collaboration/bbb/trunk/ and place it at <home of bbb user>/dev/bigbluebutton/bigbluebutton-client

6. Client config changes - Change config.xml file ( <home of bbb user>/dev/bigbluebutton/bigbluebutton-client src/conf/config.xml)
(It better to symlink this file has this is full of IP configuration)

     // Make this IP/URL changes based on the environment
     //Replace the ip (For instance - 192.168.2.240) 192.168.2.240 with this machine’s hostname(devcollab02.learnexa.com)
     sed -i s/http://192.168.2.184/devcollab02.learnexa.com/g bigbluebutton-client/src/conf/config.xml
     
     //Replace the ip http://192.168.2.154:3000 with learnexa url machine’s hostname
     sed -i s/http://192.168.2.154:3000/https://dev01.learnexa.com/g bigbluebutton-client/src/conf/config.xml

7. Compile client and restart bbb

cd <home of bbb user>/dev/bigbluebutton/bigbluebutton-client
ant 
ant locales
sudo bbb-conf --restart

Note - Steps 5-7 will be taken care by deploy script once the initial setup is done.

8. Setup freeswitch

9. Edit Learnexa rails app bigbluebutton.yml settings to place the details of bigbluebutton URL and salt. Restart learnexa rails app.

10. Whenever we change the collaburl in learnexa(config/bigbluebutton.yml) then the corresponded extension needs to be updated in learnexa

  1. Incase voice extension is changed in BBB setup then old extension needs to be deleted and the new extension needs to be added in the database via running the following backfill tasks(voice_extensions.rake) 
  
  a. First change the extention which is needs to be inactivated in(db/voice_extensions_inactive.csv) and run 
     bundle exec rake voice_extensions:inactivate 
  b. Delete the extension which are all inactive by running
     bundle exec rake voice_extensions:delete_inactive 
  c. Add the new extension which is needs to be added in (db/voice_extensions.csv) and run 
     bundle exec rake voice_extensions:populate
 

11. Edit public/crossdomain.xml settings to allow cross domain ajax requests from BBB machine URL.

12. Install the code signing certificate

13. Get the deployment script from svn based on the environment and make the required url changes based on the environments like(COLLAB_URL. etc..)

Setup/Deploy recorder App

1. Change /usr/share/red5/conf/red5-common.xml to replace queueThreshold and deplayWrite values.

<bean id="fileConsumer" scope="prototype" lazy-init="true" class="org.red5.server.stream.consumer.FileConsumer"> 
   <property name="delayWrite" value="false"/> 
   <property name="queueThreshold" value="14400"/> 
</bean>

Just running the deploy script after below mentioned changes is fine.

Setup Streams for video streaming

1) Edit / Verify Hosts. Check whether /etc/hosts has an entry mapping this machine's FQDN to 127.0.0.1 2) Mount “streams” brick.

touch /usr/share/red5/websapps/video/streams/error-if_you_see_this
mount.glusterfs <FQDN>:/streams /usr/share/red5/websapps/video/streams

3) Verify that it is correctly mounted and add to fstab.

Deploy Script changes

1) BBB client

1) Replace all the URLs in sed commands to update the /src/conf/config.xml

2) Make a directory as bbb user.

 mkdir -p ~/dev/srctrunk 

3) Change the value of BBBDIR to “/home/<bbb user>/dev/bigbluebutton”

2) Recorder server

1) Update the bbb user home directory and path to bbb directory correctly.

Collaboration Server Setup ( New steps )

Bigbluebutton1.1 installation steps URL is given below

http://docs.bigbluebutton.org/install/install.html
https://wiki.exphosted.com/doku.php/setup_and_deploy_bbb_11

Need to follow the below steps in the “http://docs.bigbluebutton.org/install/install.html

1. install
2. Setup Development Environment

swap space creation ( if the collab server contain 4GB, we need to create swap space )

https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-16-04
sudo apt-get install haveged
sudo apt-get update
sudo apt-get dist-upgrade
reboot 
sudo apt-get update

Add the user odeploy as sudo users

visudo
odeploy ALL=(ALL) NOPASSWD: ALL

Bigbluebutton clone from git

adduser expbbbp
su - expbbbp
sudo apt-get install git
sudo git clone https://github.com/bigbluebutton/bigbluebutton.git
chmod -R 775 dev
cd ~/dev
(/home/expbbbp/dev)
sudo chown -R expbbbp:expbbbp tools
sudo chown -R expbbbp:expbbbp bigbluebutton
sudo chmod 775 bigbluebutton

GLUSTER INSTALLATION

https://wiki.exphosted.com/doku.php/recorder_setup_bbb_v_1.0?s[]=glusterfs&s[]=3&s[]=7&s[]=6

IMPORTANT ( Development tools needs to be installed as “expbbbp” user )

 add-apt-repository ppa:gluster/glusterfs-3.8
 apt-get install glusterfs-client glusterfs-server
 mkdir -p /data/brick1/
 add the below entry
 vi /etc/hosts
 10.138.84.57 odevcollab01_https
 cd /mnt
 mkdir crossbow
 /usr/sbin/gluster volume create crossbow transport tcp 10.138.84.57:/data/brick1 force
 gluster volume start crossbow force
 /sbin/mount.glusterfs odevcollab01_https:/crossbow /mnt/crossbow
 mkdir -p /usr/share/red5/webapps/recorder/streams
 cd /usr/share/red5/webapps/
 chown -R red5:red5 recorder 


 cp /soft/collab_bin.zip /home/expbbbp
 chown -R expbbbp:expbbbp bin
 apt-get install subversion
 cd /home/expbbbp/dev/bigbluebutton
 
Cloning the source code of bigbluebutton from git
svn co https://repos.exphosted.com/svnrepos/collaboration/bbb/trunk 
mv trunk bigbluebutton-client_20180320102919
chown -R expbbbp:expbbbp bigbluebutton-client_20180320102919
cd /home/expbbbp/bin
vi deploybbbclient.sh
do perform find and replace
:%s/qacollab01.learnexa.com/odevcollab01.learnexa.com/g 
and changes the APPURL as 
   APPURL="dev.learnexa.com"
once done the changes, run the script
  ./deploybbbclient.sh

The “bigbluebutton.properties” of “/var/lib/tomcat7/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties” should be like this

#
# BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
#
# Copyright (c) 2012 BigBlueButton Inc. and by respective authors (see below).
#
# This program is free software; you can redistribute it and/or modify it under the
# terms of the GNU Lesser General Public License as published by the Free Software
# Foundation; either version 3.0 of the License, or (at your option) any later
# version.
#
# BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License along
# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
#

#
# These are the default properites for BigBlueButton Web application

# Default loglevel. 
appLogLevel=DEBUG

#----------------------------------------------------
# Directory where BigBlueButton stores uploaded slides
presentationDir=/var/bigbluebutton

#----------------------------------------------------
# Directory where SWFTOOLS (pdf2swf, jpeg2swf, png2swf) are located
swfToolsDir=/usr/bin

#----------------------------------------------------
# Directory where ImageMagick's convert executable is located
imageMagickDir=/usr/bin

#----------------------------------------------------
# Fonts directory passed into PDF2SWF to support highlighting of texts
# in the SWF slides.
fontsDir=/usr/share/fonts

#----------------------------------------------------
# These will be copied in cases where the conversion process
# fails to generate a slide from the uploaded presentation
BLANK_SLIDE=/var/bigbluebutton/blank/blank-slide.swf
BLANK_PRESENTATION=/var/bigbluebutton/blank/blank-presentation.pdf
BLANK_THUMBNAIL=/var/bigbluebutton/blank/blank-thumb.png

#----------------------------------------------------
# Number of minutes the conversion should take. If it takes
# more than this time, cancel the conversion process.
maxConversionTime=5

#----------------------------------------------------
# Maximum number of pages allowed for an uploaded presentation (default 100).
maxNumPages=5000

#----------------------------------------------------
# Maximum swf file size for load to the client (default 500000).
MAX_SWF_FILE_SIZE=500000

#----------------------------------------------------
# Maximum allowed number of place object tags in the converted SWF, if exceeded the conversion will fallback to full BMP (default 8000)
placementsThreshold=8000

# Maximum allowed number of bitmap images in the converted SWF, if exceeded the conversion will fallback to full BMP (default 8000)
imageTagThreshold=8000

# Maximum allowed number of define text tags in the converted SWF, if exceeded the conversion will fallback to full BMP (default 2000)
defineTextThreshold=2000

#------------------------------------
# Number of threads in the pool to do the presentation conversion.
#------------------------------------
numConversionThreads=2

#----------------------------------------------------
# Additional conversion of the presentation slides to SVG
# to be used in the HTML5 client
svgImagesRequired=false

# Default number of digits for voice conference users joining through the PSTN.
defaultNumDigitsForTelVoice=5

#----------------------------------------------------
# Default dial access number
defaultDialAccessNumber=613-555-1234

#----------------------------------------------------
# Default welcome message to display when the participant joins the web
# conference. This is only used for the old scheduling which will be
# removed in the future. Use the API to create a conference.
#
# If the message contains characters not in ISO-8859-1 character sets
# they must be properly escaped to unicode characters. An easy way to
# do this is running the native2ascii command setting UTF8 encoding and
# passing this file's path as input and output parameters, e.g.:
#
# native2ascii -encoding UTF8 bigbluebutton.properties bigbluebutton.properties
#
#defaultWelcomeMessage=<br>Welcome to <b>%%CONFNAME%%</b>!<br><br>For help on using BigBlueButton see these (short) <a href="event:http://www.bigbluebutton.org/content/videos"><u>tutorial videos</u></a>.<br><br>To join the audio bridge click the headset icon (upper-left hand corner).  Use a headset to avoid causing background noise for others.<br>
defaultWelcomeMessage=
defaultWelcomeMessageFooter=
#defaultWelcomeMessageFooter=This server is running <a href="http://docs.bigbluebutton.org/" target="_blank"><u>BigBlueButton</u></a>.

# Default maximum number of users a meeting can have.
# Current default is 0 (meeting doesn't have a user limit).
defaultMaxUsers=0

# Default duration of the meeting in minutes.
# Current default is 0 (meeting doesn't end).
defaultMeetingDuration=0

# Remove the meeting from memory when the end API is called.
# This allows 3rd-party apps to recycle the meeting right-away
# instead of waiting for the meeting to expire (see below).
removeMeetingWhenEnded=true

# The number of minutes before the system removes the meeting from memory.
defaultMeetingExpireDuration=1

# The number of minutes the system waits when a meeting is created and when
# a user joins. If after this period, a user hasn't joined, the meeting is
# removed from memory.
defaultMeetingCreateJoinDuration=5

# Disable recording by default. 
#   true - don't record even if record param in the api call is set to record
#   false - when record param is passed from api, override this default
disableRecordingDefault=false

# Start recording when first user joins the meeting.
# For backward compatibility with 0.81 where whole meeting
# is recorded.  
autoStartRecording=false

# Allow the user to start/stop recording.
allowStartStopRecording=true

# Allow webcams streaming reception only to and from moderators
webcamsOnlyForModerator=false 

#----------------------------------------------------
# This URL is where the BBB client is accessible. When a user sucessfully
# enters a name and password, she is redirected here to load the client.
bigbluebutton.web.serverURL=https://odevcollab01.learnexa.com


#----------------------------------------------------
# Assign URL where the logged-out participant will be redirected after sign-out.
# If "default", it returns to bigbluebutton.web.serverURL
bigbluebutton.web.logoutURL=default

# The url of the BigBlueButton client. User's will be redirected here when
# successfully joining the meeting.
defaultClientUrl=${bigbluebutton.web.serverURL}/client/LiveEvent.html
#defaultClientUrl=${bigbluebutton.web.serverURL}/client/BigBlueButton.html
#defaultClientUrl=http://192.168.0.235/3rd-party.html

# The default avatar image to display if nothing is passed on the JOIN API (avatarURL)
# call. This avatar is displayed if the user isn't sharing the webcam and
# the option (displayAvatar) is enabled in config.xml
defaultAvatarURL=${bigbluebutton.web.serverURL}/client/avatar.png

# The URL of the default configuration
defaultConfigURL=${bigbluebutton.web.serverURL}/client/conf/config.xml

apiVersion=1.1

# Salt which is used by 3rd-party apps to authenticate api calls
securitySalt=74682d7e47c263d4dc70a4a685957744

# Directory where we drop the <meeting-id-recorded>.done file
recordStatusDir=/var/bigbluebutton/recording/status/recorded

redisHost=127.0.0.1
redisPort=6379

# The directory where the published/unpublised recordings are located. This is for
# the get recording* api calls
publishedDir=/var/bigbluebutton/published
unpublishedDir=/var/bigbluebutton/unpublished

# The directory where the pre-built configs are stored
configDir=/var/bigbluebutton/configs

# If the API is enabled.
serviceEnabled = true

# Test voiceBridge number
testVoiceBridge=99999
testConferenceMock=conference-mock-default

#------------------------------------------------------
# These properties are used to test the conversion process.
# Conference name folder in ${presentationDir} (see above)
beans.presentationService.testConferenceMock=${testConferenceMock}

# Conference room folder in ${presentationDir}/${testConferenceMock}
beans.presentationService.testRoomMock=conference-mock-default
# Uploaded presentation name
beans.presentationService.testPresentationName=appkonference
# Uploaded presentation file
beans.presentationService.testUploadedPresentation=appkonference.txt
# Default Uploaded presentation file
beans.presentationService.defaultUploadedPresentation=${bigbluebutton.web.serverURL}/DefaultMockPresentationXYZ.pdf

presentationBaseURL=${bigbluebutton.web.serverURL}/bigbluebutton/presentation

#----------------------------------------------------
# The URL where the presentations will be loaded from.
#----------------------------------------------------
beans.presentationService.presentationBaseUrl=${presentationBaseURL}
#----------------------------------------------------
# Inject values into grails service beans
beans.presentationService.presentationDir=${presentationDir}

#----------------------------------------------------
# Specify which IPs can do cross domain requests
accessControlAllowOrigin=${bigbluebutton.web.serverURL}

#----------------------------------------------------
# The lapsus of seconds for polling the BBB Server in order to check if it's down.
# After 5 tries if there isn't response, it will be declared down
checkBBBServerEvery=10

if demo is not working ( http://hostname/demo/demo1.jsp ) after ran “deploybbbclient.sh” http 500 error ( java.lang.NullPointerException )

 sudo service redis-server restart
 URL for Reference : https://groups.google.com/forum/#!msg/bigbluebutton-dev/ryVNAW96m8Q/i4hM3fAsAAAJ
 Try the following
 sudo service redis-server restart
 sudo bbb-conf --check

If you still see issues with the redis server, try the following

sudo service redis-server stop
sudo mv /var/lib/redis/redis.rdb /var/lib/redis/redis.rdb_old
sudo service redis-server start
Recorder setup
cd /home/expbbbp/dev/bigbluebutton
mkdir recorder
cd /mnt/crossbow
sudo mkdir assets
sudo mkdir system
sudo mkdir streams
sudo chown -R odeploy:odeploy assets
sudo chown -R odeploy:odeploy system
sudo chown -R odeploy:red5 streams
sudo chmod -R 775 streams

su - expbbbp

cd ~/bin
(/home/expbbbp/bin)
vi deploy_recorder_server.sh
  replace expdev01 with odeploy
sh deploy_recorder_server.sh
cd /bin

place the below content

vi cbmount
#!/bin/bash
sudo umount /usr/share/red5/webapps/video/streams
sudo umount /usr/share/red5/webapps/recorder/streams
sudo umount odevcollab01_https:/crossbow
sudo /sbin/mount.glusterfs odevcollab01_https:/crossbow /mnt/crossbow
sudo mount -o bind /mnt/crossbow/streams /usr/share/red5/webapps/video/streams
sudo mount -o bind /mnt/crossbow/streams /usr/share/red5/webapps/recorder/streams

Whenever we re-start the collab server we need to run the “cbmount” script

cd /bin
./cbmount
setup_and_deploy_bbb_11.1556004058.txt.gz · Last modified: 2019/04/23 07:20 by 182.72.26.6