docker-dev/README.md
2023-02-19 19:54:42 +08:00

218 lines
6.6 KiB
Markdown

# 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
```
```
docker run --name=bbb26 --hostname=bbb.jingweiht.com \
--network host \
--cap-add="NET_ADMIN" \
-v "/var/run/docker.sock:/docker.sock:rw" \
-v "/tmp:/tmp:rw" \
--rm \
-it imdt/bigbluebutton:2.6.x-develop_build_869
```
## Environment
We're considering you are using a [Ubuntu 20.04 LTS](https://ubuntu.com/download/desktop) 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):
```sh
sudo usermod -aG docker `whoami`
sudo reboot
```
## Container setup
1. Save (right click, save as) the creation script in home directory (`~`): [create_bbb.sh](create_bbb.sh?raw=1)
2. Add permissions to the script:
```sh
chmod +x create_bbb.sh
```
3. 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 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)*
- --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](https://github.com/bigbluebutton/docker-dev/issues/1)
## 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:
```sh
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**
```bash
cd ~/src/akka-bbb-apps/
./run-dev.sh
```
#### Running Akka on **IntelliJ IDEA**
- [Requires Common-Message](#common-message-required-for-bbb-web-and-akka)
- Open bbb-docker-dev SSH connection appending `-with-ports` to the command *(it will create tunnel for Redis port 6379)*
```bash
ssh {container_name}-with-ports
```
- Run Akka within Docker once, to set the configs
```bash
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](https://user-images.githubusercontent.com/5660191/158892260-8356d117-3be8-424a-aa24-ca405511f4e5.png)
---
## Redis
- To track the exchange of messages between applications
```
redis-cli psubscribe "*" | grep --line-buffered -v 'pmessage\|CheckRunningAndRecording\|MeetingInfoAnalyticsServiceMsg\|CheckAliveP\|GetUsersStatusToVoiceConfSysMsg\|SendCursorPosition\|DoLatencyTracerMsg'
```