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"] [submodule "repos/bbb-etherpad-skin"]
path = mod/webrtc-sfu/bbb-webrtc-sfu path = repos/bbb-etherpad-skin
url = https://github.com/bigbluebutton/bbb-webrtc-sfu.git
[submodule "mod/etherpad/bbb-etherpad-skin"]
path = mod/etherpad/bbb-etherpad-skin
url = https://github.com/alangecker/bbb-etherpad-skin url = https://github.com/alangecker/bbb-etherpad-skin
[submodule "mod/etherpad/bbb-etherpad-plugin"] [submodule "repos/bbb-etherpad-plugin"]
path = mod/etherpad/bbb-etherpad-plugin path = repos/bbb-etherpad-plugin
url = https://github.com/alangecker/bbb-etherpad-plugin url = https://github.com/alangecker/bbb-etherpad-plugin
[submodule "mod/bbb-pads/bbb-pads"] [submodule "repos/bbb-webhooks"]
path = mod/bbb-pads/bbb-pads path = repos/bbb-webhooks
url = https://github.com/bigbluebutton/bbb-pads
[submodule "mod/webhooks/bbb-webhooks"]
path = mod/webhooks/bbb-webhooks
url = https://github.com/bigbluebutton/bbb-webhooks url = https://github.com/bigbluebutton/bbb-webhooks
[submodule "mod/nginx/bbb-playback"] [submodule "repos/bbb-playback"]
path = mod/nginx/bbb-playback path = repos/bbb-playback
url = https://github.com/bigbluebutton/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` 4. Ensure docker compose works and that you use a version ≥ 1.28 : `$ docker compose --version`
2. Clone this repository 2. Clone this repository
```sh ```sh
$ git clone --recurse-submodules https://github.com/bigbluebutton/docker.git bbb-docker $ git clone https://github.com/bigbluebutton/docker.git bbb-docker
$ cd bbb-docker $ cd bbb-docker
# use the more stable main branch (sometimes older) # 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: 5. Start containers:
```bash ```bash
$ docker compose up -d $ docker compose up -d --no-build
``` ```
6. If you use greenlight, you can create an admin account with: 6. If you use greenlight, you can create an admin account with:
```bash ```bash

View File

