73 Commits
v2.4.x ... v2.6

Author SHA1 Message Date
44c2f9489c dev mode: note on broken greenlight connection 2023-03-24 23:07:09 +01:00
38441f5182 changelog for v2.6 2023-03-24 23:07:09 +01:00
917d180661 add greenlight-data to .gitignore 2023-03-24 23:07:09 +01:00
a55a09f6cd recordings: fix missing log file (dockerize crashes) 2023-03-24 23:07:09 +01:00
efaba305e1 greenlight: update to v3.0.2 2023-03-24 23:07:09 +01:00
711b47d844 recordings: add missing unzip dependency 2023-03-24 23:07:09 +01:00
43ef3aeb88 greenlight v3: migration script + docs 2023-03-24 23:07:09 +01:00
ce8f12fc60 BigBlueButton v2.6.0 2023-03-24 23:07:09 +01:00
3d433f8a5c greenlight v3 2023-03-24 23:07:08 +01:00
0766a4033c update base images 2023-03-24 23:04:41 +01:00
2a0cd91e72 freeswitch: build ourselves with patches included 2023-03-24 23:04:41 +01:00
ad484aa870 Merge pull request #252 from nr23730/patch-1
Set client_max_body_size for greenlight
2023-03-24 23:03:15 +01:00
bf353adb13 Merge pull request #254 from bigbluebutton/antobinary-patch-1
docs: Fixed typo in bbb-web Dockerfile
2023-03-21 22:42:43 +01:00
7573c6f634 Merge pull request #248 from bigbluebutton/v2.5.10
BigBlueButton v2.5.11
2023-03-20 23:20:40 +01:00
024d222b8b docs: Fixed typo in bbb-web Dockerfile 2023-03-03 09:05:14 -05:00
366be0a17c Set client_max_body_size for greenlight 2023-02-05 22:22:22 +01:00
ef295301b5 BBB v2.5.11 2023-01-10 17:24:33 +01:00
cef23f8236 actually checkout the submodules specified in tags.env 2023-01-10 17:19:35 +01:00
d8587b0e33 Release v2.5.8 2022-11-06 14:01:44 +01:00
81c3cacf29 Merge pull request #239 from bigbluebutton/fix-recordings-ffmpeg
update recordings base image to bullseye
2022-11-06 13:57:12 +01:00
f30496d430 Merge branch 'develop' into fix-recordings-ffmpeg 2022-11-06 13:56:50 +01:00
f2fe7959bb Merge pull request #238 from bigbluebutton/v2.5.8
BigBlueButton 2.5.8
2022-11-06 13:56:08 +01:00
bfa6679ff0 add a changelog entry 2022-11-04 17:06:17 +01:00
fc74f2a8b8 update recordings base image to bullseye
bullseye offers a more recent version of ffmpeg which solves the missing ffmpeg filter 'tpad'
https://github.com/bigbluebutton/docker/issues/235
2022-11-04 17:02:56 +01:00
c181ee9665 BBB 2.5.8 2022-11-04 16:50:08 +01:00
ad6b0d2d38 Merge pull request #231 from bigbluebutton/v2.5.5
BigBlueButton v2.5.5
2022-10-03 13:04:07 +02:00
618c432e73 v2.5.5 2022-09-19 21:39:41 +02:00
ca7d2baa38 fix upgrade executable bit 2022-07-01 10:55:28 +02:00
2ff3b8c4e2 BBB 2.5.2 2022-06-23 16:06:02 +02:00
db8c9918b6 Merge pull request #207 from bigbluebutton/v2.5.x
WIP: BigBlueButton 2.5 + several other changes
2022-06-10 23:00:08 +02:00
49c6eea96a BBB v2.5 2022-06-10 22:27:54 +02:00
3bda5364df bbb v2.5.0-rc.4 2022-05-22 18:12:25 +02:00
682ea566c4 docs: multiple minor changes for 2.5 2022-05-09 12:21:50 +02:00
512327740a fix coturn container 2022-05-09 07:24:07 +02:00
e2fb894f24 scripts for publishing and upgrading images 2022-05-08 20:40:34 +02:00
9e9fff92c6 recordings: wrong tag variable 2022-05-08 20:07:49 +02:00
5d326709b6 publish images 2022-05-08 19:45:59 +02:00
20bb46fb4d bbb v2.5-rc.1, etherpad 1.8.18 2022-05-08 18:54:23 +02:00
aaa2d63d67 fix recordings: missing yq, wrong CWD and kurento is still required 2022-05-07 14:26:04 +02:00
865b39d1ce v2.5.0-beta.2, minor bugfixes 2022-05-04 01:10:11 +02:00
b4aa33d20d Update Dockerfile
This should fix issues with failing recordings which include presentation polls.
2022-04-17 13:31:38 +02:00
b3a1b010f9 Merge pull request #205 from lightweight/develop
Update Dockerfile
2022-04-17 13:31:26 +02:00
cf74a26268 Merge pull request #210 from pedrobmarin/e-aio
etherpad: avoid icons overlapping
2022-04-17 13:30:41 +02:00
e60f20b397 Merge pull request #211 from pedrobmarin/e-ebpsh
etherpad: enforce bbb-pads session handling
2022-04-17 13:29:55 +02:00
79dc8d31a4 mediasoup: IPv6 support 2022-04-17 13:20:41 +02:00
4634f5d5f1 etherpad: avoid icons overlapping
cc @frankemax

Reference: https://github.com/bigbluebutton/bigbluebutton/pull/14567
2022-04-17 08:19:43 -03:00
b5eb823640 etherpad: enforce bbb-pads session handling
At v2.5 we intoduced `bbb-pads` as a session manager for Etherpad.

Enabling `requireSession` and `editOnly` at Etherpad's settings closes
the HTTP access from all other sources besides `bbb-pads`.
2022-04-17 08:10:48 -03:00
d6e461efd4 mediasoup support and partial kurento removal 2022-04-17 12:43:46 +02:00
2c09d17b95 2.5.0-beta-1 2022-04-17 12:38:25 +02:00
ee04ee99e5 fix missing submodules 2022-04-17 10:04:02 +02:00
dfbe11f74d basic 2.5 support (bbb-pads, mongo 5.0, ruby 2.7) 2022-04-03 23:28:49 +02:00
7eb142b43e webhooks: avoid including whole config file 2022-04-03 23:24:20 +02:00
83eee18228 all tags specified in one file and images built with official docker-bbb-build image 2022-04-03 23:18:15 +02:00
1987916e2c update changelog 2022-03-24 17:14:01 +01:00
9f45bdf5bb Update Dockerfile
This should fix issues with failing recordings which include presentation polls.
2022-03-23 11:24:17 +13:00
fb75478e67 changes for v2.4.5 2022-03-21 12:00:36 +01:00
4eabc35bfe Merge pull request #183 from dorianim/patch-1
Ignore docker-compose.override.yml
2022-03-21 10:39:19 +01:00
564d528d07 Merge pull request #202 from pedrobmarin/c-ue
chore: update Etherpad
2022-03-21 10:32:52 +01:00
f2c653682e use own freeswitch mirror
freeswitch/signalwire started making their mirror only available with an account. I mirrored now their repo

closes #203
2022-03-19 10:59:17 +01:00
8e9e99ab29 etherpad: update to v1.8.17
Following https://github.com/bigbluebutton/bigbluebutton/pull/14550 .

Also updated the settings.json file with https://github.com/ether/etherpad-lite/blob/1.8.17/settings.json.template .

