mirror of
https://github.com/bigbluebutton/docker.git
synced 2025-08-14 23:02:29 +02:00
Compare commits
57 Commits
Author | SHA1 | Date | |
---|---|---|---|
ef295301b5 | |||
cef23f8236 | |||
d8587b0e33 | |||
81c3cacf29 | |||
f30496d430 | |||
f2fe7959bb | |||
bfa6679ff0 | |||
fc74f2a8b8 | |||
c181ee9665 | |||
ad6b0d2d38 | |||
618c432e73 | |||
ca7d2baa38 | |||
2ff3b8c4e2 | |||
db8c9918b6 | |||
49c6eea96a | |||
3bda5364df | |||
682ea566c4 | |||
512327740a | |||
e2fb894f24 | |||
9e9fff92c6 | |||
5d326709b6 | |||
20bb46fb4d | |||
aaa2d63d67 | |||
865b39d1ce | |||
b4aa33d20d | |||
b3a1b010f9 | |||
cf74a26268 | |||
e60f20b397 | |||
79dc8d31a4 | |||
4634f5d5f1 | |||
b5eb823640 | |||
d6e461efd4 | |||
2c09d17b95 | |||
ee04ee99e5 | |||
dfbe11f74d | |||
7eb142b43e | |||
83eee18228 | |||
1987916e2c | |||
9f45bdf5bb | |||
fb75478e67 | |||
4eabc35bfe | |||
564d528d07 | |||
f2c653682e | |||
8e9e99ab29 | |||
212aee558c | |||
3872e385d3 | |||
65065df16b | |||
a982d8d8dd | |||
8c6e9a6450 | |||
377a7f7b6f | |||
ab283b2c5c | |||
87046a9773 | |||
dd98a4c52f | |||
cdfdfca51b | |||
f2f929f1bb | |||
19c926085c | |||
c6b654863e |
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,4 +1,5 @@
|
|||||||
docker-compose.yml
|
docker-compose.yml
|
||||||
|
docker-compose.override.yml
|
||||||
|
|
||||||
# IDEA generated
|
# IDEA generated
|
||||||
.idea
|
.idea
|
||||||
|
9
.gitmodules
vendored
9
.gitmodules
vendored
@ -7,3 +7,12 @@
|
|||||||
[submodule "mod/etherpad/bbb-etherpad-plugin"]
|
[submodule "mod/etherpad/bbb-etherpad-plugin"]
|
||||||
path = mod/etherpad/bbb-etherpad-plugin
|
path = mod/etherpad/bbb-etherpad-plugin
|
||||||
url = https://github.com/alangecker/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
|
||||||
|
27
CHANGELOG.md
27
CHANGELOG.md
@ -1,6 +1,33 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
## Unreleased
|
## Unreleased
|
||||||
|
|
||||||
|
## 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)
|
- 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)
|
- **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)
|
- Enable optimization for Prometheus Exporter when recording is enabled @omidmaldar [#161](https://github.com/bigbluebutton/docker/pull/161)
|
||||||
|
10
README.md
10
README.md
@ -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">
|
<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.5 Docker
|
||||||
|
|
||||||
Version: 2.4.0 | [Changelog](CHANGELOG.md) | [Issues](https://github.com/bigbluebutton/docker/issues)
|
Version: 2.5.8 | [Changelog](CHANGELOG.md) | [Issues](https://github.com/bigbluebutton/docker/issues)
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
- Easy installation
|
- 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`
|
4. Ensure docker-compose works and that you use a version ≥ 1.28 : `$ docker-compose --version`
|
||||||
2. Clone this repository
|
2. Clone this repository
|
||||||
```sh
|
```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
|
$ cd bbb-docker
|
||||||
$ git submodule update --init
|
|
||||||
|
# use the more stable main branch (sometimes older)
|
||||||
|
$ git checkout main
|
||||||
```
|
```
|
||||||
3. Run setup:
|
3. Run setup:
|
||||||
```bash
|
```bash
|
||||||
|
@ -7,8 +7,12 @@ version: '3.6'
|
|||||||
|
|
||||||
# html5 templates
|
# html5 templates
|
||||||
x-html5-backend: &html5backend
|
x-html5-backend: &html5backend
|
||||||
build: mod/html5
|
build:
|
||||||
image: bbb-html5
|
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
|
restart: unless-stopped
|
||||||
depends_on:
|
depends_on:
|
||||||
- redis
|
- redis
|
||||||
@ -17,7 +21,6 @@ x-html5-backend: &html5backend
|
|||||||
environment: &html5backend-env
|
environment: &html5backend-env
|
||||||
DOMAIN: ${DOMAIN}
|
DOMAIN: ${DOMAIN}
|
||||||
CLIENT_TITLE: ${CLIENT_TITLE}
|
CLIENT_TITLE: ${CLIENT_TITLE}
|
||||||
ETHERPAD_API_KEY: ${ETHERPAD_API_KEY}
|
|
||||||
LISTEN_ONLY_MODE: ${LISTEN_ONLY_MODE:-true}
|
LISTEN_ONLY_MODE: ${LISTEN_ONLY_MODE:-true}
|
||||||
DISABLE_ECHO_TEST: ${DISABLE_ECHO_TEST:-false}
|
DISABLE_ECHO_TEST: ${DISABLE_ECHO_TEST:-false}
|
||||||
AUTO_SHARE_WEBCAM: ${AUTO_SHARE_WEBCAM:-false}
|
AUTO_SHARE_WEBCAM: ${AUTO_SHARE_WEBCAM:-false}
|
||||||
@ -39,7 +42,13 @@ x-html5-frontend: &html5frontend
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
bbb-web:
|
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
|
restart: unless-stopped
|
||||||
depends_on:
|
depends_on:
|
||||||
- redis
|
- redis
|
||||||
@ -62,7 +71,6 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- bigbluebutton:/var/bigbluebutton
|
- bigbluebutton:/var/bigbluebutton
|
||||||
- vol-freeswitch:/var/freeswitch/meetings
|
- vol-freeswitch:/var/freeswitch/meetings
|
||||||
- vol-kurento:/var/kurento
|
|
||||||
networks:
|
networks:
|
||||||
bbb-net:
|
bbb-net:
|
||||||
ipv4_address: 10.7.7.2
|
ipv4_address: 10.7.7.2
|
||||||
@ -94,7 +102,12 @@ services:
|
|||||||
|
|
||||||
|
|
||||||
freeswitch:
|
freeswitch:
|
||||||
build: mod/freeswitch
|
container_name: bbb-freeswitch
|
||||||
|
build:
|
||||||
|
context: mod/freeswitch
|
||||||
|
args:
|
||||||
|
TAG_FS_CONFIG: {{ .Env.TAG_FS_CONFIG }}
|
||||||
|
image: alangecker/bbb-docker-freeswitch:{{ .Env.TAG_FS_CONFIG }}
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
cap_add:
|
cap_add:
|
||||||
- IPC_LOCK
|
- IPC_LOCK
|
||||||
@ -119,7 +132,11 @@ services:
|
|||||||
network_mode: host
|
network_mode: host
|
||||||
|
|
||||||
nginx:
|
nginx:
|
||||||
build: mod/nginx
|
build:
|
||||||
|
context: mod/nginx
|
||||||
|
args:
|
||||||
|
TAG_LEARNING_DASHBOARD: {{ .Env.TAG_LEARNING_DASHBOARD }}
|
||||||
|
image: alangecker/bbb-docker-nginx:1.23-{{ .Env.TAG_PLAYBACK }}-{{ .Env.TAG_LEARNING_DASHBOARD }}
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
depends_on:
|
depends_on:
|
||||||
- etherpad
|
- etherpad
|
||||||
@ -134,11 +151,12 @@ services:
|
|||||||
- "host.docker.internal:10.7.7.1"
|
- "host.docker.internal:10.7.7.1"
|
||||||
- "bbb-web:10.7.7.2"
|
- "bbb-web:10.7.7.2"
|
||||||
- "etherpad:10.7.7.4"
|
- "etherpad:10.7.7.4"
|
||||||
- "webrtc-sfu:10.7.7.10"
|
- "webrtc-sfu:10.7.7.1"
|
||||||
- "html5:10.7.7.11"
|
- "html5:10.7.7.11"
|
||||||
|
|
||||||
etherpad:
|
etherpad:
|
||||||
build: mod/etherpad
|
build: mod/etherpad
|
||||||
|
image: alangecker/bbb-docker-etherpad:1.8.18-3
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
depends_on:
|
depends_on:
|
||||||
- redis
|
- redis
|
||||||
@ -148,8 +166,21 @@ services:
|
|||||||
bbb-net:
|
bbb-net:
|
||||||
ipv4_address: 10.7.7.4
|
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:
|
redis:
|
||||||
image: redis:6.2-alpine
|
image: redis:7.0-alpine
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "redis-cli", "ping"]
|
test: ["CMD", "redis-cli", "ping"]
|
||||||
@ -161,6 +192,7 @@ services:
|
|||||||
ipv4_address: 10.7.7.5
|
ipv4_address: 10.7.7.5
|
||||||
|
|
||||||
mongodb:
|
mongodb:
|
||||||
|
container_name: bbb-mongodb
|
||||||
image: mongo:4.4
|
image: mongo:4.4
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
volumes:
|
volumes:
|
||||||
@ -176,51 +208,57 @@ services:
|
|||||||
bbb-net:
|
bbb-net:
|
||||||
ipv4_address: 10.7.7.6
|
ipv4_address: 10.7.7.6
|
||||||
|
|
||||||
|
# TODO: remove as soon as not required anymore by webrtc-sfu
|
||||||
kurento:
|
kurento:
|
||||||
image: kurento/kurento-media-server:6.16
|
image: kurento/kurento-media-server:6.18
|
||||||
restart: unless-stopped
|
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
|
network_mode: host
|
||||||
volumes:
|
volumes:
|
||||||
- vol-kurento:/var/kurento
|
- vol-kurento:/var/kurento
|
||||||
|
|
||||||
webrtc-sfu:
|
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
|
restart: unless-stopped
|
||||||
depends_on:
|
depends_on:
|
||||||
- redis
|
- redis
|
||||||
- kurento
|
- freeswitch
|
||||||
environment:
|
environment:
|
||||||
CLIENT_HOST: 0.0.0.0
|
CLIENT_HOST: 10.7.7.1
|
||||||
KURENTO_NAME: kurento
|
REDIS_HOST: 10.7.7.5
|
||||||
REDIS_HOST: redis
|
FREESWITCH_IP: 10.7.7.1
|
||||||
FREESWITCH_IP: host.docker.internal
|
|
||||||
FREESWITCH_SIP_IP: ${EXTERNAL_IPv4}
|
FREESWITCH_SIP_IP: ${EXTERNAL_IPv4}
|
||||||
ESL_IP: host.docker.internal
|
ESL_IP: 10.7.7.1
|
||||||
ESL_PASSWORD: ${FSESL_PASSWORD:-ClueCon}
|
ESL_PASSWORD: ${FSESL_PASSWORD:-ClueCon}
|
||||||
LOG_LEVEL: info
|
# TODO: add mediasoup IPv6
|
||||||
NODE_CONFIG: '{"kurento":[{"ip":"${EXTERNAL_IPv4}","url":"ws://kurento:8888/kurento"}]}'
|
# TODO: can listen to 0.0.0.0 for nat support? https://github.com/versatica/mediasoup/issues/487
|
||||||
ports:
|
{{ if .Env.EXTERNAL_IPv6 }}
|
||||||
- "127.0.0.1:3008:3008"
|
MS_WEBRTC_LISTEN_IPS: '[{"ip":"{{ .Env.EXTERNAL_IPv6 }}", "announcedIp":"{{ .Env.EXTERNAL_IPv6 }}"}, {"ip":"${EXTERNAL_IPv4}", "announcedIp":"${EXTERNAL_IPv4}"}]'
|
||||||
extra_hosts:
|
{{else}}
|
||||||
- host.docker.internal:10.7.7.1
|
MS_WEBRTC_LISTEN_IPS: '[{"ip":"${EXTERNAL_IPv4}", "announcedIp":"${EXTERNAL_IPv4}"}]'
|
||||||
- kurento:10.7.7.1
|
{{end}}
|
||||||
networks:
|
MS_RTP_LISTEN_IP: '{"ip":"0.0.0.0", "announcedIp":"${EXTERNAL_IPv4}"}'
|
||||||
bbb-net:
|
volumes:
|
||||||
ipv4_address: 10.7.7.10
|
- vol-mediasoup:/var/mediasoup
|
||||||
|
tmpfs:
|
||||||
|
- /var/log/bbb-webrtc-sfu
|
||||||
|
network_mode: host
|
||||||
|
|
||||||
fsesl-akka:
|
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
|
restart: unless-stopped
|
||||||
depends_on:
|
depends_on:
|
||||||
- redis
|
- redis
|
||||||
|
- freeswitch
|
||||||
environment:
|
environment:
|
||||||
FSESL_PASSWORD: ${FSESL_PASSWORD:-ClueCon}
|
FSESL_PASSWORD: ${FSESL_PASSWORD:-ClueCon}
|
||||||
networks:
|
networks:
|
||||||
@ -228,7 +266,13 @@ services:
|
|||||||
ipv4_address: 10.7.7.14
|
ipv4_address: 10.7.7.14
|
||||||
|
|
||||||
apps-akka:
|
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
|
restart: unless-stopped
|
||||||
depends_on:
|
depends_on:
|
||||||
- redis
|
- redis
|
||||||
@ -243,6 +287,9 @@ services:
|
|||||||
|
|
||||||
jodconverter:
|
jodconverter:
|
||||||
build: mod/jodconverter
|
build: mod/jodconverter
|
||||||
|
image: alangecker/bbb-docker-jodconverter:latest
|
||||||
|
security_opt:
|
||||||
|
- 'no-new-privileges:true'
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
tmpfs:
|
tmpfs:
|
||||||
- /tmp
|
- /tmp
|
||||||
@ -256,12 +303,14 @@ services:
|
|||||||
|
|
||||||
periodic:
|
periodic:
|
||||||
build: mod/periodic
|
build: mod/periodic
|
||||||
|
image: alangecker/bbb-docker-periodic:v2.5.0-rc.1
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
depends_on:
|
depends_on:
|
||||||
- mongodb
|
- mongodb
|
||||||
volumes:
|
volumes:
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
- bigbluebutton:/var/bigbluebutton
|
- bigbluebutton:/var/bigbluebutton
|
||||||
|
- vol-mediasoup:/var/mediasoup
|
||||||
tmpfs:
|
tmpfs:
|
||||||
- /var/log/bigbluebutton
|
- /var/log/bigbluebutton
|
||||||
environment:
|
environment:
|
||||||
@ -275,15 +324,22 @@ services:
|
|||||||
{{ if isTrue .Env.ENABLE_RECORDING }}
|
{{ if isTrue .Env.ENABLE_RECORDING }}
|
||||||
# recordings
|
# recordings
|
||||||
recordings:
|
recordings:
|
||||||
build: mod/recordings
|
build:
|
||||||
|
context: mod/recordings
|
||||||
|
args:
|
||||||
|
BBB_BUILD_TAG: {{ .Env.BBB_BUILD_TAG }}
|
||||||
|
TAG_RECORDINGS: {{ .Env.TAG_RECORDINGS }}
|
||||||
|
image: alangecker/bbb-docker-recordings:{{ .Env.TAG_RECORDINGS }}
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
depends_on:
|
depends_on:
|
||||||
- redis
|
- redis
|
||||||
|
- bbb-pads
|
||||||
environment:
|
environment:
|
||||||
DOMAIN: ${DOMAIN}
|
DOMAIN: ${DOMAIN}
|
||||||
volumes:
|
volumes:
|
||||||
- bigbluebutton:/var/bigbluebutton
|
- bigbluebutton:/var/bigbluebutton
|
||||||
- vol-freeswitch:/var/freeswitch/meetings
|
- vol-freeswitch:/var/freeswitch/meetings
|
||||||
|
- vol-mediasoup:/var/mediasoup
|
||||||
- vol-kurento:/var/kurento
|
- vol-kurento:/var/kurento
|
||||||
tmpfs:
|
tmpfs:
|
||||||
- /var/log/bigbluebutton
|
- /var/log/bigbluebutton
|
||||||
@ -297,6 +353,7 @@ services:
|
|||||||
# webhooks
|
# webhooks
|
||||||
webhooks:
|
webhooks:
|
||||||
build: mod/webhooks
|
build: mod/webhooks
|
||||||
|
image: alangecker/bbb-docker-webhooks:{{ .Env.TAG_WEBHOOKS }}
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
environment:
|
environment:
|
||||||
DOMAIN: ${DOMAIN}
|
DOMAIN: ${DOMAIN}
|
||||||
@ -332,7 +389,7 @@ services:
|
|||||||
{{ if isTrue .Env.ENABLE_COTURN }}
|
{{ if isTrue .Env.ENABLE_COTURN }}
|
||||||
# coturn
|
# coturn
|
||||||
coturn:
|
coturn:
|
||||||
image: instrumentisto/coturn:4.5
|
image: coturn/coturn:4.6-alpine
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
command:
|
command:
|
||||||
- "--external-ip=${EXTERNAL_IPv4}/${EXTERNAL_IPv4}"
|
- "--external-ip=${EXTERNAL_IPv4}/${EXTERNAL_IPv4}"
|
||||||
@ -349,6 +406,7 @@ services:
|
|||||||
- ./mod/coturn/turnserver.conf:/etc/coturn/turnserver.conf
|
- ./mod/coturn/turnserver.conf:/etc/coturn/turnserver.conf
|
||||||
environment:
|
environment:
|
||||||
ENABLE_HTTPS_PROXY:
|
ENABLE_HTTPS_PROXY:
|
||||||
|
user: root
|
||||||
network_mode: host
|
network_mode: host
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
||||||
@ -393,7 +451,7 @@ services:
|
|||||||
{{ if isTrue .Env.ENABLE_PROMETHEUS_EXPORTER }}
|
{{ if isTrue .Env.ENABLE_PROMETHEUS_EXPORTER }}
|
||||||
# prometheus
|
# prometheus
|
||||||
prometheus-exporter:
|
prometheus-exporter:
|
||||||
image: greenstatic/bigbluebutton-exporter:v0.7.0-preview2
|
image: greenstatic/bigbluebutton-exporter:latest
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
environment:
|
environment:
|
||||||
API_BASE_URL: http://10.7.7.1:48087/bigbluebutton/api/
|
API_BASE_URL: http://10.7.7.1:48087/bigbluebutton/api/
|
||||||
@ -413,6 +471,7 @@ volumes:
|
|||||||
bigbluebutton:
|
bigbluebutton:
|
||||||
vol-freeswitch:
|
vol-freeswitch:
|
||||||
vol-kurento:
|
vol-kurento:
|
||||||
|
vol-mediasoup:
|
||||||
html5-static:
|
html5-static:
|
||||||
{{ if isTrue .Env.ENABLE_HTTPS_PROXY }}
|
{{ if isTrue .Env.ENABLE_HTTPS_PROXY }}
|
||||||
ssl_data:
|
ssl_data:
|
||||||
|
@ -1,5 +1,13 @@
|
|||||||
# bbb-docker Development
|
# 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
|
## Running
|
||||||
you can run bbb-docker locally without any certificate issues with following `.env` configurations:
|
you can run bbb-docker locally without any certificate issues with following `.env` configurations:
|
||||||
|
|
||||||
@ -33,6 +41,8 @@ RAILS_SECRET=SuperRailsSecret
|
|||||||
|
|
||||||
- regenerate `docker-compose.yml` \
|
- regenerate `docker-compose.yml` \
|
||||||
`$ ./scripts/generate-compose`
|
`$ ./scripts/generate-compose`
|
||||||
|
- build the images \
|
||||||
|
`$ docker-compose build`
|
||||||
- you can than start it with \
|
- you can than start it with \
|
||||||
`$ docker-compose up -d`
|
`$ docker-compose up -d`
|
||||||
- view the logs with \
|
- view the logs with \
|
||||||
@ -58,13 +68,14 @@ RAILS_SECRET=SuperRailsSecret
|
|||||||
## How to do create a new update for a newer BBB release?
|
## How to do create a new update for a newer BBB release?
|
||||||
This always consists out of following steps
|
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.** \
|
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)
|
* main source for that are the release notes in https://github.com/bigbluebutton/bigbluebutton/releases
|
||||||
* Before being overwhelmed: All these compiled `.js`,`.class`,etc. files are irrelevant to check! :)
|
|
||||||
2. **Apply these changes to this project.**
|
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.
|
* Often you only need to update the TAGS in `tags.env`
|
||||||
* New config variables are also quite common
|
* make sure only to switch to a newer tag if there were changes made avoid creating new (partialy big) images unnecessarily
|
||||||
* 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)
|
* Also update submodules to the new state.
|
||||||
* if available, you can also think about switching to more recent images of kurento, etherpad, nginx, etc.
|
* 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)
|
3. Test everything (with firefox **and** chromium/chrome)
|
||||||
* Audio
|
* Audio
|
||||||
* Video
|
* Video
|
||||||
|
@ -4,6 +4,7 @@ Services as configured.
|
|||||||
|Service | Network | IP address | Other Option |
|
|Service | Network | IP address | Other Option |
|
||||||
--- | --- | --- | ---
|
--- | --- | --- | ---
|
||||||
| bbb-web | bbb-net | 10.7.7.2 |
|
| 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-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 }}
|
| html5-frontend-{{$i}}| bbb-net | 10.7.7.{{add 200 $i}}| Port {{ add 4100 $i }}
|
||||||
| freeswitch| network_mode: host | |
|
| freeswitch| network_mode: host | |
|
||||||
@ -12,7 +13,7 @@ Services as configured.
|
|||||||
| redis | bbb-net | 10.7.7.5|
|
| redis | bbb-net | 10.7.7.5|
|
||||||
| mongodb | bbb-net | 10.7.7.6|
|
| mongodb | bbb-net | 10.7.7.6|
|
||||||
| kurento | network-mode: host | |
|
| 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 |
|
| fsesl-akka | bbb-net | 10.7.7.14 |
|
||||||
| apps-akka | bbb-net | 10.7.7.15 |
|
| apps-akka | bbb-net | 10.7.7.15 |
|
||||||
| libreoffice | bbb-net | 10.7.7.7 |
|
| libreoffice | bbb-net | 10.7.7.7 |
|
||||||
|
@ -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
|
# 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 \
|
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_COMMON_MESSAGE/bbb-common-message /bbb-common-message \
|
||||||
&& rm -rf /bbb-common-message/.svn
|
&& cd /bbb-common-message \
|
||||||
|
&& ./deploy.sh \
|
||||||
# compile bbb-common-message
|
&& rm -rf /bbb-common-message
|
||||||
RUN cd /bbb-common-message \
|
|
||||||
&& ./deploy.sh
|
|
||||||
|
|
||||||
|
|
||||||
# ===================================================
|
# ===================================================
|
||||||
|
|
||||||
ENV TAG v2.4.0
|
ARG TAG_APPS_AKKA
|
||||||
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/akka-bbb-apps /source \
|
|
||||||
|
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_APPS_AKKA/akka-bbb-apps /source \
|
||||||
&& rm -rf /source/.svn
|
&& rm -rf /source/.svn
|
||||||
|
|
||||||
# compile and unzip bin
|
# compile and unzip bin
|
||||||
@ -25,24 +23,12 @@ RUN cd /source \
|
|||||||
|
|
||||||
# ===================================================
|
# ===================================================
|
||||||
|
|
||||||
FROM openjdk:8-jre-slim-bullseye
|
FROM alangecker/bbb-docker-base-java
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
COPY --from=builder /bbb-apps-akka-0.0.4 /bbb-apps-akka
|
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 bbb-apps-akka.conf /etc/bigbluebutton/bbb-apps-akka.conf.tmpl
|
||||||
COPY logback.xml /bbb-apps-akka/conf/logback.xml
|
COPY logback.xml /bbb-apps-akka/conf/logback.xml
|
||||||
|
COPY entrypoint.sh /entrypoint.sh
|
||||||
|
|
||||||
WORKDIR /bbb-apps-akka
|
USER bigbluebutton
|
||||||
CMD dockerize \
|
ENTRYPOINT /entrypoint.sh
|
||||||
-template /etc/bigbluebutton/bbb-apps-akka.conf.tmpl:/etc/bigbluebutton/bbb-apps-akka.conf \
|
|
||||||
gosu bigbluebutton /bbb-apps-akka/bin/bbb-apps-akka
|
|
||||||
|
@ -6,8 +6,8 @@ redis {
|
|||||||
}
|
}
|
||||||
|
|
||||||
services {
|
services {
|
||||||
bbbWebAPI="https://{{ .Env.DOMAIN }}/bigbluebutton/api"
|
bbbWebAPI="https://DOMAIN/bigbluebutton/api"
|
||||||
sharedSecret="{{ .Env.SHARED_SECRET }}"
|
sharedSecret="SHARED_SECRET"
|
||||||
}
|
}
|
||||||
http {
|
http {
|
||||||
interface = "0.0.0.0"
|
interface = "0.0.0.0"
|
||||||
|
9
mod/apps-akka/entrypoint.sh
Executable file
9
mod/apps-akka/entrypoint.sh
Executable 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
24
mod/base-java/Dockerfile
Normal 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
18
mod/bbb-pads/Dockerfile
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
FROM node:14.19.1-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:14.19.1-bullseye-slim
|
||||||
|
|
||||||
|
RUN apt update && apt install -y jq moreutils \
|
||||||
|
&& useradd --uid 2003 --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
1
mod/bbb-pads/bbb-pads
Submodule
Submodule mod/bbb-pads/bbb-pads added at 61f89b6202
15
mod/bbb-pads/entrypoint.sh
Executable file
15
mod/bbb-pads/entrypoint.sh
Executable 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
|
@ -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
|
# 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 \
|
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_COMMON_MESSAGE/bbb-common-message /bbb-common-message \
|
||||||
&& rm -rf /bbb-common-message/.svn
|
&& cd /bbb-common-message \
|
||||||
|
&& ./deploy.sh \
|
||||||
# compile bbb-common-message
|
&& rm -rf /bbb-common-message
|
||||||
RUN cd /bbb-common-message \
|
|
||||||
&& ./deploy.sh
|
|
||||||
|
|
||||||
# ===================================================
|
# ===================================================
|
||||||
|
|
||||||
# install grails
|
ARG TAG_BBB_WEB
|
||||||
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}"
|
|
||||||
|
|
||||||
# download bbb-common-web
|
# download bbb-common-web
|
||||||
ENV TAG_COMMON_WEB v2.4.0
|
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_BBB_WEB/bbb-common-web /bbb-common-web \
|
||||||
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_COMMON_WEB/bbb-common-web /bbb-common-web \
|
|
||||||
&& rm -rf /bbb-common-message/.svn
|
&& rm -rf /bbb-common-message/.svn
|
||||||
|
|
||||||
# compile bbb-common-web
|
# compile bbb-common-web
|
||||||
@ -35,8 +22,7 @@ RUN cd /bbb-common-web \
|
|||||||
&& ./deploy.sh
|
&& ./deploy.sh
|
||||||
|
|
||||||
# download bbb-web
|
# download bbb-web
|
||||||
ENV TAG_WEB v2.4.0
|
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_BBB_WEB/bigbluebutton-web /bbb-web \
|
||||||
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_WEB/bigbluebutton-web /bbb-web \
|
|
||||||
&& rm -rf /bbb-web/.svn
|
&& rm -rf /bbb-web/.svn
|
||||||
|
|
||||||
# compile bbb-web
|
# compile bbb-web
|
||||||
@ -50,28 +36,7 @@ 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 conversation to pdf/svg
|
||||||
RUN mkdir -p /usr/share/bigbluebutton/blank \
|
RUN mkdir -p /usr/share/bigbluebutton/blank \
|
||||||
@ -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-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-presentation.pdf \
|
||||||
https://raw.githubusercontent.com/bigbluebutton/bigbluebutton/v2.4.0/bigbluebutton-config/slides/blank-png.png \
|
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
|
# get bbb-web
|
||||||
COPY --from=builder /dist /usr/share/bbb-web
|
COPY --from=builder /dist /usr/share/bbb-web
|
||||||
|
@ -24,6 +24,6 @@ cd /usr/share/bbb-web/
|
|||||||
dockerize \
|
dockerize \
|
||||||
-template /etc/bigbluebutton/bbb-web.properties.tmpl:/etc/bigbluebutton/bbb-web.properties \
|
-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 \
|
-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
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
set -e
|
set -e
|
||||||
|
apk add jq su-exec
|
||||||
if [ "$ENABLE_HTTPS_PROXY" == true ]; then
|
if [ "$ENABLE_HTTPS_PROXY" == true ]; then
|
||||||
apk add jq
|
|
||||||
|
|
||||||
while [ ! -f /etc/resty-auto-ssl/storage/file/*latest ]
|
while [ ! -f /etc/resty-auto-ssl/storage/file/*latest ]
|
||||||
do
|
do
|
||||||
@ -28,4 +28,4 @@ if [ "${1:0:1}" == '-' ]; then
|
|||||||
set -- turnserver "$@"
|
set -- turnserver "$@"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exec $(eval "echo $@")
|
su-exec nobody $(eval "echo $@")
|
@ -1,4 +1,4 @@
|
|||||||
FROM etherpad/etherpad:1.8.16
|
FROM etherpad/etherpad:1.8.18
|
||||||
|
|
||||||
USER root
|
USER root
|
||||||
|
|
||||||
@ -7,13 +7,12 @@ RUN apt-get update \
|
|||||||
|
|
||||||
USER etherpad
|
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 \
|
RUN npm install \
|
||||||
ep_cursortrace@3.1.11 \
|
ep_cursortrace@3.1.16 \
|
||||||
git+https://github.com/pedrobmarin/ep_pad_ttl.git#360136cd38493dd698435631f2373cbb7089082d \
|
git+https://github.com/mconf/ep_pad_ttl.git#360136cd38493dd698435631f2373cbb7089082d \
|
||||||
git+https://github.com/pedrobmarin/ep_redis_publisher.git#1d903bf900dd53ebc5347f9583b6e240cf754d63 \
|
git+https://github.com/mconf/ep_redis_publisher.git#a30a48e4bc1e501b5b102884b9a0b26c30798484 \
|
||||||
git+https://github.com/ether/ep_disable_chat.git#v0.0.3 \
|
ep_disable_chat@0.0.8 \
|
||||||
git+https://github.com/ether/ep_sticky_attributes.git#v0.1.9 \
|
ep_auth_session@1.1.1 \
|
||||||
# remove npm lockfile, because somehow it prevents etherpad from detecting the manual added plugin ep_bigbluebutton_patches
|
# remove npm lockfile, because somehow it prevents etherpad from detecting the manual added plugin ep_bigbluebutton_patches
|
||||||
&& rm package-lock.json
|
&& rm package-lock.json
|
||||||
|
|
||||||
|
@ -15,6 +15,31 @@
|
|||||||
*
|
*
|
||||||
* This is useful, for example, when running in a Docker container.
|
* This is useful, for example, when running in a Docker container.
|
||||||
*
|
*
|
||||||
|
* DETAILED RULES:
|
||||||
|
* - If the environment variable is set to the string "true" or "false", the
|
||||||
|
* value becomes Boolean true or false.
|
||||||
|
* - If the environment variable is set to the string "null", the value
|
||||||
|
* becomes null.
|
||||||
|
* - If the environment variable is set to the string "undefined", the setting
|
||||||
|
* is removed entirely, except when used as the member of an array in which
|
||||||
|
* case it becomes null.
|
||||||
|
* - If the environment variable is set to a string representation of a finite
|
||||||
|
* number, the string is converted to that number.
|
||||||
|
* - If the environment variable is set to any other string, including the
|
||||||
|
* empty string, the value is that string.
|
||||||
|
* - If the environment variable is unset and a default value is provided, the
|
||||||
|
* value is as if the environment variable was set to the provided default:
|
||||||
|
* - "${UNSET_VAR:}" becomes the empty string.
|
||||||
|
* - "${UNSET_VAR:foo}" becomes the string "foo".
|
||||||
|
* - "${UNSET_VAR:true}" and "${UNSET_VAR:false}" become true and false.
|
||||||
|
* - "${UNSET_VAR:null}" becomes null.
|
||||||
|
* - "${UNSET_VAR:undefined}" causes the setting to be removed (or be set
|
||||||
|
* to null, if used as a member of an array).
|
||||||
|
* - If the environment variable is unset and no default value is provided,
|
||||||
|
* the value becomes null. THIS BEHAVIOR MAY CHANGE IN A FUTURE VERSION OF
|
||||||
|
* ETHERPAD; if you want the default value to be null, you should explicitly
|
||||||
|
* specify "null" as the default value.
|
||||||
|
*
|
||||||
* EXAMPLE:
|
* EXAMPLE:
|
||||||
* "port": "${PORT:9001}"
|
* "port": "${PORT:9001}"
|
||||||
* "minify": "${MINIFY}"
|
* "minify": "${MINIFY}"
|
||||||
@ -56,6 +81,13 @@
|
|||||||
* "password": "${PASSW}" // if PASSW is not defined would result in password === null
|
* "password": "${PASSW}" // if PASSW is not defined would result in password === null
|
||||||
* "password": "${PASSW:}" // if PASSW is not defined would result in password === ''
|
* "password": "${PASSW:}" // if PASSW is not defined would result in password === ''
|
||||||
*
|
*
|
||||||
|
* If you want to use an empty value (null) as default value for a variable,
|
||||||
|
* simply do not set it, without putting any colons: "${ABIWORD}".
|
||||||
|
*
|
||||||
|
* 3) if you want to use newlines in the default value of a string parameter,
|
||||||
|
* use "\n" as usual.
|
||||||
|
*
|
||||||
|
* "defaultPadText" : "${DEFAULT_PAD_TEXT}Line 1\nLine 2"
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@ -64,10 +96,12 @@
|
|||||||
"title": "Etherpad",
|
"title": "Etherpad",
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* favicon default name
|
* Pathname of the favicon you want to use. If null, the skin's favicon is
|
||||||
* alternatively, set up a fully specified Url to your own favicon
|
* used if one is provided by the skin, otherwise the default Etherpad favicon
|
||||||
|
* is used. If this is a relative path it is interpreted as relative to the
|
||||||
|
* Etherpad root directory.
|
||||||
*/
|
*/
|
||||||
"favicon": "favicon.ico",
|
"favicon": null,
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Skin name.
|
* Skin name.
|
||||||
@ -83,7 +117,40 @@
|
|||||||
"skinName": "bigbluebutton",
|
"skinName": "bigbluebutton",
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* IP and port which etherpad should bind at
|
* Skin Variants
|
||||||
|
*
|
||||||
|
* Use the UI skin variants builder at /p/test#skinvariantsbuilder
|
||||||
|
*
|
||||||
|
* For the colibris skin only, you can choose how to render the three main
|
||||||
|
* containers:
|
||||||
|
* - toolbar (top menu with icons)
|
||||||
|
* - editor (containing the text of the pad)
|
||||||
|
* - background (area outside of editor, mostly visible when using page style)
|
||||||
|
*
|
||||||
|
* For each of the 3 containers you can choose 4 color combinations:
|
||||||
|
* super-light, light, dark, super-dark.
|
||||||
|
*
|
||||||
|
* For example, to make the toolbar dark, you will include "dark-toolbar" into
|
||||||
|
* skinVariants.
|
||||||
|
*
|
||||||
|
* You can provide multiple skin variants separated by spaces. Default
|
||||||
|
* skinVariant is "super-light-toolbar super-light-editor light-background".
|
||||||
|
*
|
||||||
|
* For the editor container, you can also make it full width by adding
|
||||||
|
* "full-width-editor" variant (by default editor is rendered as a page, with
|
||||||
|
* a max-width of 900px).
|
||||||
|
*/
|
||||||
|
"skinVariants": "super-light-toolbar super-light-editor light-background",
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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",
|
"ip": "0.0.0.0",
|
||||||
"port": 9001,
|
"port": 9001,
|
||||||
@ -122,7 +189,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* Database specific settings are dependent on dbType, and go in dbSettings.
|
* Database specific settings are dependent on dbType, and go in dbSettings.
|
||||||
* Remember that since Etherpad 1.6.0 you can also store these informations in
|
* Remember that since Etherpad 1.6.0 you can also store this information in
|
||||||
* credentials.json.
|
* credentials.json.
|
||||||
*
|
*
|
||||||
* For a complete list of the supported drivers, please refer to:
|
* For a complete list of the supported drivers, please refer to:
|
||||||
@ -141,22 +208,10 @@
|
|||||||
* See: https://github.com/ether/etherpad-lite/wiki/How-to-use-Etherpad-Lite-with-MySQL
|
* See: https://github.com/ether/etherpad-lite/wiki/How-to-use-Etherpad-Lite-with-MySQL
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
|
||||||
"dbType" : "mysql",
|
|
||||||
"dbSettings" : {
|
|
||||||
"user": "etherpaduser",
|
|
||||||
"host": "localhost",
|
|
||||||
"port": 3306,
|
|
||||||
"password": "PASSWORD",
|
|
||||||
"database": "etherpad_lite_db",
|
|
||||||
"charset": "utf8mb4"
|
|
||||||
},
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
"dbType" : "redis",
|
"dbType" : "redis",
|
||||||
"dbSettings" : {
|
"dbSettings" : {
|
||||||
"host": "localhost",
|
"host": "127.0.0.1",
|
||||||
"port": 6379,
|
"port": 6379,
|
||||||
"client_options": {
|
"client_options": {
|
||||||
"password": "PASSWORD"
|
"password": "PASSWORD"
|
||||||
@ -185,7 +240,7 @@
|
|||||||
"rtl": false,
|
"rtl": false,
|
||||||
"alwaysShowChat": false,
|
"alwaysShowChat": false,
|
||||||
"chatAndUsers": false,
|
"chatAndUsers": false,
|
||||||
"lang": "en-gb"
|
"lang": "en"
|
||||||
},
|
},
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -225,7 +280,7 @@
|
|||||||
* If this option is enabled, a user must have a session to access pads.
|
* If this option is enabled, a user must have a session to access pads.
|
||||||
* This effectively allows only group pads to be accessed.
|
* This effectively allows only group pads to be accessed.
|
||||||
*/
|
*/
|
||||||
"requireSession": false,
|
"requireSession": true,
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Users may edit pads but not create new ones.
|
* Users may edit pads but not create new ones.
|
||||||
@ -233,13 +288,7 @@
|
|||||||
* Pad creation is only via the API.
|
* Pad creation is only via the API.
|
||||||
* This applies both to group pads and regular pads.
|
* This applies both to group pads and regular pads.
|
||||||
*/
|
*/
|
||||||
"editOnly": false,
|
"editOnly": true,
|
||||||
|
|
||||||
/*
|
|
||||||
* If set to true, those users who have a valid session will automatically be
|
|
||||||
* granted access to password protected pads.
|
|
||||||
*/
|
|
||||||
"sessionNoPassword": false,
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If true, all css & js will be minified before sending to the client.
|
* If true, all css & js will be minified before sending to the client.
|
||||||
@ -328,6 +377,7 @@
|
|||||||
*/
|
*/
|
||||||
"sameSite": "None"
|
"sameSite": "None"
|
||||||
},
|
},
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Privacy: disable IP logging
|
* Privacy: disable IP logging
|
||||||
*/
|
*/
|
||||||
@ -383,10 +433,22 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Users for basic authentication.
|
* User accounts. These accounts are used by:
|
||||||
|
* - default HTTP basic authentication if no plugin handles authentication
|
||||||
|
* - some but not all authentication plugins
|
||||||
|
* - some but not all authorization plugins
|
||||||
*
|
*
|
||||||
* is_admin = true gives access to /admin.
|
* User properties:
|
||||||
* If you do not uncomment this, /admin will not be available!
|
* - password: The user's password. Some authentication plugins will ignore
|
||||||
|
* this.
|
||||||
|
* - is_admin: true gives access to /admin. Defaults to false. If you do not
|
||||||
|
* uncomment this, /admin will not be available!
|
||||||
|
* - readOnly: If true, this user will not be able to create new pads or
|
||||||
|
* modify existing pads. Defaults to false.
|
||||||
|
* - canCreate: If this is true and readOnly is false, this user can create
|
||||||
|
* new pads. Defaults to true.
|
||||||
|
*
|
||||||
|
* Authentication and authorization plugins may define additional properties.
|
||||||
*
|
*
|
||||||
* WARNING: passwords should not be stored in plaintext in this file.
|
* WARNING: passwords should not be stored in plaintext in this file.
|
||||||
* If you want to mitigate this, please install ep_hash_auth and
|
* If you want to mitigate this, please install ep_hash_auth and
|
||||||
@ -415,6 +477,17 @@
|
|||||||
*/
|
*/
|
||||||
"socketTransportProtocols" : ["xhr-polling", "jsonp-polling", "htmlfile"],
|
"socketTransportProtocols" : ["xhr-polling", "jsonp-polling", "htmlfile"],
|
||||||
|
|
||||||
|
"socketIo": {
|
||||||
|
/*
|
||||||
|
* Maximum permitted client message size (in bytes). All messages from
|
||||||
|
* clients that are larger than this will be rejected. Large values make it
|
||||||
|
* possible to paste large amounts of text, and plugins may require a larger
|
||||||
|
* value to work properly, but increasing the value increases susceptibility
|
||||||
|
* to denial of service attacks (malicious clients can exhaust memory).
|
||||||
|
*/
|
||||||
|
"maxHttpBufferSize": 10000
|
||||||
|
},
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Allow Load Testing tools to hit the Etherpad Instance.
|
* Allow Load Testing tools to hit the Etherpad Instance.
|
||||||
*
|
*
|
||||||
@ -422,6 +495,11 @@
|
|||||||
*/
|
*/
|
||||||
"loadTest": false,
|
"loadTest": false,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Disable dump of objects preventing a clean exit
|
||||||
|
*/
|
||||||
|
"dumpOnUncleanExit": false,
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Disable indentation on new line when previous line ends with some special
|
* Disable indentation on new line when previous line ends with some special
|
||||||
* chars (':', '[', '(', '{')
|
* chars (':', '[', '(', '{')
|
||||||
@ -431,18 +509,15 @@
|
|||||||
"indentationOnNewLine": false,
|
"indentationOnNewLine": false,
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
|
||||||
* Delete pads plugin configuration.
|
|
||||||
*/
|
|
||||||
"ep_pad_ttl": {
|
"ep_pad_ttl": {
|
||||||
"ttl": 86400, // 24 hours
|
"ttl": 86400, // 24 hours
|
||||||
"timeout": 30,
|
"timeout": 30,
|
||||||
"interval": 21600, // 6 hour
|
"interval": 21600 // 6 hours
|
||||||
},
|
},
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Redis publisher plugin configuration.
|
* Redis publisher plugin configuration.
|
||||||
* npm i git+https://git@github.com/pedrobmarin/ep_redis_publisher.git
|
* npm i git+https://git@github.com/mconf/ep_redis_publisher.git
|
||||||
*/
|
*/
|
||||||
|
|
||||||
"ep_redis_publisher": {
|
"ep_redis_publisher": {
|
||||||
@ -451,16 +526,32 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
/*
|
/*
|
||||||
"ep_redis_publisher": {
|
* From Etherpad 1.8.3 onwards, import and export of pads is always rate
|
||||||
"host": "localhost",
|
* limited.
|
||||||
"port": 6379,
|
*
|
||||||
"password": "PASSWORD"
|
* The default is to allow at most 10 requests per IP in a 90 seconds window.
|
||||||
},
|
* After that the import/export request is rejected.
|
||||||
|
*
|
||||||
|
* See https://github.com/nfriedly/express-rate-limit for more options
|
||||||
*/
|
*/
|
||||||
|
"importExportRateLimiting": {
|
||||||
|
// duration of the rate limit window (milliseconds)
|
||||||
|
"windowMs": 90000,
|
||||||
|
|
||||||
|
// maximum number of requests per IP to allow during the rate limit window
|
||||||
|
"max": 10
|
||||||
|
},
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* From Etherpad 1.9.0 onwards, when Etherpad is in production mode commits from individual users are rate limited
|
* From Etherpad 1.8.3 onwards, the maximum allowed size for a single imported
|
||||||
|
* file is always bounded.
|
||||||
|
*
|
||||||
|
* File size is specified in bytes. Default is 50 MB.
|
||||||
|
*/
|
||||||
|
"importMaxFileSize": 52428800, // 50 * 1024 * 1024
|
||||||
|
|
||||||
|
/*
|
||||||
|
* From Etherpad 1.8.5 onwards, when Etherpad is in production mode commits from individual users are rate limited
|
||||||
*
|
*
|
||||||
* The default is to allow at most 10 changes per IP in a 1 second window.
|
* The default is to allow at most 10 changes per IP in a 1 second window.
|
||||||
* After that the change is rejected.
|
* After that the change is rejected.
|
||||||
@ -471,7 +562,7 @@
|
|||||||
// duration of the rate limit window (seconds)
|
// duration of the rate limit window (seconds)
|
||||||
"duration": 1,
|
"duration": 1,
|
||||||
|
|
||||||
// maximum number of chanes per IP to allow during the rate limit window
|
// maximum number of changes per IP to allow during the rate limit window
|
||||||
"points": 100
|
"points": 100
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -485,9 +576,10 @@
|
|||||||
"toolbar": {
|
"toolbar": {
|
||||||
"left": [
|
"left": [
|
||||||
["bold", "italic", "underline", "strikethrough"],
|
["bold", "italic", "underline", "strikethrough"],
|
||||||
["orderedlist", "unorderedlist", "undo", "redo"]
|
["orderedlist", "unorderedlist", "undo", "redo"],
|
||||||
|
["importexport"]
|
||||||
],
|
],
|
||||||
"right": [["importexport"]]
|
"right": [[]]
|
||||||
},
|
},
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -504,58 +596,12 @@
|
|||||||
*/
|
*/
|
||||||
"loglevel": "INFO",
|
"loglevel": "INFO",
|
||||||
|
|
||||||
/*
|
|
||||||
* Logging configuration. See log4js documentation for further information:
|
|
||||||
* https://github.com/nomiddlename/log4js-node
|
|
||||||
*
|
|
||||||
* You can add as many appenders as you want here.
|
|
||||||
*/
|
|
||||||
"logconfig" :
|
|
||||||
{ "appenders": [
|
|
||||||
{ "type": "console"
|
|
||||||
//, "category": "access"// only logs pad access
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
, { "type": "file"
|
|
||||||
, "filename": "your-log-file-here.log"
|
|
||||||
, "maxLogSize": 1024
|
|
||||||
, "backups": 3 // how many log files there're gonna be at max
|
|
||||||
//, "category": "test" // only log a specific category
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
, { "type": "logLevelFilter"
|
|
||||||
, "level": "warn" // filters out all log messages that have a lower level than "error"
|
|
||||||
, "appender":
|
|
||||||
{ Use whatever appender you want here }
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
, { "type": "logLevelFilter"
|
|
||||||
, "level": "error" // filters out all log messages that have a lower level than "error"
|
|
||||||
, "appender":
|
|
||||||
{ "type": "smtp"
|
|
||||||
, "subject": "An error occurred in your EPL instance!"
|
|
||||||
, "recipients": "bar@blurdybloop.com, baz@blurdybloop.com"
|
|
||||||
, "sendInterval": 300 // 60 * 5 = 5 minutes -- will buffer log messages; set to 0 to send a mail for every message
|
|
||||||
, "transport": "SMTP", "SMTP": { // see https://github.com/andris9/Nodemailer#possible-transport-methods
|
|
||||||
"host": "smtp.example.com", "port": 465,
|
|
||||||
"secureConnection": true,
|
|
||||||
"auth": {
|
|
||||||
"user": "foo@example.com",
|
|
||||||
"pass": "bar_foo"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
]
|
|
||||||
}, // logconfig
|
|
||||||
/* Override any strings found in locale directories */
|
/* Override any strings found in locale directories */
|
||||||
"customLocaleStrings": {}
|
"customLocaleStrings": {},
|
||||||
|
|
||||||
|
/* Disable Admin UI tests */
|
||||||
|
"enableAdminUITests": false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,19 +1,18 @@
|
|||||||
FROM debian:bullseye-slim
|
FROM debian:bullseye-slim
|
||||||
|
|
||||||
# add freeswitch repo
|
# install dependencies
|
||||||
RUN apt-get update && \
|
RUN apt-get update && \
|
||||||
apt-get install -y --no-install-recommends subversion curl wget ca-certificates gnupg gnupg2 lsb-release unzip && \
|
apt-get install -y --no-install-recommends \
|
||||||
wget -O /usr/share/keyrings/freeswitch-archive-keyring.gpg https://files.freeswitch.org/repo/deb/debian-release/freeswitch-archive-keyring.gpg && \
|
subversion curl wget ca-certificates gnupg gnupg2 lsb-release unzip
|
||||||
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
|
|
||||||
|
COPY --from=alangecker/bbb-docker-base-java /usr/local/bin/dockerize /usr/local/bin/dockerize
|
||||||
|
|
||||||
# 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
|
# install freeswitch
|
||||||
RUN apt-get update && apt-get install -y \
|
RUN wget -q -O /usr/share/keyrings/freeswitch-archive-keyring.gpg https://freeswitch-mirror.chandi.it/repo/deb/debian-release/signalwire-freeswitch-repo.gpg && \
|
||||||
|
echo 'deb [signed-by=/usr/share/keyrings/freeswitch-archive-keyring.gpg] http://freeswitch-mirror.chandi.it/repo/deb/debian-release/ bullseye main' > /etc/apt/sources.list.d/freeswitch.list && \
|
||||||
|
apt-get update && \
|
||||||
|
apt-get install -y \
|
||||||
freeswitch \
|
freeswitch \
|
||||||
freeswitch-mod-commands \
|
freeswitch-mod-commands \
|
||||||
freeswitch-mod-conference \
|
freeswitch-mod-conference \
|
||||||
@ -25,18 +24,27 @@ RUN apt-get update && apt-get install -y \
|
|||||||
freeswitch-mod-opusfile \
|
freeswitch-mod-opusfile \
|
||||||
freeswitch-mod-opus \
|
freeswitch-mod-opus \
|
||||||
freeswitch-mod-sndfile \
|
freeswitch-mod-sndfile \
|
||||||
|
freeswitch-mod-spandsp \
|
||||||
freeswitch-mod-sofia \
|
freeswitch-mod-sofia \
|
||||||
freeswitch-sounds-en-us-callie \
|
freeswitch-sounds-en-us-callie \
|
||||||
iptables
|
iptables
|
||||||
|
|
||||||
|
# replace mute & unmute sounds
|
||||||
|
RUN wget -q 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 "echo {};sox -v 0.3 {} /tmp/tmp.wav; mv /tmp/tmp.wav /usr/share/freeswitch/sounds/en/us/callie/conference/{}" \; && \
|
||||||
|
cd ../.. && \
|
||||||
|
rm -r mute-and-unmute-sounds-master mute-and-unmute-sounds-master.zip
|
||||||
|
|
||||||
|
|
||||||
# -- get official bbb freeswitch config
|
# -- get official bbb freeswitch config
|
||||||
# we use svn for retrieving the files since the repo is quite large,
|
# we use svn for retrieving the files since the repo is quite large,
|
||||||
# git sparse-checkout is not yet available with buster and there
|
# git sparse-checkout is not yet available with buster and there
|
||||||
# is no other sane way of downloading a single directory via git
|
# is no other sane way of downloading a single directory via git
|
||||||
|
|
||||||
ENV TAG v2.3.4
|
ARG TAG_FS_CONFIG
|
||||||
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/bbb-voice-conference/config/freeswitch/conf /etc/freeswitch \
|
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_FS_CONFIG/bbb-voice-conference/config/freeswitch/conf /etc/freeswitch \
|
||||||
&& rm -rf /etc/freeswitch/.svn
|
&& rm -rf /etc/freeswitch/.svn
|
||||||
|
|
||||||
# the current available freeswitch-mod-opusfile is broken,
|
# the current available freeswitch-mod-opusfile is broken,
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
<node type="allow" cidr="127.0.0.1/32"/>
|
<node type="allow" cidr="127.0.0.1/32"/>
|
||||||
<node type="allow" cidr="10.0.0.0/8"/>
|
<node type="allow" cidr="10.0.0.0/8"/>
|
||||||
<node type="allow" cidr="192.168.0.0/16"/>
|
<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"/>
|
<node type="allow" cidr="$${external_ip_v4}/32"/>
|
||||||
</list>
|
</list>
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@
|
|||||||
<!-- Domain (for presence) -->
|
<!-- Domain (for presence) -->
|
||||||
<param name="domain" value="$${domain}"/>
|
<param name="domain" value="$${domain}"/>
|
||||||
<!-- Sample Rate-->
|
<!-- Sample Rate-->
|
||||||
<param name="rate" value="8000"/>
|
<param name="rate" value="48000"/>
|
||||||
<!-- Number of milliseconds per frame -->
|
<!-- Number of milliseconds per frame -->
|
||||||
<param name="interval" value="20"/>
|
<param name="interval" value="20"/>
|
||||||
<!-- Energy level required for audio to be sent to the other users -->
|
<!-- Energy level required for audio to be sent to the other users -->
|
||||||
|
30
mod/freeswitch/conf/autoload_configs/modules.conf.xml
Normal file
30
mod/freeswitch/conf/autoload_configs/modules.conf.xml
Normal 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>
|
@ -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
|
# 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 \
|
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_COMMON_MESSAGE/bbb-common-message /bbb-common-message \
|
||||||
&& rm -rf /bbb-common-message/.svn
|
&& cd /bbb-common-message \
|
||||||
|
&& ./deploy.sh \
|
||||||
# compile bbb-common-message
|
&& rm -rf /bbb-common-message
|
||||||
RUN cd /bbb-common-message \
|
|
||||||
&& ./deploy.sh
|
|
||||||
|
|
||||||
|
|
||||||
# ===================================================
|
# ===================================================
|
||||||
ENV TAG_FSESL v2.4.0
|
ARG TAG_FSESL_AKKA
|
||||||
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_FSESL/bbb-fsesl-client /bbb-fsesl-client \
|
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_FSESL_AKKA/bbb-fsesl-client /bbb-fsesl-client \
|
||||||
&& rm -rf /bbb-fsesl-client/.svn
|
&& rm -rf /bbb-fsesl-client/.svn
|
||||||
|
|
||||||
RUN cd /bbb-fsesl-client \
|
RUN cd /bbb-fsesl-client \
|
||||||
&& ./deploy.sh
|
&& ./deploy.sh
|
||||||
|
|
||||||
|
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_FSESL_AKKA/akka-bbb-fsesl /source \
|
||||||
ENV TAG v2.4.0
|
|
||||||
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/akka-bbb-fsesl /source \
|
|
||||||
&& rm -rf /source/.svn
|
&& rm -rf /source/.svn
|
||||||
|
|
||||||
# compile and unzip bin
|
# 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
|
FROM alangecker/bbb-docker-base-java
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
COPY --from=builder /bbb-fsesl-akka-0.0.2 /bbb-fsesl-akka
|
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 bbb-fsesl-akka.conf /etc/bigbluebutton/bbb-fsesl-akka.conf.tmpl
|
||||||
COPY logback.xml /bbb-fsesl-akka/conf/logback.xml
|
COPY logback.xml /bbb-fsesl-akka/conf/logback.xml
|
||||||
|
COPY entrypoint.sh /entrypoint.sh
|
||||||
|
|
||||||
WORKDIR /bbb-fsesl-akka
|
USER bigbluebutton
|
||||||
CMD dockerize \
|
ENTRYPOINT /entrypoint.sh
|
||||||
-template /etc/bigbluebutton/bbb-fsesl-akka.conf.tmpl:/etc/bigbluebutton/bbb-fsesl-akka.conf \
|
|
||||||
gosu fsesl-akka /bbb-fsesl-akka/bin/bbb-fsesl-akka
|
|
@ -5,7 +5,7 @@ include "/bbb-fsesl-akka/conf/application.conf"
|
|||||||
freeswitch {
|
freeswitch {
|
||||||
esl {
|
esl {
|
||||||
host="10.7.7.1"
|
host="10.7.7.1"
|
||||||
password="{{ default .Env.FSESL_PASSWORD "ClueCon" }}"
|
password="FSESL_PASSWORD"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
9
mod/fsesl-akka/entrypoint.sh
Executable file
9
mod/fsesl-akka/entrypoint.sh
Executable 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
|
@ -1,44 +1,34 @@
|
|||||||
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
|
RUN cd /app/bundle/programs/server \
|
||||||
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 \
|
|
||||||
&& npm install --production
|
&& npm install --production
|
||||||
|
|
||||||
|
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.21.1-alpine
|
||||||
|
|
||||||
RUN addgroup -g 2000 meteor && \
|
RUN addgroup -g 2000 meteor && \
|
||||||
adduser -D -u 2001 -G meteor meteor && \
|
adduser -D -u 2001 -G meteor meteor && \
|
||||||
apk add su-exec
|
apk add su-exec
|
||||||
COPY --from=builder /usr/local/bin/dockerize /usr/local/bin/dockerize
|
COPY --from=alangecker/bbb-docker-base-java /usr/local/bin/dockerize /usr/local/bin/dockerize
|
||||||
COPY --from=builder --chown=meteor:meteor /home/meteor/app/bundle /app
|
COPY --from=builder --chown=meteor:meteor /app/bundle /app
|
||||||
COPY entrypoint.sh /entrypoint.sh
|
COPY entrypoint.sh /entrypoint.sh
|
||||||
COPY bbb-html5.yml /app/bbb-html5.yml.tmpl
|
COPY bbb-html5.yml /app/bbb-html5.yml.tmpl
|
||||||
|
|
||||||
ENTRYPOINT ["/entrypoint.sh"]
|
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
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
public:
|
public:
|
||||||
app:
|
app:
|
||||||
|
bbbServerVersion: {{ .Env.TAG_HTML5 }}-docker
|
||||||
listenOnlyMode: {{ .Env.LISTEN_ONLY_MODE }}
|
listenOnlyMode: {{ .Env.LISTEN_ONLY_MODE }}
|
||||||
skipCheck: {{ .Env.DISABLE_ECHO_TEST }}
|
skipCheck: {{ .Env.DISABLE_ECHO_TEST }}
|
||||||
clientTitle: {{ .Env.CLIENT_TITLE }}
|
clientTitle: {{ .Env.CLIENT_TITLE }}
|
||||||
@ -13,15 +14,11 @@ public:
|
|||||||
chat:
|
chat:
|
||||||
enabled: {{ .Env.CHAT_ENABLED }}
|
enabled: {{ .Env.CHAT_ENABLED }}
|
||||||
startClosed: {{ .Env.CHAT_START_CLOSED }}
|
startClosed: {{ .Env.CHAT_START_CLOSED }}
|
||||||
note:
|
pads:
|
||||||
url: https://{{ .Env.DOMAIN }}/pad
|
url: https://{{ .Env.DOMAIN }}/pad
|
||||||
private:
|
private:
|
||||||
app:
|
app:
|
||||||
host: 0.0.0.0
|
host: 0.0.0.0
|
||||||
etherpad:
|
|
||||||
apikey: {{ .Env.ETHERPAD_API_KEY }}
|
|
||||||
host: etherpad
|
|
||||||
port: 9001
|
|
||||||
redis:
|
redis:
|
||||||
host: redis
|
host: redis
|
||||||
port: '6379'
|
port: '6379'
|
||||||
|
@ -6,12 +6,12 @@ export MONGO_OPLOG_URL=mongodb://10.7.7.6/local
|
|||||||
export MONGO_URL=mongodb://10.7.7.6/meteor
|
export MONGO_URL=mongodb://10.7.7.6/meteor
|
||||||
export ROOT_URL=http://127.0.0.1/html5client
|
export ROOT_URL=http://127.0.0.1/html5client
|
||||||
export NODE_ENV=production
|
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 BIND_IP=0.0.0.0
|
||||||
export LANG=en_US.UTF-8
|
export LANG=en_US.UTF-8
|
||||||
export INSTANCE_MAX=1
|
export INSTANCE_MAX=1
|
||||||
export ENVIRONMENT_TYPE=production
|
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
|
export BBB_HTML5_LOCAL_SETTINGS=/app/bbb-html5.yml
|
||||||
|
|
||||||
if [ "$DEV_MODE" == true ]; then
|
if [ "$DEV_MODE" == true ]; then
|
||||||
@ -26,7 +26,7 @@ fi
|
|||||||
|
|
||||||
# if container is the first frontend, do some additional tasks
|
# if container is the first frontend, do some additional tasks
|
||||||
if [ "$BBB_HTML5_ROLE" == "frontend" ] && [ "$INSTANCE_ID" == "1" ]; then
|
if [ "$BBB_HTML5_ROLE" == "frontend" ] && [ "$INSTANCE_ID" == "1" ]; then
|
||||||
# delete potential old settings.yml
|
|
||||||
|
|
||||||
# copy static files into volume for direct access by nginx
|
# copy static files into volume for direct access by nginx
|
||||||
# https://github.com/bigbluebutton/bigbluebutton/issues/10739
|
# https://github.com/bigbluebutton/bigbluebutton/issues/10739
|
||||||
|
@ -4,10 +4,20 @@ set -e
|
|||||||
|
|
||||||
host=${HOSTNAME:-$(hostname -f)}
|
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
|
# init replset with defaults
|
||||||
mongo local --eval "rs.initiate({
|
mongo 10.7.7.6 --eval "rs.initiate({
|
||||||
_id: 'rs0',
|
_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"
|
echo "Waiting to become a master"
|
||||||
|
@ -4,20 +4,18 @@ RUN apk add subversion git
|
|||||||
|
|
||||||
# --------------------
|
# --------------------
|
||||||
|
|
||||||
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 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
|
RUN cd /bbb-learning-dashboard && npm ci && npm run build
|
||||||
|
|
||||||
ENV TAG_PLAYBACK v3.1.0
|
COPY ./bbb-playback /bbb-playback
|
||||||
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
|
|
||||||
RUN cd /bbb-playback && npm ci && npm run build
|
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 --from=builder /bbb-playback/build /www/playback/presentation/2.3
|
||||||
COPY ./bbb /etc/nginx/bbb
|
COPY ./bbb /etc/nginx/bbb
|
||||||
COPY ./bigbluebutton /etc/nginx/conf.d/default.conf
|
COPY ./bigbluebutton /etc/nginx/conf.d/default.conf
|
||||||
|
1
mod/nginx/bbb-playback
Submodule
1
mod/nginx/bbb-playback
Submodule
Submodule mod/nginx/bbb-playback added at 4031c8e5ff
@ -1,9 +1,9 @@
|
|||||||
location ~ /learning-dashboard/([0-9a-f]+-[0-9]+)/(.*) {
|
location ~ /learning-analytics-dashboard/([0-9a-f]+-[0-9]+)/(.*) {
|
||||||
root /var/bigbluebutton/learning-dashboard/;
|
root /var/bigbluebutton/learning-analytics-dashboard/;
|
||||||
autoindex off;
|
autoindex off;
|
||||||
}
|
}
|
||||||
|
|
||||||
location /learning-dashboard/ {
|
location /learning-analytics-dashboard/ {
|
||||||
alias /www/learning-dashboard/;
|
alias /www/learning-analytics-dashboard/;
|
||||||
autoindex off;
|
autoindex off;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,10 @@
|
|||||||
# https://github.com/ether/etherpad-lite/wiki/How-to-put-Etherpad-Lite-behind-a-reverse-Proxy
|
# https://github.com/ether/etherpad-lite/wiki/How-to-put-Etherpad-Lite-behind-a-reverse-Proxy
|
||||||
location /pad/p/ {
|
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/(.*) /p/$1 break;
|
||||||
rewrite ^/pad/p$ /pad/p/ permanent;
|
rewrite ^/pad/p$ /pad/p/ permanent;
|
||||||
proxy_pass http://etherpad:9001/p;
|
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_set_header X-Forwarded-Proto $scheme; # for EP to set secure cookie flag when https is used
|
||||||
proxy_http_version 1.1;
|
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;
|
auth_request_set $auth_status $upstream_status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
22
mod/nginx/bbb/podcast.nginx
Normal file
22
mod/nginx/bbb/podcast.nginx
Normal 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;
|
||||||
|
}
|
@ -6,7 +6,7 @@ location /bbb-webrtc-sfu {
|
|||||||
auth_request_set $meeting_id $sent_http_meeting_id;
|
auth_request_set $meeting_id $sent_http_meeting_id;
|
||||||
auth_request_set $voice_bridge $sent_http_voice_bridge;
|
auth_request_set $voice_bridge $sent_http_voice_bridge;
|
||||||
|
|
||||||
proxy_pass http://webrtc-sfu:3008;
|
proxy_pass http://10.7.7.1:3008;
|
||||||
proxy_http_version 1.1;
|
proxy_http_version 1.1;
|
||||||
proxy_set_header Upgrade $http_upgrade;
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
proxy_set_header Connection "Upgrade";
|
proxy_set_header Connection "Upgrade";
|
||||||
|
@ -1,16 +1,9 @@
|
|||||||
FROM debian:bullseye-slim
|
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
|
# -- install docker cli
|
||||||
COPY --from=library/docker:latest /usr/local/bin/docker /usr/bin/docker
|
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
|
RUN chmod +x bbb-remove-old-recordings
|
||||||
|
|
||||||
|
@ -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
|
|
@ -2,5 +2,4 @@
|
|||||||
|
|
||||||
# https://github.com/bigbluebutton/bigbluebutton/pull/9597/files
|
# https://github.com/bigbluebutton/bigbluebutton/pull/9597/files
|
||||||
|
|
||||||
CONTAINER_ID=$(docker ps | grep freeswitch | awk '{print $1}')
|
docker exec -it bbb-freeswitch fs_cli -H 10.7.7.1 -P 8021 -x 'fsctl sync_clock_when_idle'
|
||||||
docker exec -it $CONTAINER_ID fs_cli -H 10.7.7.1 -P 8021 -x 'fsctl sync_clock_when_idle'
|
|
@ -7,14 +7,12 @@ history=5
|
|||||||
|
|
||||||
while :
|
while :
|
||||||
do
|
do
|
||||||
# restart kurento after 24h
|
|
||||||
/bbb-restart-kms
|
|
||||||
|
|
||||||
# resync freeswitch
|
# resync freeswitch
|
||||||
/bbb-resync-freeswitch
|
/bbb-resync-freeswitch
|
||||||
|
|
||||||
# delete presentations older than N days
|
# 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
|
# delete recordings older than $RECORDING_MAX_AGE_DAYS
|
||||||
if [ "$ENABLE_RECORDING" == true ] && [ "$REMOVE_OLD_RECORDING" == true ]; then
|
if [ "$ENABLE_RECORDING" == true ] && [ "$REMOVE_OLD_RECORDING" == true ]; then
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
FROM ruby:2.5-slim-buster
|
FROM ruby:2.7-slim-bullseye
|
||||||
|
|
||||||
# install apt dependencies
|
# install apt dependencies
|
||||||
RUN apt-get update && apt-get install -y \
|
RUN apt-get update && apt-get install -y \
|
||||||
@ -9,15 +9,21 @@ RUN apt-get update && apt-get install -y \
|
|||||||
build-essential \
|
build-essential \
|
||||||
libsystemd-dev \
|
libsystemd-dev \
|
||||||
python3 \
|
python3 \
|
||||||
python3-pyinotify \
|
python3-attr \
|
||||||
|
python3-cairo \
|
||||||
|
python3-gi \
|
||||||
|
python3-gi-cairo \
|
||||||
python3-lxml \
|
python3-lxml \
|
||||||
python3-icu \
|
python3-icu \
|
||||||
|
python3-pyinotify \
|
||||||
|
gir1.2-pangocairo-1.0 \
|
||||||
ffmpeg \
|
ffmpeg \
|
||||||
poppler-utils \
|
poppler-utils \
|
||||||
imagemagick \
|
imagemagick \
|
||||||
supervisor \
|
supervisor \
|
||||||
locales \
|
locales \
|
||||||
locales-all
|
locales-all
|
||||||
|
# TODO: missing packages
|
||||||
|
|
||||||
ENV LC_ALL en_US.UTF-8
|
ENV LC_ALL en_US.UTF-8
|
||||||
ENV LANG en_US.UTF-8
|
ENV LANG en_US.UTF-8
|
||||||
@ -40,25 +46,29 @@ 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 \
|
&& tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
|
||||||
&& rm 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 \
|
RUN mkdir -p \
|
||||||
/usr/local/bigbluebutton \
|
/usr/local/bigbluebutton \
|
||||||
/usr/local/bigbluebutton/core \
|
/usr/local/bigbluebutton/core \
|
||||||
/etc/bigbluebutton
|
/etc/bigbluebutton
|
||||||
|
|
||||||
ENV TAG v2.4.0
|
ARG TAG_RECORDINGS
|
||||||
|
|
||||||
# add bbb-record-core (lib, scripts and Gemfile)
|
# add bbb-record-core (lib, scripts and Gemfile)
|
||||||
RUN cd /usr/local/bigbluebutton/core \
|
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_RECORDINGS/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/scripts \
|
||||||
&& rm -rf /usr/local/bigbluebutton/core/*/.svn \
|
&& 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_RECORDINGS/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_RECORDINGS/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/Rakefile
|
||||||
|
|
||||||
# add bbb-playback-presentation scripts
|
# add bbb-playback-presentation scripts
|
||||||
RUN cd /tmp \
|
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/ \
|
&& rsync -av /tmp/scripts/ /usr/local/bigbluebutton/core/scripts/ \
|
||||||
&& rm -rf /tmp/scripts
|
&& rm -rf /tmp/scripts
|
||||||
|
|
||||||
@ -79,11 +89,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
|
# add bbb-record with some adjustments so bbb-record works in this environment
|
||||||
RUN cd /usr/bin \
|
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 \
|
&& chmod +x /usr/bin/bbb-record \
|
||||||
&& sed -i 's/^BBB_WEB.*/BBB_WEB=""/' /usr/bin/bbb-record \
|
&& sed -i 's/^BBB_WEB.*/BBB_WEB=""/' /usr/bin/bbb-record \
|
||||||
&& sed -i 's/systemctl.*//' /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
|
# create user
|
||||||
# the ID should match the one creating the files in `core`
|
# the ID should match the one creating the files in `core`
|
||||||
|
@ -7,7 +7,7 @@ raw_screenshare_src: /usr/share/red5/webapps/screenshare/streams
|
|||||||
raw_webrtc_deskshare_src: /usr/share/red5/webapps/video-broadcast/streams
|
raw_webrtc_deskshare_src: /usr/share/red5/webapps/video-broadcast/streams
|
||||||
raw_deskshare_src: /var/bigbluebutton/deskshare
|
raw_deskshare_src: /var/bigbluebutton/deskshare
|
||||||
raw_presentation_src: /var/bigbluebutton
|
raw_presentation_src: /var/bigbluebutton
|
||||||
notes_endpoint: http://etherpad:9001/p
|
notes_endpoint: http://bbb-pads:9002/p
|
||||||
# Specify the notes formats we archive
|
# Specify the notes formats we archive
|
||||||
# txt, doc and odt are also supported
|
# txt, doc and odt are also supported
|
||||||
notes_formats:
|
notes_formats:
|
||||||
|
@ -4,7 +4,7 @@ user=root
|
|||||||
[program:rasque_workers]
|
[program:rasque_workers]
|
||||||
command=rake resque:workers
|
command=rake resque:workers
|
||||||
directory=/usr/local/bigbluebutton/core/scripts
|
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
|
user=bigbluebutton
|
||||||
stdout_logfile=/dev/fd/1
|
stdout_logfile=/dev/fd/1
|
||||||
stdout_logfile_maxbytes=0
|
stdout_logfile_maxbytes=0
|
||||||
@ -15,6 +15,7 @@ stderr_logfile_maxbytes=0
|
|||||||
[program:rap_starter]
|
[program:rap_starter]
|
||||||
command=bundle exec ruby /usr/local/bigbluebutton/core/scripts/rap-starter.rb
|
command=bundle exec ruby /usr/local/bigbluebutton/core/scripts/rap-starter.rb
|
||||||
directory=/usr/local/bigbluebutton/core/scripts
|
directory=/usr/local/bigbluebutton/core/scripts
|
||||||
|
environment=HOME="/home/bigbluebutton"
|
||||||
user=bigbluebutton
|
user=bigbluebutton
|
||||||
stdout_logfile=/dev/fd/1
|
stdout_logfile=/dev/fd/1
|
||||||
stdout_logfile_maxbytes=0
|
stdout_logfile_maxbytes=0
|
||||||
@ -25,6 +26,7 @@ stderr_logfile_maxbytes=0
|
|||||||
[program:rap_caption_inbox]
|
[program:rap_caption_inbox]
|
||||||
command=bundle exec ruby /usr/local/bigbluebutton/core/scripts/rap-caption-inbox.rb
|
command=bundle exec ruby /usr/local/bigbluebutton/core/scripts/rap-caption-inbox.rb
|
||||||
directory=/usr/local/bigbluebutton/core/scripts
|
directory=/usr/local/bigbluebutton/core/scripts
|
||||||
|
environment=HOME="/home/bigbluebutton"
|
||||||
user=bigbluebutton
|
user=bigbluebutton
|
||||||
stdout_logfile=/dev/fd/1
|
stdout_logfile=/dev/fd/1
|
||||||
stdout_logfile_maxbytes=0
|
stdout_logfile_maxbytes=0
|
||||||
|
@ -1,26 +1,25 @@
|
|||||||
FROM node:14-alpine
|
FROM node:14.18.3-bullseye-slim AS builder
|
||||||
|
|
||||||
# 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
|
|
||||||
|
|
||||||
|
|
||||||
ENV TAG v2.4.0
|
RUN apt-get update && apt-get install -y git wget
|
||||||
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/bbb-webhooks /app \
|
|
||||||
&& rm -rf /app/.svn \
|
|
||||||
&& cd /app && npm install --production
|
|
||||||
|
|
||||||
|
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:14.18.3-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 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
|
ENTRYPOINT /entrypoint.sh
|
||||||
|
|
||||||
|
|
||||||
|
1
mod/webhooks/bbb-webhooks
Submodule
1
mod/webhooks/bbb-webhooks
Submodule
Submodule mod/webhooks/bbb-webhooks added at 2eb5e44710
@ -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
|
|
@ -1,9 +1,17 @@
|
|||||||
#!/bin/sh
|
#!/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
|
export NODE_ENV=production
|
||||||
cd /app
|
|
||||||
dockerize \
|
cd /bbb-webhooks
|
||||||
-wait tcp://redis:6379 \
|
|
||||||
-template /app/config/default.yml.tmpl:/app/config/default.yml \
|
|
||||||
node app.js
|
node app.js
|
||||||
|
|
||||||
|
@ -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
|
RUN useradd --uid 2004 --user-group webrtc-sfu
|
||||||
|
|
||||||
ADD ./bbb-webrtc-sfu app
|
ADD ./bbb-webrtc-sfu /app
|
||||||
|
|
||||||
WORKDIR app
|
|
||||||
|
|
||||||
ENV NODE_ENV production
|
ENV NODE_ENV production
|
||||||
|
|
||||||
|
|
||||||
# due to the git submodule npm install crashes with following error:
|
# due to the git submodule npm install crashes with following error:
|
||||||
# npm ERR! fatal: Not a git repository: ../.git/modules/bbb-webrtc-sfu
|
# npm ERR! fatal: Not a git repository: ../.git/modules/bbb-webrtc-sfu
|
||||||
# we simply delete the .git file
|
# we simply delete the .git file
|
||||||
RUN cp config/default.example.yml config/production.yml \
|
RUN cd /app \
|
||||||
&& chown -R webrtc-sfu:webrtc-sfu config \
|
&& cp config/default.example.yml config/production.yml \
|
||||||
&& rm .git \
|
&& rm .git \
|
||||||
&& npm install --unsafe-perm \
|
&& npm install --unsafe-perm \
|
||||||
&& npm cache clear --force \
|
&& npm cache clear --force \
|
||||||
&& rm -rf node_modules/mediasoup/worker/out/Release/subprojects \
|
&& 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/mediasoup-worker.p \
|
||||||
&& rm -rf node_modules/mediasoup/worker/out/Release/deps
|
&& rm -rf node_modules/mediasoup/worker/out/Release/deps
|
||||||
COPY docker-entrypoint.sh /app/docker-entrypoint.sh
|
|
||||||
|
|
||||||
|
# =============================
|
||||||
|
FROM node:14.19.1-bullseye-slim
|
||||||
|
RUN useradd --uid 2004 --user-group webrtc-sfu
|
||||||
|
ENV NODE_ENV production
|
||||||
|
|
||||||
|
COPY --from=builder /app /app
|
||||||
|
RUN chown -R webrtc-sfu:webrtc-sfu /app/config
|
||||||
|
|
||||||
USER webrtc-sfu
|
USER webrtc-sfu
|
||||||
ENTRYPOINT [ "./docker-entrypoint.sh" ]
|
WORKDIR /app
|
||||||
CMD [ "npm", "start" ]
|
CMD [ "npm", "start" ]
|
||||||
|
Submodule mod/webrtc-sfu/bbb-webrtc-sfu updated: 4e0fa6bf8f...e7c08cf8a7
@ -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 "$@"
|
|
13
sample.env
13
sample.env
@ -59,11 +59,6 @@ DOMAIN=bbb.example.com
|
|||||||
EXTERNAL_IPv4=144.76.97.10
|
EXTERNAL_IPv4=144.76.97.10
|
||||||
EXTERNAL_IPv6=
|
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 SERVER
|
||||||
# stun.freeswitch.org
|
# stun.freeswitch.org
|
||||||
STUN_IP=216.93.246.18
|
STUN_IP=216.93.246.18
|
||||||
@ -88,7 +83,7 @@ SIP_IP_ALLOWLIST=
|
|||||||
CLIENT_TITLE=BigBlueButton
|
CLIENT_TITLE=BigBlueButton
|
||||||
|
|
||||||
# use following lines to replace the default welcome message and footer
|
# 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>."
|
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
|
# use following line for an additional SIP dial-in message
|
||||||
@ -107,9 +102,9 @@ DEFAULT_PRESENTATION=./mod/nginx/default.pdf
|
|||||||
# - es-ar-mario - Spanish/Argentina Mario
|
# - es-ar-mario - Spanish/Argentina Mario
|
||||||
# - fr-ca-june - FR Canadian June
|
# - fr-ca-june - FR Canadian June
|
||||||
# - pt-br-karina - Brazilian Portuguese Karina
|
# - pt-br-karina - Brazilian Portuguese Karina
|
||||||
# - ru-ru-elena - RU Russian Elena
|
# - ru-RU-elena - RU Russian Elena
|
||||||
# - ru-ru-kirill - RU Russian Kirill
|
# - ru-RU-kirill - RU Russian Kirill
|
||||||
# - ru-ru-vika - RU Russian Viktoriya
|
# - ru-RU-vika - RU Russian Viktoriya
|
||||||
# - sv-se-jakob - Swedish (Sweden) Jakob
|
# - sv-se-jakob - Swedish (Sweden) Jakob
|
||||||
# - zh-cn-sinmei - Chinese/China Sinmei
|
# - zh-cn-sinmei - Chinese/China Sinmei
|
||||||
# - zh-hk-sinmei - Chinese/Hong Kong Sinmei
|
# - zh-hk-sinmei - Chinese/Hong Kong Sinmei
|
||||||
|
32
scripts/checkout-submodules
Executable file
32
scripts/checkout-submodules
Executable 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
|
@ -3,4 +3,10 @@ set -e
|
|||||||
|
|
||||||
cd $(dirname $0)/..
|
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"
|
||||||
|
@ -33,10 +33,26 @@ if [ "$ENABLE_COTURN" == true ]; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
export $(cat tags.env | sed 's/#.*//g' | xargs)
|
||||||
|
|
||||||
docker run \
|
docker run \
|
||||||
--rm \
|
--rm \
|
||||||
-v $(pwd)/docker-compose.tmpl.yml:/docker-compose.tmpl.yml \
|
-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_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 DEV_MODE=${DEV_MODE:-false} \
|
-e DEV_MODE=${DEV_MODE:-false} \
|
||||||
|
-e EXTERNAL_IPv6=${EXTERNAL_IPv6:-} \
|
||||||
-e ENABLE_RECORDING=${ENABLE_RECORDING:-false} \
|
-e ENABLE_RECORDING=${ENABLE_RECORDING:-false} \
|
||||||
-e REMOVE_OLD_RECORDING=${REMOVE_OLD_RECORDING:-false} \
|
-e REMOVE_OLD_RECORDING=${REMOVE_OLD_RECORDING:-false} \
|
||||||
-e RECORDING_MAX_AGE_DAYS=${RECORDING_MAX_AGE_DAYS:-14} \
|
-e RECORDING_MAX_AGE_DAYS=${RECORDING_MAX_AGE_DAYS:-14} \
|
||||||
|
@ -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
51
scripts/publish
Executable 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
|
@ -15,11 +15,6 @@ then
|
|||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "# pull newest git submodules"
|
|
||||||
git submodule init
|
|
||||||
git submodule update
|
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "# recreate docker-compose.yml"
|
echo "# recreate docker-compose.yml"
|
||||||
./scripts/generate-compose
|
./scripts/generate-compose
|
||||||
@ -28,18 +23,13 @@ else
|
|||||||
echo "# pull newest images"
|
echo "# pull newest images"
|
||||||
docker-compose pull --ignore-pull-failures
|
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)
|
COMMIT_HASH=$(git rev-parse --short HEAD)
|
||||||
BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD)
|
BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD)
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "-------------------------------------"
|
echo "-------------------------------------"
|
||||||
echo "images successfully rebuilt!"
|
echo "update is ready!"
|
||||||
echo "we are on $COMMIT_HASH ($BRANCH_NAME)"
|
echo "we are on $COMMIT_HASH ($BRANCH_NAME)"
|
||||||
echo ""
|
echo ""
|
||||||
echo "use following command for restarting bbb:"
|
echo "use following command for restarting bbb:"
|
||||||
|
48
scripts/upgrade-and-build
Executable file
48
scripts/upgrade-and-build
Executable 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
|
27
tags.env
Normal file
27
tags.env
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
# 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-08-meteor-290
|
||||||
|
|
||||||
|
# https://github.com/bigbluebutton/bigbluebutton
|
||||||
|
TAG_COMMON_MESSAGE=v2.5.10
|
||||||
|
TAG_APPS_AKKA=v2.5.10
|
||||||
|
TAG_FSESL_AKKA=v2.5.10
|
||||||
|
TAG_BBB_WEB=v2.5.11
|
||||||
|
TAG_HTML5=v2.5.10
|
||||||
|
TAG_RECORDINGS=v2.5.10
|
||||||
|
|
||||||
|
TAG_LEARNING_DASHBOARD=v2.5.10
|
||||||
|
TAG_FS_CONFIG=v2.5.7
|
||||||
|
|
||||||
|
|
||||||
|
# individual git submodules
|
||||||
|
# use `./scripts/checkout-submodules` to ensure, that the submodules
|
||||||
|
# match the provided tags here
|
||||||
|
TAG_WEBRTC_SFU=v2.8.7
|
||||||
|
TAG_WEBHOOKS=v2.6.0
|
||||||
|
TAG_PLAYBACK=v4.0.0
|
||||||
|
TAG_PADS=v1.4.0
|
Reference in New Issue
Block a user