Docker files for BigBlueButton
Go to file
2020-05-31 00:19:44 +02:00
bbb-webrtc-sfu@400fe636e6 changes for v2.2.7 2020-04-29 16:35:03 +02:00
conf gitignore and instructions for default presentation 2020-05-22 15:46:35 +02:00
mod html5: applied new settings added with v2.2.15 2020-05-31 00:19:44 +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 kurento: specify network interface for reduced candidates and open sockets 2020-05-31 00:14:14 +02:00
LICENSE Initial commit 2017-10-27 14:57:35 -04:00
README.md Merge branch 'turn-support' into develop 2020-05-22 15:08:59 +02:00
sample.env kurento: specify network interface for reduced candidates and open sockets 2020-05-31 00:14:14 +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
  • 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