How to use Docker to setup a development environment for BigBlueButton
We're considering you are using a Ubuntu 20.04 LTS but other versions/distributions can work too.
An internet connection is required. It can be a shared network ( no need to forward ports in your router ).
Running a BigBlueButton server requires a SSL certificate. The install script will automatically generate an self-signed certificate or you can rather specify a folder which contains a previous generated certificate.
The next script depends on having docker available to your user, so before proceeding, run the following command (note that a computer reboot is required):
sudo usermod -aG docker `whoami`
sudo reboot
-
Save (right click, save as) the creation script in home directory (
~
): create_bbb.sh -
Add permissions to the script:
chmod +x create_bbb.sh
- Run the script ( it will remove previously created dockers and create a new one): Docker bbb 3.0
./create_bbb.sh --image=imdt/bigbluebutton:3.0.x-develop --update bbb30
Docker bbb 2.7
./create_bbb.sh --image=imdt/bigbluebutton:2.7.x-develop --update bbb27
Docker bbb 2.6
./create_bbb.sh --image=imdt/bigbluebutton:2.6.x-develop --update bbb26
Parameters:
./create_bbb.sh [--update] [--fork=github_user] [--fork-skip] [--domain=domain_name] [--ip=ip_address] [--image=docker_image] [--cert=certificate_dir] [--custom-script=path/script.sh] [--docker-custom-params=""] [--docker-network-params=""] {name}
- {name}: Name of the container (e.g
bbb30
) (REQUIRED) - --update: check for new image version
--update
- --domain: set the host domain (e.g
--domain=test
), default:test
. BBB URL will behttps://{NAME} + {DOMAIN}
- --cert: specify the directory which contains a certificate (
fullchain.pem
andprivkey.pem
) (e.g--cert=/tmp
) (if absent a new certificate will be created) - --custom-script: path of a shell script file to be executed immediately when the container is created (useful for setting some personal preferences for configs)
- --ip: force container IP (e.g
--ip=172.17.0.2
) - --fork: Username in Github with bbb Fork
--fork=bigbluebutton
- --fork-skip: Skip the step to clone Bigbluebutton project
- --image: Force an image different from default
--image=imdt/bigbluebutton:2.6.x-develop
- --docker-custom-params: Append a custom param to
docker run
, for instance:- mount a directory from your host into the container
--docker-custom-params="-v $HOME/bbb30/shared:/home/bigbluebutton/shared:rw"
- run docker with limited resources (8 cores)
--docker-custom-params="--cpuset-cpus=0-7"
- mount a directory from your host into the container
- --docker-network-params: Override the default param if necessary, for instance to make the container use the host's IP set
--docker-network-params="--net=host"
ssh bbb30
Replace bbb30 with the {name} param of create_bbb.sh
The directory /tmp
is shared between the host and the container. So you can use this directory to exchange files between them.
Alternatively, you can use the --docker-custom-params
parameter to designate a different directory as the exchange location.
That's all, open https://bbb30.test (or your custom https://{name}.{domain}
) in your browser and enjoy.
PS: if you see certificate error in your browser, you need to add the CA certificate in it's trusted certificates. Instructions for Chrome and Firefox can be found here
./create_bbb.sh --remove {container_name}
or rather you can remove a BBB docker image using docker image rm imdt/bigbluebutton:2.6.x-develop --force
Link to the API-Mate: bbb-conf --salt
Restart BBB: sudo bbb-conf --restart
Check configs: sudo bbb-conf --check
Console Url: https://bbb30.test/console ({your bbb domain}
/console
)
Password: bigbluebutton
In case of problems, you can update the packages by running:
sudo apt update
sudo apt dist-upgrade -y
- HTML5 - bigbluebutton-html5: the Front-End (users meeting interface) [Meteor]
- AKKA - akka-bbb-apps: Backend that exchange msgs with Frontend through Redis pub/sub msgs (stores the meeting state and execute validations for Html5, e.g: Can John send a message?) [Scala]
- API - bigbluebutton-web: Receives requests e.g: Create room, Enter room (when someone asks to enter the room, enters the API and then is redirected to html5) [Grails]
- -bbb-common-web: Contains useful functions that are used by the API [JAVA]
- bbb-common-message: Contains all Redis messages! Akka and the API import this project to know the existing messages [JAVA]
Further informations in https://docs.bigbluebutton.org/2.6/dev.html
cd ~/src/bigbluebutton-html5/
./run-dev.sh
cd ~/src/bigbluebutton-html5/
./run-dev.sh --reset
cd ~/src/bbb-common-message
./deploy.sh
cd ~/src/bigbluebutton-web/
./run-dev.sh
If bbb-common-web
was changed run:
cd ~/src/bbb-common-web
./deploy.sh
cd ~/src/bigbluebutton-web/
./build.sh
cd ~/src/akka-bbb-apps/
./run-dev.sh
- Requires Common-Message
- Open bbb-docker-dev SSH connection appending
-with-ports
to the command (it will create tunnel for Redis port 6379)
ssh {container_name}-with-ports
- Run Akka within Docker once, to set the configs
cd ~/src/akka-bbb-apps/
./run-dev.sh
-
If everything is working, press
Ctrl + C
to stop -
Open IDEA, open the Sbt tab and run:
~reStart
- To track the exchange of messages between applications
redis-cli psubscribe "*" | grep --line-buffered -v 'pmessage\|CheckRunningAndRecording\|MeetingInfoAnalyticsServiceMsg\|CheckAliveP\|GetUsersStatusToVoiceConfSysMsg\|SendCursorPosition\|DoLatencyTracerMsg'
- Create a meeting and copy the Voice Bridge number
Within the container run (replacing by the voice bridge you just copied):
VOICE_BRIDGE=76034
cd /opt/sipp
sudo sipp -sn uac_pcap -m 1 -aa -d 30000 -s $VOICE_BRIDGE "$(hostname -I | awk '{print $1}')":5060