create_bbb.sh | ||
README.md |
docker-dev
How to use Docker to setup a development environment for BigBlueButton
docker run -d --name=$NAME --hostname=$HOSTNAME $NETWORKPARAMS -env="container=docker" --env="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" --env="DEBIAN_FRONTEND=noninteractive" -v "/var/run/docker.sock:/docker.sock:rw" --cap-add="NET_ADMIN" --privileged -v "$HOME/$NAME/certs/:/local/certs:rw" --cgroupns=host -v "$BBB_SRC_FOLDER:/home/bigbluebutton/src:rw" -v "/tmp:/tmp:rw" -v "$HOME/.m2/repository/org/bigbluebutton:/home/bigbluebutton/.m2/repository/org/bigbluebutton:rw" -v "$HOME/.ivy2/local/org.bigbluebutton:/home/bigbluebutton/.ivy2/local/org.bigbluebutton:rw" -t $IMAGE
Environment
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 ).
SSL certificate
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.
Docker setup
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
Container setup
-
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 2.6
./create_bbb.sh --image=imdt/bigbluebutton:2.6.x-develop --update bbb26
Docker bbb 2.5
./create_bbb.sh --image=imdt/bigbluebutton:2.5.x-develop --update bbb25
Docker bbb 2.4
./create_bbb.sh --image=imdt/bigbluebutton:2.4.x-develop --update bbb24
Parameters:
./create_bbb.sh [--update] [--fork=github_user] [--domain=domain_name] [--ip=ip_address] [--image=docker_image] [--cert=certificate_dir] [--custom-script=path/script.sh] {name}
- {name}: Name of the container (e.g
bbb26
) (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
- --image: Force an image different than default
--image=imdt/bigbluebutton:2.6.x-develop
Using the container
SSH session within the container
ssh bbb26
Replace bbb26 with the {name} param of create_bbb.sh
Use /tmp
to exchange files
The directory /tmp
is shared between the host and the container. So you can use this directory to exchange files between them.
Start using BigBlueButton
That's all, open https://bbb26.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
Removing an existing container
./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
BBB-Conf
Link to the API-Mate: bbb-conf --salt
Restart BBB: sudo bbb-conf --restart
Check configs: sudo bbb-conf --check
Troubleshooting
In case of problems, you can update the packages by running:
sudo apt update
sudo apt dist-upgrade -y
Instructions to run BigBlueButton from source (via command-line)
- 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
HTML5 client
Running HTML5
cd ~/src/bigbluebutton-html5/
./run-dev.sh
Running HTML5 with Full RESET (needed sometimes)
cd ~/src/bigbluebutton-html5/
./run-dev.sh --reset
Common-Message (required for BBB-Web and Akka)
cd ~/src/bbb-common-message
./deploy.sh
BBB-Web (API)
Running Bigbluebutton-web
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
Akka-apps
Running Akka within bbb-docker-dev
cd ~/src/akka-bbb-apps/
./run-dev.sh
Running Akka on IntelliJ IDEA
- 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
Redis
- To track the exchange of messages between applications
redis-cli psubscribe "*" | grep --line-buffered -v 'pmessage\|CheckRunningAndRecording\|MeetingInfoAnalyticsServiceMsg\|CheckAliveP\|GetUsersStatusToVoiceConfSysMsg\|SendCursorPosition\|DoLatencyTracerMsg'