# bbb-docker Development

## Running
you can run bbb-docker locally without any certificate issues with following `.env` configurations:

```
DEV_MODE=true

ENABLE_HTTPS_PROXY=true
#ENABLE_COTURN=true
#ENABLE_GREENLIGHT=true
#ENABLE_WEBHOOKS=true
#ENABLE_PROMETHEUS_EXPORTER=true
#ENABLE_RECORDING=true

DOMAIN=10.7.7.1
EXTERNAL_IPv4=10.7.7.1
STUN_IP=216.93.246.18
STUN_PORT=3478
TURN_SERVER=turns:localhost:5349?transport=tcp

TURN_SECRET=SuperTurnSecret
SHARED_SECRET=SuperSecret
ETHERPAD_API_KEY=SuperEtherpadKey
RAILS_SECRET=SuperRailsSecret

# ====================================
# CUSTOMIZATION
# ====================================

[... add rest of sample.env here ...]
```

- regenerate `docker-compose.yml` \
  `$ ./scripts/generate-compose`
- you can than start it with \
  `$ docker-compose up -d`
- view the logs with \
  `$ docker-compose logs -f`
- and access the API via \
  https://mconf.github.io/api-mate/#server=https://10.7.7.1/bigbluebutton/api&sharedSecret=SuperSecret
    * At some point your browser will warn you about an invalid certificate, but you can press _"Accept the Risk and Continue" / "Proceed to 10.7.7.1 (unsafe)"_


## Notes
- Joining a room via Greenlight currently leads to a "401 session not found" error (see https://github.com/alangecker/bigbluebutton-docker/issues/66). Use the API Mate instead

## Changes
- After doing some changes you usually must...
  - recreate `docker-compose.yml` \
    `$ ./scripts/generate-compose`
  * rebuild the image(s): \
    `$ docker-compose build [containername]`
  * restart changes image(s): \
    `$ docker-compose up -d`


## How to do create a new update for a newer BBB release?
This always consists out of following steps
1. **Get an understanding about changes that happened and find out what changes to bbb-docker that require.** \
    * Sometimes there are changes made which are not accessible in the [bigbluebutton/bigbluebutton](https://github.com/bigbluebutton/bigbluebutton) repo, so you should rather look through all the related commits in [alangecker/bbb-packages](https://github.com/alangecker/bbb-packages/commits/master)
    * Before being overwhelmed: All these compiled `.js`,`.class`,etc. files are irrelevant to check! :)
2. **Apply these changes to this project.** 
    * Quite often you only need to set `TAG` to the corresponding release tag in [bigbluebutton/bigbluebutton](https://github.com/bigbluebutton/bigbluebutton) like `v2.2.31`. To avoid the unnecessary recreation of images, only change the TAG of those components, which actually received a change.
    * New config variables are also quite common
    * don't forget to checkout a newer version of `bbb-webrtc-sfu` if it also happened in the release. you can find out what the current version is [here](https://github.com/alangecker/bbb-packages/blob/v2.3.x/bbb-webrtc-sfu/data/usr/local/bigbluebutton/bbb-webrtc-sfu/package.json)
    * if available, you can also think about switching to more recent images of kurento, etherpad, nginx, etc.
3. Test everything (with firefox **and** chromium/chrome)
    * Audio
    * Video
    * Presentation upload
    * Shared Notes
4. Create a `CHANGELOG.md` entry
5. Create a Pull Request
6. Receive big thanks from @alangecker