Docker files for BigBlueButton
Go to file
Clemens Heuberger ce1a8b0eed Enable Presentation Download
Fix filename regular expression for download of presentation
files.
2020-05-17 21:30:09 +02:00
bbb-webrtc-sfu@400fe636e6 changes for v2.2.7 2020-04-29 16:35:03 +02:00
conf Configuration for SIP dial in 2020-04-23 14:51:48 +02:00
mod Enable Presentation Download 2020-05-17 21:30:09 +02:00
.gitignore postgres data persistance 2020-05-17 11:06:28 +02:00
.gitmodules add bbb-webrtc-sfu as git submodule 2020-04-11 19:39:55 +02:00
docker-compose.demo.yml added greenlight and api demos 2020-04-12 16:01:57 +02:00
docker-compose.greenlight.yml postgres data persistance 2020-05-17 11:06:28 +02:00
docker-compose.https.yml optional https reverse proxy 2020-04-13 15:51:33 +02:00
docker-compose.yml isolated network for core container 2020-05-15 21:31:41 +02:00
LICENSE Initial commit 2017-10-27 14:57:35 -04:00
README.md fix for some README typos 2020-05-17 11:14:46 +02:00
sample.env Configuration for SIP dial in 2020-04-23 14:51:48 +02:00

BigBlueButton Docker

Please note

  • Not well tested, can be still really buggy. Don't use for production!

Install

  1. Install docker-ce & docker-compose
    1. follow instructions
    2. Ensure docker works with $ docker run hello-world
    3. Install docker-compose: https://docs.docker.com/compose/install/
    4. Ensure docker-compose works: $ docker-compose --version
  2. Clone this repository
    $ git clone --recurse-submodules https://github.com/alangecker/bigbluebutton-docker.git bbb-docker
    $ cd bbb-docker
    
  3. Create .env with $ cp sample.env .env
  4. Adjust the values in .env
    • Important: don't forget to change ETHERPAD_API_KEY, SHARED_SECRET and RAILS_SECRET to any random values! For example generated with pwgen 40 3
    • DOMAIN and EXTERNAL_IP are also required. For example, use dig +short <DOMAIN> to get your external ip address.
  5. Start container. either...
    • Most common setup: BigBlueButton with automatic HTTPS certificate retrieval and Greenlight
      $ docker-compose \
          -f docker-compose.yml \
          -f docker-compose.https.yml \
          -f docker-compose.greenlight.yml \
          up --detach
      
    • Individual parts:
      • BigBlueButton $ docker-compose up -d
      • HTTPS reverse proxy
        • $ docker-compose -f docker-compose.https.yml up -d
      • API demos
      • Greenlight
        • $ docker-compose -f docker-compose.greenlight.yml up -d
        • Create an administrator account
          $ docker exec greenlight-v2 bundle exec rake admin:create
        • Access https://bbb.example.com/b

Note if you use a Firewall / NAT

Kurento binds somehow always to the external IP instead of the local one or 0.0.0.0. For that reason you need to add your external IP to your interface.

Temporary way (until next reboot)
$ ip addr add 144.76.97.34/32 dev ens3
Permanent way

Specific to your linux distribution. Use a search engine of your choice. ;)

Ports

Also don't forget to forward all necassary ports listed in http://docs.bigbluebutton.org/2.2/configure-firewall.html

Upgrading

Upgrade BigBlueButton

cd bbb-docker

# pull repo changes
git pull 

# update bbb-webrtc-sfu
git submodule update --remote 

# rebuild images
docker-compose build --pull --no-cache 

# recreate updated services
docker-compose up -d

Upgrade Greenlight

Important: especially with a version before 2020-05-17 create a database backup first, otherwise the data will not be persistent between container recreations.

cd bbb-docker

# create a database backup
docker exec -t docker_postgres_1 pg_dumpall -c -U postgres > /root/greenlight_`date +%d-%m-%Y"_"%H_%M_%S`.sql

# pull repo changes
git pull 

# pull image updates
docker-compose -f docker-compose.greenlight.yml pull

# recreate & restart services if necessary
docker-compose -f docker-compose.greenlight.yml up -d

Upgrade HTTPS Proxy

[to be written]

Special thanks to

Open Tasks

  • add support for recording
  • add coturn support
  • further separate bbb-core into individual container
  • enable IPv6 support
  • fix captions (they don't appear, readOnlyPadId is missing)
  • switch to node:12-buster-slim for html5
  • switch to node:12-buster-slim for webrtc-sfu
  • drop root privileges in webrtc-sfu
  • drop root privileges in kurento