@ -9,10 +9,12 @@ version: '3.6'
x-html5-backend: &html5backend x-html5-backend: &html5backend
build: build:
context: mod/html5 context: mod/html5
additional_contexts:
- source=./repos/bigbluebutton/bigbluebutton-html5
args: args:
BBB_BUILD_TAG: {{ .Env.BBB_BUILD_TAG }} BBB_BUILD_TAG: bbb27-2023-06-13-java17
TAG_HTML5: {{ .Env.TAG_HTML5 }} TAG_BBB: {{ .Env.TAG_BBB }}
image: alangecker/bbb-docker-html5:{{ .Env.TAG_HTML5 }} image: alangecker/bbb-docker-html5:{{ .Env.TAG_BBB }}
restart: unless-stopped restart: unless-stopped
depends_on: depends_on:
- redis - redis
@ -44,11 +46,13 @@ services:
bbb-web: bbb-web:
build: build:
context: mod/bbb-web 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: args:
BBB_BUILD_TAG: {{ .Env.BBB_BUILD_TAG }} BBB_BUILD_TAG: bbb27-2023-06-13-java17
TAG_COMMON_MESSAGE: {{ .Env.TAG_COMMON_MESSAGE }} image: alangecker/bbb-docker-web:{{ .Env.TAG_BBB }}
TAG_BBB_WEB: {{ .Env.TAG_BBB_WEB }}
image: alangecker/bbb-docker-web:{{ .Env.TAG_BBB_WEB }}
restart: unless-stopped restart: unless-stopped
depends_on: depends_on:
- redis - redis
@ -106,12 +110,13 @@ services:
container_name: bbb-freeswitch container_name: bbb-freeswitch
build: build:
context: mod/freeswitch 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: args:
BBB_BUILD_TAG: {{ .Env.BBB_BUILD_TAG }} BBB_BUILD_TAG: bbb27-2023-06-13-java17
TAG_FS_BUILD_FILES: {{ .Env.TAG_FS_BUILD_FILES }} image: alangecker/bbb-docker-freeswitch:{{ .Env.TAG_FREESWITCH }}-{{ .Env.TAG_BBB }}
TAG_FS_CONFIG: {{ .Env.TAG_FS_CONFIG }}
TAG_FREESWITCH: {{ .Env.TAG_FREESWITCH }}
image: alangecker/bbb-docker-freeswitch:{{ .Env.TAG_FS_CONFIG }}
restart: unless-stopped restart: unless-stopped
cap_add: cap_add:
- IPC_LOCK - IPC_LOCK
@ -145,10 +150,12 @@ services:
nginx: nginx:
build: build:
context: mod/nginx context: mod/nginx
additional_contexts:
- src-learning-dashboard=./repos/bigbluebutton/bbb-learning-dashboard
- src-playback=./repos/bbb-playback
args: args:
BBB_BUILD_TAG: {{ .Env.BBB_BUILD_TAG }} BBB_BUILD_TAG: bbb27-2023-06-13-java17
TAG_LEARNING_DASHBOARD: {{ .Env.TAG_LEARNING_DASHBOARD }} image: alangecker/bbb-docker-nginx:1.23-{{ .Env.TAG_PLAYBACK }}-{{ .Env.TAG_BBB }}
image: alangecker/bbb-docker-nginx:1.23-{{ .Env.TAG_PLAYBACK }}-{{ .Env.TAG_LEARNING_DASHBOARD }}
restart: unless-stopped restart: unless-stopped
depends_on: depends_on:
- etherpad - etherpad
@ -168,8 +175,14 @@ services:
- "greenlight:10.7.7.21" - "greenlight:10.7.7.21"
etherpad: etherpad:
build: mod/etherpad build:
image: alangecker/bbb-docker-etherpad:1.9.1 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 restart: unless-stopped
depends_on: depends_on:
- redis - redis
@ -180,7 +193,10 @@ services:
ipv4_address: 10.7.7.4 ipv4_address: 10.7.7.4
bbb-pads: 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 }} image: alangecker/bbb-docker-pads:{{ .Env.TAG_PADS }}
restart: unless-stopped restart: unless-stopped
depends_on: depends_on:
@ -232,8 +248,10 @@ services:
webrtc-sfu: webrtc-sfu:
build: build:
context: mod/webrtc-sfu context: mod/webrtc-sfu
additional_contexts:
- source=./repos/bbb-webrtc-sfu
args: 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 }} image: alangecker/bbb-docker-webrtc-sfu:{{ .Env.TAG_WEBRTC_SFU }}
restart: unless-stopped restart: unless-stopped
depends_on: depends_on:
@ -266,11 +284,13 @@ services:
fsesl-akka: fsesl-akka:
build: build:
context: mod/fsesl-akka 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: args:
BBB_BUILD_TAG: {{ .Env.BBB_BUILD_TAG }} BBB_BUILD_TAG: bbb27-2023-06-13-java17
TAG_COMMON_MESSAGE: {{ .Env.TAG_COMMON_MESSAGE }} image: alangecker/bbb-docker-fsesl-akka:{{ .Env.TAG_BBB }}
TAG_FSESL_AKKA: {{ .Env.TAG_FSESL_AKKA }}
image: alangecker/bbb-docker-fsesl-akka:{{ .Env.TAG_FSESL_AKKA }}
restart: unless-stopped restart: unless-stopped
depends_on: depends_on:
- redis - redis
@ -284,11 +304,12 @@ services:
apps-akka: apps-akka:
build: build:
context: mod/apps-akka context: mod/apps-akka
additional_contexts:
- src-common-message=./repos/bigbluebutton/bbb-common-message
- src-apps-akka=./repos/bigbluebutton/akka-bbb-apps
args: args:
BBB_BUILD_TAG: {{ .Env.BBB_BUILD_TAG }} BBB_BUILD_TAG: bbb27-2023-06-13-java17
TAG_COMMON_MESSAGE: {{ .Env.TAG_COMMON_MESSAGE }} image: alangecker/bbb-docker-apps-akka:{{ .Env.TAG_BBB }}
TAG_APPS_AKKA: {{ .Env.TAG_APPS_AKKA }}
image: alangecker/bbb-docker-apps-akka:{{ .Env.TAG_APPS_AKKA }}
restart: unless-stopped restart: unless-stopped
depends_on: depends_on:
- redis - redis
@ -342,11 +363,14 @@ services:
recordings: recordings:
build: build:
context: mod/recordings 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: args:
BBB_BUILD_TAG: {{ .Env.BBB_BUILD_TAG }} BBB_BUILD_TAG: bbb27-2023-06-13-java17
TAG_RECORDINGS: {{ .Env.TAG_RECORDINGS }} TAG_BBB_PRESENTATION_VIDEO: "4.0.3"
TAG_BBB_PRESENTATION_VIDEO: {{ .Env.TAG_BBB_PRESENTATION_VIDEO }} image: alangecker/bbb-docker-recordings:{{ .Env.TAG_BBB }}
image: alangecker/bbb-docker-recordings:{{ .Env.TAG_RECORDINGS }}
restart: unless-stopped restart: unless-stopped
depends_on: depends_on:
- redis - redis
@ -370,7 +394,10 @@ services:
{{ if isTrue .Env.ENABLE_WEBHOOKS }} {{ if isTrue .Env.ENABLE_WEBHOOKS }}
# webhooks # webhooks
webhooks: webhooks:
build: mod/webhooks build:
context: mod/webhooks
additional_contexts:
- src=./repos/bbb-webhooks
image: alangecker/bbb-docker-webhooks:{{ .Env.TAG_WEBHOOKS }} image: alangecker/bbb-docker-webhooks:{{ .Env.TAG_WEBHOOKS }}
restart: unless-stopped restart: unless-stopped
environment: environment:
@ -405,9 +432,7 @@ services:
{{else}} {{else}}
ALLOWED_DOMAINS: ${DOMAIN} ALLOWED_DOMAINS: ${DOMAIN}
{{end}} {{end}}
{{ if .Env.RESOLVER_ADDRESS }} RESOLVER_ADDRESS: ${RESOLVER_ADDRESS:-9.9.9.9}
RESOLVER_ADDRESS: ${RESOLVER_ADDRESS}
{{end}}
network_mode: host network_mode: host
{{end}} {{end}}
@ -439,7 +464,7 @@ services:
{{ if isTrue .Env.ENABLE_GREENLIGHT }} {{ if isTrue .Env.ENABLE_GREENLIGHT }}
# greenlight # greenlight
greenlight: greenlight:
image: bigbluebutton/greenlight:{{ .Env.TAG_GREENLIGHT }} image: bigbluebutton/greenlight:v3.0.6.1
restart: unless-stopped restart: unless-stopped
env_file: .env env_file: .env
depends_on: 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.** \ 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 * main source for that are the release notes in https://github.com/bigbluebutton/bigbluebutton/releases
2. **Apply these changes to this project.** 2. **Apply these changes to this project.**
* Often you only need to update the TAGS in `tags.env` * Often you only need to checkout the git submodules to the specific release tag
* make sure only to switch to a newer tag if there were changes made avoid creating new (partialy big) images unnecessarily * List of all submodules: `git submodule`
* 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) 3. Test everything (with firefox **and** chromium/chrome)
* Audio * Audio
* Video * Video

