6 Commits

Author SHA1 Message Date
07ce2c483c by default docker should use the prebuilt images.
in same cases docker still tries to build it, exceeding the RAM requirement and often failing due to the missing submodules
2023-12-08 12:04:14 +01:00
0df9e2fd53 BBB 2.7.3 2023-12-07 20:07:01 +01:00
e5a4f52702 generate-compose: remove env variables not required in this step 2023-12-07 20:07:01 +01:00
ce48732004 cache tags of submodules, load_env function 2023-12-07 20:07:01 +01:00
03dcee6dac use local sources instead of pulling inside container 2023-12-07 20:07:01 +01:00
d6341e32ec Merge pull request #309 from bigbluebutton/fix-bbb-exporter
fix bbb-exporter due to missing /etc/bigbluebutton/bigbluebutton-release
2023-12-07 20:06:19 +01:00
32 changed files with 213 additions and 255 deletions

34
.gitmodules vendored
View File

@ -1,18 +1,24 @@
[submodule "bbb-webrtc-sfu"]
path = mod/webrtc-sfu/bbb-webrtc-sfu
url = https://github.com/bigbluebutton/bbb-webrtc-sfu.git
[submodule "mod/etherpad/bbb-etherpad-skin"]
path = mod/etherpad/bbb-etherpad-skin
[submodule "repos/bbb-etherpad-skin"]
path = repos/bbb-etherpad-skin
url = https://github.com/alangecker/bbb-etherpad-skin
[submodule "mod/etherpad/bbb-etherpad-plugin"]
path = mod/etherpad/bbb-etherpad-plugin
[submodule "repos/bbb-etherpad-plugin"]
path = repos/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
[submodule "repos/bbb-webhooks"]
path = repos/bbb-webhooks
url = https://github.com/bigbluebutton/bbb-webhooks
[submodule "mod/nginx/bbb-playback"]
path = mod/nginx/bbb-playback
[submodule "repos/bbb-playback"]
path = repos/bbb-playback
url = https://github.com/bigbluebutton/bbb-playback
[submodule "repos/freeswitch"]
path = repos/freeswitch
url = https://github.com/signalwire/freeswitch.git
[submodule "repos/bigbluebutton"]
path = repos/bigbluebutton
url = https://github.com/bigbluebutton/bigbluebutton.git
[submodule "repos/bbb-webrtc-sfu"]
path = repos/bbb-webrtc-sfu
url = https://github.com/bigbluebutton/bbb-webrtc-sfu.git
[submodule "repos/bbb-pads"]
path = repos/bbb-pads
url = https://github.com/bigbluebutton/bbb-pads.git

View File