Made sure to preserve BigBlueButton common settings and a couple of extras
that I imagine that made sense for the docker environment:

 - ip: 0.0.0.0
	BigBlueButton uses 127.0.0.1

  /*
   * IP and port which Etherpad should bind at.
   *
   * Binding to a Unix socket is also supported: just use an empty string for
   * the ip, and put the full path to the socket in the port parameter.
   *
   * EXAMPLE USING UNIX SOCKET:
   *    "ip": "",                             // <-- has to be an empty string
   *    "port" : "/somepath/etherpad.socket", // <-- path to a Unix socket
   */
  "ip": "0.0.0.0",
  "port": 9001,

 - host: redis
	BigBlueButton uses 127.0.0.1

  /*
   * The type of the database.
   *
   * You can choose between many DB drivers, for example: dirty, postgres,
   * sqlite, mysql.
   *
   * You shouldn't use "dirty" for for anything else than testing or
   * development.
   *
   *
   * Database specific settings are dependent on dbType, and go in dbSettings.
   * Remember that since Etherpad 1.6.0 you can also store this information in
   * credentials.json.
   *
   * For a complete list of the supported drivers, please refer to:
   * https://www.npmjs.com/package/ueberdb2
   */

  "dbType": "redis",
  "dbSettings": {
    "host": "redis",
    "port": 6379
  },

 - soffice: /etherpad-export.sh
	BigBlueButton uses /usr/share/bbb-libreoffice-conversion/etherpad-export.sh

  /*
   * This is the absolute path to the soffice executable.
   *
   * LibreOffice can be used in lieu of Abiword to export pads.
   * Setting it to null disables LibreOffice exporting.
   */
  "soffice": "/etherpad-export.sh",

 - disableIPlogging: true
	BigBlueButton uses false (Etherpad's default)

  /*
   * Privacy: disable IP logging
   */
  "disableIPlogging": true,

 - host: redis
	BigBlueButton uses 127.0.0.1

  /*
   * Redis publisher plugin configuration.
   * npm i git+https://git@github.com/mconf/ep_redis_publisher.git
   */

  "ep_redis_publisher": {
    "host": "redis",
    "port": 6379
  },
2022-03-08 14:00:57 -03:00
212aee558c etherpad: moved plugins repositories
Nothing really changed for both of them, only updating to use the current
valid path. Mconf should push them all to the BigBlueButton umbrella in
the future.
2022-03-08 13:25:31 -03:00
3872e385d3 etherpad: remove ep_sticky_attributes
A couple of months ago we noticed this plugin was forcing extra updates on
Etherpad and constantly blocking users from editing the notes.
2022-03-08 13:23:18 -03:00
65065df16b changelog for 2.4.4 2022-02-23 14:53:46 +01:00
a982d8d8dd Merge pull request #196 from fmp-msu/pr/update-sample-env
Update Russian sound announcement examples
2022-02-23 14:50:55 +01:00
8c6e9a6450 Merge pull request #195 from bigbluebutton/v2.4.4
v2.4.4 changes
2022-02-23 14:46:37 +01:00
377a7f7b6f Merge pull request #191 from rottaran/patch-1
fix for presentation slides not displayed if they contain type 3 fonts
2022-02-23 14:46:10 +01:00
ab283b2c5c fix wrong bbb-webrtc-sfu version 2022-02-22 01:05:33 +01:00
87046a9773 Update Russian sound announcement examples 2022-02-22 00:57:38 +03:00
dd98a4c52f applied v2.4.4 changes 2022-02-19 17:55:25 +01:00
cdfdfca51b Prevent vectorizing images when creating svg
This change deletes the potrace rules from imagemagick. Otherwise it tries to use potrace, which is not installed and would create ugly monochrome slides. Without this change, d8350f813c/bbb-common-web/src/main/java/org/bigbluebutton/presentation/imp/SvgImageCreatorImp.java (L223) fails in the docker version of BBB. The users see this effect as blank slides. This path is triggered by type 3 fonts in the page. 

Background: bbb-web tries to avoid pdftocairo for pages with type 3 fonts, see https://gitlab.freedesktop.org/poppler/poppler/-/issues/268
And imagemagick changed its behaviour around version 7.0.8-65, see https://legacy.imagemagick.org/discourse-server/viewtopic.php?t=36777
2022-01-27 22:23:55 +01:00
f2f929f1bb applied v2.4.2 changes 2022-01-27 09:53:45 +01:00
19c926085c Ignore docker-compose.override.yml 2022-01-03 08:55:32 +01:00
c6b654863e Merge pull request #159 from bigbluebutton/v2.4.x
BigBlueButton v2.4
2021-12-21 14:27:38 +01:00
74 changed files with 1637 additions and 1383 deletions

2
.gitignore vendored
View File

@ -1,4 +1,5 @@
docker-compose.yml
docker-compose.override.yml
# IDEA generated
.idea
@ -14,3 +15,4 @@ docker-compose.yml
# App generated
.env
postgres-data
greenlight-data

9
.gitmodules vendored
View File

@ -7,3 +7,12 @@
[submodule "mod/etherpad/bbb-etherpad-plugin"]
path = mod/etherpad/bbb-etherpad-plugin
url = https://github.com/alangecker/bbb-etherpad-plugin
[submodule "mod/bbb-pads/bbb-pads"]
path = mod/bbb-pads/bbb-pads
url = https://github.com/bigbluebutton/bbb-pads
[submodule "mod/webhooks/bbb-webhooks"]
path = mod/webhooks/bbb-webhooks
url = https://github.com/bigbluebutton/bbb-webhooks
[submodule "mod/nginx/bbb-playback"]
path = mod/nginx/bbb-playback
url = https://github.com/bigbluebutton/bbb-playback

View File

@ -1,6 +1,36 @@
# Changelog
## Unreleased
- **Breaking change:** Greenlight v3 (see [upgrade note](docs/upgrading.md) @alangecker [#255](https://github.com/bigbluebutton/docker/pull/255)
- BigBlueButton v2.6 @alangecker [#255](https://github.com/bigbluebutton/docker/pull/255)
- self building freeswitch (applying patches and independent from external apt repos) @alangecker
## Release v2.5.8 (2022-11-06)
- BBB 2.5.8 @alangecker [#238](https://github.com/bigbluebutton/docker/pull/238)
- recordings: fix for missing ffmpeg filter @alangecker [#235](https://github.com/bigbluebutton/docker/issues/235) [#230](https://github.com/bigbluebutton/docker/pull/230)
## Release v2.5.0 (2022-06-10)
- BigBlueButton v2.5 @alangecker [#207](https://github.com/bigbluebutton/docker/pull/207)
- central `tags.env` file with the tag names of most BBB components @alangecker
- Usage of [official docker build images](https://gitlab.senfcall.de/senfcall-public/docker-bbb-build) for building @alangecker
- publish docker images @alangecker [#174](https://github.com/bigbluebutton/docker/issues/174)
- etherpad: enforce bbb-pads session handling @pedrobmarin [#211](https://github.com/bigbluebutton/docker/pull/211)
- etherpad: avoid icons overlapping @pedrobmarin [#210](https://github.com/bigbluebutton/docker/pull/210)
- fix recordings which include presentation polls @lightweight [#205](https://github.com/bigbluebutton/docker/pull/205)
## Release v2.4.5 (2022-03-24)
- Applied BBB v2.4.5 changes @alangecker
- New mute & unmute sounds by senfcall
- Update etherpad @pedrobmarin [#202](https://github.com/bigbluebutton/docker/pull/202)
- Use own freeswitch mirror instead of the official login-only one @alangecker [#203](https://github.com/bigbluebutton/docker/issues/203)
- Ignore docker-compose.override.yml @dorianim [#183](https://github.com/bigbluebutton/docker/pull/183)
## Release v2.4.4 (2022-02-23)
- Applied v2.4.4 changes @alangecker [#195](https://github.com/bigbluebutton/docker/pull/195)
- Update Russian sound announcement examples @lexuzieel [#196](https://github.com/bigbluebutton/docker/pull/196)
- fix for presentation slides not displayed if they contain type 3 fonts @rottaran [#191](https://github.com/bigbluebutton/docker/pull/191)
## Release v2.4.0 (2021-12-29)
- BigBlueButton v2.4 @alangecker [#159](https://github.com/bigbluebutton/docker/pull/159)
- **Breaking change:** change nginx port from `8080` to `48087`. see [upgrade note](docs/upgrading.md) @alangeker [#133](https://github.com/bigbluebutton/docker/issues/133)
- Enable optimization for Prometheus Exporter when recording is enabled @omidmaldar [#161](https://github.com/bigbluebutton/docker/pull/161)

View File

@ -1,9 +1,9 @@
<img width="1012" alt="bbb-docker-banner" src="https://user-images.githubusercontent.com/1273169/141153216-0386cd4e-0aaf-473a-8f42-a048e52ed0d7.png">
# 📦 BigBlueButton 2.4 Docker
# 📦 BigBlueButton 2.6 Docker
Version: 2.4.0 | [Changelog](CHANGELOG.md) | [Issues](https://github.com/bigbluebutton/docker/issues)
Version: 2.6.0 | [Changelog](CHANGELOG.md) | [Issues](https://github.com/bigbluebutton/docker/issues)
## Features
- Easy installation
@ -28,9 +28,11 @@ Version: 2.4.0 | [Changelog](CHANGELOG.md) | [Issues](https://github.com/bigblue
4. Ensure docker-compose works and that you use a version ≥ 1.28 : `$ docker-compose --version`
2. Clone this repository
```sh
$ git clone -b main --recurse-submodules https://github.com/bigbluebutton/docker.git bbb-docker
$ git clone --recurse-submodules https://github.com/bigbluebutton/docker.git bbb-docker
$ cd bbb-docker
$ git submodule update --init
# use the more stable main branch (sometimes older)
$ git checkout main
```
3. Run setup:
```bash

View File

@ -1,5 +1,5 @@
{{/* if you read this, you can ignore the following lines */}}
# auto generated by ./scripts/generate
# auto generated by ./scripts/generate-compose
# don't edit this directly.
{{/* -------- */}}
@ -7,8 +7,12 @@ version: '3.6'
# html5 templates
x-html5-backend: &html5backend
build: mod/html5
image: bbb-html5
build:
context: mod/html5
args:
BBB_BUILD_TAG: {{ .Env.BBB_BUILD_TAG }}
TAG_HTML5: {{ .Env.TAG_HTML5 }}
image: alangecker/bbb-docker-html5:{{ .Env.TAG_HTML5 }}
restart: unless-stopped
depends_on:
- redis
@ -17,7 +21,6 @@ x-html5-backend: &html5backend
environment: &html5backend-env
DOMAIN: ${DOMAIN}
CLIENT_TITLE: ${CLIENT_TITLE}
ETHERPAD_API_KEY: ${ETHERPAD_API_KEY}
LISTEN_ONLY_MODE: ${LISTEN_ONLY_MODE:-true}
DISABLE_ECHO_TEST: ${DISABLE_ECHO_TEST:-false}
AUTO_SHARE_WEBCAM: ${AUTO_SHARE_WEBCAM:-false}
@ -39,11 +42,18 @@ x-html5-frontend: &html5frontend
services:
bbb-web:
build: mod/bbb-web
build:
context: mod/bbb-web
args:
BBB_BUILD_TAG: {{ .Env.BBB_BUILD_TAG }}
TAG_COMMON_MESSAGE: {{ .Env.TAG_COMMON_MESSAGE }}
TAG_BBB_WEB: {{ .Env.TAG_BBB_WEB }}
image: alangecker/bbb-docker-web:{{ .Env.TAG_BBB_WEB }}
restart: unless-stopped
depends_on:
- redis
- etherpad
- bbb-pads
healthcheck:
test: wget --no-proxy --no-verbose --tries=1 --spider http://10.7.7.2:8090/bigbluebutton/api || exit 1
start_period: 2m
@ -62,7 +72,6 @@ services:
volumes:
- bigbluebutton:/var/bigbluebutton
- vol-freeswitch:/var/freeswitch/meetings
- vol-kurento:/var/kurento
networks:
bbb-net:
ipv4_address: 10.7.7.2
@ -94,7 +103,15 @@ services:
freeswitch:
build: mod/freeswitch
container_name: bbb-freeswitch
build:
context: mod/freeswitch
args:
BBB_BUILD_TAG: {{ .Env.BBB_BUILD_TAG }}
TAG_FS_BUILD_FILES: {{ .Env.TAG_FS_BUILD_FILES }}
TAG_FS_CONFIG: {{ .Env.TAG_FS_CONFIG }}
TAG_FREESWITCH: {{ .Env.TAG_FREESWITCH }}
image: alangecker/bbb-docker-freeswitch:{{ .Env.TAG_FS_CONFIG }}
restart: unless-stopped
cap_add:
- IPC_LOCK
@ -119,7 +136,12 @@ services:
network_mode: host
nginx:
build: mod/nginx
build:
context: mod/nginx
args:
BBB_BUILD_TAG: {{ .Env.BBB_BUILD_TAG }}
TAG_LEARNING_DASHBOARD: {{ .Env.TAG_LEARNING_DASHBOARD }}
image: alangecker/bbb-docker-nginx:1.23-{{ .Env.TAG_PLAYBACK }}-{{ .Env.TAG_LEARNING_DASHBOARD }}
restart: unless-stopped
depends_on:
- etherpad
@ -134,11 +156,13 @@ services:
- "host.docker.internal:10.7.7.1"
- "bbb-web:10.7.7.2"
- "etherpad:10.7.7.4"
- "webrtc-sfu:10.7.7.10"
- "webrtc-sfu:10.7.7.1"
- "html5:10.7.7.11"
- "greenlight:10.7.7.21"
etherpad:
build: mod/etherpad
image: alangecker/bbb-docker-etherpad:1.8.18-3
restart: unless-stopped
depends_on:
- redis
@ -148,8 +172,21 @@ services:
bbb-net:
ipv4_address: 10.7.7.4
bbb-pads:
build: mod/bbb-pads
image: alangecker/bbb-docker-pads:{{ .Env.TAG_PADS }}
restart: unless-stopped
depends_on:
- redis
- etherpad
environment:
ETHERPAD_API_KEY: ${ETHERPAD_API_KEY}
networks:
bbb-net:
ipv4_address: 10.7.7.18
redis:
image: redis:6.2-alpine
image: redis:7.0-alpine
restart: unless-stopped
healthcheck:
test: ["CMD", "redis-cli", "ping"]
@ -161,6 +198,7 @@ services:
ipv4_address: 10.7.7.5
mongodb:
container_name: bbb-mongodb
image: mongo:4.4
restart: unless-stopped
volumes:
@ -176,51 +214,57 @@ services:
bbb-net:
ipv4_address: 10.7.7.6
# TODO: remove as soon as not required anymore by webrtc-sfu
kurento:
image: kurento/kurento-media-server:6.16
image: kurento/kurento-media-server:6.18
restart: unless-stopped
environment:
KMS_STUN_IP: ${STUN_IP}
KMS_STUN_PORT: ${STUN_PORT}
KMS_MIN_PORT: 24577
KMS_MAX_PORT: 32768
KMS_TURN_URL:
KMS_NETWORK_INTERFACES: ${NETWORK_INTERFACE:-}
GST_DEBUG: 3,Kurento*:4,kms*:4,KurentoWebSocketTransport:5
network_mode: host
volumes:
- vol-kurento:/var/kurento
webrtc-sfu:
build: mod/webrtc-sfu
build:
context: mod/webrtc-sfu
args:
BBB_BUILD_TAG: {{ .Env.BBB_BUILD_TAG }}
image: alangecker/bbb-docker-webrtc-sfu:{{ .Env.TAG_WEBRTC_SFU }}
restart: unless-stopped
depends_on:
- redis
- kurento
- freeswitch
environment:
CLIENT_HOST: 0.0.0.0
KURENTO_NAME: kurento
REDIS_HOST: redis
FREESWITCH_IP: host.docker.internal
CLIENT_HOST: 10.7.7.1
REDIS_HOST: 10.7.7.5
FREESWITCH_IP: 10.7.7.1
FREESWITCH_SIP_IP: ${EXTERNAL_IPv4}
ESL_IP: host.docker.internal
ESL_IP: 10.7.7.1
ESL_PASSWORD: ${FSESL_PASSWORD:-ClueCon}
LOG_LEVEL: info
NODE_CONFIG: '{"kurento":[{"ip":"${EXTERNAL_IPv4}","url":"ws://kurento:8888/kurento"}]}'
ports:
- "127.0.0.1:3008:3008"
extra_hosts:
- host.docker.internal:10.7.7.1
- kurento:10.7.7.1
networks:
bbb-net:
ipv4_address: 10.7.7.10
# TODO: add mediasoup IPv6
# TODO: can listen to 0.0.0.0 for nat support? https://github.com/versatica/mediasoup/issues/487
{{ if .Env.EXTERNAL_IPv6 }}
MS_WEBRTC_LISTEN_IPS: '[{"ip":"{{ .Env.EXTERNAL_IPv6 }}", "announcedIp":"{{ .Env.EXTERNAL_IPv6 }}"}, {"ip":"${EXTERNAL_IPv4}", "announcedIp":"${EXTERNAL_IPv4}"}]'
{{else}}
MS_WEBRTC_LISTEN_IPS: '[{"ip":"${EXTERNAL_IPv4}", "announcedIp":"${EXTERNAL_IPv4}"}]'
{{end}}
MS_RTP_LISTEN_IP: '{"ip":"0.0.0.0", "announcedIp":"${EXTERNAL_IPv4}"}'
volumes:
- vol-mediasoup:/var/mediasoup
tmpfs:
- /var/log/bbb-webrtc-sfu
network_mode: host
fsesl-akka:
build: mod/fsesl-akka
build:
context: mod/fsesl-akka
args:
BBB_BUILD_TAG: {{ .Env.BBB_BUILD_TAG }}
TAG_COMMON_MESSAGE: {{ .Env.TAG_COMMON_MESSAGE }}
TAG_FSESL_AKKA: {{ .Env.TAG_FSESL_AKKA }}
image: alangecker/bbb-docker-fsesl-akka:{{ .Env.TAG_FSESL_AKKA }}
restart: unless-stopped
depends_on:
- redis
- freeswitch
environment:
FSESL_PASSWORD: ${FSESL_PASSWORD:-ClueCon}
networks:
@ -228,7 +272,13 @@ services:
ipv4_address: 10.7.7.14
apps-akka:
build: mod/apps-akka
build:
context: mod/apps-akka
args:
BBB_BUILD_TAG: {{ .Env.BBB_BUILD_TAG }}
TAG_COMMON_MESSAGE: {{ .Env.TAG_COMMON_MESSAGE }}
TAG_APPS_AKKA: {{ .Env.TAG_APPS_AKKA }}
image: alangecker/bbb-docker-apps-akka:{{ .Env.TAG_APPS_AKKA }}
restart: unless-stopped
depends_on:
- redis
@ -243,6 +293,9 @@ services:
jodconverter:
build: mod/jodconverter
image: alangecker/bbb-docker-jodconverter:latest
security_opt:
- 'no-new-privileges:true'
restart: unless-stopped
tmpfs:
- /tmp
@ -256,12 +309,14 @@ services:
periodic:
build: mod/periodic
image: alangecker/bbb-docker-periodic:v2.5.0-rc.1
restart: unless-stopped
depends_on:
- mongodb
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- bigbluebutton:/var/bigbluebutton
- vol-mediasoup:/var/mediasoup
tmpfs:
- /var/log/bigbluebutton
environment:
@ -275,15 +330,23 @@ services:
{{ if isTrue .Env.ENABLE_RECORDING }}
# recordings
recordings:
build: mod/recordings
build:
context: mod/recordings
args:
BBB_BUILD_TAG: {{ .Env.BBB_BUILD_TAG }}
TAG_RECORDINGS: {{ .Env.TAG_RECORDINGS }}
TAG_BBB_PRESENTATION_VIDEO: {{ .Env.TAG_BBB_PRESENTATION_VIDEO }}
image: alangecker/bbb-docker-recordings:{{ .Env.TAG_RECORDINGS }}
restart: unless-stopped
depends_on:
- redis
- bbb-pads
environment:
DOMAIN: ${DOMAIN}
volumes:
- bigbluebutton:/var/bigbluebutton
- vol-freeswitch:/var/freeswitch/meetings
- vol-mediasoup:/var/mediasoup
- vol-kurento:/var/kurento
tmpfs:
- /var/log/bigbluebutton
@ -297,6 +360,7 @@ services:
# webhooks
webhooks:
build: mod/webhooks
image: alangecker/bbb-docker-webhooks:{{ .Env.TAG_WEBHOOKS }}
restart: unless-stopped
environment:
DOMAIN: ${DOMAIN}
@ -320,6 +384,10 @@ services:
{{else}}
- ./mod/https/site-ipv4only.conf:/etc/nginx/conf.d/bbb-docker.conf
{{end}}
{{ if isTrue .Env.DEV_MODE }}
# allow bbb api access without https
- ./mod/https/force-https.conf:/usr/local/openresty/nginx/conf/force-https.conf
{{end}}
environment:
{{ if isTrue .Env.DEV_MODE }}
ALLOWED_DOMAINS: ""
@ -332,7 +400,7 @@ services:
{{ if isTrue .Env.ENABLE_COTURN }}
# coturn
coturn:
image: instrumentisto/coturn:4.5
image: coturn/coturn:4.6-alpine
restart: unless-stopped
command:
- "--external-ip=${EXTERNAL_IPv4}/${EXTERNAL_IPv4}"
@ -349,6 +417,7 @@ services:
- ./mod/coturn/turnserver.conf:/etc/coturn/turnserver.conf
environment:
ENABLE_HTTPS_PROXY:
user: root
network_mode: host
{{end}}
@ -356,29 +425,34 @@ services:
{{ if isTrue .Env.ENABLE_GREENLIGHT }}
# greenlight
greenlight:
image: bigbluebutton/greenlight:v2
image: bigbluebutton/greenlight:{{ .Env.TAG_GREENLIGHT }}-alpine
restart: unless-stopped
env_file: .env
depends_on:
- postgres
- redis
environment:
DB_ADAPTER: postgresql
DB_HOST: postgres
DB_NAME: greenlight
DB_USERNAME: postgres
DB_PASSWORD: ${POSTGRESQL_SECRET:-password}
DATABASE_URL: postgres://postgres:${POSTGRESQL_SECRET:-password}@postgres:5432/greenlight-v3
REDIS_URL: redis://redis:6379
{{ if isTrue .Env.DEV_MODE }}
BIGBLUEBUTTON_ENDPOINT: http://10.7.7.1:48087/bigbluebutton/api/
BIGBLUEBUTTON_ENDPOINT: http://10.7.7.1/bigbluebutton/api
{{else}}
BIGBLUEBUTTON_ENDPOINT: https://${DOMAIN}/bigbluebutton/api/
BIGBLUEBUTTON_ENDPOINT: https://${DOMAIN}/bigbluebutton/api
{{end}}
BIGBLUEBUTTON_SECRET: ${SHARED_SECRET}
SECRET_KEY_BASE: ${RAILS_SECRET}
ports:
- 10.7.7.1:5000:80
volumes:
- ./greenlight-data:/usr/src/app/storage
networks:
bbb-net:
ipv4_address: 10.7.7.21
postgres:
image: postgres:12-alpine
restart: unless-stopped
environment:
POSTGRES_DB: greenlight
POSTGRES_DB: greenlight-v3
POSTGRES_USER: postgres
POSTGRES_PASSWORD: ${POSTGRESQL_SECRET:-password}
healthcheck:
@ -388,12 +462,15 @@ services:
retries: 5
volumes:
- ./postgres-data:/var/lib/postgresql/data
networks:
bbb-net:
ipv4_address: 10.7.7.22
{{end}}
{{ if isTrue .Env.ENABLE_PROMETHEUS_EXPORTER }}
# prometheus
prometheus-exporter:
image: greenstatic/bigbluebutton-exporter:v0.7.0-preview2
image: greenstatic/bigbluebutton-exporter:latest
restart: unless-stopped
environment:
API_BASE_URL: http://10.7.7.1:48087/bigbluebutton/api/
@ -413,6 +490,7 @@ volumes:
bigbluebutton:
vol-freeswitch:
vol-kurento:
vol-mediasoup:
html5-static:
{{ if isTrue .Env.ENABLE_HTTPS_PROXY }}
ssl_data:

View File

@ -1,5 +1,13 @@
# bbb-docker Development
## Basics
normally people start BBB with the pre-built docker images, but for developing you need to build them by yourself. For that you need to ensure that the submodules are also checked out:
```sh
$ git submodule update --init
```
## Running
you can run bbb-docker locally without any certificate issues with following `.env` configurations:
@ -22,7 +30,7 @@ TURN_SERVER=turns:localhost:5349?transport=tcp
TURN_SECRET=SuperTurnSecret
SHARED_SECRET=SuperSecret
ETHERPAD_API_KEY=SuperEtherpadKey
RAILS_SECRET=SuperRailsSecret
RAILS_SECRET=SuperRailsSecret_SuperRailsSecret
# ====================================
# CUSTOMIZATION
@ -33,6 +41,8 @@ RAILS_SECRET=SuperRailsSecret
- regenerate `docker-compose.yml` \
`$ ./scripts/generate-compose`
- build the images \
`$ docker-compose build`
- you can than start it with \
`$ docker-compose up -d`
- view the logs with \
@ -43,7 +53,7 @@ RAILS_SECRET=SuperRailsSecret
## 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
- Due to the self signed ssl certificate it is currently not possible to notify greenlight about recordings in dev mode
## Changes
- After doing some changes you usually must...
@ -58,13 +68,14 @@ RAILS_SECRET=SuperRailsSecret
## 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! :)
* main source for that are the release notes in https://github.com/bigbluebutton/bigbluebutton/releases
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.
* Often you only need to update the TAGS in `tags.env`
* make sure only to switch to a newer tag if there were changes made avoid creating new (partialy big) images unnecessarily
* Also update submodules to the new state.
* List of all submodules `git submodule`
* for the main submodules you can use `./scripts/checkout-submodules` to checkout the tags specified in `tags.env`
3. Test everything (with firefox **and** chromium/chrome)
* Audio
* Video

View File

@ -4,6 +4,7 @@ Services as configured.
|Service | Network | IP address | Other Option |
--- | --- | --- | ---
| bbb-web | bbb-net | 10.7.7.2 |
| bbb-pads | bbb-net | 10.7.7.18 |
| html5-backend-{{$i}} | bbb-net | 10.7.7.{{add 100 $i}}| Port {{ add 4000 $i }}
| html5-frontend-{{$i}}| bbb-net | 10.7.7.{{add 200 $i}}| Port {{ add 4100 $i }}
| freeswitch| network_mode: host | |
@ -12,7 +13,7 @@ Services as configured.
| redis | bbb-net | 10.7.7.5|
| mongodb | bbb-net | 10.7.7.6|
| kurento | network-mode: host | |
| webrtc-sfu | bbb-net | 10.7.7.10| ports: - "127.0.0.1:3008:3008" <br /> extra_hosts:<br /> - host.docker.internal:10.7.7.1<br /> - kurento:10.7.7.1
| webrtc-sfu | bbb-net | | network_mode: host
| fsesl-akka | bbb-net | 10.7.7.14 |
| apps-akka | bbb-net | 10.7.7.15 |
| libreoffice | bbb-net | 10.7.7.7 |

View File

@ -1,11 +1,16 @@
# How To Upgrade bbb-docker
### Upgrading `v2.3.x` -> `v2.4.x`
*Breaking change:* The nginx port changes from `8080` to the less common port `48087`, to avoid port conflicts (see [#133](https://github.com/bigbluebutton/docker/issues/133)). If you use an reverse proxy not included in this repo, ensure to update your config accordingly!
### Upgrading `v2.5.x` -> `v2.6.x`
- *Breaking change:* Greenlight got fully rewritten
* it is starting as a fresh installation. you can migrate your data with `./scripts/greenlight-migrate-v2-v3`
* some greenlight settings under `.env` have changed. compare your version with `sample.env`
* it is now served directly under `/` and not in `/b`. If you use an reverse proxy not included in this repo, ensure to update your config accordingly!
apart from that follow the guide below.
### within `v2.4.x` or `v2.3.x`
### within `v2.6.x`
#### Backup
if you use greenlight, create a database backup first
```bash

View File

@ -1,21 +1,19 @@
FROM mozilla/sbt:8u212_1.2.8 AS builder
ARG BBB_BUILD_TAG
FROM gitlab.senfcall.de:5050/senfcall-public/docker-bbb-build:$BBB_BUILD_TAG AS builder
RUN apt-get update && apt-get install -y subversion
ARG TAG_COMMON_MESSAGE
# download bbb-common-message
ENV TAG_COMMON_MESSAGE v2.4.0
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_COMMON_MESSAGE/bbb-common-message /bbb-common-message \
&& rm -rf /bbb-common-message/.svn
# compile bbb-common-message
RUN cd /bbb-common-message \
&& ./deploy.sh
&& cd /bbb-common-message \
&& ./deploy.sh \
&& rm -rf /bbb-common-message
# ===================================================
ENV TAG v2.4.0
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/akka-bbb-apps /source \
ARG TAG_APPS_AKKA
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_APPS_AKKA/akka-bbb-apps /source \
&& rm -rf /source/.svn
# compile and unzip bin
@ -25,24 +23,12 @@ RUN cd /source \
# ===================================================
FROM openjdk:8-jre-slim-bullseye
RUN apt update && apt-get install -y wget gosu
# install dockerize
ENV DOCKERIZE_VERSION v0.6.1
RUN wget -q https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
&& tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
&& rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz
RUN groupadd -g 998 bigbluebutton \
&& useradd -m -u 998 -g bigbluebutton bigbluebutton
FROM alangecker/bbb-docker-base-java
COPY --from=builder /bbb-apps-akka-0.0.4 /bbb-apps-akka
COPY bbb-apps-akka.conf /etc/bigbluebutton/bbb-apps-akka.conf.tmpl
COPY logback.xml /bbb-apps-akka/conf/logback.xml
COPY entrypoint.sh /entrypoint.sh
WORKDIR /bbb-apps-akka
CMD dockerize \
-template /etc/bigbluebutton/bbb-apps-akka.conf.tmpl:/etc/bigbluebutton/bbb-apps-akka.conf \
gosu bigbluebutton /bbb-apps-akka/bin/bbb-apps-akka
USER bigbluebutton
ENTRYPOINT /entrypoint.sh

View File

@ -6,8 +6,8 @@ redis {
}
services {
bbbWebAPI="https://{{ .Env.DOMAIN }}/bigbluebutton/api"
sharedSecret="{{ .Env.SHARED_SECRET }}"
bbbWebAPI="https://DOMAIN/bigbluebutton/api"
sharedSecret="SHARED_SECRET"
}
http {
interface = "0.0.0.0"

9
mod/apps-akka/entrypoint.sh Executable file
View File

@ -0,0 +1,9 @@
#!/bin/sh -e
TARGET=/etc/bigbluebutton/bbb-apps-akka.conf
cp /etc/bigbluebutton/bbb-apps-akka.conf.tmpl $TARGET
sed -i "s/DOMAIN/$DOMAIN/" $TARGET
sed -i "s/SHARED_SECRET/$SHARED_SECRET/" $TARGET
cd /bbb-apps-akka
/bbb-apps-akka/bin/bbb-apps-akka

24
mod/base-java/Dockerfile Normal file
View File

@ -0,0 +1,24 @@
FROM openjdk:11-jre-slim-bullseye
RUN apt-get update && apt-get install -y \
wget unzip gosu locales \
imagemagick xpdf-utils curl \
&& sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && locale-gen
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
# add user & group
RUN groupadd -g 998 bigbluebutton \
&& useradd -m -u 998 -g bigbluebutton bigbluebutton \
&& mkdir /etc/bigbluebutton \
&& chown bigbluebutton:bigbluebutton /etc/bigbluebutton
# add dockerize
ENV DOCKERIZE_VERSION v0.6.1
RUN wget -q https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
&& tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
&& rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz

18
mod/bbb-pads/Dockerfile Normal file
View File

@ -0,0 +1,18 @@
FROM node:16-bullseye-slim AS builder
COPY ./bbb-pads /bbb-pads
RUN cd /bbb-pads && rm -r .git && npm install --production
RUN chmod 777 /bbb-pads/config
# ------------------------------
FROM node:16-bullseye-slim
RUN apt update && apt install -y jq moreutils \
&& useradd --uid 2003 --create-home --user-group bbb-pads
COPY --from=builder /bbb-pads /bbb-pads
USER bbb-pads
COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT /entrypoint.sh

1
mod/bbb-pads/bbb-pads Submodule

Submodule mod/bbb-pads/bbb-pads added at 570921cff6

15
mod/bbb-pads/entrypoint.sh Executable file
View File

@ -0,0 +1,15 @@
#!/bin/sh
set -e
TARGET=/bbb-pads/config/settings.json
cp /bbb-pads/config/settings.json.template $TARGET
sed -i "s/ETHERPAD_API_KEY/\"$ETHERPAD_API_KEY\"/g" $TARGET
jq '.etherpad.host = "etherpad"' $TARGET | sponge $TARGET
jq '.express.host = "0.0.0.0"' $TARGET | sponge $TARGET
jq '.redis.host = "redis"' $TARGET | sponge $TARGET
cd /bbb-pads
export NODE_ENV=production
npm start

View File

@ -1,33 +1,20 @@
FROM mozilla/sbt:8u212_1.2.8 AS builder
ARG BBB_BUILD_TAG
FROM gitlab.senfcall.de:5050/senfcall-public/docker-bbb-build:$BBB_BUILD_TAG AS builder
RUN apt-get update && apt-get install -y subversion
ARG TAG_COMMON_MESSAGE
# download bbb-common-message
ENV TAG_COMMON_MESSAGE v2.4.0
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_COMMON_MESSAGE/bbb-common-message /bbb-common-message \
&& rm -rf /bbb-common-message/.svn
# compile bbb-common-message
RUN cd /bbb-common-message \
&& ./deploy.sh
&& cd /bbb-common-message \
&& ./deploy.sh \
&& rm -rf /bbb-common-message
# ===================================================
# install grails
RUN cd /opt \
&& wget -q https://github.com/grails/grails-core/releases/download/v3.3.9/grails-3.3.9.zip \
&& unzip grails-3.3.9.zip
ENV PATH="/opt/grails-3.3.9/bin:${PATH}"
# install gradle
RUN cd /opt \
&& wget -q https://services.gradle.org/distributions/gradle-6.7-bin.zip \
&& unzip gradle-6.7-bin
ENV PATH="/opt/gradle-6.7/bin:${PATH}"
ARG TAG_BBB_WEB
# download bbb-common-web
ENV TAG_COMMON_WEB v2.4.0
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_COMMON_WEB/bbb-common-web /bbb-common-web \
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_BBB_WEB/bbb-common-web /bbb-common-web \
&& rm -rf /bbb-common-message/.svn
# compile bbb-common-web
@ -35,8 +22,7 @@ RUN cd /bbb-common-web \
&& ./deploy.sh
# download bbb-web
ENV TAG_WEB v2.4.0
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_WEB/bigbluebutton-web /bbb-web \
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_BBB_WEB/bigbluebutton-web /bbb-web \
&& rm -rf /bbb-web/.svn
# compile bbb-web
@ -50,30 +36,9 @@ RUN unzip -q /bbb-web/build/libs/bigbluebutton-0.10.0.war -d /dist
# ===================================================
FROM openjdk:8-jre-slim-bullseye
FROM alangecker/bbb-docker-base-java
RUN apt-get update && apt-get install -y \
wget unzip gosu locales \
imagemagick xpdf-utils curl
# set locale
RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && locale-gen
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
# add user & group
RUN groupadd -g 998 bigbluebutton && useradd -m -u 998 -g bigbluebutton bigbluebutton
# add dockerize
ENV DOCKERIZE_VERSION v0.6.1
RUN wget -q https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
&& tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
&& rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz
# add blank presentation files and allow conversation to pdf/svg
# add blank presentation files and allow conversion to pdf/svg
RUN mkdir -p /usr/share/bigbluebutton/blank \
&& cd /usr/share/bigbluebutton/blank \
&& wget \
@ -81,7 +46,9 @@ RUN mkdir -p /usr/share/bigbluebutton/blank \
https://raw.githubusercontent.com/bigbluebutton/bigbluebutton/v2.4.0/bigbluebutton-config/slides/blank-thumb.png \
https://raw.githubusercontent.com/bigbluebutton/bigbluebutton/v2.4.0/bigbluebutton-config/slides/blank-presentation.pdf \
https://raw.githubusercontent.com/bigbluebutton/bigbluebutton/v2.4.0/bigbluebutton-config/slides/blank-png.png \
&& sed -i 's/<policy domain="coder" rights="none" pattern="PDF" \/>/<policy domain="coder" rights="write" pattern="PDF" \/>/g' /etc/ImageMagick-6/policy.xml
&& sed -i 's/<policy domain="coder" rights="none" pattern="PDF" \/>/<policy domain="coder" rights="write" pattern="PDF" \/>/g' /etc/ImageMagick-6/policy.xml \
&& sed -i '/potrace/d' /etc/ImageMagick-6/delegates.xml
# get bbb-web
COPY --from=builder /dist /usr/share/bbb-web

View File

@ -24,6 +24,6 @@ cd /usr/share/bbb-web/
dockerize \
-template /etc/bigbluebutton/bbb-web.properties.tmpl:/etc/bigbluebutton/bbb-web.properties \
-template /usr/share/bbb-web/WEB-INF/classes/spring/turn-stun-servers.xml.tmpl:/usr/share/bbb-web/WEB-INF/classes/spring/turn-stun-servers.xml \
gosu bigbluebutton java -Dgrails.env=prod -Dserver.address=0.0.0.0 -Dserver.port=8090 -Xms384m -Xmx384m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/bigbluebutton/diagnostics -cp WEB-INF/lib/*:/:WEB-INF/classes/:. org.springframework.boot.loader.WarLauncher
gosu bigbluebutton java -Dgrails.env=prod -Dserver.address=0.0.0.0 -Dserver.port=8090 -Dspring.main.allow-circular-references=true -Xms384m -Xmx384m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/bigbluebutton/diagnostics -cp WEB-INF/lib/*:/:WEB-INF/classes/:. org.springframework.boot.loader.WarLauncher

View File

@ -1,7 +1,7 @@
#!/bin/sh
set -e
apk add jq su-exec
if [ "$ENABLE_HTTPS_PROXY" == true ]; then
apk add jq
while [ ! -f /etc/resty-auto-ssl/storage/file/*latest ]
do
@ -28,4 +28,4 @@ if [ "${1:0:1}" == '-' ]; then
set -- turnserver "$@"
fi
exec $(eval "echo $@")
su-exec nobody $(eval "echo $@")

View File

@ -1,4 +1,4 @@
FROM etherpad/etherpad:1.8.16
FROM etherpad/etherpad:1.8.18
USER root
@ -7,13 +7,12 @@ RUN apt-get update \
USER etherpad
# ep_cursortrace: using mconf's fork due to https://github.com/ether/ep_cursortrace/pull/25 not being accepted upstream
RUN npm install \
ep_cursortrace@3.1.11 \
git+https://github.com/pedrobmarin/ep_pad_ttl.git#360136cd38493dd698435631f2373cbb7089082d \
git+https://github.com/pedrobmarin/ep_redis_publisher.git#1d903bf900dd53ebc5347f9583b6e240cf754d63 \
git+https://github.com/ether/ep_disable_chat.git#v0.0.3 \
git+https://github.com/ether/ep_sticky_attributes.git#v0.1.9 \
ep_cursortrace@3.1.16 \
git+https://github.com/mconf/ep_pad_ttl.git#360136cd38493dd698435631f2373cbb7089082d \
git+https://github.com/mconf/ep_redis_publisher.git#a30a48e4bc1e501b5b102884b9a0b26c30798484 \
ep_disable_chat@0.0.8 \
ep_auth_session@1.1.1 \
# remove npm lockfile, because somehow it prevents etherpad from detecting the manual added plugin ep_bigbluebutton_patches
&& rm package-lock.json

File diff suppressed because it is too large Load Diff

View File

@ -1,58 +1,88 @@
FROM debian:bullseye-slim
ARG BBB_BUILD_TAG
FROM gitlab.senfcall.de:5050/senfcall-public/docker-bbb-build:$BBB_BUILD_TAG AS builder
# add freeswitch repo
ARG TAG_FREESWITCH
RUN mkdir -p /build/freeswitch && \
cd /build/freeswitch && \
git init && \
git remote add origin https://github.com/signalwire/freeswitch.git && \
git fetch --depth 1 origin $TAG_FREESWITCH && \
git checkout FETCH_HEAD
# install most recent git version for proper sparse-checkout support
# https://stackoverflow.com/questions/72223738/failed-to-initialize-sparse-checkout
RUN echo 'deb https://ppa.launchpadcontent.net/git-core/ppa/ubuntu focal main' > /etc/apt/sources.list.d/git-core-ppa.list && \
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A1715D88E1DF1F24 && \
apt-get update && \
apt-get install -y git
# get build files for bbb-freeswitch (build/packages-template/bbb-freeswitch-core/)
ARG TAG_FS_BUILD_FILES
RUN git clone -b $TAG_FS_BUILD_FILES --depth 1 --filter=blob:none --sparse https://github.com/bigbluebutton/bigbluebutton.git /bbb && \
cd /bbb && \
git sparse-checkout set build/packages-template/bbb-freeswitch-core/ && \
cp build/packages-template/bbb-freeswitch-core/* /build/ && \
rm -rf /bbb
# mock files expected by build.sh
RUN mkdir -p /build/bbb-voice-conference/config/freeswitch/conf/ && \
touch \
/build/opts-build.sh \
/build/freeswitch.service.build \
/build/bbb-voice-conference/config/freeswitch/conf/a \
&& \
echo "" > /usr/local/bin/fpm
RUN cd /build && ./build.sh
# add english sounds
RUN mkdir -p /build/staging/opt/freeswitch/share/freeswitch && \
wget http://bigbluebutton.org/downloads/sounds.tar.gz -O sounds.tar.gz && \
tar xvfz sounds.tar.gz -C /build/staging/opt/freeswitch/share/freeswitch && \
wget https://gitlab.senfcall.de/senfcall-public/mute-and-unmute-sounds/-/archive/master/mute-and-unmute-sounds-master.zip && \
unzip mute-and-unmute-sounds-master.zip && \
cd mute-and-unmute-sounds-master/sounds && \
find . -name "*.wav" -exec /bin/bash -c "sox -v 0.3 {} /tmp/tmp.wav; cp /tmp/tmp.wav /build/staging/opt/freeswitch/share/freeswitch/sounds/en/us/callie/conference/{}" \;
# add bigblugbutton config
ARG TAG_FS_CONFIG
RUN git clone -b $TAG_FS_CONFIG --depth 1 --filter=blob:none --sparse https://github.com/bigbluebutton/bigbluebutton.git /bbb && \
cd /bbb && \
git sparse-checkout set bbb-voice-conference/config/freeswitch/conf/ && \
cp -r /bbb/bbb-voice-conference/config/freeswitch/conf/* /build/staging/opt/freeswitch/etc/freeswitch/
# ===============================================
# we are using ubuntu here, because libjpeg8 is required, but not available in debian
FROM ubuntu:20.04
RUN apt-get update && \
apt-get install -y --no-install-recommends subversion curl wget ca-certificates gnupg gnupg2 lsb-release unzip && \
wget -O /usr/share/keyrings/freeswitch-archive-keyring.gpg https://files.freeswitch.org/repo/deb/debian-release/freeswitch-archive-keyring.gpg && \
echo 'deb [signed-by=/usr/share/keyrings/freeswitch-archive-keyring.gpg] http://files.freeswitch.org/repo/deb/debian-release/ bullseye main' > /etc/apt/sources.list.d/freeswitch.list
# install dockerize
ENV DOCKERIZE_VERSION v0.6.1
RUN wget -q https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
&& tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
&& rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz
# install freeswitch
RUN apt-get update && apt-get install -y \
freeswitch \
freeswitch-mod-commands \
freeswitch-mod-conference \
freeswitch-mod-console \
freeswitch-mod-dialplan-xml \
freeswitch-mod-dptools \
freeswitch-mod-event-socket \
freeswitch-mod-native-file \
freeswitch-mod-opusfile \
freeswitch-mod-opus \
freeswitch-mod-sndfile \
freeswitch-mod-sofia \
freeswitch-sounds-en-us-callie \
iptables
# -- get official bbb freeswitch config
# we use svn for retrieving the files since the repo is quite large,
# git sparse-checkout is not yet available with buster and there
# is no other sane way of downloading a single directory via git
ENV TAG v2.3.4
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/bbb-voice-conference/config/freeswitch/conf /etc/freeswitch \
&& rm -rf /etc/freeswitch/.svn
# the current available freeswitch-mod-opusfile is broken,
# it can't write any .opus files. The fix provided in
# https://github.com/signalwire/freeswitch/pull/719/files
# is not sufficient as the module still comes without opus
# write support, so we rather switch to the binary built
# by bigbluebutton and add its dependencies
RUN wget -O /usr/lib/freeswitch/mod/mod_opusfile.so https://github.com/bbb-pkg/bbb-freeswitch-core/raw/43f3a47af1fcf5ea559e16bb28b900c925a7f2c3/opt/freeswitch/lib/freeswitch/mod/mod_opusfile.so \
&& wget -O /tmp/libopusenc0_0.2.1-1bbb1_amd64.deb https://launchpad.net/~bigbluebutton/+archive/ubuntu/support/+files/libopusenc0_0.2.1-1bbb1_amd64.deb \
apt-get install -y \
xmlstarlet wget iptables curl \
libfreetype6 libcurl4 libspeex1 libspeexdsp1 libopus0 libsndfile1 libopusfile0 liblua5.2-0 libjbig0 libldns2 libedit2 libtiff5 libpng16-16 \
&& \
# install libopusenc0
wget -O /tmp/libopusenc0_0.2.1-1bbb1_amd64.deb https://launchpad.net/~bigbluebutton/+archive/ubuntu/support/+files/libopusenc0_0.2.1-1bbb1_amd64.deb \
&& dpkg -i /tmp/libopusenc0_0.2.1-1bbb1_amd64.deb \
&& rm /tmp/libopusenc0_0.2.1-1bbb1_amd64.deb
# add modifications
COPY ./conf /etc/freeswitch/
# add dockerize
COPY --from=alangecker/bbb-docker-base-java /usr/local/bin/dockerize /usr/local/bin/dockerize
# copy over built freeswitch & config
COPY --from=builder /build/staging/opt /opt
COPY --from=builder /build/staging/etc /etc
RUN ldconfig && \
ln -s /opt/freeswitch/conf /etc/freeswitch && \
groupadd freeswitch && \
useradd --home-dir /opt/freeswitch --shell /usr/sbin/nologin -g freeswitch freeswitch
COPY ./entrypoint.sh /entrypoint.sh
COPY ./conf /etc/freeswitch/
ENTRYPOINT /entrypoint.sh

View File

@ -23,6 +23,7 @@
<node type="allow" cidr="127.0.0.1/32"/>
<node type="allow" cidr="10.0.0.0/8"/>
<node type="allow" cidr="192.168.0.0/16"/>
<node type="allow" cidr="172.16.0.0/12" />
<node type="allow" cidr="$${external_ip_v4}/32"/>
</list>

View File

@ -39,7 +39,7 @@
<!-- Domain (for presence) -->
<param name="domain" value="$${domain}"/>
<!-- Sample Rate-->
<param name="rate" value="8000"/>
<param name="rate" value="48000"/>
<!-- Number of milliseconds per frame -->
<param name="interval" value="20"/>
<!-- Energy level required for audio to be sent to the other users -->

View File

@ -0,0 +1,30 @@
<configuration name="modules.conf" description="Modules">
<modules>
<!-- Loggers (I'd load these first) -->
<load module="mod_console"/>
<!-- Event Handlers -->
<load module="mod_event_socket"/>
<!-- Endpoints -->
<load module="mod_sofia"/>
<!-- Applications -->
<load module="mod_commands"/>
<load module="mod_conference"/>
<load module="mod_dptools"/>
<!-- Dialplan Interfaces -->
<load module="mod_dialplan_xml"/>
<!-- Codec Interfaces -->
<load module="mod_spandsp"/>
<load module="mod_opus"/>
<load module="mod_opusfile"/>
<!-- File Format Interfaces -->
<load module="mod_sndfile"/>
<load module="mod_native_file"/>
</modules>
</configuration>

View File

@ -54,7 +54,7 @@
for presence.
-->
<!-- Name of the db to use for this profile -->
<!--<param name="dbname" value="share_presence"/>-->
<param name="dbname" value="sqlite://memory://file:external-ipv6?mode=memory&amp;cache=shared"/>
<!--<param name="presence-hosts" value="$${domain}"/>-->
<!--<param name="force-register-domain" value="$${domain}"/>-->
<!--all inbound reg will stored in the db using this domain -->

View File

@ -52,7 +52,7 @@
for presence.
-->
<!-- Name of the db to use for this profile -->
<!--<param name="dbname" value="share_presence"/>-->
<param name="dbname" value="sqlite://memory://file:external?mode=memory&amp;cache=shared"/>
<!--<param name="presence-hosts" value="$${domain}"/>-->
<!--<param name="force-register-domain" value="$${domain}"/>-->
<!--all inbound reg will stored in the db using this domain -->

View File

@ -1,4 +1,4 @@
#!/bin/bash
#!/bin/bash -e
# remove all SIP (port 5060) iptable rules
iptables -S INPUT | grep "\-\-dport 5060 " | cut -d " " -f 2- | xargs -rL1 iptables -D
@ -15,13 +15,19 @@ for IP in "${ADDR[@]}"; do
iptables -I INPUT -p udp --dport 5060 -s $IP -j ACCEPT
done
mkdir -p /var/freeswitch/meetings
chown -R freeswitch:daemon /var/freeswitch/meetings
chmod 777 /var/freeswitch/meetings
chown -R freeswitch:daemon /opt/freeswitch/var
chown -R freeswitch:daemon /opt/freeswitch/etc
chmod -R g-rwx,o-rwx /opt/freeswitch/etc
# install freeswitch sounds if missing
SOUNDS_DIR=/usr/share/freeswitch/sounds
if [ "$SOUNDS_LANGUAGE" == "de-de-daedalus3" ]; then
SOUNDS_DIR=/opt/freeswitch/share/freeswitch/sounds
if [ "$SOUNDS_LANGUAGE" == "en-us-callie" ]; then
# default, is already installed
echo ""
elif [ "$SOUNDS_LANGUAGE" == "de-de-daedalus3" ]; then
if [ ! -d "$SOUNDS_DIR/de/de/daedalus3" ]; then
echo "sounds package for de-de-daedalus3 not installed yet"
wget -O /tmp/freeswitch-german-soundfiles.zip https://github.com/Daedalus3/freeswitch-german-soundfiles/archive/master.zip
@ -36,10 +42,24 @@ if [ "$SOUNDS_LANGUAGE" == "de-de-daedalus3" ]; then
fi
else
SOUNDS_PACKAGE=$(echo "freeswitch-sounds-${SOUNDS_LANGUAGE}" | tr '[:upper:]' '[:lower:]')
if ! dpkg -s $SOUNDS_PACKAGE >/dev/null 2>&1; then
if [ ! -f $SOUNDS_DIR/$SOUNDS_LANGUAGE.installed ]; then
echo "sounds package for $SOUNDS_LANGUAGE not installed yet"
apt-get install $SOUNDS_PACKAGE
# get filename of latest release for this sound package
FILENAME=$(curl -s https://files.freeswitch.org/releases/sounds/ | grep -i $SOUNDS_LANGUAGE 2> /dev/null | awk -F'\"' '{print $8}' | grep -E '\-48000-.*\.gz$' | sort -V | tail -n 1)
if [ "$FILENAME" = "" ]; then
echo "Error: could not find sounds for language '$SOUNDS_LANGUAGE'"
echo "make sure to specify a value for SOUNDS_LANGUAGE which exists on https://files.freeswitch.org/releases/sounds/"
exit 1
fi
for bitrate in 8000 16000 32000 48000; do
URL=https://files.freeswitch.org/releases/sounds/$(echo $FILENAME | sed "s/48000/$bitrate/")
wget -O /tmp/sounds.tar.gz $URL
tar xvfz /tmp/sounds.tar.gz -C $SOUNDS_DIR
done
touch $SOUNDS_DIR/$SOUNDS_LANGUAGE.installed
fi
fi
@ -49,4 +69,4 @@ export SOUNDS_PATH=$SOUNDS_DIR/$(echo "$SOUNDS_LANGUAGE" | sed 's|-|/|g')
dockerize \
-template /etc/freeswitch/vars.xml.tmpl:/etc/freeswitch/vars.xml \
-template /etc/freeswitch/autoload_configs/conference.conf.xml.tmpl:/etc/freeswitch/autoload_configs/conference.conf.xml \
/usr/bin/freeswitch -u freeswitch -g daemon -nonat -nf
/opt/freeswitch/bin/freeswitch -u freeswitch -g daemon -nonat -nf

View File

@ -1,28 +1,23 @@
FROM mozilla/sbt:8u212_1.2.8 AS builder
ARG BBB_BUILD_TAG
FROM gitlab.senfcall.de:5050/senfcall-public/docker-bbb-build:$BBB_BUILD_TAG AS builder
RUN apt-get update && apt-get install -y subversion
ARG TAG_COMMON_MESSAGE
# download bbb-common-message
ENV TAG_COMMON_MESSAGE v2.4.0
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_COMMON_MESSAGE/bbb-common-message /bbb-common-message \
&& rm -rf /bbb-common-message/.svn
# compile bbb-common-message
RUN cd /bbb-common-message \
&& ./deploy.sh
&& cd /bbb-common-message \
&& ./deploy.sh \
&& rm -rf /bbb-common-message
# ===================================================
ENV TAG_FSESL v2.4.0
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_FSESL/bbb-fsesl-client /bbb-fsesl-client \
ARG TAG_FSESL_AKKA
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_FSESL_AKKA/bbb-fsesl-client /bbb-fsesl-client \
&& rm -rf /bbb-fsesl-client/.svn
RUN cd /bbb-fsesl-client \
&& ./deploy.sh
ENV TAG v2.4.0
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/akka-bbb-fsesl /source \
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_FSESL_AKKA/akka-bbb-fsesl /source \
&& rm -rf /source/.svn
# compile and unzip bin
@ -32,25 +27,12 @@ RUN unzip /source/target/universal/bbb-fsesl-akka-0.0.2.zip -d /
# # ===================================================
FROM openjdk:8-jre-slim-bullseye
RUN apt update && apt-get install -y wget gosu
# install dockerize
ENV DOCKERIZE_VERSION v0.6.1
RUN wget -q https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
&& tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
&& rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz
RUN groupadd -g 1007 fsesl-akka \
&& useradd -m -u 1007 -g fsesl-akka fsesl-akka
FROM alangecker/bbb-docker-base-java
COPY --from=builder /bbb-fsesl-akka-0.0.2 /bbb-fsesl-akka
COPY bbb-fsesl-akka.conf /etc/bigbluebutton/bbb-fsesl-akka.conf.tmpl
COPY logback.xml /bbb-fsesl-akka/conf/logback.xml
COPY entrypoint.sh /entrypoint.sh
WORKDIR /bbb-fsesl-akka
CMD dockerize \
-template /etc/bigbluebutton/bbb-fsesl-akka.conf.tmpl:/etc/bigbluebutton/bbb-fsesl-akka.conf \
gosu fsesl-akka /bbb-fsesl-akka/bin/bbb-fsesl-akka
USER bigbluebutton
ENTRYPOINT /entrypoint.sh

View File

@ -5,7 +5,7 @@ include "/bbb-fsesl-akka/conf/application.conf"
freeswitch {
esl {
host="10.7.7.1"
password="{{ default .Env.FSESL_PASSWORD "ClueCon" }}"
password="FSESL_PASSWORD"
}
}

9
mod/fsesl-akka/entrypoint.sh Executable file
View File

@ -0,0 +1,9 @@
#!/bin/sh -e
TARGET=/etc/bigbluebutton/bbb-fsesl-akka.conf
cp /etc/bigbluebutton/bbb-fsesl-akka.conf.tmpl $TARGET
sed -i "s/FSESL_PASSWORD/$FSESL_PASSWORD/" $TARGET
cd /bbb-fsesl-akka
/bbb-fsesl-akka/bin/bbb-fsesl-akka

View File

@ -1,44 +1,40 @@
FROM node:14.18.1-bullseye-slim AS builder
ARG BBB_BUILD_TAG
FROM gitlab.senfcall.de:5050/senfcall-public/docker-bbb-build:$BBB_BUILD_TAG AS builder
RUN apt-get update && apt-get install -y wget curl subversion python3 build-essential
RUN groupadd -g 2000 meteor && useradd -m -u 2001 -g meteor meteor
# RUN groupadd -g 2000 meteor && useradd -m -u 2001 -g meteor meteor
# USER meteor
ARG TAG_HTML5
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_HTML5/bigbluebutton-html5 /source \
&& cd /source \
&& meteor npm ci --production \
&& METEOR_DISABLE_OPTIMISTIC_CACHING=1 meteor build --architecture os.linux.x86_64 --allow-superuser --directory /app \
&& rm -rf /source
# download dockerize
ENV DOCKERIZE_VERSION v0.6.1
RUN wget -q https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
&& tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
&& rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz
USER meteor
ENV METEOR_VERSION 2.5
RUN curl -sL https://install.meteor.com?release=$METEOR_VERSION | sed s/--progress-bar/-sL/g | /bin/sh
ENV TAG v2.4.0
RUN cd ~ \
&& svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/bigbluebutton-html5 \
&& mv ~/bigbluebutton-html5 ~/source \
&& cd ~/source \
&& ~/.meteor/meteor npm ci --production \
&& METEOR_DISABLE_OPTIMISTIC_CACHING=1 ~/.meteor/meteor build --architecture os.linux.x86_64 --directory ~/app \
&& rm -rf ~/source
RUN cd ~/app/bundle/programs/server \
RUN cd /app/bundle/programs/server \
&& npm install --production
RUN mkdir -p /app/bundle/programs/web.browser/app/files && \
cp /app/bundle/programs/server/npm/node_modules/@fontsource/*/files/*.woff* /app/bundle/programs/web.browser/app/files/
RUN sed -i "s/VERSION/$TAG_HTML5/" /app/bundle/programs/web.browser/head.html \
&& find /app/bundle/programs/web.browser -name '*.js' -exec gzip -k -f -9 '{}' \; \
&& find /app/bundle/programs/web.browser -name '*.css' -exec gzip -k -f -9 '{}' \; \
&& find /app/bundle/programs/web.browser -name '*.wasm' -exec gzip -k -f -9 '{}' \;
# ------------------------------
FROM node:14.18.1-alpine
FROM node:14-bullseye-slim
RUN addgroup -g 2000 meteor && \
adduser -D -u 2001 -G meteor meteor && \
apk add su-exec
COPY --from=builder /usr/local/bin/dockerize /usr/local/bin/dockerize
COPY --from=builder --chown=meteor:meteor /home/meteor/app/bundle /app
RUN apt-get update && apt-get install -y gosu
# add user & group
RUN groupadd -g 2000 meteor \
&& useradd -m -u 2001 -g meteor meteor
COPY --from=alangecker/bbb-docker-base-java /usr/local/bin/dockerize /usr/local/bin/dockerize
COPY --from=builder --chown=meteor:meteor /app/bundle /app
COPY entrypoint.sh /entrypoint.sh
COPY bbb-html5.yml /app/bbb-html5.yml.tmpl
ENTRYPOINT ["/entrypoint.sh"]
# lets set the tag again, so that it is include in the image for later version retrieval
ENV TAG v2.4.0

View File

@ -1,5 +1,6 @@
public:
app:
bbbServerVersion: {{ .Env.TAG_HTML5 }}-docker
listenOnlyMode: {{ .Env.LISTEN_ONLY_MODE }}
skipCheck: {{ .Env.DISABLE_ECHO_TEST }}
clientTitle: {{ .Env.CLIENT_TITLE }}
@ -13,15 +14,11 @@ public:
chat:
enabled: {{ .Env.CHAT_ENABLED }}
startClosed: {{ .Env.CHAT_START_CLOSED }}
note:
pads:
url: https://{{ .Env.DOMAIN }}/pad
private:
app:
host: 0.0.0.0
etherpad:
apikey: {{ .Env.ETHERPAD_API_KEY }}
host: etherpad
port: 9001
redis:
host: redis
port: '6379'

View File

@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/bash
set -e
cd /app
@ -6,12 +6,12 @@ export MONGO_OPLOG_URL=mongodb://10.7.7.6/local
export MONGO_URL=mongodb://10.7.7.6/meteor
export ROOT_URL=http://127.0.0.1/html5client
export NODE_ENV=production
export SERVER_WEBSOCKET_COMPRESSION=0
export SERVER_WEBSOCKET_COMPRESSION='{"level":5, "maxWindowBits":13, "memLevel":7, "requestMaxWindowBits":13}'
export BIND_IP=0.0.0.0
export LANG=en_US.UTF-8
export INSTANCE_MAX=1
export ENVIRONMENT_TYPE=production
export NODE_VERSION=node-v12.16.1-linux-x64
export NODE_VERSION=node-v14.21.1-linux-x64
export BBB_HTML5_LOCAL_SETTINGS=/app/bbb-html5.yml
if [ "$DEV_MODE" == true ]; then
@ -26,7 +26,7 @@ fi
# if container is the first frontend, do some additional tasks
if [ "$BBB_HTML5_ROLE" == "frontend" ] && [ "$INSTANCE_ID" == "1" ]; then
# delete potential old settings.yml
# copy static files into volume for direct access by nginx
# https://github.com/bigbluebutton/bigbluebutton/issues/10739
@ -39,5 +39,5 @@ fi
dockerize \
-template /app/bbb-html5.yml.tmpl:/app/bbb-html5.yml \
su-exec meteor \
gosu meteor \
node --max-old-space-size=2048 --max_semi_space_size=128 main.js $PARAM

View File

@ -0,0 +1,15 @@
# overwriting force-https.conf from valian/docker-nginx-auto-ssl
location /bigbluebutton/api/join {
return 301 https://$host$request_uri;
}
# allow /api calls without redirecting to https
location /bigbluebutton/api {
proxy_pass https://127.0.0.1:443;
proxy_ssl_verify off;
}
location / {
return 301 https://$host$request_uri;
}

View File

@ -4,10 +4,20 @@ set -e
host=${HOSTNAME:-$(hostname -f)}
# shut down again
mongod --pidfilepath /tmp/docker-entrypoint-temp-mongod.pid --shutdown
# restart again binding to 0.0.0.0 to allow a replset with 10.7.7.6
mongod --oplogSize 8 --replSet rs0 --noauth \
--config /tmp/docker-entrypoint-temp-config.json \
--bind_ip 0.0.0.0 --port 27017 \
--tlsMode disabled \
--logpath /proc/1/fd/1 --logappend \
--pidfilepath /tmp/docker-entrypoint-temp-mongod.pid --fork
# init replset with defaults
mongo local --eval "rs.initiate({
mongo 10.7.7.6 --eval "rs.initiate({
_id: 'rs0',
members: [ { _id: 0, host: '127.0.0.1:27017' } ]
members: [ { _id: 0, host: '10.7.7.6:27017' } ]
})"
echo "Waiting to become a master"

View File

@ -1,23 +1,20 @@
FROM node:14-alpine AS builder
RUN apk add subversion git
ARG BBB_BUILD_TAG
FROM gitlab.senfcall.de:5050/senfcall-public/docker-bbb-build:$BBB_BUILD_TAG AS builder
# --------------------
ENV TAG_LEARNING_DASHBOARD v2.4.0
ARG TAG_LEARNING_DASHBOARD
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_LEARNING_DASHBOARD/bbb-learning-dashboard /bbb-learning-dashboard && rm -r /bbb-learning-dashboard/.svn
RUN cd /bbb-learning-dashboard && npm ci && npm run build
ENV TAG_PLAYBACK v3.1.0
ENV REACT_APP_BBB_PLAYBACK_BUILD=$TAG_PLAYBACK
RUN svn checkout https://github.com/bigbluebutton/bbb-playback/tags/$TAG_PLAYBACK /bbb-playback && rm -r /bbb-playback/.svn
COPY ./bbb-playback /bbb-playback
RUN cd /bbb-playback && npm ci && npm run build
# --------------------
FROM nginx:1.21-alpine
FROM nginx:1.23-alpine
COPY --from=builder /bbb-learning-dashboard/build /www/learning-dashboard
COPY --from=builder /bbb-learning-dashboard/build /www/learning-analytics-dashboard/
COPY --from=builder /bbb-playback/build /www/playback/presentation/2.3
COPY ./bbb /etc/nginx/bbb
COPY ./bigbluebutton /etc/nginx/conf.d/default.conf

View File

@ -6,11 +6,12 @@ location @html5client {
}
location /html5client/locales {
alias /html5-static/app/locales;
alias /html5-static/app/locales;
}
location /html5client/compatibility {
alias /html5-static/app/compatibility;
gzip_static on;
alias /html5-static/app/compatibility;
}
location /html5client/resources {
@ -25,6 +26,10 @@ location /html5client/fonts {
alias /html5-static/app/fonts;
}
location /html5client/files {
alias /html5-static/app/files;
}
location /html5client/wasm {
types {
application/wasm wasm;
@ -33,8 +38,12 @@ location /html5client/wasm {
alias /html5-static/app/wasm;
}
location /html5client/ {
location /html5client {
gzip_static on;
alias /html5-static;
try_files $uri @html5client;
}
location /html5client/sockjs {
try_files $uri @html5client;
}

View File

@ -1,34 +0,0 @@
# Routes requests to Greenlight based on the '/b' prefix.
# Use this file to route '/b' paths on your BigBlueButton server
# to the Greenlight application. If you are using a different
# subpath, you should change it here.
location /b {
proxy_pass http://host.docker.internal:5000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Ssl on;
proxy_http_version 1.1;
}
location /b/cable {
proxy_pass http://host.docker.internal:5000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_http_version 1.1;
proxy_read_timeout 6h;
proxy_send_timeout 6h;
client_body_timeout 6h;
send_timeout 6h;
}
# this is necessary for the preupload_presentation feature
location /rails/active_storage {
return 301 /b$request_uri;
}

View File

@ -1,9 +1,9 @@
location ~ /learning-dashboard/([0-9a-f]+-[0-9]+)/(.*) {
root /var/bigbluebutton/learning-dashboard/;
location ~ /learning-analytics-dashboard/([0-9a-f]+-[0-9]+)/(.*) {
root /var/bigbluebutton/learning-analytics-dashboard/;
autoindex off;
}
location /learning-dashboard/ {
alias /www/learning-dashboard/;
location /learning-analytics-dashboard/ {
alias /www/learning-analytics-dashboard/;
autoindex off;
}

View File

@ -1,5 +1,10 @@
# https://github.com/ether/etherpad-lite/wiki/How-to-put-Etherpad-Lite-behind-a-reverse-Proxy
location /pad/p/ {
# Avoid setting the user name from the embedded URL
if ($arg_userName) {
return 401;
}
rewrite /pad/p/(.*) /p/$1 break;
rewrite ^/pad/p$ /pad/p/ permanent;
proxy_pass http://etherpad:9001/p;
@ -13,7 +18,17 @@ location /pad/p/ {
proxy_set_header X-Forwarded-Proto $scheme; # for EP to set secure cookie flag when https is used
proxy_http_version 1.1;
auth_request /bigbluebutton/connection/validatePad;
auth_request /bigbluebutton/connection/checkAuthorization;
auth_request_set $auth_status $upstream_status;
}
location /pad/auth_session {
rewrite /pad/auth_session(.*) /auth_session$1 break;
proxy_pass http://etherpad:9001/;
proxy_pass_header Server;
proxy_set_header Host $host;
proxy_buffering off;
auth_request /bigbluebutton/connection/checkAuthorization;
auth_request_set $auth_status $upstream_status;
}

View File

@ -0,0 +1,21 @@
# This file is part of BigBlueButton.
#
# Copyright © BigBlueButton Inc. and by respective authors.
#
# BigBlueButton is free software: you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by the
# Free Software Foundation, either version 3.0 of the License, or (at your
# option) any later version.
#
# BigBlueButton is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
# details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with BigBlueButton. If not, see <https://www.gnu.org/licenses>.
location /playback/video/ {
alias /var/bigbluebutton/published/video/;
index index.html index.htm;
}

View File

@ -0,0 +1,22 @@
#
# BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
#
# Copyright (c) 2012 BigBlueButton Inc. and by respective authors (see below).
#
# This program is free software; you can redistribute it and/or modify it under the
# terms of the GNU Lesser General Public License as published by the Free Software
# Foundation; either version 3.0 of the License, or (at your option) any later
# version.
#
# BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License along
# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
#
location /podcast {
root /var/bigbluebutton/published;
index index.html index.htm;
}

View File

@ -0,0 +1,22 @@
#
# BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
#
# Copyright (c) 2012 BigBlueButton Inc. and by respective authors (see below).
#
# This program is free software; you can redistribute it and/or modify it under the
# terms of the GNU Lesser General Public License as published by the Free Software
# Foundation; either version 3.0 of the License, or (at your option) any later
# version.
#
# BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License along
# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
#
location /recording/screenshare {
alias /var/bigbluebutton/published/screenshare;
index index.html index.htm;
}

View File

@ -0,0 +1,28 @@
#
# BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
#
# Copyright (c) 2012 BigBlueButton Inc. and by respective authors (see below).
#
# This program is free software; you can redistribute it and/or modify it under the
# terms of the GNU Lesser General Public License as published by the Free Software
# Foundation; either version 3.0 of the License, or (at your option) any later
# version.
#
# BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License along
# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
#
location /playback/slides {
root /var/bigbluebutton;
index index.html index.htm;
}
location /slides {
root /var/bigbluebutton/published;
index index.html index.htm;
}

View File

@ -9,32 +9,16 @@
# Workaround IE refusal to set cookies in iframe
add_header P3P 'CP="No P3P policy available"';
if ($bbb_loadbalancer_node) {
add_header 'Access-Control-Allow-Origin' $bbb_loadbalancer_node always;
add_header 'Access-Control-Allow-Credentials' 'true' always;
}
}
location ~ "^\/bigbluebutton\/presentation\/(?<prestoken>[a-zA-Z0-9_-]+)/upload$" {
# Grails can't handle CORS OPTION preflight requests correctly -> lets do this in nginx
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' $bbb_loadbalancer_node always;
add_header 'Access-Control-Allow-Credentials' 'true' always;
add_header 'Content-Type' 'text/plain; charset=utf-8';
add_header 'Content-Length' 0;
return 204;
}
proxy_pass http://bbb-web:8090;
proxy_redirect default;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# Workaround IE refusal to set cookies in iframe
add_header P3P 'CP="No P3P policy available"';
if ($bbb_loadbalancer_node) {
add_header 'Access-Control-Allow-Origin' $bbb_loadbalancer_node always;
add_header 'Access-Control-Allow-Credentials' 'true' always;
}
# high limit for presentation as bbb-web will reject upload if larger than configured
client_max_body_size 1000m;
@ -73,9 +57,6 @@
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# Workaround IE refusal to set cookies in iframe
add_header P3P 'CP="No P3P policy available"';
if ($bbb_loadbalancer_node) {
add_header 'Access-Control-Allow-Origin' $bbb_loadbalancer_node always;
}
}
location = /bigbluebutton/presentation/checkPresentation {
@ -87,6 +68,7 @@
proxy_set_header X-Original-URI $request_uri;
proxy_set_header Content-Length "";
proxy_set_header X-Original-Content-Length $http_content_length;
proxy_set_header X-Original-Method $request_method;
# high limit for presentation as bbb-web will reject upload if larger than configured
client_max_body_size 1000m;
@ -109,6 +91,7 @@
proxy_set_header Content-Length "";
proxy_set_header X-Original-URI $request_uri;
}
location = /bigbluebutton/connection/legacyCheckAuthorization {
internal;
proxy_pass http://bbb-web:8090;
@ -128,9 +111,6 @@
location ~ "^/bigbluebutton\/textTrack\/(?<textTrackToken>[a-zA-Z0-9]+)\/(?<recordId>[a-zA-Z0-9_-]+)\/(?<textTrack>.+)$" {
# Workaround IE refusal to set cookies in iframe
add_header P3P 'CP="No P3P policy available"';
if ($bbb_loadbalancer_node) {
add_header 'Access-Control-Allow-Origin' $bbb_loadbalancer_node always;
}
# Allow 30M uploaded presentation document.
client_max_body_size 30m;
@ -177,4 +157,4 @@
}
return 403;
}
}

View File

@ -5,8 +5,9 @@ location /bbb-webrtc-sfu {
auth_request_set $user_id $sent_http_user_id;
auth_request_set $meeting_id $sent_http_meeting_id;
auth_request_set $voice_bridge $sent_http_voice_bridge;
auth_request_set $user_name $sent_http_user_name;
proxy_pass http://webrtc-sfu:3008;
proxy_pass http://10.7.7.1:3008;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
@ -14,9 +15,11 @@ location /bbb-webrtc-sfu {
proxy_set_header User-Id $user_id;
proxy_set_header Meeting-Id $meeting_id;
proxy_set_header Voice-Bridge $voice_bridge;
proxy_read_timeout 6h;
proxy_send_timeout 6h;
client_body_timeout 6h;
send_timeout 6h;
proxy_set_header User-Name $user_name;
proxy_read_timeout 60s;
proxy_send_timeout 60s;
client_body_timeout 60s;
send_timeout 60s;
}

View File

@ -29,12 +29,33 @@ server {
# https://www.eff.org/deeplinks/2021/03/googles-floc-terrible-idea
add_header Permissions-Policy "interest-cohort=()";
# redirect to greenlight
location = / {
return 302 /b;
}
# Include specific rules for record and playback
include /etc/nginx/bbb/*.nginx;
location / {
proxy_pass http://greenlight:3000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Ssl on;
proxy_http_version 1.1;
client_max_body_size 1000m;
}
location /cable {
proxy_pass http://greenlight:3000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_http_version 1.1;
proxy_read_timeout 6h;
proxy_send_timeout 6h;
client_body_timeout 6h;
send_timeout 6h;
}
}

View File

@ -1,16 +1,9 @@
FROM debian:bullseye-slim
# -- install mongo cli
RUN apt-get update \
&& apt-get install -y wget libcurl4 \
&& wget https://repo.mongodb.org/apt/debian/dists/buster/mongodb-org/4.2/main/binary-amd64/mongodb-org-shell_4.2.6_amd64.deb \
&& dpkg -i mongodb*.deb \
&& rm mongodb*.deb
# -- install docker cli
COPY --from=library/docker:latest /usr/local/bin/docker /usr/bin/docker
COPY bbb-remove-old-recordings bbb-restart-kms bbb-resync-freeswitch entrypoint.sh /
COPY bbb-remove-old-recordings bbb-resync-freeswitch entrypoint.sh /
RUN chmod +x bbb-remove-old-recordings

View File

@ -1,40 +0,0 @@
#!/bin/bash
# Source:
# https://github.com/alangecker/bbb-packages/blob/f83431c227be2c95025ea81083baeaa87667b170/bbb-webrtc-sfu/data/etc/cron.hourly/bbb-restart-kms
#
# Restart Kurento every 24+ hours
#
if [ ! -f /tmp/bbb-kms-last-restart.txt ]; then
date +%Y-%m-%d\ %H:%M:%S > /tmp/bbb-kms-last-restart.txt
exit
fi
users=$(mongo --quiet mongodb://10.7.7.6:27017/meteor --eval "db.users.count()")
echo "currently active users: $users"
if [ "$users" -eq 0 ]; then
# Make sure 24 hours have passed since last restart
# Seconds since epoch for last restart
dt1=$(cat /tmp/bbb-kms-last-restart.txt)
t1=`date --date="$dt1" +%s`
# Current seconds since epoch
dt2=`date +%Y-%m-%d\ %H:%M:%S`
t2=`date --date="$dt2" +%s`
# Hours since last restart
let "tDiff=$t2-$t1"
let "hDiff=$tDiff/3600"
if [ "$hDiff" -ge 24 ]; then
echo "scheduled restart of kurento after 24h"
CONTAINER_ID=$(docker ps | grep kurento | awk '{print $1}')
docker restart $CONTAINER_ID
date +%Y-%m-%d\ %H:%M:%S > /tmp/bbb-kms-last-restart.txt
fi
fi

View File

@ -2,5 +2,4 @@
# https://github.com/bigbluebutton/bigbluebutton/pull/9597/files
CONTAINER_ID=$(docker ps | grep freeswitch | awk '{print $1}')
docker exec -it $CONTAINER_ID fs_cli -H 10.7.7.1 -P 8021 -x 'fsctl sync_clock_when_idle'
docker exec -it bbb-freeswitch fs_cli -H 10.7.7.1 -P 8021 -x 'fsctl sync_clock_when_idle'

View File

@ -7,14 +7,12 @@ history=5
while :
do
# restart kurento after 24h
/bbb-restart-kms
# resync freeswitch
/bbb-resync-freeswitch
# delete presentations older than N days
find /var/bigbluebutton/ -maxdepth 1 -type d -name "*-*" -mtime +$history -exec rm -rf '{}' +
find /var/bigbluebutton/ -maxdepth 1 -type d -name "*-[0-9]*" -mtime +$history -exec rm -rf '{}' +
# delete recordings older than $RECORDING_MAX_AGE_DAYS
if [ "$ENABLE_RECORDING" == true ] && [ "$REMOVE_OLD_RECORDING" == true ]; then

View File

@ -1,5 +1,5 @@
FROM ruby:2.5-slim-buster
FROM ruby:2.7-slim-bullseye
# install apt dependencies
RUN apt-get update && apt-get install -y \
@ -9,15 +9,28 @@ RUN apt-get update && apt-get install -y \
build-essential \
libsystemd-dev \
python3 \
python3-pyinotify \
python3-attr \
python3-cairo \
python3-gi \
python3-gi-cairo \
python3-lxml \
python3-icu \
python3-pyinotify \
python3-sortedcollections \
python3-packaging \
gir1.2-pangocairo-1.0 \
gir1.2-poppler-0.18 \
gir1.2-gtk-3.0 \
gir1.2-gdkpixbuf-2.0 \
fonts-croscore \
ffmpeg \
poppler-utils \
imagemagick \
supervisor \
unzip \
locales \
locales-all
# TODO: missing packages
ENV LC_ALL en_US.UTF-8
ENV LANG en_US.UTF-8
@ -40,25 +53,35 @@ RUN wget -q https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VE
&& tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
&& rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz
# add yq for bbb-record
RUN wget -q https://github.com/mikefarah/yq/releases/download/3.4.1/yq_linux_amd64 -O /usr/bin/yq \
&& chmod +x /usr/bin/yq
RUN mkdir -p \
/usr/local/bigbluebutton \
/usr/local/bigbluebutton/core \
/etc/bigbluebutton
/etc/bigbluebutton \
/etc/bigbluebutton/recording
ENV TAG v2.4.0
# dependency for bbb-presentation-video
RUN wget -q -O /tmp/python3-perfect-freehand.deb https://github.com/bigbluebutton/perfect-freehand-python/releases/download/1.2.0/python3-perfect-freehand_1.2.0_all.deb && \
dpkg -i /tmp/python3-perfect-freehand.deb && \
rm /tmp/python3-perfect-freehand.deb
ARG TAG_RECORDINGS
# add bbb-record-core (lib, scripts and Gemfile)
RUN cd /usr/local/bigbluebutton/core \
&& svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/record-and-playback/core/lib \
&& svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/record-and-playback/core/scripts \
&& svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_RECORDINGS/record-and-playback/core/lib \
&& svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_RECORDINGS/record-and-playback/core/scripts \
&& rm -rf /usr/local/bigbluebutton/core/*/.svn \
&& wget https://raw.githubusercontent.com/bigbluebutton/bigbluebutton/$TAG/record-and-playback/core/Gemfile.lock \
&& wget https://raw.githubusercontent.com/bigbluebutton/bigbluebutton/$TAG/record-and-playback/core/Gemfile \
&& wget https://raw.githubusercontent.com/bigbluebutton/bigbluebutton/$TAG/record-and-playback/core/Rakefile
&& wget https://raw.githubusercontent.com/bigbluebutton/bigbluebutton/$TAG_RECORDINGS/record-and-playback/core/Gemfile.lock \
&& wget https://raw.githubusercontent.com/bigbluebutton/bigbluebutton/$TAG_RECORDINGS/record-and-playback/core/Gemfile \
&& wget https://raw.githubusercontent.com/bigbluebutton/bigbluebutton/$TAG_RECORDINGS/record-and-playback/core/Rakefile
# add bbb-playback-presentation scripts
RUN cd /tmp \
&& svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/record-and-playback/presentation/scripts \
&& svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_RECORDINGS/record-and-playback/presentation/scripts \
&& rsync -av /tmp/scripts/ /usr/local/bigbluebutton/core/scripts/ \
&& rm -rf /tmp/scripts
@ -66,7 +89,11 @@ RUN cd /tmp \
RUN cd /usr/local/bigbluebutton/core \
&& gem install builder \
&& gem install bundler --no-document \
&& /usr/local/bin/bundle
&& bundle config set --local deployment true \
&& bundle install \
&& bundle clean \
&& rm -r vendor/bundle/ruby/*/cache \
&& find vendor/bundle -name '*.o' -delete
# log to file instead of journald
RUN sed -i 's|Journald::Logger\.new.*|Logger.new("/var/log/bigbluebutton/recording.log")|g' /usr/local/bigbluebutton/core/lib/recordandplayback.rb && \
@ -79,11 +106,11 @@ RUN sed -i 's|Journald::Logger\.new.*|Logger.new("/var/log/bigbluebutton/recordi
# add bbb-record with some adjustments so bbb-record works in this environment
RUN cd /usr/bin \
&& wget https://raw.githubusercontent.com/bigbluebutton/bigbluebutton/$TAG/bigbluebutton-config/bin/bbb-record \
&& wget https://raw.githubusercontent.com/bigbluebutton/bigbluebutton/$TAG_RECORDINGS/bigbluebutton-config/bin/bbb-record \
&& chmod +x /usr/bin/bbb-record \
&& sed -i 's/^BBB_WEB.*/BBB_WEB=""/' /usr/bin/bbb-record \
&& sed -i 's/systemctl.*//' /usr/bin/bbb-record \
&& echo "BIGBLUEBUTTON_RELEASE=$TAG" > /etc/bigbluebutton/bigbluebutton-release
&& echo "BIGBLUEBUTTON_RELEASE=$TAG_RECORDINGS" > /etc/bigbluebutton/bigbluebutton-release
# create user
# the ID should match the one creating the files in `core`
@ -93,9 +120,16 @@ RUN groupadd -g 998 bigbluebutton && useradd -m -u 998 -g bigbluebutton bigblueb
# https://github.com/alangecker/bigbluebutton-docker/issues/63
RUN chown -R 998:998 /usr/local/bigbluebutton
ARG TAG_BBB_PRESENTATION_VIDEO
RUN cd /tmp/ && \
wget -q -O bbb-presentation-video.zip "https://github.com/bigbluebutton/bbb-presentation-video/releases/download/${TAG_BBB_PRESENTATION_VIDEO}/ubuntu-20.04.zip" && \
unzip -o bbb-presentation-video.zip -d bbb-presentation-video && \
dpkg -i bbb-presentation-video/bbb-presentation-video*.deb && \
rm -rf /tmp/*
COPY bbb-web.properties /etc/bigbluebutton/bbb-web.properties.tmpl
COPY bigbluebutton.yml /usr/local/bigbluebutton/core/scripts/bigbluebutton.yml.tmpl
COPY recording.yml /etc/bigbluebutton/recording/recording.yml.tmpl
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT /entrypoint.sh
ENTRYPOINT /entrypoint.sh

View File

@ -1,59 +0,0 @@
bbb_version: '2.1.0'
raw_audio_src: /var/freeswitch/meetings
raw_video_src: /usr/share/red5/webapps/video/streams
kurento_video_src: /var/kurento/recordings
kurento_screenshare_src: /var/kurento/screenshare
raw_screenshare_src: /usr/share/red5/webapps/screenshare/streams
raw_webrtc_deskshare_src: /usr/share/red5/webapps/video-broadcast/streams
raw_deskshare_src: /var/bigbluebutton/deskshare
raw_presentation_src: /var/bigbluebutton
notes_endpoint: http://etherpad:9001/p
# Specify the notes formats we archive
# txt, doc and odt are also supported
notes_formats:
- etherpad
- html
- pdf
redis_host: redis
redis_port: 6379
# Uncomment and set password if redis require it.
# redis_password: changeme
# redis_workers_host: 127.0.0.1
# redis_workers_port: 6379
# Set to true to insert recording process status into
# redis list with key "store_recording_status: true".
# This is useful if you want to track progress status
# and have another script process it.
store_recording_status: false
# Sequence of recording steps. Keys are the current step, values
# are the next step(s). Examples:
# current_step: next_step
# "current_step-format": "next_step-format"
# current_step:
# - next_step
# - another_step-format
steps:
archive: "sanity"
sanity: "captions"
captions: "process:presentation"
"process:presentation": "publish:presentation"
# For PRODUCTION
log_dir: /var/log/bigbluebutton
events_dir: /var/bigbluebutton/events
recording_dir: /var/bigbluebutton/recording
published_dir: /var/bigbluebutton/published
captions_dir: /var/bigbluebutton/captions
playback_host: {{ .Env.DOMAIN }}
playback_protocol: https
# For DEVELOPMENT
# This allows us to run the scripts manually
#scripts_dir: /home/ubuntu/dev/bigbluebutton/record-and-playback/core/scripts
#log_dir: /home/ubuntu/temp/log
#recording_dir: /home/ubuntu/temp/recording
#published_dir: /home/ubuntu/temp/published
#playback_host: 127.0.0.1

View File

@ -2,11 +2,14 @@
touch /var/log/bigbluebutton/recording.log
touch /var/log/bigbluebutton/bbb-web.log
touch /var/log/bigbluebutton/sanity.log
mkdir -p /var/log/bigbluebutton/presentation
chown -R bigbluebutton:bigbluebutton /var/log/bigbluebutton
dockerize \
-template /usr/local/bigbluebutton/core/scripts/bigbluebutton.yml.tmpl:/usr/local/bigbluebutton/core/scripts/bigbluebutton.yml \
-template /etc/bigbluebutton/recording/recording.yml.tmpl:/etc/bigbluebutton/recording/recording.yml \
-template /etc/bigbluebutton/bbb-web.properties.tmpl:/etc/bigbluebutton/bbb-web.properties \
-stdout /var/log/bigbluebutton/recording.log \
-stdout /var/log/bigbluebutton/post_publish.log \
-stdout /var/log/bigbluebutton/sanity.log \
/usr/bin/supervisord --nodaemon

View File

@ -0,0 +1,4 @@
redis_host: redis
notes_endpoint: http://bbb-pads:9002/p
playback_host: {{ .Env.DOMAIN }}
playback_protocol: https

View File

@ -2,9 +2,9 @@
user=root
[program:rasque_workers]
command=rake resque:workers
command=bundle exec rake -f Rakefile resque:workers
directory=/usr/local/bigbluebutton/core/scripts
environment=QUEUE="rap:archive,rap:publish,rap:process,rap:sanity,rap:captions,rap:events",COUNT="1",VVERBOSE="1"
environment=QUEUE="rap:archive,rap:publish,rap:process,rap:sanity,rap:captions,rap:events",COUNT="1",VVERBOSE="1",HOME="/home/bigbluebutton"
user=bigbluebutton
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
@ -15,6 +15,7 @@ stderr_logfile_maxbytes=0
[program:rap_starter]
command=bundle exec ruby /usr/local/bigbluebutton/core/scripts/rap-starter.rb
directory=/usr/local/bigbluebutton/core/scripts
environment=HOME="/home/bigbluebutton"
user=bigbluebutton
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
@ -25,6 +26,7 @@ stderr_logfile_maxbytes=0
[program:rap_caption_inbox]
command=bundle exec ruby /usr/local/bigbluebutton/core/scripts/rap-caption-inbox.rb
directory=/usr/local/bigbluebutton/core/scripts
environment=HOME="/home/bigbluebutton"
user=bigbluebutton
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0

View File

@ -1,26 +1,25 @@
FROM node:14-alpine
# download dockerize
ENV DOCKERIZE_VERSION v0.6.1
RUN wget -q https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
&& tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
&& rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
&& apk add subversion \
&& mkdir /app \
&& adduser -D -u 2002 -g webhooks webhooks \
&& chown webhooks:webhooks /app
USER webhooks
FROM node:16-bullseye-slim AS builder
ENV TAG v2.4.0
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/bbb-webhooks /app \
&& rm -rf /app/.svn \
&& cd /app && npm install --production
RUN apt-get update && apt-get install -y git wget
RUN wget -q https://github.com/mikefarah/yq/releases/download/v4.25.1/yq_linux_amd64 -O /usr/bin/yq \
&& chmod +x /usr/bin/yq
COPY ./bbb-webhooks /bbb-webhooks
RUN cd /bbb-webhooks && npm install --production
RUN chmod 777 /bbb-webhooks/config
# ------------------------------
FROM node:16-bullseye-slim
RUN useradd --uid 2004 --user-group bbb-webhooks
COPY --from=builder /usr/bin/yq /usr/bin/yq
COPY --from=builder /bbb-webhooks /bbb-webhooks
COPY entrypoint.sh /entrypoint.sh
COPY config.yml /app/config/default.yml.tmpl
RUN mkdir /bbb-webhooks/log && chmod 777 /bbb-webhooks/log
USER bbb-webhooks
ENTRYPOINT /entrypoint.sh

View File

@ -1,70 +0,0 @@
# Shared secret of your BigBlueButton server.
bbb:
serverDomain: {{ .Env.DOMAIN }}
sharedSecret: {{ .Env.SHARED_SECRET }}
# Whether to use Auth2.0 or not, Auth2.0 sends the sharedSecret whithin an Authorization header as a bearer
auth2_0: true
apiPath: /bigbluebutton/api
# The port in which the API server will run.
server:
bind: 0.0.0.0
port: 3005
# Web hooks configs
hooks:
channels:
- from-akka-apps-redis-channel
- from-bbb-web-redis-channel
- from-akka-apps-chat-redis-channel
- bigbluebutton:from-bbb-apps:meeting
- bigbluebutton:from-bbb-apps:users
- bigbluebutton:from-bbb-apps:chat
- bigbluebutton:from-rap
# IP where permanent hook will post data (more than 1 URL means more than 1 permanent hook)
permanentURLs: []
# How many messages will be enqueued to be processed at the same time
queueSize: 10000
# Allow permanent hooks to receive raw message, which is the message straight from BBB
getRaw: false
# If set to higher than 1, will send events on the format:
# "event=[{event1},{event2}],timestamp=000" or "[{event1},{event2}]" (based on using auth2_0 or not)
# when there are more than 1 event on the queue at the moment of processing the queue.
multiEvent: 1
# Retry intervals for failed attempts for perform callback calls.
# In ms. Totals to around 5min.
retryIntervals:
- 100
- 500
- 1000
- 2000
- 4000
- 8000
- 10000
- 30000
- 60000
- 60000
- 60000
- 60000
# Reset permanent interval when exceeding maximum attemps
permanentIntervalReset: 8
# Hook's request module timeout for socket conn establishment and/or responses (ms)
requestTimeout: 5000
# Mappings of internal to external meeting IDs
mappings:
cleanupInterval: 10000 # 10 secs, in ms
timeout: 86400000 # 24 hours, in ms
# Redis
redis:
host: redis
port: 6379
keys:
hookPrefix: bigbluebutton:webhooks:hook
hooks: bigbluebutton:webhooks:hooks
mappings: bigbluebutton:webhooks:mappings
mappingPrefix: bigbluebutton:webhooks:mapping
eventsPrefix: bigbluebutton:webhooks:events
userMaps: bigbluebutton:webhooks:userMaps
userMapPrefix: bigbluebutton:webhooks:userMap

View File

@ -1,9 +1,17 @@
#!/bin/sh
set -e
TARGET=/bbb-webhooks/config/production.yml
cp /bbb-webhooks/config/default.example.yml $TARGET
yq e -i ".bbb.sharedSecret = \"$SHARED_SECRET\"" $TARGET
yq e -i ".bbb.serverDomain = \"$DOMAIN\"" $TARGET
yq e -i ".bbb.auth2_0 = true" $TARGET
yq e -i ".server.bind = \"0.0.0.0\"" $TARGET
yq e -i ".hooks.getRaw = false" $TARGET
yq e -i ".redis.host = \"redis\"" $TARGET
export NODE_ENV=production
cd /app
dockerize \
-wait tcp://redis:6379 \
-template /app/config/default.yml.tmpl:/app/config/default.yml \
node app.js
cd /bbb-webhooks
node app.js

View File

@ -1,36 +1,35 @@
FROM node:14-bullseye-slim
ARG BBB_BUILD_TAG
FROM gitlab.senfcall.de:5050/senfcall-public/docker-bbb-build:$BBB_BUILD_TAG AS builder
RUN apt-get update && apt-get -y install \
git \
make \
python \
python3-pip \
g++ \
ffmpeg
RUN useradd --uid 2004 --user-group webrtc-sfu
ADD ./bbb-webrtc-sfu app
ADD ./bbb-webrtc-sfu /app
WORKDIR app
ENV NODE_ENV production
# due to the git submodule npm install crashes with following error:
# npm ERR! fatal: Not a git repository: ../.git/modules/bbb-webrtc-sfu
# we simply delete the .git file
RUN cp config/default.example.yml config/production.yml \
&& chown -R webrtc-sfu:webrtc-sfu config \
RUN cd /app \
&& cp config/default.example.yml config/production.yml \
&& rm .git \
&& npm install --unsafe-perm \
&& npm cache clear --force \
&& rm -rf node_modules/mediasoup/worker/out/Release/subprojects \
&& rm -rf node_modules/mediasoup/worker/out/Release/mediasoup-worker.p \
&& rm -rf node_modules/mediasoup/worker/out/Release/deps
COPY docker-entrypoint.sh /app/docker-entrypoint.sh
# =============================
FROM node:16-bullseye-slim
RUN useradd --uid 2004 --user-group webrtc-sfu
ENV NODE_ENV production
COPY --from=builder /app /app
RUN mkdir /home/webrtc-sfu && chown -R webrtc-sfu:webrtc-sfu /app/config /home/webrtc-sfu
USER webrtc-sfu
ENTRYPOINT [ "./docker-entrypoint.sh" ]
WORKDIR /app
CMD [ "npm", "start" ]

View File

@ -1,6 +0,0 @@
#!/bin/sh -e
sed -i "s|^\(localIpAddress\):.*|\1: \"10.7.7.10\"|g" config/production.yml
export KURENTO_IP="10.7.7.1"
exec "$@"

View File

@ -44,7 +44,7 @@ ENABLE_GREENLIGHT=true
# important! change these to any random values
SHARED_SECRET=SuperSecret
ETHERPAD_API_KEY=SuperEtherpadKey
RAILS_SECRET=SuperRailsSecret
RAILS_SECRET=SuperRailsSecret_SuperRailsSecret
POSTGRESQL_SECRET=SuperPostgresSecret
FSESL_PASSWORD=SuperFreeswitchESLPassword
@ -59,11 +59,6 @@ DOMAIN=bbb.example.com
EXTERNAL_IPv4=144.76.97.10
EXTERNAL_IPv6=
# setting the network interface speeds up kurentos WebRTC connection time,
# but currently also disables IPv6 for Kurento
# (https://github.com/Kurento/bugtracker/issues/500)
#NETWORK_INTERFACE=ens3
# STUN SERVER
# stun.freeswitch.org
STUN_IP=216.93.246.18
@ -88,7 +83,7 @@ SIP_IP_ALLOWLIST=
CLIENT_TITLE=BigBlueButton
# use following lines to replace the default welcome message and footer
WELCOME_MESSAGE="Welcome to <b>%%CONFNAME%%</b>!<br><br>For help on using BigBlueButton see these (short) <a href='https://www.bigbluebutton.org/html5' target='_blank'><u>tutorial videos</u></a>.<br><br>To join the audio bridge click the phone button. Use a headset to avoid causing background noise for others."
WELCOME_MESSAGE="Welcome to <b>%%CONFNAME%%</b>!<br><br>For help on using BigBlueButton see these (short) <a href='https://www.bigbluebutton.org/html5' target='_blank'><u>tutorial videos</u></a>.<br><br>To join the audio bridge click the speaker button. Use a headset to avoid causing background noise for others."
WELCOME_FOOTER="This server is running <a href='https://docs.bigbluebutton.org/'' target='_blank'><u>BigBlueButton</u></a>."
# use following line for an additional SIP dial-in message
@ -102,14 +97,14 @@ DEFAULT_PRESENTATION=./mod/nginx/default.pdf
# options:
# - en-ca-june - EN Canadian June
# - en-us-allison - US English Allison
# - en-us-callie - US English Callie
# - en-us-callie - US English Callie (default)
# - de-de-daedalus3 - German by Daedalus3 (https://github.com/Daedalus3/freeswitch-german-soundfiles)
# - es-ar-mario - Spanish/Argentina Mario
# - fr-ca-june - FR Canadian June
# - pt-br-karina - Brazilian Portuguese Karina
# - ru-ru-elena - RU Russian Elena
# - ru-ru-kirill - RU Russian Kirill
# - ru-ru-vika - RU Russian Viktoriya
# - ru-RU-elena - RU Russian Elena
# - ru-RU-kirill - RU Russian Kirill
# - ru-RU-vika - RU Russian Viktoriya
# - sv-se-jakob - Swedish (Sweden) Jakob
# - zh-cn-sinmei - Chinese/China Sinmei
# - zh-hk-sinmei - Chinese/Hong Kong Sinmei
@ -165,180 +160,42 @@ NUMBER_OF_FRONTEND_NODEJS_PROCESSES=2
# GREENLIGHT CONFIGURATION
# ====================================
# Microsoft Office365 Login Provider (optional)
#
# For in-depth steps on setting up a Office 365 Login Provider, see:
#
# https://docs.bigbluebutton.org/greenlight/gl-config.html#office365-oauth2
#
OFFICE365_KEY=
OFFICE365_SECRET=
OFFICE365_HD=
### SMTP CONFIGURATION
# Emails are required for the basic features of Greenlight to function.
# Please refer to your SMTP provider to get the values for the variables below
#SMTP_SENDER_EMAIL=
#SMTP_SENDER_NAME=
#SMTP_SERVER=
#SMTP_PORT=
#SMTP_DOMAIN=
#SMTP_USERNAME=
#SMTP_PASSWORD=
#SMTP_AUTH=
#SMTP_STARTTLS_AUTO=true
#SMTP_STARTTLS=false
#SMTP_TLS=false
#SMTP_SSL_VERIFY=true
# OAUTH2_REDIRECT allows you to specify the redirect_url passed to oauth on sign in.
# It is useful for cases when Greenlight is deployed behind a Network Load Balancer or proxy
OAUTH2_REDIRECT=
### EXTERNAL AUTHENTICATION METHODS
#
#OPENID_CONNECT_CLIENT_ID=
#OPENID_CONNECT_CLIENT_SECRET=
#OPENID_CONNECT_ISSUER=
#OPENID_CONNECT_REDIRECT=
# LDAP Login Provider (optional)
#
# You can enable LDAP authentication by providing values for the variables below.
# Configuring LDAP authentication will take precedence over all other providers.
# For information about setting up LDAP, see:
#
# https://docs.bigbluebutton.org/greenlight/gl-config.html#ldap-auth
#
# LDAP_SERVER=ldap.example.com
# LDAP_PORT=389
# LDAP_METHOD=plain
# LDAP_UID=uid
# LDAP_BASE=dc=example,dc=com
# LDAP_AUTH=simple
# LDAP_BIND_DN=cn=admin,dc=example,dc=com
# LDAP_PASSWORD=password
# LDAP_ROLE_FIELD=ou
# LDAP_FILTER=(&(attr1=value1)(attr2=value2))
LDAP_SERVER=
LDAP_PORT=
LDAP_METHOD=
LDAP_UID=
LDAP_BASE=
LDAP_BIND_DN=
LDAP_AUTH=
LDAP_PASSWORD=
LDAP_ROLE_FIELD=
LDAP_FILTER=
# To enable hCaptcha on the user sign up and sign in, define these 2 keys
#HCAPTCHA_SITE_KEY=
#HCAPTCHA_SECRET_KEY=
# Set this to true if you want GreenLight to support user signup and login without
# Omniauth. For more information, see:
#
# https://docs.bigbluebutton.org/greenlight/gl-overview.html#accounts-and-profile
#
ALLOW_GREENLIGHT_ACCOUNTS=true
# Set these if you are using a Simple Storage Service (S3)
# Uncomment S3_ENDPOINT only if you are using a S3 OTHER than Amazon Web Service (AWS) S3.
#S3_ACCESS_KEY_ID=
#S3_SECRET_ACCESS_KEY=
#S3_REGION=
#S3_BUCKET=
#S3_ENDPOINT=
# Set this to true if you want GreenLight to send verification emails upon
# the creation of a new account
#
# ALLOW_MAIL_NOTIFICATIONS=true
#
# The notifications are sent using sendmail, unless the SMTP_SERVER variable is set.
# In that case, make sure the rest of the variables are properly set.
#
# SMTP_SERVER=smtp.gmail.com
# SMTP_PORT=587
# SMTP_DOMAIN=gmail.com
# SMTP_USERNAME=<youremail@gmail.com>
# SMTP_PASSWORD=<yourpassword>
# SMTP_AUTH=plain
# SMTP_STARTTLS_AUTO=true
#
# If your mail server has a self-signed certificate, you'll also need to include the line below.
# Please note that enable this presents its own security risks and should not be done unless necessary.
# SMTP_OPENSSL_VERIFY_MODE=none
#
SMTP_SERVER=
SMTP_PORT=
SMTP_DOMAIN=
SMTP_USERNAME=
SMTP_PASSWORD=
SMTP_AUTH=
SMTP_STARTTLS_AUTO=
# Define the default locale language code (i.e. 'en' for English) from the fallowing list:
# [en, ar, fr, es]
#DEFAULT_LOCALE=en
# Specify the email address that all mail is sent from
SMTP_SENDER=
# Prefix for the applications root URL.
# Useful for deploying the application to a subdirectory, which is highly recommended
# if deploying on a BigBlueButton server. Keep in mind that if you change this, you'll
# have to update your authentication callback URL's to reflect this change.
#
# The recommended prefix is "/b".
#
RELATIVE_URL_ROOT=/b
# Specify which settings you would like the users to configure on room creation
# or edit after the room has been created
# By default, all settings are turned OFF.
#
# Current settings available:
# mute-on-join: Automatically mute users by default when they join a room
# require-moderator-approval: Require moderators to approve new users before they can join the room
# anyone-can-start: Allows anyone with the join url to start the room in BigBlueButton
# all-join-moderator: All users join as moderators in BigBlueButton
ROOM_FEATURES=mute-on-join,require-moderator-approval,anyone-can-start,all-join-moderator
# Specify the maximum number of records to be sent to the BigBlueButton API in one call
# Default is set to 25 records
PAGINATION_NUMBER=25
# Specify the maximum number of rows that should be displayed per page for a paginated table
# Default is set to 25 rows
NUMBER_OF_ROWS=25
# Specify if you want to display the Google Calendar button
# ENABLE_GOOGLE_CALENDAR_BUTTON=true|false
ENABLE_GOOGLE_CALENDAR_BUTTON=
# Set the application into Maintenance Mode
#
# Current options supported:
# true: Renders an error page that does not allow users to access any of the features in the application
# false: Application runs normally
MAINTENANCE_MODE=false
# Displays a flash that appears to inform the user of a scheduled maintenance window
# This variable should contain ONLY the date and time of the scheduled maintenance
#
# Ex: MAINTENANCE_WINDOW=Friday August 18 6pm-10pm EST
MAINTENANCE_WINDOW=
# The link to the Report an Issue button that appears on the 500 page and in the Account Dropdown
#
# Defaults to the Github Issues Page for Greenlight
# Button can be disabled by setting the value to blank
#
# REPORT_ISSUE_URL=https://github.com/bigbluebutton/greenlight/issues/new
# The link to the Need help? button that appears on the Account Dropdown
#
# Defaults to the Greenlight documentation
# Button can be disabled by setting the value to blank
HELP_URL=https://docs.bigbluebutton.org/greenlight/gl-overview.html
# Comment this out to send logs to STDOUT in production instead of log/production.log .
#
# RAILS_LOG_TO_STDOUT=true
#
# When using docker-compose the logs can be sent to an centralized repository like PaperTrail
# just by using the built in driver. Make sure to add to docker-compose.yml the next lines:
#
# logging:
# driver: $LOG_DRIVER
# options:
# syslog-address: $LOG_ADDRESS
# tag: $LOG_TAG
#
# And set this variables up:
#
# LOG_DRIVER=syslog
# LOG_ADDRESS=udp://logs4.papertrailapp.com:[99999]
# LOG_TAG=greenlight.example.com:v2
#
# Check docker-compose and papertrail documentation for encrypting and
# protecting access to the log repository.
# https://docs.docker.com/config/containers/logging/syslog/#options
# https://help.papertrailapp.com/kb/configuration/encrypting-remote-syslog-with-tls-ssl/
#
# For sending logs to a remote aggregator enable these variables:
#
# RAILS_LOG_REMOTE_NAME=logxx.papertrailapp.com
# RAILS_LOG_REMOTE_PORT=9999
# RAILS_LOG_REMOTE_TAG=greenlight
#
# Specify the default registration to be used by Greenlight until an administrator sets the
# registration method
# Allowed values are:
# open - For open registration
# invite - For invite only registration
# approval - For approve/decline registration
DEFAULT_REGISTRATION=open

32
scripts/checkout-submodules Executable file
View File

@ -0,0 +1,32 @@
#!/bin/bash
# checkouts submodules based on the tag
# provided in `tags.env`
set -e
cd "$(dirname "$0")/.."
git submodule init
git submodule update
export $(cat tags.env | sed 's/#.*//g' | xargs)
function checkout {
path=$1
ref=$2
pushd $path
git fetch
git checkout $ref
echo ""
popd > /dev/null
}
checkout mod/webrtc-sfu/bbb-webrtc-sfu $TAG_WEBRTC_SFU
checkout mod/nginx/bbb-playback $TAG_PLAYBACK
checkout mod/bbb-pads/bbb-pads $TAG_PADS
checkout mod/webhooks/bbb-webhooks $TAG_WEBHOOKS
echo ""
echo "# git submodule"
git submodule

View File

@ -3,4 +3,10 @@ set -e
cd $(dirname $0)/..
docker-compose exec freeswitch fs_cli -H 10.7.7.1
# load .env
if [ -f .env ]
then
export $(cat .env | sed 's/#.*//g' | grep "FSESL_PASSWORD" | xargs)
fi
docker-compose exec freeswitch fs_cli -H 10.7.7.1 -p "$FSESL_PASSWORD"

View File

@ -33,10 +33,30 @@ if [ "$ENABLE_COTURN" == true ]; then
fi
fi
export $(cat tags.env | sed 's/#.*//g' | xargs)
docker run \
--rm \
-v $(pwd)/docker-compose.tmpl.yml:/docker-compose.tmpl.yml \
-e BBB_BUILD_TAG=${BBB_BUILD_TAG} \
-e TAG_COMMON_MESSAGE=${TAG_COMMON_MESSAGE} \
-e TAG_APPS_AKKA=${TAG_APPS_AKKA} \
-e TAG_FSESL_AKKA=${TAG_FSESL_AKKA} \
-e TAG_BBB_WEB=${TAG_BBB_WEB} \
-e TAG_HTML5=${TAG_HTML5} \
-e TAG_FS_CONFIG=${TAG_FS_CONFIG} \
-e TAG_FS_BUILD_FILES=${TAG_FS_BUILD_FILES} \
-e TAG_LEARNING_DASHBOARD=${TAG_LEARNING_DASHBOARD} \
-e TAG_RECORDINGS=${TAG_RECORDINGS} \
-e TAG_WEBRTC_SFU=${TAG_WEBRTC_SFU} \
-e TAG_WEBHOOKS=${TAG_WEBHOOKS} \
-e TAG_PLAYBACK=${TAG_PLAYBACK} \
-e TAG_PADS=${TAG_PADS} \
-e TAG_FREESWITCH=${TAG_FREESWITCH} \
-e TAG_BBB_PRESENTATION_VIDEO=${TAG_BBB_PRESENTATION_VIDEO} \
-e TAG_GREENLIGHT=${TAG_GREENLIGHT} \
-e DEV_MODE=${DEV_MODE:-false} \
-e EXTERNAL_IPv6=${EXTERNAL_IPv6:-} \
-e ENABLE_RECORDING=${ENABLE_RECORDING:-false} \
-e REMOVE_OLD_RECORDING=${REMOVE_OLD_RECORDING:-false} \
-e RECORDING_MAX_AGE_DAYS=${RECORDING_MAX_AGE_DAYS:-14} \

View File

@ -0,0 +1,49 @@
#!/bin/bash
cd $(dirname $0)/..
# load .env
if [ -f .env ]
then
export $(cat .env | sed 's/#.*//g' | grep -E "RAILS_SECRET|POSTGRESQL_SECRET" | xargs)
fi
COMPOSE_PREFIX=$(docker-compose ps | grep postgres | awk '{print $1}' | sed 's/-postgres-1//')
docker kill -s SIGKILL greenlight-v2-tmp 2>/dev/null
sleep 1
echo "temporarily starting old greenlight v2..."
docker run \
--rm \
--detach --name greenlight-v2-tmp \
--network ${COMPOSE_PREFIX}_bbb-net \
--env-file .env \
-e DB_ADAPTER=postgresql \
-e DB_HOST=10.7.7.22 \
-e DB_NAME=greenlight \
-e DB_USERNAME=postgres \
-e DB_PASSWORD=${POSTGRESQL_SECRET:-password} \
-e SECRET_KEY_BASE=${RAILS_SECRET} \
-e V3_ENDPOINT="http://10.7.7.21:3000" \
-e V3_SECRET_KEY_BASE=${RAILS_SECRET} \
bigbluebutton/greenlight:v2.14
docker logs -f greenlight-v2-tmp &
LOGGING_PID=$!
while ! docker exec greenlight-v2-tmp nc -zw3 127.0.0.1 80
do
echo "Waiting for greenlight v2 to start up ..."
sleep 1
done
echo "greenlight is up! starting migrations"
docker exec -it greenlight-v2-tmp bundle exec rake migrations:roles && \
docker exec -it greenlight-v2-tmp bundle exec rake migrations:users && \
docker exec -it greenlight-v2-tmp bundle exec rake migrations:rooms && \
docker exec -it greenlight-v2-tmp bundle exec rake migrations:settings
kill $LOGGING_PID
docker kill greenlight-v2-tmp

View File

@ -1,73 +0,0 @@
#!/bin/bash
set -e
CORE_IMAGE=$(docker-compose images -q core)
FREESWITCH_IMAGE=$(docker-compose images -q freeswitch)
HTML5_IMAGE=$(docker-compose images -q html5)
KURENTO_IMAGE=$(docker-compose images -q kurento)
ETHERPAD_IMAGE=$(docker-compose images -q etherpad)
MONGO_IMAGE=$(docker-compose images -q mongodb)
REDIS_IMAGE=$(docker-compose images -q redis)
if [[ -z $CORE_IMAGE ]]
then
echo "this script only works if containers are created"
echo "either start BigBlueButton with"
echo " $ docker-compose up -d"
echo "or at least create the containers with"
echo " $ docker-compose create"
exit 1
fi
echo "bigbluebutton-docker"
echo " commit: $(git rev-parse --short HEAD) ($(git log -1 --pretty=%B | head -n 1))"
echo " branch: $(git rev-parse --abbrev-ref HEAD)"
echo ""
echo "core"
docker run --rm --entrypoint /bin/sh $CORE_IMAGE -c "dpkg -l 'bbb-*' | grep ii | cut -c 5-42 | sed 's/bbb-/ bbb-/g'"
echo ""
echo "etherpad"
ETHERPAD_VERSION=$(docker run --rm --entrypoint cat $ETHERPAD_IMAGE /opt/etherpad-lite/src/package.json | grep version | awk -F'"' '{print $4}')
echo " version: $ETHERPAD_VERSION"
echo ""
echo "freeswitch"
FREESWITCH_VERSION=$(docker run --rm --entrypoint freeswitch $FREESWITCH_IMAGE -version | cut -c 21-)
FREESWTICH_CONFIG_VERSION=$(docker image inspect $FREESWITCH_IMAGE | grep GIT_TAG= | head -n 1 | xargs | cut -c 9-)
echo " build: $FREESWITCH_VERSION"
echo " config: $FREESWTICH_CONFIG_VERSION"
echo ""
echo "html5"
HTML5_VERSION=$(docker image inspect $HTML5_IMAGE | grep TAG= | head -n 1 | xargs | cut -c 5-)
echo " version: $HTML5_VERSION"
echo ""
echo "kurento"
KURENTO_VERSION=$(docker run --rm --entrypoint kurento-media-server $KURENTO_IMAGE --version | grep Kurento | sed 's/Kurento Media Server version: //')
echo " version: $KURENTO_VERSION"
echo ""
echo "mongodb"
MONGO_VERSION=$(docker image inspect $MONGO_IMAGE | grep MONGO_VERSION | head -n 1 | xargs | cut -c 15-)
echo " version: $MONGO_VERSION"
echo ""
# TODO:
# - nginx
# - periodic
echo "redis"
REDIS_VERSION=$(docker image inspect $REDIS_IMAGE | grep REDIS_VERSION | head -n 1 | xargs | cut -c 15-)
echo " version: $REDIS_VERSION"
echo ""
echo "webrtc-sfu"
SFU_VERSION=$(cd bbb-webrtc-sfu && cat package.json | grep version | awk -F\" '{print $4}')
SFU_COMMIT=$(cd bbb-webrtc-sfu && git rev-parse --short HEAD)
echo " version: $SFU_VERSION"
echo " commit: $SFU_COMMIT"

51
scripts/publish Executable file
View File

@ -0,0 +1,51 @@
#!/bin/bash
set -e
cd "$(dirname "$0")/.."
# load .env
if [ -f .env ]
then
# exclude WELCOME_MESSAGE && WELCOME_FOOTER && CLIENT_TITLE because it may contain invalid characters
export $(cat .env | sed 's/#.*//g' | grep -v "WELCOME_FOOTER" | grep -v "WELCOME_MESSAGE" | grep -v "CLIENT_TITLE" | xargs)
fi
if [ -z "$ENABLE_WEBHOOKS" ]; then
echo "ERROR: ENABLE_WEBHOOKS must be set to true, otherwise the image would not be built"
exit 1
fi
if [ -z "$ENABLE_RECORDING" ]; then
echo "ERROR: ENABLE_RECORDING must be set to true, otherwise the image would not be built"
exit 1
fi
# generate compose file
./scripts/generate-compose
# ensure submodules are matching tags.env
./scripts/checkout-submodules
# build and push java base image
docker build -t alangecker/bbb-docker-base-java:latest mod/base-java
# buld and push other images
docker-compose build
# push images
docker push alangecker/bbb-docker-base-java:latest
docker-compose push \
html5-backend-1 \
bbb-web \
freeswitch \
apps-akka \
bbb-pads \
etherpad \
fsesl-akka \
jodconverter \
nginx \
periodic \
recordings \
webhooks \
webrtc-sfu

View File

@ -15,11 +15,6 @@ then
else
echo ""
echo "# pull newest git submodules"
git submodule init
git submodule update
echo ""
echo "# recreate docker-compose.yml"
./scripts/generate-compose
@ -27,22 +22,17 @@ else
echo ""
echo "# pull newest images"
docker-compose pull --ignore-pull-failures
echo ""
echo "# rebuild images"
# rebuild everything which got modified
docker-compose build --pull
COMMIT_HASH=$(git rev-parse --short HEAD)
BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD)
echo ""
echo "-------------------------------------"
echo "images successfully rebuilt!"
echo "update is ready!"
echo "we are on $COMMIT_HASH ($BRANCH_NAME)"
echo ""
echo "use following command for restarting bbb:"
echo " $ docker-compose up -d"
echo " $ docker-compose up -d --no-build"
echo "-------------------------------------"
fi

48
scripts/upgrade-and-build Executable file
View File

@ -0,0 +1,48 @@
#!/bin/bash
set -e
cd $(dirname $0)/..
if [ -z $RESTARTED ]
then
echo "# pull newest bigblugbutton-docker.git"
git pull
# restart script, since it might have changed.
RESTARTED=1 ./scripts/upgrade-and-build
exit
else
echo ""
echo "# pull newest git submodules"
./scripts/checkout-submodules
echo ""
echo "# recreate docker-compose.yml"
./scripts/generate-compose
echo ""
echo "# pull newest images"
docker-compose pull --ignore-pull-failures
echo ""
echo "# rebuild images"
docker build -t alangecker/bbb-docker-base-java:latest mod/base-java
# rebuild everything which got modified
docker-compose build
COMMIT_HASH=$(git rev-parse --short HEAD)
BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD)
echo ""
echo "-------------------------------------"
echo "images successfully rebuilt!"
echo "we are on $COMMIT_HASH ($BRANCH_NAME)"
echo ""
echo "use following command for restarting bbb:"
echo " $ docker-compose up -d"
echo "-------------------------------------"
fi

31
tags.env Normal file
View File

@ -0,0 +1,31 @@
# after changing a tag always run following commands to apply
# - ./scripts/generate-compose
# - docker-compose build
# https://gitlab.senfcall.de/senfcall-public/docker-bbb-build
BBB_BUILD_TAG=v2022-12-29-grails-524
# https://github.com/bigbluebutton/bigbluebutton
TAG_COMMON_MESSAGE=v2.6.0
TAG_APPS_AKKA=v2.6.0
TAG_FSESL_AKKA=v2.6.0
TAG_BBB_WEB=v2.6.0
TAG_HTML5=v2.6.0
TAG_RECORDINGS=v2.6.0
TAG_LEARNING_DASHBOARD=v2.6.0
TAG_FS_CONFIG=v2.6.0
TAG_FS_BUILD_FILES=v2.6.0
TAG_FREESWITCH=v1.10.9
TAG_GREENLIGHT=v3.0.2
# individual git submodules
# use `./scripts/checkout-submodules` to ensure, that the submodules
# match the provided tags here
TAG_WEBRTC_SFU=v2.9.8
TAG_WEBHOOKS=v2.6.0
TAG_PLAYBACK=v5.0.0-rc.2
TAG_PADS=v1.4.1
TAG_BBB_PRESENTATION_VIDEO=4.0.0-rc.2