View File

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

View File

@ -1,6 +1,6 @@
FROM node:18-bullseye-slim AS builder 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 RUN cd /bbb-pads && rm -r .git && npm install --production

View File

@ -1,29 +1,19 @@
ARG BBB_BUILD_TAG ARG BBB_BUILD_TAG
FROM bigbluebutton/bbb-build:$BBB_BUILD_TAG AS builder 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 # build bbb-common-message
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_COMMON_MESSAGE/bbb-common-message /bbb-common-message \ RUN cd /bbb-common-message && ./deploy.sh
&& cd /bbb-common-message \
&& ./deploy.sh \
&& rm -rf /bbb-common-message
# =================================================== # ===================================================
ARG TAG_BBB_WEB
# download bbb-common-web COPY --from=src-common-web / /bbb-common-web
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_BBB_WEB/bbb-common-web /bbb-common-web \ # build bbb-common-web
&& rm -rf /bbb-common-message/.svn RUN cd /bbb-common-web && ./deploy.sh
# compile bbb-common-web COPY --from=src-web / /bbb-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
# compile bbb-web # compile bbb-web
RUN cd /bbb-web && grails assemble 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 USER root
@ -16,10 +17,10 @@ RUN npm install \
&& rm package-lock.json package.json && rm package-lock.json package.json
# add skin from git submodule # 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 # 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 settings.json /opt/etherpad-lite/settings.json
COPY etherpad-export.sh /etherpad-export.sh COPY etherpad-export.sh /etherpad-export.sh

View File

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

View File

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

View File

