diff --git a/.gitmodules b/.gitmodules
index f808c89..cc00452 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -7,3 +7,12 @@
[submodule "mod/etherpad/bbb-etherpad-plugin"]
path = mod/etherpad/bbb-etherpad-plugin
url = https://github.com/alangecker/bbb-etherpad-plugin
+[submodule "mod/bbb-pads/bbb-pads"]
+ path = mod/bbb-pads/bbb-pads
+ url = https://github.com/bigbluebutton/bbb-pads
+[submodule "mod/webhooks/bbb-webhooks"]
+ path = mod/webhooks/bbb-webhooks
+ url = https://github.com/bigbluebutton/bbb-webhooks
+[submodule "mod/nginx/bbb-playback"]
+ path = mod/nginx/bbb-playback
+ url = https://github.com/bigbluebutton/bbb-playback
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3015fd9..c2323f9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,14 @@
# Changelog
+## Unreleased
+- 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
diff --git a/README.md b/README.md
index d4fe3bb..1196dc9 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@
# 📦 BigBlueButton 2.4 Docker
-Version: 2.4.5 | [Changelog](CHANGELOG.md) | [Issues](https://github.com/bigbluebutton/docker/issues)
+Version: 2.5.1 | [Changelog](CHANGELOG.md) | [Issues](https://github.com/bigbluebutton/docker/issues)
## Features
- Easy installation
@@ -28,9 +28,11 @@ Version: 2.4.5 | [Changelog](CHANGELOG.md) | [Issues](https://github.com/bigblue
4. Ensure docker-compose works and that you use a version ≥ 1.28 : `$ docker-compose --version`
2. Clone this repository
```sh
- $ git clone -b main --recurse-submodules https://github.com/bigbluebutton/docker.git bbb-docker
+ $ git clone --recurse-submodules https://github.com/bigbluebutton/docker.git bbb-docker
$ cd bbb-docker
- $ git submodule update --init
+
+ # use the more stable main branch (sometimes older)
+ $ git checkout main
```
3. Run setup:
```bash
diff --git a/docker-compose.tmpl.yml b/docker-compose.tmpl.yml
index b33e7b4..a65ec62 100644
--- a/docker-compose.tmpl.yml
+++ b/docker-compose.tmpl.yml
@@ -7,8 +7,12 @@ version: '3.6'
# html5 templates
x-html5-backend: &html5backend
- build: mod/html5
- image: bbb-html5
+ build:
+ context: mod/html5
+ args:
+ BBB_BUILD_TAG: {{ .Env.BBB_BUILD_TAG }}
+ TAG_HTML5: {{ .Env.TAG_HTML5 }}
+ image: alangecker/bbb-docker-html5:{{ .Env.TAG_HTML5 }}
restart: unless-stopped
depends_on:
- redis
@@ -17,7 +21,6 @@ x-html5-backend: &html5backend
environment: &html5backend-env
DOMAIN: ${DOMAIN}
CLIENT_TITLE: ${CLIENT_TITLE}
- ETHERPAD_API_KEY: ${ETHERPAD_API_KEY}
LISTEN_ONLY_MODE: ${LISTEN_ONLY_MODE:-true}
DISABLE_ECHO_TEST: ${DISABLE_ECHO_TEST:-false}
AUTO_SHARE_WEBCAM: ${AUTO_SHARE_WEBCAM:-false}
@@ -39,7 +42,13 @@ x-html5-frontend: &html5frontend
services:
bbb-web:
- build: mod/bbb-web
+ build:
+ context: mod/bbb-web
+ args:
+ BBB_BUILD_TAG: {{ .Env.BBB_BUILD_TAG }}
+ TAG_COMMON_MESSAGE: {{ .Env.TAG_COMMON_MESSAGE }}
+ TAG_BBB_WEB: {{ .Env.TAG_BBB_WEB }}
+ image: alangecker/bbb-docker-web:{{ .Env.TAG_BBB_WEB }}
restart: unless-stopped
depends_on:
- redis
@@ -62,7 +71,6 @@ services:
volumes:
- bigbluebutton:/var/bigbluebutton
- vol-freeswitch:/var/freeswitch/meetings
- - vol-kurento:/var/kurento
networks:
bbb-net:
ipv4_address: 10.7.7.2
@@ -94,7 +102,12 @@ services:
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
cap_add:
- IPC_LOCK
@@ -119,7 +132,11 @@ services:
network_mode: host
nginx:
- build: mod/nginx
+ build:
+ context: mod/nginx
+ args:
+ TAG_LEARNING_DASHBOARD: {{ .Env.TAG_LEARNING_DASHBOARD }}
+ image: alangecker/bbb-docker-nginx:1.21-{{ .Env.TAG_PLAYBACK }}-{{ .Env.TAG_LEARNING_DASHBOARD }}
restart: unless-stopped
depends_on:
- etherpad
@@ -134,11 +151,12 @@ services:
- "host.docker.internal:10.7.7.1"
- "bbb-web:10.7.7.2"
- "etherpad:10.7.7.4"
- - "webrtc-sfu:10.7.7.10"
+ - "webrtc-sfu:10.7.7.1"
- "html5:10.7.7.11"
etherpad:
build: mod/etherpad
+ image: alangecker/bbb-docker-etherpad:1.8.18-2
restart: unless-stopped
depends_on:
- redis
@@ -148,8 +166,21 @@ services:
bbb-net:
ipv4_address: 10.7.7.4
+ bbb-pads:
+ build: mod/bbb-pads
+ image: alangecker/bbb-docker-pads:{{ .Env.TAG_PADS }}
+ restart: unless-stopped
+ depends_on:
+ - redis
+ - etherpad
+ environment:
+ ETHERPAD_API_KEY: ${ETHERPAD_API_KEY}
+ networks:
+ bbb-net:
+ ipv4_address: 10.7.7.18
+
redis:
- image: redis:6.2-alpine
+ image: redis:7.0-alpine
restart: unless-stopped
healthcheck:
test: ["CMD", "redis-cli", "ping"]
@@ -161,7 +192,8 @@ services:
ipv4_address: 10.7.7.5
mongodb:
- image: mongo:4.4
+ container_name: bbb-mongodb
+ image: mongo:5.0
restart: unless-stopped
volumes:
- ./mod/mongo/mongod.conf:/etc/mongod.conf
@@ -176,51 +208,57 @@ services:
bbb-net:
ipv4_address: 10.7.7.6
+ # TODO: remove as soon as not required anymore by webrtc-sfu
kurento:
- image: kurento/kurento-media-server:6.16
+ image: kurento/kurento-media-server:6.17
restart: unless-stopped
- environment:
- KMS_STUN_IP: ${STUN_IP}
- KMS_STUN_PORT: ${STUN_PORT}
- KMS_MIN_PORT: 24577
- KMS_MAX_PORT: 32768
- KMS_TURN_URL:
- KMS_NETWORK_INTERFACES: ${NETWORK_INTERFACE:-}
- GST_DEBUG: 3,Kurento*:4,kms*:4,KurentoWebSocketTransport:5
network_mode: host
volumes:
- vol-kurento:/var/kurento
webrtc-sfu:
- build: mod/webrtc-sfu
+ build:
+ context: mod/webrtc-sfu
+ args:
+ BBB_BUILD_TAG: {{ .Env.BBB_BUILD_TAG }}
+ image: alangecker/bbb-docker-webrtc-sfu:{{ .Env.TAG_WEBRTC_SFU }}
restart: unless-stopped
depends_on:
- redis
- - kurento
+ - freeswitch
environment:
- CLIENT_HOST: 0.0.0.0
- KURENTO_NAME: kurento
- REDIS_HOST: redis
- FREESWITCH_IP: host.docker.internal
+ CLIENT_HOST: 10.7.7.1
+ REDIS_HOST: 10.7.7.5
+ FREESWITCH_IP: 10.7.7.1
FREESWITCH_SIP_IP: ${EXTERNAL_IPv4}
- ESL_IP: host.docker.internal
+ ESL_IP: 10.7.7.1
ESL_PASSWORD: ${FSESL_PASSWORD:-ClueCon}
- LOG_LEVEL: info
- NODE_CONFIG: '{"kurento":[{"ip":"${EXTERNAL_IPv4}","url":"ws://kurento:8888/kurento"}]}'
- ports:
- - "127.0.0.1:3008:3008"
- extra_hosts:
- - host.docker.internal:10.7.7.1
- - kurento:10.7.7.1
- networks:
- bbb-net:
- ipv4_address: 10.7.7.10
+ # TODO: add mediasoup IPv6
+ # TODO: can listen to 0.0.0.0 for nat support? https://github.com/versatica/mediasoup/issues/487
+ {{ if .Env.EXTERNAL_IPv6 }}
+ MS_WEBRTC_LISTEN_IPS: '[{"ip":"{{ .Env.EXTERNAL_IPv6 }}", "announcedIp":"{{ .Env.EXTERNAL_IPv6 }}"}, {"ip":"${EXTERNAL_IPv4}", "announcedIp":"${EXTERNAL_IPv4}"}]'
+ {{else}}
+ MS_WEBRTC_LISTEN_IPS: '[{"ip":"${EXTERNAL_IPv4}", "announcedIp":"${EXTERNAL_IPv4}"}]'
+ {{end}}
+ MS_RTP_LISTEN_IP: '{"ip":"0.0.0.0", "announcedIp":"${EXTERNAL_IPv4}"}'
+ volumes:
+ - vol-mediasoup:/var/mediasoup
+ tmpfs:
+ - /var/log/bbb-webrtc-sfu
+ network_mode: host
fsesl-akka:
- build: mod/fsesl-akka
+ build:
+ context: mod/fsesl-akka
+ args:
+ BBB_BUILD_TAG: {{ .Env.BBB_BUILD_TAG }}
+ TAG_COMMON_MESSAGE: {{ .Env.TAG_COMMON_MESSAGE }}
+ TAG_FSESL_AKKA: {{ .Env.TAG_FSESL_AKKA }}
+ image: alangecker/bbb-docker-fsesl-akka:{{ .Env.TAG_FSESL_AKKA }}
restart: unless-stopped
depends_on:
- redis
+ - freeswitch
environment:
FSESL_PASSWORD: ${FSESL_PASSWORD:-ClueCon}
networks:
@@ -228,7 +266,13 @@ services:
ipv4_address: 10.7.7.14
apps-akka:
- build: mod/apps-akka
+ build:
+ context: mod/apps-akka
+ args:
+ BBB_BUILD_TAG: {{ .Env.BBB_BUILD_TAG }}
+ TAG_COMMON_MESSAGE: {{ .Env.TAG_COMMON_MESSAGE }}
+ TAG_APPS_AKKA: {{ .Env.TAG_APPS_AKKA }}
+ image: alangecker/bbb-docker-apps-akka:{{ .Env.TAG_APPS_AKKA }}
restart: unless-stopped
depends_on:
- redis
@@ -243,6 +287,7 @@ services:
jodconverter:
build: mod/jodconverter
+ image: alangecker/bbb-docker-jodconverter:latest
restart: unless-stopped
tmpfs:
- /tmp
@@ -256,12 +301,14 @@ services:
periodic:
build: mod/periodic
+ image: alangecker/bbb-docker-periodic:v2.5.0-rc.1
restart: unless-stopped
depends_on:
- mongodb
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- bigbluebutton:/var/bigbluebutton
+ - vol-mediasoup:/var/mediasoup
tmpfs:
- /var/log/bigbluebutton
environment:
@@ -275,15 +322,22 @@ services:
{{ if isTrue .Env.ENABLE_RECORDING }}
# recordings
recordings:
- build: mod/recordings
+ build:
+ context: mod/recordings
+ args:
+ BBB_BUILD_TAG: {{ .Env.BBB_BUILD_TAG }}
+ TAG_RECORDINGS: {{ .Env.TAG_RECORDINGS }}
+ image: alangecker/bbb-docker-recordings:{{ .Env.TAG_RECORDINGS }}
restart: unless-stopped
depends_on:
- redis
+ - bbb-pads
environment:
DOMAIN: ${DOMAIN}
volumes:
- bigbluebutton:/var/bigbluebutton
- vol-freeswitch:/var/freeswitch/meetings
+ - vol-mediasoup:/var/mediasoup
- vol-kurento:/var/kurento
tmpfs:
- /var/log/bigbluebutton
@@ -297,6 +351,7 @@ services:
# webhooks
webhooks:
build: mod/webhooks
+ image: alangecker/bbb-docker-webhooks:{{ .Env.TAG_WEBHOOKS }}
restart: unless-stopped
environment:
DOMAIN: ${DOMAIN}
@@ -332,7 +387,7 @@ services:
{{ if isTrue .Env.ENABLE_COTURN }}
# coturn
coturn:
- image: instrumentisto/coturn:4.5
+ image: coturn/coturn:4.5-alpine
restart: unless-stopped
command:
- "--external-ip=${EXTERNAL_IPv4}/${EXTERNAL_IPv4}"
@@ -349,6 +404,7 @@ services:
- ./mod/coturn/turnserver.conf:/etc/coturn/turnserver.conf
environment:
ENABLE_HTTPS_PROXY:
+ user: root
network_mode: host
{{end}}
@@ -393,7 +449,7 @@ services:
{{ if isTrue .Env.ENABLE_PROMETHEUS_EXPORTER }}
# prometheus
prometheus-exporter:
- image: greenstatic/bigbluebutton-exporter:v0.7.0-preview2
+ image: greenstatic/bigbluebutton-exporter:latest
restart: unless-stopped
environment:
API_BASE_URL: http://10.7.7.1:48087/bigbluebutton/api/
@@ -413,6 +469,7 @@ volumes:
bigbluebutton:
vol-freeswitch:
vol-kurento:
+ vol-mediasoup:
html5-static:
{{ if isTrue .Env.ENABLE_HTTPS_PROXY }}
ssl_data:
diff --git a/docs/development.md b/docs/development.md
index 4985548..d9dcb09 100644
--- a/docs/development.md
+++ b/docs/development.md
@@ -1,5 +1,13 @@
# bbb-docker Development
+## Basics
+normally people start BBB with the pre-built docker images, but for developing you need to build them by yourself. For that you need to ensure that the submodules are also checked out:
+
+```sh
+$ git submodule update --init
+```
+
+
## Running
you can run bbb-docker locally without any certificate issues with following `.env` configurations:
@@ -33,6 +41,8 @@ RAILS_SECRET=SuperRailsSecret
- regenerate `docker-compose.yml` \
`$ ./scripts/generate-compose`
+- build the images \
+ `$ docker-compose build`
- you can than start it with \
`$ docker-compose up -d`
- view the logs with \
@@ -58,13 +68,14 @@ RAILS_SECRET=SuperRailsSecret
## How to do create a new update for a newer BBB release?
This always consists out of following steps
1. **Get an understanding about changes that happened and find out what changes to bbb-docker that require.** \
- * Sometimes there are changes made which are not accessible in the [bigbluebutton/bigbluebutton](https://github.com/bigbluebutton/bigbluebutton) repo, so you should rather look through all the related commits in [alangecker/bbb-packages](https://github.com/alangecker/bbb-packages/commits/master)
- * Before being overwhelmed: All these compiled `.js`,`.class`,etc. files are irrelevant to check! :)
+ * main source for that are the release notes in https://github.com/bigbluebutton/bigbluebutton/releases
2. **Apply these changes to this project.**
- * Quite often you only need to set `TAG` to the corresponding release tag in [bigbluebutton/bigbluebutton](https://github.com/bigbluebutton/bigbluebutton) like `v2.2.31`. To avoid the unnecessary recreation of images, only change the TAG of those components, which actually received a change.
- * New config variables are also quite common
- * don't forget to checkout a newer version of `bbb-webrtc-sfu` if it also happened in the release. you can find out what the current version is [here](https://github.com/alangecker/bbb-packages/blob/v2.3.x/bbb-webrtc-sfu/data/usr/local/bigbluebutton/bbb-webrtc-sfu/package.json)
- * if available, you can also think about switching to more recent images of kurento, etherpad, nginx, etc.
+ * Often you only need to update the TAGS in `tags.env`
+ * make sure only to switch to a newer tag if there were changes made avoid creating new (partialy big) images unnecessarily
+ * Also update submodules to the new state.
+ * List of all submodules `git submodule`
+ * for the main submodules you can use `./scripts/checkout-submodules` to checkout the tags specified in `tags.env`
+
3. Test everything (with firefox **and** chromium/chrome)
* Audio
* Video
diff --git a/docs/network-config.md b/docs/network-config.md
index 889edb3..8382fb9 100644
--- a/docs/network-config.md
+++ b/docs/network-config.md
@@ -4,6 +4,7 @@ Services as configured.
|Service | Network | IP address | Other Option |
--- | --- | --- | ---
| bbb-web | bbb-net | 10.7.7.2 |
+| bbb-pads | bbb-net | 10.7.7.18 |
| html5-backend-{{$i}} | bbb-net | 10.7.7.{{add 100 $i}}| Port {{ add 4000 $i }}
| html5-frontend-{{$i}}| bbb-net | 10.7.7.{{add 200 $i}}| Port {{ add 4100 $i }}
| freeswitch| network_mode: host | |
@@ -12,7 +13,7 @@ Services as configured.
| redis | bbb-net | 10.7.7.5|
| mongodb | bbb-net | 10.7.7.6|
| kurento | network-mode: host | |
-| webrtc-sfu | bbb-net | 10.7.7.10| ports: - "127.0.0.1:3008:3008"
extra_hosts:
- host.docker.internal:10.7.7.1
- kurento:10.7.7.1
+| webrtc-sfu | bbb-net | | network_mode: host
| fsesl-akka | bbb-net | 10.7.7.14 |
| apps-akka | bbb-net | 10.7.7.15 |
| libreoffice | bbb-net | 10.7.7.7 |
diff --git a/mod/apps-akka/Dockerfile b/mod/apps-akka/Dockerfile
index 038c30a..3ad648e 100644
--- a/mod/apps-akka/Dockerfile
+++ b/mod/apps-akka/Dockerfile
@@ -1,21 +1,19 @@
-FROM mozilla/sbt:8u212_1.2.8 AS builder
+ARG BBB_BUILD_TAG
+FROM gitlab.senfcall.de:5050/senfcall-public/docker-bbb-build:$BBB_BUILD_TAG AS builder
-RUN apt-get update && apt-get install -y subversion
+ARG TAG_COMMON_MESSAGE
# download bbb-common-message
-ENV TAG_COMMON_MESSAGE v2.4.5
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_COMMON_MESSAGE/bbb-common-message /bbb-common-message \
- && rm -rf /bbb-common-message/.svn
-
-# compile bbb-common-message
-RUN cd /bbb-common-message \
- && ./deploy.sh
-
+ && cd /bbb-common-message \
+ && ./deploy.sh \
+ && rm -rf /bbb-common-message
# ===================================================
-ENV TAG v2.4.5
-RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/akka-bbb-apps /source \
+ARG TAG_APPS_AKKA
+
+RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_APPS_AKKA/akka-bbb-apps /source \
&& rm -rf /source/.svn
# compile and unzip bin
@@ -25,24 +23,12 @@ RUN cd /source \
# ===================================================
-FROM openjdk:8-jre-slim-bullseye
-
-RUN apt update && apt-get install -y wget gosu
-
-# install dockerize
-ENV DOCKERIZE_VERSION v0.6.1
-RUN wget -q https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
- && tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
- && rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz
-
-RUN groupadd -g 998 bigbluebutton \
- && useradd -m -u 998 -g bigbluebutton bigbluebutton
+FROM alangecker/bbb-docker-base-java
COPY --from=builder /bbb-apps-akka-0.0.4 /bbb-apps-akka
COPY bbb-apps-akka.conf /etc/bigbluebutton/bbb-apps-akka.conf.tmpl
COPY logback.xml /bbb-apps-akka/conf/logback.xml
+COPY entrypoint.sh /entrypoint.sh
-WORKDIR /bbb-apps-akka
-CMD dockerize \
- -template /etc/bigbluebutton/bbb-apps-akka.conf.tmpl:/etc/bigbluebutton/bbb-apps-akka.conf \
- gosu bigbluebutton /bbb-apps-akka/bin/bbb-apps-akka
\ No newline at end of file
+USER bigbluebutton
+ENTRYPOINT /entrypoint.sh
diff --git a/mod/apps-akka/bbb-apps-akka.conf b/mod/apps-akka/bbb-apps-akka.conf
index a8c3499..d05cebc 100644
--- a/mod/apps-akka/bbb-apps-akka.conf
+++ b/mod/apps-akka/bbb-apps-akka.conf
@@ -6,8 +6,8 @@ redis {
}
services {
- bbbWebAPI="https://{{ .Env.DOMAIN }}/bigbluebutton/api"
- sharedSecret="{{ .Env.SHARED_SECRET }}"
+ bbbWebAPI="https://DOMAIN/bigbluebutton/api"
+ sharedSecret="SHARED_SECRET"
}
http {
interface = "0.0.0.0"
diff --git a/mod/apps-akka/entrypoint.sh b/mod/apps-akka/entrypoint.sh
new file mode 100755
index 0000000..3938a7c
--- /dev/null
+++ b/mod/apps-akka/entrypoint.sh
@@ -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
\ No newline at end of file
diff --git a/mod/base-java/Dockerfile b/mod/base-java/Dockerfile
new file mode 100644
index 0000000..571126c
--- /dev/null
+++ b/mod/base-java/Dockerfile
@@ -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
+
+
diff --git a/mod/bbb-pads/Dockerfile b/mod/bbb-pads/Dockerfile
new file mode 100644
index 0000000..fdabe95
--- /dev/null
+++ b/mod/bbb-pads/Dockerfile
@@ -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
\ No newline at end of file
diff --git a/mod/bbb-pads/bbb-pads b/mod/bbb-pads/bbb-pads
new file mode 160000
index 0000000..3eb45a5
--- /dev/null
+++ b/mod/bbb-pads/bbb-pads
@@ -0,0 +1 @@
+Subproject commit 3eb45a5099fc3e9def055a8d236e52098777eb95
diff --git a/mod/bbb-pads/entrypoint.sh b/mod/bbb-pads/entrypoint.sh
new file mode 100755
index 0000000..9f93722
--- /dev/null
+++ b/mod/bbb-pads/entrypoint.sh
@@ -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
\ No newline at end of file
diff --git a/mod/bbb-web/Dockerfile b/mod/bbb-web/Dockerfile
index 2f4c648..b27e0cc 100644
--- a/mod/bbb-web/Dockerfile
+++ b/mod/bbb-web/Dockerfile
@@ -1,33 +1,20 @@
-FROM mozilla/sbt:8u212_1.2.8 AS builder
+ARG BBB_BUILD_TAG
+FROM gitlab.senfcall.de:5050/senfcall-public/docker-bbb-build:$BBB_BUILD_TAG AS builder
-RUN apt-get update && apt-get install -y subversion
+ARG TAG_COMMON_MESSAGE
# download bbb-common-message
-ENV TAG_COMMON_MESSAGE v2.4.5
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_COMMON_MESSAGE/bbb-common-message /bbb-common-message \
- && rm -rf /bbb-common-message/.svn
-
-# compile bbb-common-message
-RUN cd /bbb-common-message \
- && ./deploy.sh
+ && cd /bbb-common-message \
+ && ./deploy.sh \
+ && rm -rf /bbb-common-message
# ===================================================
-# install grails
-RUN cd /opt \
- && wget -q https://github.com/grails/grails-core/releases/download/v3.3.9/grails-3.3.9.zip \
- && unzip grails-3.3.9.zip
-ENV PATH="/opt/grails-3.3.9/bin:${PATH}"
-
-# install gradle
-RUN cd /opt \
- && wget -q https://services.gradle.org/distributions/gradle-6.7-bin.zip \
- && unzip gradle-6.7-bin
-ENV PATH="/opt/gradle-6.7/bin:${PATH}"
+ARG TAG_BBB_WEB
# download bbb-common-web
-ENV TAG_COMMON_WEB v2.4.5
-RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_COMMON_WEB/bbb-common-web /bbb-common-web \
+RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_BBB_WEB/bbb-common-web /bbb-common-web \
&& rm -rf /bbb-common-message/.svn
# compile bbb-common-web
@@ -35,8 +22,7 @@ RUN cd /bbb-common-web \
&& ./deploy.sh
# download bbb-web
-ENV TAG_WEB v2.4.5
-RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_WEB/bigbluebutton-web /bbb-web \
+RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_BBB_WEB/bigbluebutton-web /bbb-web \
&& rm -rf /bbb-web/.svn
# compile bbb-web
@@ -50,28 +36,7 @@ RUN unzip -q /bbb-web/build/libs/bigbluebutton-0.10.0.war -d /dist
# ===================================================
-FROM openjdk:8-jre-slim-bullseye
-
-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
-
+FROM alangecker/bbb-docker-base-java
# add blank presentation files and allow conversation to pdf/svg
RUN mkdir -p /usr/share/bigbluebutton/blank \
diff --git a/mod/coturn/entrypoint.sh b/mod/coturn/entrypoint.sh
index c916cee..62cd126 100755
--- a/mod/coturn/entrypoint.sh
+++ b/mod/coturn/entrypoint.sh
@@ -1,7 +1,7 @@
#!/bin/sh
set -e
+apk add jq su-exec
if [ "$ENABLE_HTTPS_PROXY" == true ]; then
- apk add jq
while [ ! -f /etc/resty-auto-ssl/storage/file/*latest ]
do
@@ -28,4 +28,4 @@ if [ "${1:0:1}" == '-' ]; then
set -- turnserver "$@"
fi
-exec $(eval "echo $@")
\ No newline at end of file
+su-exec nobody $(eval "echo $@")
\ No newline at end of file
diff --git a/mod/etherpad/Dockerfile b/mod/etherpad/Dockerfile
index 9462f8e..7573eed 100644
--- a/mod/etherpad/Dockerfile
+++ b/mod/etherpad/Dockerfile
@@ -1,4 +1,4 @@
-FROM etherpad/etherpad:1.8.17
+FROM etherpad/etherpad:1.8.18
USER root
@@ -8,10 +8,11 @@ RUN apt-get update \
USER etherpad
RUN npm install \
- ep_cursortrace@3.1.15 \
+ ep_cursortrace@3.1.16 \
git+https://github.com/mconf/ep_pad_ttl.git#360136cd38493dd698435631f2373cbb7089082d \
- git+https://github.com/mconf/ep_redis_publisher.git#1d903bf900dd53ebc5347f9583b6e240cf754d63 \
- ep_disable_chat@0.0.7 \
+ git+https://github.com/mconf/ep_redis_publisher.git#a30a48e4bc1e501b5b102884b9a0b26c30798484 \
+ ep_disable_chat@0.0.8 \
+ ep_auth_session@1.1.1 \
# remove npm lockfile, because somehow it prevents etherpad from detecting the manual added plugin ep_bigbluebutton_patches
&& rm package-lock.json
diff --git a/mod/etherpad/bbb-etherpad-skin b/mod/etherpad/bbb-etherpad-skin
index 91b052c..8328b77 160000
--- a/mod/etherpad/bbb-etherpad-skin
+++ b/mod/etherpad/bbb-etherpad-skin
@@ -1 +1 @@
-Subproject commit 91b052c2cc4c169f2e381538e4342e894f944dbe
+Subproject commit 8328b7744abe664e44b7802142eaa48fade63eae
diff --git a/mod/etherpad/settings.json b/mod/etherpad/settings.json
index e04f529..11442c6 100644
--- a/mod/etherpad/settings.json
+++ b/mod/etherpad/settings.json
@@ -280,7 +280,7 @@
* If this option is enabled, a user must have a session to access pads.
* This effectively allows only group pads to be accessed.
*/
- "requireSession": false,
+ "requireSession": true,
/*
* Users may edit pads but not create new ones.
@@ -288,7 +288,7 @@
* Pad creation is only via the API.
* This applies both to group pads and regular pads.
*/
- "editOnly": false,
+ "editOnly": true,
/*
* If true, all css & js will be minified before sending to the client.
@@ -576,9 +576,10 @@
"toolbar": {
"left": [
["bold", "italic", "underline", "strikethrough"],
- ["orderedlist", "unorderedlist", "undo", "redo"]
+ ["orderedlist", "unorderedlist", "undo", "redo"],
+ ["importexport"]
],
- "right": [["importexport"]]
+ "right": [[]]
},
/*
diff --git a/mod/freeswitch/Dockerfile b/mod/freeswitch/Dockerfile
index 98b9b1f..6480b23 100644
--- a/mod/freeswitch/Dockerfile
+++ b/mod/freeswitch/Dockerfile
@@ -5,11 +5,7 @@ RUN apt-get update && \
apt-get install -y --no-install-recommends \
subversion curl wget ca-certificates gnupg gnupg2 lsb-release unzip
-# 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
+COPY --from=alangecker/bbb-docker-base-java /usr/local/bin/dockerize /usr/local/bin/dockerize
# install freeswitch
@@ -47,8 +43,8 @@ RUN wget -q https://gitlab.senfcall.de/senfcall-public/mute-and-unmute-sounds/-/
# git sparse-checkout is not yet available with buster and there
# is no other sane way of downloading a single directory via git
-ENV TAG v2.3.4
-RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/bbb-voice-conference/config/freeswitch/conf /etc/freeswitch \
+ARG TAG_FS_CONFIG
+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
# the current available freeswitch-mod-opusfile is broken,
diff --git a/mod/freeswitch/conf/autoload_configs/acl.conf.xml b/mod/freeswitch/conf/autoload_configs/acl.conf.xml
index 41b2095..78628d8 100644
--- a/mod/freeswitch/conf/autoload_configs/acl.conf.xml
+++ b/mod/freeswitch/conf/autoload_configs/acl.conf.xml
@@ -23,6 +23,7 @@
+
diff --git a/mod/fsesl-akka/Dockerfile b/mod/fsesl-akka/Dockerfile
index 428b39d..61494d1 100644
--- a/mod/fsesl-akka/Dockerfile
+++ b/mod/fsesl-akka/Dockerfile
@@ -1,28 +1,23 @@
-FROM mozilla/sbt:8u212_1.2.8 AS builder
+ARG BBB_BUILD_TAG
+FROM gitlab.senfcall.de:5050/senfcall-public/docker-bbb-build:$BBB_BUILD_TAG AS builder
-RUN apt-get update && apt-get install -y subversion
+ARG TAG_COMMON_MESSAGE
# download bbb-common-message
-ENV TAG_COMMON_MESSAGE v2.4.5
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_COMMON_MESSAGE/bbb-common-message /bbb-common-message \
- && rm -rf /bbb-common-message/.svn
-
-# compile bbb-common-message
-RUN cd /bbb-common-message \
- && ./deploy.sh
-
+ && cd /bbb-common-message \
+ && ./deploy.sh \
+ && rm -rf /bbb-common-message
# ===================================================
-ENV TAG_FSESL v2.4.5
-RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_FSESL/bbb-fsesl-client /bbb-fsesl-client \
+ARG TAG_FSESL_AKKA
+RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_FSESL_AKKA/bbb-fsesl-client /bbb-fsesl-client \
&& rm -rf /bbb-fsesl-client/.svn
RUN cd /bbb-fsesl-client \
&& ./deploy.sh
-
-ENV TAG v2.4.5
-RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/akka-bbb-fsesl /source \
+RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_FSESL_AKKA/akka-bbb-fsesl /source \
&& rm -rf /source/.svn
# compile and unzip bin
@@ -32,25 +27,12 @@ RUN unzip /source/target/universal/bbb-fsesl-akka-0.0.2.zip -d /
# # ===================================================
-FROM openjdk:8-jre-slim-bullseye
-
-RUN apt update && apt-get install -y wget gosu
-
-# install dockerize
-ENV DOCKERIZE_VERSION v0.6.1
-RUN wget -q https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
- && tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
- && rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz
-
-
-RUN groupadd -g 1007 fsesl-akka \
- && useradd -m -u 1007 -g fsesl-akka fsesl-akka
+FROM alangecker/bbb-docker-base-java
COPY --from=builder /bbb-fsesl-akka-0.0.2 /bbb-fsesl-akka
COPY bbb-fsesl-akka.conf /etc/bigbluebutton/bbb-fsesl-akka.conf.tmpl
COPY logback.xml /bbb-fsesl-akka/conf/logback.xml
+COPY entrypoint.sh /entrypoint.sh
-WORKDIR /bbb-fsesl-akka
-CMD dockerize \
- -template /etc/bigbluebutton/bbb-fsesl-akka.conf.tmpl:/etc/bigbluebutton/bbb-fsesl-akka.conf \
- gosu fsesl-akka /bbb-fsesl-akka/bin/bbb-fsesl-akka
\ No newline at end of file
+USER bigbluebutton
+ENTRYPOINT /entrypoint.sh
\ No newline at end of file
diff --git a/mod/fsesl-akka/bbb-fsesl-akka.conf b/mod/fsesl-akka/bbb-fsesl-akka.conf
index 59c2948..ed1b475 100644
--- a/mod/fsesl-akka/bbb-fsesl-akka.conf
+++ b/mod/fsesl-akka/bbb-fsesl-akka.conf
@@ -5,7 +5,7 @@ include "/bbb-fsesl-akka/conf/application.conf"
freeswitch {
esl {
host="10.7.7.1"
- password="{{ default .Env.FSESL_PASSWORD "ClueCon" }}"
+ password="FSESL_PASSWORD"
}
}
diff --git a/mod/fsesl-akka/entrypoint.sh b/mod/fsesl-akka/entrypoint.sh
new file mode 100755
index 0000000..2000ce3
--- /dev/null
+++ b/mod/fsesl-akka/entrypoint.sh
@@ -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
\ No newline at end of file
diff --git a/mod/html5/Dockerfile b/mod/html5/Dockerfile
index 0a26397..9364fed 100644
--- a/mod/html5/Dockerfile
+++ b/mod/html5/Dockerfile
@@ -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
-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.5
-RUN cd ~ \
- && svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/bigbluebutton-html5 \
- && mv ~/bigbluebutton-html5 ~/source \
- && cd ~/source \
- && ~/.meteor/meteor npm ci --production \
- && METEOR_DISABLE_OPTIMISTIC_CACHING=1 ~/.meteor/meteor build --architecture os.linux.x86_64 --directory ~/app \
- && rm -rf ~/source
-
-RUN cd ~/app/bundle/programs/server \
+RUN cd /app/bundle/programs/server \
&& npm install --production
+RUN 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.19.1-alpine
RUN addgroup -g 2000 meteor && \
adduser -D -u 2001 -G meteor meteor && \
apk add su-exec
-COPY --from=builder /usr/local/bin/dockerize /usr/local/bin/dockerize
-COPY --from=builder --chown=meteor:meteor /home/meteor/app/bundle /app
+COPY --from=alangecker/bbb-docker-base-java /usr/local/bin/dockerize /usr/local/bin/dockerize
+COPY --from=builder --chown=meteor:meteor /app/bundle /app
COPY entrypoint.sh /entrypoint.sh
COPY bbb-html5.yml /app/bbb-html5.yml.tmpl
ENTRYPOINT ["/entrypoint.sh"]
-
-# lets set the tag again, so that it is include in the image for later version retrieval
-ENV TAG v2.4.5
diff --git a/mod/html5/bbb-html5.yml b/mod/html5/bbb-html5.yml
index 5194e43..baf6de8 100644
--- a/mod/html5/bbb-html5.yml
+++ b/mod/html5/bbb-html5.yml
@@ -1,5 +1,6 @@
public:
app:
+ bbbServerVersion: {{ .Env.TAG_HTML5 }}-docker
listenOnlyMode: {{ .Env.LISTEN_ONLY_MODE }}
skipCheck: {{ .Env.DISABLE_ECHO_TEST }}
clientTitle: {{ .Env.CLIENT_TITLE }}
@@ -13,15 +14,11 @@ public:
chat:
enabled: {{ .Env.CHAT_ENABLED }}
startClosed: {{ .Env.CHAT_START_CLOSED }}
- note:
+ pads:
url: https://{{ .Env.DOMAIN }}/pad
private:
app:
host: 0.0.0.0
- etherpad:
- apikey: {{ .Env.ETHERPAD_API_KEY }}
- host: etherpad
- port: 9001
redis:
host: redis
port: '6379'
diff --git a/mod/html5/entrypoint.sh b/mod/html5/entrypoint.sh
index bb4d61a..ce10bdb 100755
--- a/mod/html5/entrypoint.sh
+++ b/mod/html5/entrypoint.sh
@@ -11,7 +11,7 @@ export BIND_IP=0.0.0.0
export LANG=en_US.UTF-8
export INSTANCE_MAX=1
export ENVIRONMENT_TYPE=production
-export NODE_VERSION=node-v12.16.1-linux-x64
+export NODE_VERSION=node-v14.19.1-linux-x64
export BBB_HTML5_LOCAL_SETTINGS=/app/bbb-html5.yml
if [ "$DEV_MODE" == true ]; then
@@ -26,7 +26,7 @@ fi
# if container is the first frontend, do some additional tasks
if [ "$BBB_HTML5_ROLE" == "frontend" ] && [ "$INSTANCE_ID" == "1" ]; then
- # delete potential old settings.yml
+
# copy static files into volume for direct access by nginx
# https://github.com/bigbluebutton/bigbluebutton/issues/10739
diff --git a/mod/mongo/init-replica.sh b/mod/mongo/init-replica.sh
index e572796..188cdda 100755
--- a/mod/mongo/init-replica.sh
+++ b/mod/mongo/init-replica.sh
@@ -4,10 +4,20 @@ set -e
host=${HOSTNAME:-$(hostname -f)}
+# shut down again
+mongod --pidfilepath /tmp/docker-entrypoint-temp-mongod.pid --shutdown
+# restart again binding to 0.0.0.0 to allow a replset with 10.7.7.6
+mongod --oplogSize 8 --replSet rs0 --noauth \
+ --config /tmp/docker-entrypoint-temp-config.json \
+ --bind_ip 0.0.0.0 --port 27017 \
+ --tlsMode disabled \
+ --logpath /proc/1/fd/1 --logappend \
+ --pidfilepath /tmp/docker-entrypoint-temp-mongod.pid --fork
+
# init replset with defaults
-mongo local --eval "rs.initiate({
+mongo 10.7.7.6 --eval "rs.initiate({
_id: 'rs0',
- members: [ { _id: 0, host: '127.0.0.1:27017' } ]
+ members: [ { _id: 0, host: '10.7.7.6:27017' } ]
})"
echo "Waiting to become a master"
diff --git a/mod/nginx/Dockerfile b/mod/nginx/Dockerfile
index 4beccb2..e7788eb 100644
--- a/mod/nginx/Dockerfile
+++ b/mod/nginx/Dockerfile
@@ -4,13 +4,11 @@ RUN apk add subversion git
# --------------------
-ENV TAG_LEARNING_DASHBOARD v2.4.5
+ARG TAG_LEARNING_DASHBOARD
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_LEARNING_DASHBOARD/bbb-learning-dashboard /bbb-learning-dashboard && rm -r /bbb-learning-dashboard/.svn
RUN cd /bbb-learning-dashboard && npm ci && npm run build
-ENV TAG_PLAYBACK v3.3.0
-ENV REACT_APP_BBB_PLAYBACK_BUILD=$TAG_PLAYBACK
-RUN svn checkout https://github.com/bigbluebutton/bbb-playback/tags/$TAG_PLAYBACK /bbb-playback && rm -r /bbb-playback/.svn
+COPY ./bbb-playback /bbb-playback
RUN cd /bbb-playback && npm ci && npm run build
# --------------------
diff --git a/mod/nginx/bbb-playback b/mod/nginx/bbb-playback
new file mode 160000
index 0000000..4031c8e
--- /dev/null
+++ b/mod/nginx/bbb-playback
@@ -0,0 +1 @@
+Subproject commit 4031c8e5ff80c05cc6dec9b977c9df4a2cc51b35
diff --git a/mod/nginx/bbb/notes.nginx b/mod/nginx/bbb/notes.nginx
index 95bde11..bc37eed 100644
--- a/mod/nginx/bbb/notes.nginx
+++ b/mod/nginx/bbb/notes.nginx
@@ -1,5 +1,10 @@
# https://github.com/ether/etherpad-lite/wiki/How-to-put-Etherpad-Lite-behind-a-reverse-Proxy
location /pad/p/ {
+ # Avoid setting the user name from the embedded URL
+ if ($arg_userName) {
+ return 401;
+ }
+
rewrite /pad/p/(.*) /p/$1 break;
rewrite ^/pad/p$ /pad/p/ permanent;
proxy_pass http://etherpad:9001/p;
@@ -13,7 +18,17 @@ location /pad/p/ {
proxy_set_header X-Forwarded-Proto $scheme; # for EP to set secure cookie flag when https is used
proxy_http_version 1.1;
- auth_request /bigbluebutton/connection/validatePad;
+ auth_request /bigbluebutton/connection/checkAuthorization;
+ auth_request_set $auth_status $upstream_status;
+}
+
+location /pad/auth_session {
+ rewrite /pad/auth_session(.*) /auth_session$1 break;
+ proxy_pass http://etherpad:9001/;
+ proxy_pass_header Server;
+ proxy_set_header Host $host;
+ proxy_buffering off;
+ auth_request /bigbluebutton/connection/checkAuthorization;
auth_request_set $auth_status $upstream_status;
}
diff --git a/mod/nginx/bbb/podcast.nginx b/mod/nginx/bbb/podcast.nginx
new file mode 100644
index 0000000..7d8c0a8
--- /dev/null
+++ b/mod/nginx/bbb/podcast.nginx
@@ -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 .
+#
+
+ location /podcast {
+ root /var/bigbluebutton/published;
+ index index.html index.htm;
+ }
\ No newline at end of file
diff --git a/mod/nginx/bbb/webrtc-sfu.nginx b/mod/nginx/bbb/webrtc-sfu.nginx
index 71a5a00..c226485 100644
--- a/mod/nginx/bbb/webrtc-sfu.nginx
+++ b/mod/nginx/bbb/webrtc-sfu.nginx
@@ -6,7 +6,7 @@ location /bbb-webrtc-sfu {
auth_request_set $meeting_id $sent_http_meeting_id;
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_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
diff --git a/mod/periodic/Dockerfile b/mod/periodic/Dockerfile
index 56fea76..184cc89 100644
--- a/mod/periodic/Dockerfile
+++ b/mod/periodic/Dockerfile
@@ -1,16 +1,9 @@
FROM debian:bullseye-slim
-# -- install mongo cli
-RUN apt-get update \
- && apt-get install -y wget libcurl4 \
- && wget https://repo.mongodb.org/apt/debian/dists/buster/mongodb-org/4.2/main/binary-amd64/mongodb-org-shell_4.2.6_amd64.deb \
- && dpkg -i mongodb*.deb \
- && rm mongodb*.deb
-
# -- install docker cli
COPY --from=library/docker:latest /usr/local/bin/docker /usr/bin/docker
-COPY bbb-remove-old-recordings bbb-restart-kms bbb-resync-freeswitch entrypoint.sh /
+COPY bbb-remove-old-recordings bbb-resync-freeswitch entrypoint.sh /
RUN chmod +x bbb-remove-old-recordings
diff --git a/mod/periodic/bbb-restart-kms b/mod/periodic/bbb-restart-kms
deleted file mode 100755
index 3787ade..0000000
--- a/mod/periodic/bbb-restart-kms
+++ /dev/null
@@ -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
diff --git a/mod/periodic/bbb-resync-freeswitch b/mod/periodic/bbb-resync-freeswitch
index 5e0c138..ee3d087 100755
--- a/mod/periodic/bbb-resync-freeswitch
+++ b/mod/periodic/bbb-resync-freeswitch
@@ -2,5 +2,4 @@
# https://github.com/bigbluebutton/bigbluebutton/pull/9597/files
-CONTAINER_ID=$(docker ps | grep freeswitch | awk '{print $1}')
-docker exec -it $CONTAINER_ID fs_cli -H 10.7.7.1 -P 8021 -x 'fsctl sync_clock_when_idle'
\ No newline at end of file
+docker exec -it bbb-freeswitch fs_cli -H 10.7.7.1 -P 8021 -x 'fsctl sync_clock_when_idle'
\ No newline at end of file
diff --git a/mod/periodic/entrypoint.sh b/mod/periodic/entrypoint.sh
index dd060d8..cc3bbb0 100755
--- a/mod/periodic/entrypoint.sh
+++ b/mod/periodic/entrypoint.sh
@@ -7,8 +7,6 @@ history=5
while :
do
- # restart kurento after 24h
- /bbb-restart-kms
# resync freeswitch
/bbb-resync-freeswitch
diff --git a/mod/recordings/Dockerfile b/mod/recordings/Dockerfile
index 1a02483..ad401b3 100644
--- a/mod/recordings/Dockerfile
+++ b/mod/recordings/Dockerfile
@@ -1,5 +1,5 @@
-FROM ruby:2.5-slim-buster
+FROM ruby:2.7-slim-buster
# install apt dependencies
RUN apt-get update && apt-get install -y \
@@ -23,6 +23,7 @@ RUN apt-get update && apt-get install -y \
supervisor \
locales \
locales-all
+# TODO: missing packages
ENV LC_ALL en_US.UTF-8
ENV LANG en_US.UTF-8
@@ -45,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 \
&& rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz
+# add yq for bbb-record
+RUN wget -q https://github.com/mikefarah/yq/releases/download/3.4.1/yq_linux_amd64 -O /usr/bin/yq \
+ && chmod +x /usr/bin/yq
+
RUN mkdir -p \
/usr/local/bigbluebutton \
/usr/local/bigbluebutton/core \
/etc/bigbluebutton
-ENV TAG v2.4.4
+ARG TAG_RECORDINGS
# add bbb-record-core (lib, scripts and Gemfile)
RUN cd /usr/local/bigbluebutton/core \
- && svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/record-and-playback/core/lib \
- && svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/record-and-playback/core/scripts \
+ && svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_RECORDINGS/record-and-playback/core/lib \
+ && svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_RECORDINGS/record-and-playback/core/scripts \
&& rm -rf /usr/local/bigbluebutton/core/*/.svn \
- && wget https://raw.githubusercontent.com/bigbluebutton/bigbluebutton/$TAG/record-and-playback/core/Gemfile.lock \
- && wget https://raw.githubusercontent.com/bigbluebutton/bigbluebutton/$TAG/record-and-playback/core/Gemfile \
- && wget https://raw.githubusercontent.com/bigbluebutton/bigbluebutton/$TAG/record-and-playback/core/Rakefile
+ && wget https://raw.githubusercontent.com/bigbluebutton/bigbluebutton/$TAG_RECORDINGS/record-and-playback/core/Gemfile.lock \
+ && wget https://raw.githubusercontent.com/bigbluebutton/bigbluebutton/$TAG_RECORDINGS/record-and-playback/core/Gemfile \
+ && wget https://raw.githubusercontent.com/bigbluebutton/bigbluebutton/$TAG_RECORDINGS/record-and-playback/core/Rakefile
# add bbb-playback-presentation scripts
RUN cd /tmp \
- && svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/record-and-playback/presentation/scripts \
+ && svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_RECORDINGS/record-and-playback/presentation/scripts \
&& rsync -av /tmp/scripts/ /usr/local/bigbluebutton/core/scripts/ \
&& rm -rf /tmp/scripts
@@ -84,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
RUN cd /usr/bin \
- && wget https://raw.githubusercontent.com/bigbluebutton/bigbluebutton/$TAG/bigbluebutton-config/bin/bbb-record \
+ && wget https://raw.githubusercontent.com/bigbluebutton/bigbluebutton/$TAG_RECORDINGS/bigbluebutton-config/bin/bbb-record \
&& chmod +x /usr/bin/bbb-record \
&& sed -i 's/^BBB_WEB.*/BBB_WEB=""/' /usr/bin/bbb-record \
&& sed -i 's/systemctl.*//' /usr/bin/bbb-record \
- && echo "BIGBLUEBUTTON_RELEASE=$TAG" > /etc/bigbluebutton/bigbluebutton-release
+ && echo "BIGBLUEBUTTON_RELEASE=$TAG_RECORDINGS" > /etc/bigbluebutton/bigbluebutton-release
# create user
# the ID should match the one creating the files in `core`
diff --git a/mod/recordings/bigbluebutton.yml b/mod/recordings/bigbluebutton.yml
index c023382..e93228d 100644
--- a/mod/recordings/bigbluebutton.yml
+++ b/mod/recordings/bigbluebutton.yml
@@ -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_deskshare_src: /var/bigbluebutton/deskshare
raw_presentation_src: /var/bigbluebutton
-notes_endpoint: http://etherpad:9001/p
+notes_endpoint: http://bbb-pads:9002/p
# Specify the notes formats we archive
# txt, doc and odt are also supported
notes_formats:
diff --git a/mod/recordings/supervisord.conf b/mod/recordings/supervisord.conf
index aa71b41..4780d47 100644
--- a/mod/recordings/supervisord.conf
+++ b/mod/recordings/supervisord.conf
@@ -4,7 +4,7 @@ user=root
[program:rasque_workers]
command=rake resque:workers
directory=/usr/local/bigbluebutton/core/scripts
-environment=QUEUE="rap:archive,rap:publish,rap:process,rap:sanity,rap:captions,rap:events",COUNT="1",VVERBOSE="1"
+environment=QUEUE="rap:archive,rap:publish,rap:process,rap:sanity,rap:captions,rap:events",COUNT="1",VVERBOSE="1",HOME="/home/bigbluebutton"
user=bigbluebutton
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
@@ -15,6 +15,7 @@ stderr_logfile_maxbytes=0
[program:rap_starter]
command=bundle exec ruby /usr/local/bigbluebutton/core/scripts/rap-starter.rb
directory=/usr/local/bigbluebutton/core/scripts
+environment=HOME="/home/bigbluebutton"
user=bigbluebutton
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
@@ -25,6 +26,7 @@ stderr_logfile_maxbytes=0
[program:rap_caption_inbox]
command=bundle exec ruby /usr/local/bigbluebutton/core/scripts/rap-caption-inbox.rb
directory=/usr/local/bigbluebutton/core/scripts
+environment=HOME="/home/bigbluebutton"
user=bigbluebutton
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
diff --git a/mod/webhooks/Dockerfile b/mod/webhooks/Dockerfile
index 9d3efbd..ee62cc2 100644
--- a/mod/webhooks/Dockerfile
+++ b/mod/webhooks/Dockerfile
@@ -1,26 +1,25 @@
-FROM node:14-alpine
-
-# download dockerize
-ENV DOCKERIZE_VERSION v0.6.1
-RUN wget -q https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
- && tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
- && rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
- && apk add subversion \
- && mkdir /app \
- && adduser -D -u 2002 -g webhooks webhooks \
- && chown webhooks:webhooks /app
-
-USER webhooks
+FROM node:14.18.3-bullseye-slim AS builder
-ENV TAG v2.4.0
-RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/bbb-webhooks /app \
- && rm -rf /app/.svn \
- && cd /app && npm install --production
+RUN apt-get update && apt-get install -y git wget
+RUN wget -q https://github.com/mikefarah/yq/releases/download/v4.25.1/yq_linux_amd64 -O /usr/bin/yq \
+ && chmod +x /usr/bin/yq
+
+COPY ./bbb-webhooks /bbb-webhooks
+RUN cd /bbb-webhooks && npm install --production
+
+RUN chmod 777 /bbb-webhooks/config
+# ------------------------------
+
+FROM node: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 config.yml /app/config/default.yml.tmpl
+RUN mkdir /bbb-webhooks/log && chmod 777 /bbb-webhooks/log
+USER bbb-webhooks
ENTRYPOINT /entrypoint.sh
-
diff --git a/mod/webhooks/bbb-webhooks b/mod/webhooks/bbb-webhooks
new file mode 160000
index 0000000..2eb5e44
--- /dev/null
+++ b/mod/webhooks/bbb-webhooks
@@ -0,0 +1 @@
+Subproject commit 2eb5e4471083f9f99e969d5d19a44529ec735808
diff --git a/mod/webhooks/config.yml b/mod/webhooks/config.yml
deleted file mode 100644
index 0d2446e..0000000
--- a/mod/webhooks/config.yml
+++ /dev/null
@@ -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
\ No newline at end of file
diff --git a/mod/webhooks/entrypoint.sh b/mod/webhooks/entrypoint.sh
index 79131c2..22107ac 100755
--- a/mod/webhooks/entrypoint.sh
+++ b/mod/webhooks/entrypoint.sh
@@ -1,9 +1,17 @@
#!/bin/sh
+set -e
+TARGET=/bbb-webhooks/config/production.yml
+cp /bbb-webhooks/config/default.example.yml $TARGET
+
+yq e -i ".bbb.sharedSecret = \"$SHARED_SECRET\"" $TARGET
+yq e -i ".bbb.serverDomain = \"$DOMAIN\"" $TARGET
+yq e -i ".bbb.auth2_0 = true" $TARGET
+yq e -i ".server.bind = \"0.0.0.0\"" $TARGET
+yq e -i ".hooks.getRaw = false" $TARGET
+yq e -i ".redis.host = \"redis\"" $TARGET
export NODE_ENV=production
-cd /app
-dockerize \
- -wait tcp://redis:6379 \
- -template /app/config/default.yml.tmpl:/app/config/default.yml \
- node app.js
+
+cd /bbb-webhooks
+node app.js
diff --git a/mod/webrtc-sfu/Dockerfile b/mod/webrtc-sfu/Dockerfile
index 72884c4..e8d3263 100644
--- a/mod/webrtc-sfu/Dockerfile
+++ b/mod/webrtc-sfu/Dockerfile
@@ -1,36 +1,35 @@
-FROM node:14-bullseye-slim
+ARG BBB_BUILD_TAG
+FROM gitlab.senfcall.de:5050/senfcall-public/docker-bbb-build:$BBB_BUILD_TAG AS builder
-RUN apt-get update && apt-get -y install \
- git \
- make \
- python \
- python3-pip \
- g++ \
- ffmpeg
-
RUN useradd --uid 2004 --user-group webrtc-sfu
-ADD ./bbb-webrtc-sfu app
+ADD ./bbb-webrtc-sfu /app
-WORKDIR app
ENV NODE_ENV production
-
# due to the git submodule npm install crashes with following error:
# npm ERR! fatal: Not a git repository: ../.git/modules/bbb-webrtc-sfu
# we simply delete the .git file
-RUN cp config/default.example.yml config/production.yml \
- && chown -R webrtc-sfu:webrtc-sfu config \
+RUN cd /app \
+ && cp config/default.example.yml config/production.yml \
&& rm .git \
&& npm install --unsafe-perm \
&& npm cache clear --force \
&& rm -rf node_modules/mediasoup/worker/out/Release/subprojects \
&& rm -rf node_modules/mediasoup/worker/out/Release/mediasoup-worker.p \
&& rm -rf node_modules/mediasoup/worker/out/Release/deps
-COPY docker-entrypoint.sh /app/docker-entrypoint.sh
+
+
+# =============================
+FROM node: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
-ENTRYPOINT [ "./docker-entrypoint.sh" ]
+WORKDIR /app
CMD [ "npm", "start" ]
diff --git a/mod/webrtc-sfu/bbb-webrtc-sfu b/mod/webrtc-sfu/bbb-webrtc-sfu
index 3dc34eb..07723a9 160000
--- a/mod/webrtc-sfu/bbb-webrtc-sfu
+++ b/mod/webrtc-sfu/bbb-webrtc-sfu
@@ -1 +1 @@
-Subproject commit 3dc34eb558ce2f0e230c358580d8e7e1cd9b8f67
+Subproject commit 07723a95bf350181fcb87b5e8c9ebc53eb6d8de6
diff --git a/mod/webrtc-sfu/docker-entrypoint.sh b/mod/webrtc-sfu/docker-entrypoint.sh
deleted file mode 100755
index 243593c..0000000
--- a/mod/webrtc-sfu/docker-entrypoint.sh
+++ /dev/null
@@ -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 "$@"
diff --git a/sample.env b/sample.env
index 78e945d..f83534d 100644
--- a/sample.env
+++ b/sample.env
@@ -59,11 +59,6 @@ DOMAIN=bbb.example.com
EXTERNAL_IPv4=144.76.97.10
EXTERNAL_IPv6=
-# setting the network interface speeds up kurentos WebRTC connection time,
-# but currently also disables IPv6 for Kurento
-# (https://github.com/Kurento/bugtracker/issues/500)
-#NETWORK_INTERFACE=ens3
-
# STUN SERVER
# stun.freeswitch.org
STUN_IP=216.93.246.18
@@ -88,7 +83,7 @@ SIP_IP_ALLOWLIST=
CLIENT_TITLE=BigBlueButton
# use following lines to replace the default welcome message and footer
-WELCOME_MESSAGE="Welcome to %%CONFNAME%%!
For help on using BigBlueButton see these (short) tutorial videos.
To join the audio bridge click the phone button. Use a headset to avoid causing background noise for others."
+WELCOME_MESSAGE="Welcome to %%CONFNAME%%!
For help on using BigBlueButton see these (short) tutorial videos.
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 BigBlueButton."
# use following line for an additional SIP dial-in message
diff --git a/scripts/checkout-submodules b/scripts/checkout-submodules
new file mode 100755
index 0000000..6724ea0
--- /dev/null
+++ b/scripts/checkout-submodules
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+# checkouts submodules based on the tag
+# provided in `tags.env`
+
+
+set -e
+cd "$(dirname "$0")/.."
+
+export $(cat tags.env | sed 's/#.*//g' | xargs)
+
+function checkout {
+ path=$1
+ ref=$2
+ pushd $path
+ git checkout $ref
+ 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
\ No newline at end of file
diff --git a/scripts/generate-compose b/scripts/generate-compose
index bd7d710..7beb472 100755
--- a/scripts/generate-compose
+++ b/scripts/generate-compose
@@ -33,10 +33,26 @@ if [ "$ENABLE_COTURN" == true ]; then
fi
fi
+export $(cat tags.env | sed 's/#.*//g' | xargs)
+
docker run \
--rm \
-v $(pwd)/docker-compose.tmpl.yml:/docker-compose.tmpl.yml \
+ -e BBB_BUILD_TAG=${BBB_BUILD_TAG} \
+ -e TAG_COMMON_MESSAGE=${TAG_COMMON_MESSAGE} \
+ -e TAG_APPS_AKKA=${TAG_APPS_AKKA} \
+ -e TAG_FSESL_AKKA=${TAG_FSESL_AKKA} \
+ -e TAG_BBB_WEB=${TAG_BBB_WEB} \
+ -e TAG_HTML5=${TAG_HTML5} \
+ -e TAG_FS_CONFIG=${TAG_FS_CONFIG} \
+ -e TAG_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 EXTERNAL_IPv6=${EXTERNAL_IPv6:-} \
-e ENABLE_RECORDING=${ENABLE_RECORDING:-false} \
-e REMOVE_OLD_RECORDING=${REMOVE_OLD_RECORDING:-false} \
-e RECORDING_MAX_AGE_DAYS=${RECORDING_MAX_AGE_DAYS:-14} \
diff --git a/scripts/print-versions b/scripts/print-versions
deleted file mode 100755
index b11419c..0000000
--- a/scripts/print-versions
+++ /dev/null
@@ -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"
diff --git a/scripts/publish b/scripts/publish
new file mode 100755
index 0000000..41b475f
--- /dev/null
+++ b/scripts/publish
@@ -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
diff --git a/scripts/upgrade b/scripts/upgrade
old mode 100755
new mode 100644
index d1fab6a..b950c48
--- a/scripts/upgrade
+++ b/scripts/upgrade
@@ -15,11 +15,6 @@ then
else
- echo ""
- echo "# pull newest git submodules"
- git submodule init
- git submodule update
-
echo ""
echo "# recreate docker-compose.yml"
./scripts/generate-compose
@@ -27,19 +22,14 @@ else
echo ""
echo "# pull newest images"
docker-compose pull --ignore-pull-failures
-
- echo ""
- echo "# rebuild images"
-
- # rebuild everything which got modified
- docker-compose build --pull
+
COMMIT_HASH=$(git rev-parse --short HEAD)
BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD)
-
+
echo ""
echo "-------------------------------------"
- echo "images successfully rebuilt!"
+ echo "update is ready!"
echo "we are on $COMMIT_HASH ($BRANCH_NAME)"
echo ""
echo "use following command for restarting bbb:"
diff --git a/scripts/upgrade-and-build b/scripts/upgrade-and-build
new file mode 100755
index 0000000..8f7b0e9
--- /dev/null
+++ b/scripts/upgrade-and-build
@@ -0,0 +1,49 @@
+#!/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"
+ git submodule init
+ git submodule update
+
+ 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
\ No newline at end of file
diff --git a/tags.env b/tags.env
new file mode 100644
index 0000000..530d760
--- /dev/null
+++ b/tags.env
@@ -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-03-30
+
+# https://github.com/bigbluebutton/bigbluebutton
+TAG_COMMON_MESSAGE=v2.5.0
+TAG_APPS_AKKA=v2.5.0
+TAG_FSESL_AKKA=v2.5.0
+TAG_BBB_WEB=v2.5.0
+TAG_HTML5=v2.5.1
+TAG_RECORDINGS=v2.5.0
+
+TAG_LEARNING_DASHBOARD=v2.5.0
+TAG_FS_CONFIG=v2.5.0
+
+
+# individual git submodules
+# use `./scripts/checkout-submodules` to ensure, that the submodules
+# match the provided tags here
+TAG_WEBRTC_SFU=v2.8.2
+TAG_WEBHOOKS=v2.6.0
+TAG_PLAYBACK=v4.0.0
+TAG_PADS=v1.2.1
\ No newline at end of file