@ -34,7 +34,7 @@ Version: 2.7.3 | [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 --recurse-submodules https://github.com/bigbluebutton/docker.git bbb-docker
$ git clone https://github.com/bigbluebutton/docker.git bbb-docker
$ cd bbb-docker
# use the more stable main branch (sometimes older)
@ -52,7 +52,7 @@ Version: 2.7.3 | [Changelog](CHANGELOG.md) | [Issues](https://github.com/bigblue
```
5. Start containers:
```bash
$ docker compose up -d
$ docker compose up -d --no-build
```
6. If you use greenlight, you can create an admin account with:
```bash

View File

@ -9,10 +9,12 @@ version: '3.6'
x-html5-backend: &html5backend
build:
context: mod/html5
additional_contexts:
- source=./repos/bigbluebutton/bigbluebutton-html5
args:
BBB_BUILD_TAG: {{ .Env.BBB_BUILD_TAG }}
TAG_HTML5: {{ .Env.TAG_HTML5 }}
image: alangecker/bbb-docker-html5:{{ .Env.TAG_HTML5 }}
BBB_BUILD_TAG: bbb27-2023-06-13-java17
TAG_BBB: {{ .Env.TAG_BBB }}
image: alangecker/bbb-docker-html5:{{ .Env.TAG_BBB }}
restart: unless-stopped
depends_on:
- redis
@ -44,11 +46,13 @@ services:
bbb-web:
build:
context: mod/bbb-web
additional_contexts:
- src-web=./repos/bigbluebutton/bigbluebutton-web
- src-common-message=./repos/bigbluebutton/bbb-common-message
- src-common-web=./repos/bigbluebutton/bbb-common-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 }}
BBB_BUILD_TAG: bbb27-2023-06-13-java17
image: alangecker/bbb-docker-web:{{ .Env.TAG_BBB }}
restart: unless-stopped
depends_on:
- redis
@ -106,12 +110,13 @@ services:
container_name: bbb-freeswitch
build:
context: mod/freeswitch
additional_contexts:
- freeswitch=./repos/freeswitch/
- build-files=./repos/bigbluebutton/build/packages-template/bbb-freeswitch-core/
- fs-config=./repos/bigbluebutton/bbb-voice-conference/config/freeswitch/conf/
args:
BBB_BUILD_TAG: {{ .Env.BBB_BUILD_TAG }}
TAG_FS_BUILD_FILES: {{ .Env.TAG_FS_BUILD_FILES }}
TAG_FS_CONFIG: {{ .Env.TAG_FS_CONFIG }}
TAG_FREESWITCH: {{ .Env.TAG_FREESWITCH }}
image: alangecker/bbb-docker-freeswitch:{{ .Env.TAG_FS_CONFIG }}
BBB_BUILD_TAG: bbb27-2023-06-13-java17
image: alangecker/bbb-docker-freeswitch:{{ .Env.TAG_FREESWITCH }}-{{ .Env.TAG_BBB }}
restart: unless-stopped
cap_add:
- IPC_LOCK
@ -145,10 +150,12 @@ services:
nginx:
build:
context: mod/nginx
additional_contexts:
- src-learning-dashboard=./repos/bigbluebutton/bbb-learning-dashboard
- src-playback=./repos/bbb-playback
args:
BBB_BUILD_TAG: {{ .Env.BBB_BUILD_TAG }}
TAG_LEARNING_DASHBOARD: {{ .Env.TAG_LEARNING_DASHBOARD }}
image: alangecker/bbb-docker-nginx:1.23-{{ .Env.TAG_PLAYBACK }}-{{ .Env.TAG_LEARNING_DASHBOARD }}
BBB_BUILD_TAG: bbb27-2023-06-13-java17
image: alangecker/bbb-docker-nginx:1.23-{{ .Env.TAG_PLAYBACK }}-{{ .Env.TAG_BBB }}
restart: unless-stopped
depends_on:
- etherpad
@ -168,8 +175,14 @@ services:
- "greenlight:10.7.7.21"
etherpad:
build: mod/etherpad
image: alangecker/bbb-docker-etherpad:1.9.1
build:
context: mod/etherpad
additional_contexts:
- plugin=./repos/bbb-etherpad-plugin
- skin=./repos/bbb-etherpad-skin
args:
TAG_ETHERPAD: "1.9.1"
image: alangecker/bbb-docker-etherpad:1.9.1-s{{ .Env.COMMIT_ETHERPAD_SKIN }}-p{{ .Env.COMMIT_ETHERPAD_PLUGIN }}
restart: unless-stopped
depends_on:
- redis
@ -180,7 +193,10 @@ services:
ipv4_address: 10.7.7.4
bbb-pads:
build: mod/bbb-pads
build:
context: mod/bbb-pads
additional_contexts:
- src=./repos/bbb-pads
image: alangecker/bbb-docker-pads:{{ .Env.TAG_PADS }}
restart: unless-stopped
depends_on:
@ -232,8 +248,10 @@ services:
webrtc-sfu:
build:
context: mod/webrtc-sfu
additional_contexts:
- source=./repos/bbb-webrtc-sfu
args:
BBB_BUILD_TAG: {{ .Env.BBB_BUILD_TAG }}
BBB_BUILD_TAG: bbb27-2023-06-13-java17
image: alangecker/bbb-docker-webrtc-sfu:{{ .Env.TAG_WEBRTC_SFU }}
restart: unless-stopped
depends_on:
@ -266,11 +284,13 @@ services:
fsesl-akka:
build:
context: mod/fsesl-akka
additional_contexts:
- src-common-message=./repos/bigbluebutton/bbb-common-message
- src-fsesl-client=./repos/bigbluebutton/bbb-fsesl-client
- src-fsesl-akka=./repos/bigbluebutton/akka-bbb-fsesl
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 }}
BBB_BUILD_TAG: bbb27-2023-06-13-java17
image: alangecker/bbb-docker-fsesl-akka:{{ .Env.TAG_BBB }}
restart: unless-stopped
depends_on:
- redis
@ -284,11 +304,12 @@ services:
apps-akka:
build:
context: mod/apps-akka
additional_contexts:
- src-common-message=./repos/bigbluebutton/bbb-common-message
- src-apps-akka=./repos/bigbluebutton/akka-bbb-apps
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 }}
BBB_BUILD_TAG: bbb27-2023-06-13-java17
image: alangecker/bbb-docker-apps-akka:{{ .Env.TAG_BBB }}
restart: unless-stopped
depends_on:
- redis
@ -342,11 +363,14 @@ services:
recordings:
build:
context: mod/recordings
additional_contexts:
- record-core=./repos/bigbluebutton/record-and-playback/core
- presentation=./repos/bigbluebutton/record-and-playback/presentation
- bbb-conf=./repos/bigbluebutton/bigbluebutton-config
args:
BBB_BUILD_TAG: {{ .Env.BBB_BUILD_TAG }}
TAG_RECORDINGS: {{ .Env.TAG_RECORDINGS }}
TAG_BBB_PRESENTATION_VIDEO: {{ .Env.TAG_BBB_PRESENTATION_VIDEO }}
image: alangecker/bbb-docker-recordings:{{ .Env.TAG_RECORDINGS }}
BBB_BUILD_TAG: bbb27-2023-06-13-java17
TAG_BBB_PRESENTATION_VIDEO: "4.0.3"
image: alangecker/bbb-docker-recordings:{{ .Env.TAG_BBB }}
restart: unless-stopped
depends_on:
- redis
@ -370,7 +394,10 @@ services:
{{ if isTrue .Env.ENABLE_WEBHOOKS }}
# webhooks
webhooks:
build: mod/webhooks
build:
context: mod/webhooks
additional_contexts:
- src=./repos/bbb-webhooks
image: alangecker/bbb-docker-webhooks:{{ .Env.TAG_WEBHOOKS }}
restart: unless-stopped
environment:
@ -405,9 +432,7 @@ services:
{{else}}
ALLOWED_DOMAINS: ${DOMAIN}
{{end}}
{{ if .Env.RESOLVER_ADDRESS }}
RESOLVER_ADDRESS: ${RESOLVER_ADDRESS}
{{end}}
RESOLVER_ADDRESS: ${RESOLVER_ADDRESS:-9.9.9.9}
network_mode: host
{{end}}
@ -439,7 +464,7 @@ services:
{{ if isTrue .Env.ENABLE_GREENLIGHT }}
# greenlight
greenlight:
image: bigbluebutton/greenlight:{{ .Env.TAG_GREENLIGHT }}
image: bigbluebutton/greenlight:v3.0.6.1
restart: unless-stopped
env_file: .env
depends_on:

View File

@ -70,12 +70,8 @@ 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.** \
* main source for that are the release notes in https://github.com/bigbluebutton/bigbluebutton/releases
2. **Apply these changes to this project.**
* 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`
* Often you only need to checkout the git submodules to the specific release tag
* List of all submodules: `git submodule`
3. Test everything (with firefox **and** chromium/chrome)
* Audio
* Video

View File

@ -1,20 +1,16 @@
ARG BBB_BUILD_TAG
FROM bigbluebutton/bbb-build:$BBB_BUILD_TAG AS builder
ARG TAG_COMMON_MESSAGE
COPY --from=src-common-message / /bbb-common-message
# download bbb-common-message
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_COMMON_MESSAGE/bbb-common-message /bbb-common-message \
&& cd /bbb-common-message \
&& ./deploy.sh \
&& rm -rf /bbb-common-message
# build bbb-common-message
RUN cd /bbb-common-message && ./deploy.sh
# ===================================================
ARG TAG_APPS_AKKA
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_APPS_AKKA/akka-bbb-apps /source \
&& rm -rf /source/.svn
COPY --from=src-apps-akka / /source
# compile and unzip bin
RUN cd /source \

View File

@ -1,6 +1,6 @@
FROM node:18-bullseye-slim AS builder
COPY ./bbb-pads /bbb-pads
COPY --from=src / /bbb-pads
RUN cd /bbb-pads && rm -r .git && npm install --production

View File

@ -1,29 +1,19 @@
ARG BBB_BUILD_TAG
FROM bigbluebutton/bbb-build:$BBB_BUILD_TAG AS builder
ARG TAG_COMMON_MESSAGE
COPY --from=src-common-message / /bbb-common-message
# download bbb-common-message
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_COMMON_MESSAGE/bbb-common-message /bbb-common-message \
&& cd /bbb-common-message \
&& ./deploy.sh \
&& rm -rf /bbb-common-message
# build bbb-common-message
RUN cd /bbb-common-message && ./deploy.sh
# ===================================================
ARG TAG_BBB_WEB
# download 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
COPY --from=src-common-web / /bbb-common-web
# build bbb-common-web
RUN cd /bbb-common-web && ./deploy.sh
# compile bbb-common-web
RUN cd /bbb-common-web \
&& ./deploy.sh
# download bbb-web
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_BBB_WEB/bigbluebutton-web /bbb-web \
&& rm -rf /bbb-web/.svn
COPY --from=src-web / /bbb-web
# compile bbb-web
RUN cd /bbb-web && grails assemble

View File

@ -1,4 +1,5 @@
FROM etherpad/etherpad:1.9.4
ARG TAG_ETHERPAD
FROM etherpad/etherpad:$TAG_ETHERPAD
USER root
@ -16,10 +17,10 @@ RUN npm install \
&& rm package-lock.json package.json
# add skin from git submodule
COPY --chown=etherpad:0 ./bbb-etherpad-skin /opt/etherpad-lite/src/static/skins/bigbluebutton
COPY --chown=etherpad:0 --from=skin / /opt/etherpad-lite/src/static/skins/bigbluebutton
# add plugin from git submodule
COPY --chown=etherpad:0 ./bbb-etherpad-plugin /opt/etherpad-lite/node_modules/ep_bigbluebutton_patches
COPY --chown=etherpad:0 --from=plugin / /opt/etherpad-lite/node_modules/ep_bigbluebutton_patches
COPY settings.json /opt/etherpad-lite/settings.json
COPY etherpad-export.sh /etherpad-export.sh

View File

@ -1,13 +1,7 @@
ARG BBB_BUILD_TAG
FROM bigbluebutton/bbb-build:$BBB_BUILD_TAG AS builder
ARG TAG_FREESWITCH
RUN mkdir -p /build/freeswitch && \
cd /build/freeswitch && \
git init && \
git remote add origin https://github.com/signalwire/freeswitch.git && \
git fetch --depth 1 origin $TAG_FREESWITCH && \
git checkout FETCH_HEAD
COPY --from=freeswitch / /build/freeswitch
# install most recent git version for proper sparse-checkout support
# https://stackoverflow.com/questions/72223738/failed-to-initialize-sparse-checkout
@ -17,12 +11,7 @@ RUN echo 'deb https://ppa.launchpadcontent.net/git-core/ppa/ubuntu focal main' >
apt-get install -y git
# get build files for bbb-freeswitch (build/packages-template/bbb-freeswitch-core/)
ARG TAG_FS_BUILD_FILES
RUN git clone -b $TAG_FS_BUILD_FILES --depth 1 --filter=blob:none --sparse https://github.com/bigbluebutton/bigbluebutton.git /bbb && \
cd /bbb && \
git sparse-checkout set build/packages-template/bbb-freeswitch-core/ && \
cp build/packages-template/bbb-freeswitch-core/* /build/ && \
rm -rf /bbb
COPY --from=build-files / /build/
# mock files expected by build.sh
RUN mkdir -p /build/bbb-voice-conference/config/freeswitch/conf/ && \
@ -33,7 +22,7 @@ RUN mkdir -p /build/bbb-voice-conference/config/freeswitch/conf/ && \
&& \
echo "" > /usr/local/bin/fpm
# build freeswitch
RUN cd /build && ./build.sh
@ -48,13 +37,7 @@ RUN mkdir -p /build/staging/opt/freeswitch/share/freeswitch && \
# add bigblugbutton config
ARG TAG_FS_CONFIG
RUN git clone -b $TAG_FS_CONFIG --depth 1 --filter=blob:none --sparse https://github.com/bigbluebutton/bigbluebutton.git /bbb && \
cd /bbb && \
git sparse-checkout set bbb-voice-conference/config/freeswitch/conf/ && \
cp -r /bbb/bbb-voice-conference/config/freeswitch/conf/* /build/staging/opt/freeswitch/etc/freeswitch/
COPY --from=fs-config / /build/staging/opt/freeswitch/etc/freeswitch/
# ===============================================

View File

@ -1,24 +1,16 @@
ARG BBB_BUILD_TAG
FROM bigbluebutton/bbb-build:$BBB_BUILD_TAG AS builder
ARG TAG_COMMON_MESSAGE
COPY --from=src-common-message / /bbb-common-message
# download bbb-common-message
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_COMMON_MESSAGE/bbb-common-message /bbb-common-message \
&& cd /bbb-common-message \
&& ./deploy.sh \
&& rm -rf /bbb-common-message
# build bbb-common-message
RUN cd /bbb-common-message && ./deploy.sh
# ===================================================
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
COPY --from=src-fsesl-client / /bbb-fsesl-client
RUN cd /bbb-fsesl-client && ./deploy.sh
RUN cd /bbb-fsesl-client \
&& ./deploy.sh
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_FSESL_AKKA/akka-bbb-fsesl /source \
&& rm -rf /source/.svn
COPY --from=src-fsesl-akka / /source
# compile and unzip bin
RUN cd /source \

View File

@ -5,9 +5,9 @@ FROM bigbluebutton/bbb-build:$BBB_BUILD_TAG AS builder
# 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 \
COPY --from=source ./ /source
RUN 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
@ -17,7 +17,7 @@ RUN cd /app/bundle/programs/server \
RUN mkdir -p /app/bundle/programs/web.browser/app/files && \
cp /app/bundle/programs/server/npm/node_modules/@fontsource/*/files/*.woff* /app/bundle/programs/web.browser/app/files/
RUN sed -i "s/VERSION/$TAG_HTML5/" /app/bundle/programs/web.browser/head.html \
RUN sed -i "s/VERSION/$TAG_BBB/" /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 '{}' \;
@ -37,8 +37,8 @@ COPY --from=builder --chown=meteor:meteor /app/bundle /app
COPY entrypoint.sh /entrypoint.sh
COPY bbb-html5.yml /app/bbb-html5.yml.tmpl
# expose TAG_HTML5 in container for the version display
ARG TAG_HTML5
ENV TAG_HTML5 $TAG_HTML5
# expose TAG_BBB in container for the version display
ARG TAG_BBB
ENV TAG_BBB $TAG_BBB
ENTRYPOINT ["/entrypoint.sh"]

View File

@ -3,11 +3,10 @@ FROM bigbluebutton/bbb-build:$BBB_BUILD_TAG AS builder
# --------------------
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
COPY --from=src-learning-dashboard / /bbb-learning-dashboard
RUN cd /bbb-learning-dashboard && npm ci && npm run build
COPY ./bbb-playback /bbb-playback
COPY --from=src-playback / /bbb-playback
RUN cd /bbb-playback && npm install && npm run-script build
# --------------------

View File

@ -70,20 +70,10 @@ RUN wget -q -O /tmp/python3-perfect-freehand.deb https://github.com/bigbluebutto
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_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_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
COPY --from=record-core / /usr/local/bigbluebutton/core
# add bbb-playback-presentation scripts
RUN cd /tmp \
&& 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
COPY --from=presentation /scripts /usr/local/bigbluebutton/core/scripts/
# install ruby dependencies
RUN cd /usr/local/bigbluebutton/core \
@ -105,8 +95,8 @@ RUN sed -i 's|Journald::Logger\.new.*|Logger.new("/var/log/bigbluebutton/recordi
sed -i 's|Logger\.new.*|Logger.new("/var/log/bigbluebutton/recording.log")|g' /usr/local/bigbluebutton/core/scripts/process/presentation.rb
# add bbb-record with some adjustments so bbb-record works in this environment
COPY --from=bbb-conf /bin/bbb-record /usr/bin/bbb-record
RUN cd /usr/bin \
&& 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 \

View File

@ -6,7 +6,7 @@ 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
COPY --from=src / /bbb-webhooks
RUN cd /bbb-webhooks && npm install --production
RUN chmod 777 /bbb-webhooks/config

View File

@ -4,17 +4,12 @@ FROM bigbluebutton/bbb-build:$BBB_BUILD_TAG AS builder
RUN useradd --uid 2004 --user-group webrtc-sfu
ADD ./bbb-webrtc-sfu /app
COPY --from=source / /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 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 \

1
repos/bigbluebutton Submodule

Submodule repos/bigbluebutton added at 5d671b3b50

1
repos/freeswitch Submodule

Submodule repos/freeswitch added at 4cb05e7f4a

13
repos/tags Normal file
View File

@ -0,0 +1,13 @@
# autogenerated by ./scripts/collect-tags
#
# used to determine submodule tags without the need for
# checking out the whole submodule
repos/bbb-etherpad-plugin 068ded5
repos/bbb-etherpad-skin 8328b77
repos/bbb-pads v1.5.2
repos/bbb-playback v5.0.2
repos/bbb-webhooks v2.6.1
repos/bbb-webrtc-sfu v2.12.0
repos/bigbluebutton v2.7.3
repos/freeswitch v1.10.10

View File

@ -4,11 +4,8 @@ set -e
cd $(dirname $0)/..
# load .env
if [ -f .env ]
then
# exclude WELCOME_FOOTER because it may contain invalid characters
export $(cat .env | sed 's/#.*//g' | grep -v "WELCOME_FOOTER" | grep -v "WELCOME_MESSAGE" | xargs)
fi
. functions.sh
load_env
if [ ! "$ENABLE_RECORDING" == true ]; then
echo "Error: recording is disabled why can't use bbb-record"

View File

@ -1,32 +0,0 @@
#!/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

20
scripts/collect-tags Executable file
View File

@ -0,0 +1,20 @@
#!/bin/bash
set -e
cd "$(dirname "$0")/.."
. scripts/functions.sh
# can't summarize the submodules without having the submodules
ensure_submodules
FILE=repos/tags
echo '# autogenerated by ./scripts/collect-tags' > $FILE
echo '#' >> $FILE
echo '# used to determine submodule tags without the need for' >> $FILE
echo '# checking out the whole submodule' >> $FILE
echo "" >> $FILE
# get list of submodules and their current tag as `git describe` also provides
git submodule foreach --quiet 'echo $sm_path $(git describe --tags --always)' >> $FILE

View File

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

28
scripts/functions.sh Normal file
View File

@ -0,0 +1,28 @@
function load_env {
FILE=.env
if [ "$BBB_DOCKER_DEV" = "1" ]; then
FILE=dev.env
else
FILE=.env
fi
if [ -f $FILE ]
then
export $(cat $FILE | sed 's/#.*//g' | grep -v "WELCOME_FOOTER" | grep -v "WELCOME_MESSAGE" | grep -v "CLIENT_TITLE" | xargs)
fi
}
function ensure_submodules {
MISSING_SUBMODULES=$(git submodule status | grep -v ' (' | awk '{print $2}' || /bin/true)
echo
if [ ! -z "$MISSING_SUBMODULES" ]; then
echo "ERROR: following submodules are not checked out. we can't continue here"
git submodule status | grep -v ' (' | awk '{print " -", $2}'
echo ""
echo "if you really want to build images by yourself (not required for a normal production setup), use following command to check out all the submodules and try again"
echo " git submodule update --init"
exit 1
fi
}

View File

@ -4,11 +4,8 @@ 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
. scripts/functions.sh
load_env
# check for non-optional environment variables,
# which got introduced later and may miss in existing
@ -33,35 +30,31 @@ if [ "$ENABLE_COTURN" == true ]; then
fi
fi
export $(cat tags.env | sed 's/#.*//g' | xargs)
function get_tag {
# is submodule checked out?
if [ -f "$1/.git" ]; then
git --git-dir=$1/.git describe --tags --always
else
# get cached tag name from repos/tags
grep "$1" repos/tags | awk '{print $2}'
fi
}
docker run \
--rm \
-v $(pwd)/docker-compose.tmpl.yml:/docker-compose.tmpl.yml \
-e BBB_BUILD_TAG=${BBB_BUILD_TAG} \
-e TAG_COMMON_MESSAGE=${TAG_COMMON_MESSAGE} \
-e TAG_APPS_AKKA=${TAG_APPS_AKKA} \
-e TAG_FSESL_AKKA=${TAG_FSESL_AKKA} \
-e TAG_BBB_WEB=${TAG_BBB_WEB} \
-e TAG_HTML5=${TAG_HTML5} \
-e TAG_FS_CONFIG=${TAG_FS_CONFIG} \
-e TAG_FS_BUILD_FILES=${TAG_FS_BUILD_FILES} \
-e TAG_LEARNING_DASHBOARD=${TAG_LEARNING_DASHBOARD} \
-e TAG_RECORDINGS=${TAG_RECORDINGS} \
-e TAG_WEBRTC_SFU=${TAG_WEBRTC_SFU} \
-e TAG_WEBHOOKS=${TAG_WEBHOOKS} \
-e TAG_PLAYBACK=${TAG_PLAYBACK} \
-e TAG_PADS=${TAG_PADS} \
-e TAG_FREESWITCH=${TAG_FREESWITCH} \
-e TAG_BBB_PRESENTATION_VIDEO=${TAG_BBB_PRESENTATION_VIDEO} \
-e TAG_GREENLIGHT=${TAG_GREENLIGHT} \
-e TAG_BBB=$(get_tag repos/bigbluebutton) \
-e TAG_FREESWITCH=$(get_tag repos/freeswitch) \
-e TAG_WEBRTC_SFU=$(get_tag repos/bbb-webrtc-sfu) \
-e TAG_WEBHOOKS=$(get_tag repos/bbb-webhooks) \
-e TAG_PLAYBACK=$(get_tag repos/bbb-playback) \
-e TAG_PADS=$(get_tag repos/bbb-pads) \
-e COMMIT_ETHERPAD_SKIN=$(get_tag repos/bbb-etherpad-skin) \
-e COMMIT_ETHERPAD_PLUGIN=$(get_tag repos/bbb-etherpad-plugin) \
-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} \
-e ENABLE_HTTPS_PROXY=${ENABLE_HTTPS_PROXY:-false} \
-e RESOLVER_ADDRESS=${RESOLVER_ADDRESS} \
-e ENABLE_WEBHOOKS=${ENABLE_WEBHOOKS:-false} \
-e ENABLE_COTURN=${ENABLE_COTURN:-false} \
-e ENABLE_GREENLIGHT=${ENABLE_GREENLIGHT:-false} \

View File

@ -4,11 +4,8 @@ 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
. functions.sh
load_env
if [ -z "$ENABLE_WEBHOOKS" ]; then
echo "ERROR: ENABLE_WEBHOOKS must be set to true, otherwise the image would not be built"

View File

@ -1,31 +0,0 @@
# after changing a tag always run following commands to apply
# - ./scripts/generate-compose
# - docker compose build
# https://hub.docker.com/r/bigbluebutton/bbb-build
BBB_BUILD_TAG=bbb27-2023-06-13-java17
# https://github.com/bigbluebutton/bigbluebutton
TAG_COMMON_MESSAGE=v2.7.0
TAG_APPS_AKKA=v2.7.3
TAG_FSESL_AKKA=v2.7.0
TAG_BBB_WEB=v2.7.3
TAG_HTML5=v2.7.3
TAG_RECORDINGS=v2.7.0
TAG_LEARNING_DASHBOARD=v2.7.3
TAG_BBB_PRESENTATION_VIDEO=4.0.4
TAG_FS_CONFIG=v2.7.0
TAG_FS_BUILD_FILES=v2.7.0
TAG_FREESWITCH=v1.10.10
TAG_GREENLIGHT=v3.1.0
# individual git submodules
# use `./scripts/checkout-submodules` to ensure, that the submodules
# match the provided tags here
TAG_WEBRTC_SFU=v2.12.0
TAG_WEBHOOKS=v2.6.1
TAG_PLAYBACK=v5.0.2
TAG_PADS=v1.5.2