@ -5,9 +5,9 @@ FROM bigbluebutton/bbb-build:$BBB_BUILD_TAG AS builder
# USER meteor # USER meteor
ARG TAG_HTML5 ARG TAG_HTML5
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_HTML5/bigbluebutton-html5 /source \
&& cd /source \ COPY --from=source ./ /source
&& meteor npm ci --production \ RUN cd /source && meteor npm ci --production \
&& METEOR_DISABLE_OPTIMISTIC_CACHING=1 meteor build --architecture os.linux.x86_64 --allow-superuser --directory /app \ && METEOR_DISABLE_OPTIMISTIC_CACHING=1 meteor build --architecture os.linux.x86_64 --allow-superuser --directory /app \
&& rm -rf /source && rm -rf /source
@ -17,7 +17,7 @@ RUN cd /app/bundle/programs/server \
RUN mkdir -p /app/bundle/programs/web.browser/app/files && \ 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/ 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 '*.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 '*.css' -exec gzip -k -f -9 '{}' \; \
&& find /app/bundle/programs/web.browser -name '*.wasm' -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 entrypoint.sh /entrypoint.sh
COPY bbb-html5.yml /app/bbb-html5.yml.tmpl COPY bbb-html5.yml /app/bbb-html5.yml.tmpl
# expose TAG_HTML5 in container for the version display # expose TAG_BBB in container for the version display
ARG TAG_HTML5 ARG TAG_BBB
ENV TAG_HTML5 $TAG_HTML5 ENV TAG_BBB $TAG_BBB
ENTRYPOINT ["/entrypoint.sh"] ENTRYPOINT ["/entrypoint.sh"]

View File

