docker-dev/README.md
2023-02-01 10:25:05 -03:00

5.7 KiB

docker-dev

How to use Docker to setup a development environment for BigBlueButton

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
  • For Ubuntu 22.04 users: In our tests, containerd had to be downgraded to version 1.6.6 in order to have all features working properly. sudo apt install containerd.io=1.6.6-1.

Container setup

  1. Save (right click, save as) the creation script in home directory (~): create_bbb.sh

  2. Add permissions to the script:

chmod +x create_bbb.sh
  1. 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] {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 be https://{NAME} + {DOMAIN}
  • --cert: specify the directory which contains a certificate (fullchain.pem and privkey.pem) (e.g --cert=/tmp) (if absent a new certificate will be created)
  • --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

image


Redis

  • To track the exchange of messages between applications
redis-cli psubscribe "*" | grep --line-buffered -v 'pmessage\|CheckRunningAndRecording\|MeetingInfoAnalyticsServiceMsg\|CheckAliveP\|GetUsersStatusToVoiceConfSysMsg\|SendCursorPosition\|DoLatencyTracerMsg'