@ -3,11 +3,10 @@ FROM bigbluebutton/bbb-build:$BBB_BUILD_TAG AS builder
# -------------------- # --------------------
ARG TAG_LEARNING_DASHBOARD COPY --from=src-learning-dashboard / /bbb-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 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 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 ARG TAG_RECORDINGS
# add bbb-record-core (lib, scripts and Gemfile) COPY --from=record-core / /usr/local/bigbluebutton/core
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
# add bbb-playback-presentation scripts # add bbb-playback-presentation scripts
RUN cd /tmp \ COPY --from=presentation /scripts /usr/local/bigbluebutton/core/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
# install ruby dependencies # install ruby dependencies
RUN cd /usr/local/bigbluebutton/core \ 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 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 # 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 \ RUN cd /usr/bin \
&& wget https://raw.githubusercontent.com/bigbluebutton/bigbluebutton/$TAG_RECORDINGS/bigbluebutton-config/bin/bbb-record \
&& chmod +x /usr/bin/bbb-record \ && chmod +x /usr/bin/bbb-record \
&& sed -i 's/^BBB_WEB.*/BBB_WEB=""/' /usr/bin/bbb-record \ && sed -i 's/^BBB_WEB.*/BBB_WEB=""/' /usr/bin/bbb-record \
&& sed -i 's/systemctl.*//' /usr/bin/bbb-record \ && sed -i 's/systemctl.*//' /usr/bin/bbb-record \

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 \ 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 && chmod +x /usr/bin/yq
COPY ./bbb-webhooks /bbb-webhooks COPY --from=src / /bbb-webhooks
RUN cd /bbb-webhooks && npm install --production RUN cd /bbb-webhooks && npm install --production
RUN chmod 777 /bbb-webhooks/config 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 RUN useradd --uid 2004 --user-group webrtc-sfu
ADD ./bbb-webrtc-sfu /app COPY --from=source / /app
ENV NODE_ENV production 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 \ RUN cd /app \
&& cp config/default.example.yml config/production.yml \ && cp config/default.example.yml config/production.yml \
&& rm .git \
&& npm install --unsafe-perm \ && npm install --unsafe-perm \
&& npm cache clear --force \ && npm cache clear --force \
&& rm -rf node_modules/mediasoup/worker/out/Release/subprojects \ && rm -rf node_modules/mediasoup/worker/out/Release/subprojects \

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)/.. cd $(dirname $0)/..
# load .env # load .env
if [ -f .env ] . functions.sh
then load_env
# 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
if [ ! "$ENABLE_RECORDING" == true ]; then if [ ! "$ENABLE_RECORDING" == true ]; then
echo "Error: recording is disabled why can't use bbb-record" 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)/.. cd $(dirname $0)/..
# load .env # load .env
if [ -f .env ] . functions.sh
then load_env
export $(cat .env | sed 's/#.*//g' | grep "FSESL_PASSWORD" | xargs)
fi
docker compose exec freeswitch /opt/freeswitch/bin/fs_cli -H 10.7.7.1 -p "$FSESL_PASSWORD" 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)/.. cd $(dirname $0)/..
# load .env # load .env
if [ -f .env ] . scripts/functions.sh
then load_env
# 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
# check for non-optional environment variables, # check for non-optional environment variables,
# which got introduced later and may miss in existing # which got introduced later and may miss in existing
@ -33,35 +30,31 @@ if [ "$ENABLE_COTURN" == true ]; then
fi fi
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 \ docker run \
--rm \ --rm \
-v $(pwd)/docker-compose.tmpl.yml:/docker-compose.tmpl.yml \ -v $(pwd)/docker-compose.tmpl.yml:/docker-compose.tmpl.yml \
-e BBB_BUILD_TAG=${BBB_BUILD_TAG} \ -e TAG_BBB=$(get_tag repos/bigbluebutton) \
-e TAG_COMMON_MESSAGE=${TAG_COMMON_MESSAGE} \ -e TAG_FREESWITCH=$(get_tag repos/freeswitch) \
-e TAG_APPS_AKKA=${TAG_APPS_AKKA} \ -e TAG_WEBRTC_SFU=$(get_tag repos/bbb-webrtc-sfu) \
-e TAG_FSESL_AKKA=${TAG_FSESL_AKKA} \ -e TAG_WEBHOOKS=$(get_tag repos/bbb-webhooks) \
-e TAG_BBB_WEB=${TAG_BBB_WEB} \ -e TAG_PLAYBACK=$(get_tag repos/bbb-playback) \
-e TAG_HTML5=${TAG_HTML5} \ -e TAG_PADS=$(get_tag repos/bbb-pads) \
-e TAG_FS_CONFIG=${TAG_FS_CONFIG} \ -e COMMIT_ETHERPAD_SKIN=$(get_tag repos/bbb-etherpad-skin) \
-e TAG_FS_BUILD_FILES=${TAG_FS_BUILD_FILES} \ -e COMMIT_ETHERPAD_PLUGIN=$(get_tag repos/bbb-etherpad-plugin) \
-e TAG_LEARNING_DASHBOARD=${TAG_LEARNING_DASHBOARD} \
-e TAG_RECORDINGS=${TAG_RECORDINGS} \
-e TAG_WEBRTC_SFU=${TAG_WEBRTC_SFU} \
-e TAG_WEBHOOKS=${TAG_WEBHOOKS} \
-e TAG_PLAYBACK=${TAG_PLAYBACK} \
-e TAG_PADS=${TAG_PADS} \
-e TAG_FREESWITCH=${TAG_FREESWITCH} \
-e TAG_BBB_PRESENTATION_VIDEO=${TAG_BBB_PRESENTATION_VIDEO} \
-e TAG_GREENLIGHT=${TAG_GREENLIGHT} \
-e DEV_MODE=${DEV_MODE:-false} \ -e DEV_MODE=${DEV_MODE:-false} \
-e EXTERNAL_IPv6=${EXTERNAL_IPv6:-} \ -e EXTERNAL_IPv6=${EXTERNAL_IPv6:-} \
-e ENABLE_RECORDING=${ENABLE_RECORDING:-false} \ -e ENABLE_RECORDING=${ENABLE_RECORDING:-false} \
-e REMOVE_OLD_RECORDING=${REMOVE_OLD_RECORDING:-false} \
-e RECORDING_MAX_AGE_DAYS=${RECORDING_MAX_AGE_DAYS:-14} \
-e ENABLE_HTTPS_PROXY=${ENABLE_HTTPS_PROXY:-false} \ -e ENABLE_HTTPS_PROXY=${ENABLE_HTTPS_PROXY:-false} \
-e RESOLVER_ADDRESS=${RESOLVER_ADDRESS} \
-e ENABLE_WEBHOOKS=${ENABLE_WEBHOOKS:-false} \ -e ENABLE_WEBHOOKS=${ENABLE_WEBHOOKS:-false} \
-e ENABLE_COTURN=${ENABLE_COTURN:-false} \ -e ENABLE_COTURN=${ENABLE_COTURN:-false} \
-e ENABLE_GREENLIGHT=${ENABLE_GREENLIGHT:-false} \ -e ENABLE_GREENLIGHT=${ENABLE_GREENLIGHT:-false} \

View File

@ -4,11 +4,8 @@ set -e
cd "$(dirname "$0")/.." cd "$(dirname "$0")/.."
# load .env # load .env
if [ -f .env ] . functions.sh
then load_env
# 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 if [ -z "$ENABLE_WEBHOOKS" ]; then
echo "ERROR: ENABLE_WEBHOOKS must be set to true, otherwise the image would not be built" 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