diff --git a/.gitmodules b/.gitmodules index cc00452..9065c08 100644 --- a/.gitmodules +++ b/.gitmodules @@ -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 diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e34846..5862751 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,18 @@ ## Unreleased +## Release v2.7.3 (2023-12-08) + +**Breaking change!** make sure to read the [upgrading notes](https://github.com/bigbluebutton/docker/blob/develop/docs/upgrading.md) + +- BigBlueButton 2.7.3 @alangecker [#304](https://github.com/bigbluebutton/docker/pull/304) +- use local sources instead of pulling inside container @alangecker [#307](https://github.com/bigbluebutton/docker/pull/307) +- BigBlueButton 2.7.0 @alangecker [#291](https://github.com/bigbluebutton/docker/pull/291) +- Update to ComposeV2 @leonidas-o [#271](https://github.com/bigbluebutton/docker/pull/271) +- recordings: fix for missing `SHARED_SECRET` @ichdasich [#274](https://github.com/bigbluebutton/docker/issues/274) [#268](https://github.com/bigbluebutton/docker/issues/268) +- Add RESOLVER_ADDRESS to env for docker-nginx-auto-ssl @pkolmann [#277](https://github.com/bigbluebutton/docker/pull/277) +- Fix learning-dashboard @yanus [#262](https://github.com/bigbluebutton/docker/pull/262) + ## Release v2.6.0-2 (2023-04-04) - hotfix for broken freeswitch container due to enabled compresion with max file count == 1 [#260](https://github.com/bigbluebutton/docker/issues/260) diff --git a/README.md b/README.md index b0e3d9a..0a0ebf4 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ bbb-docker-banner -# 📦 BigBlueButton 2.6 Docker +# 📦 BigBlueButton 2.7 Docker -Version: 2.6.0 | [Changelog](CHANGELOG.md) | [Issues](https://github.com/bigbluebutton/docker/issues) +Version: 2.7.3 | [Changelog](CHANGELOG.md) | [Issues](https://github.com/bigbluebutton/docker/issues) ## Features - Easy installation @@ -13,22 +13,28 @@ Version: 2.6.0 | [Changelog](CHANGELOG.md) | [Issues](https://github.com/bigblue - Full IPv6 support - Runs on any major linux distributon (Debian, Ubuntu, CentOS,...) +## Requirements +- 4GB of RAM +- Linux (it will not work under WSL) +- Root access (bbb-docker uses host networking, so it won't work with Kubernetes, any "CaaS"-Service, etc.) +- Public IPv4 (expect issues with a firewall / NAT) + ## What is not implemented yet - bbb-lti ## Install -1. Install docker-ce & docker-compose +1. Install docker-ce & docker-compose-plugin 1. follow instructions * Debian: https://docs.docker.com/engine/install/debian/ * CentOS: https://docs.docker.com/engine/install/centos/ * Fedora: https://docs.docker.com/engine/install/fedora/ * Ubuntu: https://docs.docker.com/engine/install/ubuntu/ 2. Ensure docker works with `$ docker run hello-world` - 3. Install docker-compose: https://docs.docker.com/compose/install/ - 4. Ensure docker-compose works and that you use a version ≥ 1.28 : `$ docker-compose --version` + 3. Install docker compose V2: https://docs.docker.com/compose/install/ + 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) @@ -46,11 +52,11 @@ Version: 2.6.0 | [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 - $ docker-compose exec greenlight bundle exec rake admin:create + $ docker compose exec greenlight bundle exec rake admin:create ``` ## Further How-To's diff --git a/docker-compose.tmpl.yml b/docker-compose.tmpl.yml index 0d56003..aef1b68 100644 --- a/docker-compose.tmpl.yml +++ b/docker-compose.tmpl.yml @@ -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 @@ -135,7 +140,7 @@ services: - vol-freeswitch:/var/freeswitch/meetings network_mode: host logging: - # reduce logs to a minimum, so `docker-compose logs -f` still works + # reduce logs to a minimum, so `docker compose logs -f` still works driver: "local" options: max-size: "10k" @@ -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.8.18-3 + 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: @@ -193,7 +209,7 @@ services: ipv4_address: 10.7.7.18 redis: - image: redis:7.0-alpine + image: redis:7.2-alpine restart: unless-stopped healthcheck: test: ["CMD", "redis-cli", "ping"] @@ -232,18 +248,23 @@ 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: - redis - freeswitch + - kurento environment: CLIENT_HOST: 10.7.7.1 REDIS_HOST: 10.7.7.5 FREESWITCH_IP: 10.7.7.1 FREESWITCH_SIP_IP: ${EXTERNAL_IPv4} + MCS_HOST: 0.0.0.0 + MCS_ADDRESS: 127.0.0.1 ESL_IP: 10.7.7.1 ESL_PASSWORD: ${FSESL_PASSWORD:-ClueCon} # TODO: add mediasoup IPv6 @@ -263,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 @@ -281,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 @@ -316,7 +340,7 @@ services: periodic: build: mod/periodic - image: alangecker/bbb-docker-periodic:v2.5.0-rc.1 + image: alangecker/bbb-docker-periodic:v2.7.0 restart: unless-stopped depends_on: - mongodb @@ -339,17 +363,21 @@ 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 - bbb-pads environment: DOMAIN: ${DOMAIN} + SHARED_SECRET: ${SHARED_SECRET} volumes: - bigbluebutton:/var/bigbluebutton - vol-freeswitch:/var/freeswitch/meetings @@ -366,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: @@ -401,6 +432,7 @@ services: {{else}} ALLOWED_DOMAINS: ${DOMAIN} {{end}} + RESOLVER_ADDRESS: ${RESOLVER_ADDRESS:-9.9.9.9} network_mode: host {{end}} @@ -432,7 +464,7 @@ services: {{ if isTrue .Env.ENABLE_GREENLIGHT }} # greenlight greenlight: - image: bigbluebutton/greenlight:{{ .Env.TAG_GREENLIGHT }}-alpine + image: bigbluebutton/greenlight:v3.0.6.1 restart: unless-stopped env_file: .env depends_on: @@ -449,6 +481,7 @@ services: {{end}} BIGBLUEBUTTON_SECRET: ${SHARED_SECRET} SECRET_KEY_BASE: ${RAILS_SECRET} + RELATIVE_URL_ROOT: / volumes: - ./greenlight-data:/usr/src/app/storage networks: @@ -490,6 +523,11 @@ services: volumes: - bigbluebutton:/var/bigbluebutton:ro {{end}} + + # the exporter requires /etc/bigbluebutton/bigbluebutton-release + tmpfs: + - /etc/bigbluebutton:mode=777 + entrypoint: sh -c 'echo "BIGBLUEBUTTON_RELEASE=2.7.3" > /etc/bigbluebutton/bigbluebutton-release && python server.py' {{end}} diff --git a/docs/development.md b/docs/development.md index f499f00..c791b1b 100644 --- a/docs/development.md +++ b/docs/development.md @@ -42,11 +42,11 @@ RAILS_SECRET=SuperRailsSecret_SuperRailsSecret - regenerate `docker-compose.yml` \ `$ ./scripts/generate-compose` - build the images \ - `$ docker-compose build` + `$ docker compose build` - you can than start it with \ - `$ docker-compose up -d` + `$ docker compose up -d` - view the logs with \ - `$ docker-compose logs -f` + `$ docker compose logs -f` - and access the API via \ https://mconf.github.io/api-mate/#server=https://10.7.7.1/bigbluebutton/api&sharedSecret=SuperSecret * At some point your browser will warn you about an invalid certificate, but you can press _"Accept the Risk and Continue" / "Proceed to 10.7.7.1 (unsafe)"_ @@ -60,9 +60,9 @@ RAILS_SECRET=SuperRailsSecret_SuperRailsSecret - recreate `docker-compose.yml` \ `$ ./scripts/generate-compose` * rebuild the image(s): \ - `$ docker-compose build [containername]` + `$ docker compose build [containername]` * restart changes image(s): \ - `$ docker-compose up -d` + `$ docker compose up -d` ## How to do create a new update for a newer BBB release? @@ -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 diff --git a/docs/upgrading.md b/docs/upgrading.md index 92bd003..0000c33 100644 --- a/docs/upgrading.md +++ b/docs/upgrading.md @@ -1,16 +1,22 @@ # How To Upgrade bbb-docker +### Upgrading from `v2.6.x` +- **Breaking change:** We use now Docker Compose V2 + * make sure you have docker ≥ 23.0 installed (`$ docker -v`) + * update all usages of `docker-compose` to `docker compose` in your scripts -### Upgrading `v2.5.x` -> `v2.6.x` +apart from that follow the guide (_within v2.7.x_) below. -- *Breaking change:* Greenlight got fully rewritten +### Upgrading from `v2.5.x` + +- **Breaking change:** Greenlight got fully rewritten * it is starting as a fresh installation. you can migrate your data with `./scripts/greenlight-migrate-v2-v3` * some greenlight settings under `.env` have changed. compare your version with `sample.env` * it is now served directly under `/` and not in `/b`. If you use an reverse proxy not included in this repo, ensure to update your config accordingly! apart from that follow the guide below. -### within `v2.6.x` +### within `v2.7.x` #### Backup if you use greenlight, create a database backup first ```bash @@ -23,5 +29,5 @@ docker exec -t docker_postgres_1 pg_dumpall -c -U postgres > /root/greenlight_`d ./scripts/upgrade # restart updated services -docker-compose up -d +docker compose up -d --no-build ``` diff --git a/mod/apps-akka/Dockerfile b/mod/apps-akka/Dockerfile index 3ad648e..fcd876c 100644 --- a/mod/apps-akka/Dockerfile +++ b/mod/apps-akka/Dockerfile @@ -1,20 +1,16 @@ ARG BBB_BUILD_TAG -FROM gitlab.senfcall.de:5050/senfcall-public/docker-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 -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 \ diff --git a/mod/base-java/Dockerfile b/mod/base-java/Dockerfile index 571126c..154e876 100644 --- a/mod/base-java/Dockerfile +++ b/mod/base-java/Dockerfile @@ -1,4 +1,4 @@ -FROM openjdk:11-jre-slim-bullseye +FROM eclipse-temurin:17-jre-jammy RUN apt-get update && apt-get install -y \ wget unzip gosu locales \ diff --git a/mod/bbb-pads/Dockerfile b/mod/bbb-pads/Dockerfile index fe63b9b..6109675 100644 --- a/mod/bbb-pads/Dockerfile +++ b/mod/bbb-pads/Dockerfile @@ -1,13 +1,13 @@ -FROM node:16-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 chmod 777 /bbb-pads/config # ------------------------------ -FROM node:16-bullseye-slim +FROM node:18-bullseye-slim RUN apt update && apt install -y jq moreutils \ && useradd --uid 2003 --create-home --user-group bbb-pads diff --git a/mod/bbb-pads/bbb-pads b/mod/bbb-pads/bbb-pads deleted file mode 160000 index 570921c..0000000 --- a/mod/bbb-pads/bbb-pads +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 570921cff678e4e627a37e781c2a33a50be521f2 diff --git a/mod/bbb-web/Dockerfile b/mod/bbb-web/Dockerfile index b0f143c..1b636ec 100644 --- a/mod/bbb-web/Dockerfile +++ b/mod/bbb-web/Dockerfile @@ -1,29 +1,19 @@ ARG BBB_BUILD_TAG -FROM gitlab.senfcall.de:5050/senfcall-public/docker-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 -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 diff --git a/mod/etherpad/Dockerfile b/mod/etherpad/Dockerfile index 7573eed..c530952 100644 --- a/mod/etherpad/Dockerfile +++ b/mod/etherpad/Dockerfile @@ -1,26 +1,26 @@ -FROM etherpad/etherpad:1.8.18 +ARG TAG_ETHERPAD +FROM etherpad/etherpad:$TAG_ETHERPAD USER root -RUN apt-get update \ - && apt-get install -y git curl +RUN apk add git curl USER etherpad -RUN npm install \ +RUN npm install \ ep_cursortrace@3.1.16 \ git+https://github.com/mconf/ep_pad_ttl.git#360136cd38493dd698435631f2373cbb7089082d \ - git+https://github.com/mconf/ep_redis_publisher.git#a30a48e4bc1e501b5b102884b9a0b26c30798484 \ + git+https://github.com/mconf/ep_redis_publisher.git#2b6e47c1c59362916a0b2961a29b259f2977b694 \ 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 + && 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 diff --git a/mod/etherpad/entrypoint.sh b/mod/etherpad/entrypoint.sh index 7586f6c..79a0ecd 100755 --- a/mod/etherpad/entrypoint.sh +++ b/mod/etherpad/entrypoint.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh echo $ETHERPAD_API_KEY > /tmp/apikey export NODE_ENV=production diff --git a/mod/etherpad/etherpad-export.sh b/mod/etherpad/etherpad-export.sh index a1f8f7c..f23c72e 100755 --- a/mod/etherpad/etherpad-export.sh +++ b/mod/etherpad/etherpad-export.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh src="$8" dest="$(echo $8 | sed -E -e 's/html|odt/'$7'/')" convertTo="$7" diff --git a/mod/etherpad/settings.json b/mod/etherpad/settings.json index 11442c6..42466c5 100644 --- a/mod/etherpad/settings.json +++ b/mod/etherpad/settings.json @@ -89,7 +89,7 @@ * * "defaultPadText" : "${DEFAULT_PAD_TEXT}Line 1\nLine 2" */ -{ + { /* * Name your instance! */ @@ -198,8 +198,7 @@ "dbType": "redis", "dbSettings": { - "host": "redis", - "port": 6379 + "url": "redis://redis:6379" }, /* @@ -220,9 +219,10 @@ */ /* - * The default text of a pad - */ - "defaultPadText" : "", + * The default text of a pad: A zero-width-space is used to work around an issue with Etherpad 1.9.1 where empty pads are not being created. + * See: https://github.com/ether/etherpad-lite/issues/5787 + */ + "defaultPadText" : "\u200b", /* * Default Pad behavior. @@ -539,7 +539,7 @@ "windowMs": 90000, // maximum number of requests per IP to allow during the rate limit window - "max": 10 + "max": 16 }, /* @@ -597,7 +597,40 @@ "loglevel": "INFO", /* Override any strings found in locale directories */ - "customLocaleStrings": {}, + "customLocaleStrings": { + "de": { + "pad.importExport.import_export": "Export", + "pad.toolbar.import_export.title": "Export zu verschiedenen Dateiformaten" + }, + "en-gb": { + "pad.importExport.import_export": "Export", + "pad.toolbar.import_export.title": "Export to different file formats" + }, + "en": { + "pad.importExport.import_export": "Export", + "pad.toolbar.import_export.title": "Export to different file formats" + }, + "es": { + "pad.importExport.import_export": "Exportar", + "pad.toolbar.import_export.title": "Exportar a diferentes formatos de archivos" + }, + "fr": { + "pad.importExport.import_export": "Exporter", + "pad.toolbar.import_export.title": "Exporter vers un format de fichier différent" + }, + "it": { + "pad.importExport.import_export": "Esportazione", + "pad.toolbar.import_export.title": "Esporta a diversi formati di file" + }, + "pt-br": { + "pad.importExport.import_export": "Exportar", + "pad.toolbar.import_export.title": "Exportar para diferentes formatos de arquivo" + }, + "pt": { + "pad.importExport.import_export": "Exportar", + "pad.toolbar.import_export.title": "Exportar para diferentes formatos de ficheiro" + } + }, /* Disable Admin UI tests */ "enableAdminUITests": false diff --git a/mod/freeswitch/Dockerfile b/mod/freeswitch/Dockerfile index 6564607..19107e1 100644 --- a/mod/freeswitch/Dockerfile +++ b/mod/freeswitch/Dockerfile @@ -1,13 +1,7 @@ ARG BBB_BUILD_TAG -FROM gitlab.senfcall.de:5050/senfcall-public/docker-bbb-build:$BBB_BUILD_TAG AS builder +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/ # =============================================== @@ -66,9 +49,9 @@ RUN apt-get update && \ libfreetype6 libcurl4 libspeex1 libspeexdsp1 libopus0 libsndfile1 libopusfile0 liblua5.2-0 libjbig0 libldns2 libedit2 libtiff5 libpng16-16 \ && \ # install libopusenc0 - wget -O /tmp/libopusenc0_0.2.1-1bbb1_amd64.deb https://launchpad.net/~bigbluebutton/+archive/ubuntu/support/+files/libopusenc0_0.2.1-1bbb1_amd64.deb \ - && dpkg -i /tmp/libopusenc0_0.2.1-1bbb1_amd64.deb \ - && rm /tmp/libopusenc0_0.2.1-1bbb1_amd64.deb + wget -O /tmp/libopusenc0_0.2.1-1bbb2_amd64.deb https://launchpad.net/~bigbluebutton/+archive/ubuntu/support/+files/libopusenc0_0.2.1-1bbb2_amd64.deb \ + && dpkg -i /tmp/libopusenc0_0.2.1-1bbb2_amd64.deb \ + && rm /tmp/libopusenc0_0.2.1-1bbb2_amd64.deb # add dockerize COPY --from=alangecker/bbb-docker-base-java /usr/local/bin/dockerize /usr/local/bin/dockerize diff --git a/mod/freeswitch/conf/autoload_configs/modules.conf.xml b/mod/freeswitch/conf/autoload_configs/modules.conf.xml index f30804c..36f5d4b 100644 --- a/mod/freeswitch/conf/autoload_configs/modules.conf.xml +++ b/mod/freeswitch/conf/autoload_configs/modules.conf.xml @@ -13,6 +13,7 @@ + diff --git a/mod/fsesl-akka/Dockerfile b/mod/fsesl-akka/Dockerfile index 61494d1..8f66f59 100644 --- a/mod/fsesl-akka/Dockerfile +++ b/mod/fsesl-akka/Dockerfile @@ -1,24 +1,16 @@ ARG BBB_BUILD_TAG -FROM gitlab.senfcall.de:5050/senfcall-public/docker-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 -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 \ diff --git a/mod/html5/Dockerfile b/mod/html5/Dockerfile index 92ebb7c..5f092c0 100644 --- a/mod/html5/Dockerfile +++ b/mod/html5/Dockerfile @@ -1,13 +1,13 @@ ARG BBB_BUILD_TAG -FROM gitlab.senfcall.de:5050/senfcall-public/docker-bbb-build:$BBB_BUILD_TAG AS builder +FROM bigbluebutton/bbb-build:$BBB_BUILD_TAG AS builder # 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 \ + +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,14 +17,14 @@ 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 '{}' \; # ------------------------------ -FROM node:14-bullseye-slim +FROM node:14.21-bullseye-slim RUN apt-get update && apt-get install -y gosu @@ -37,4 +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_BBB in container for the version display +ARG TAG_BBB +ENV TAG_BBB $TAG_BBB + ENTRYPOINT ["/entrypoint.sh"] diff --git a/mod/html5/bbb-html5.yml b/mod/html5/bbb-html5.yml index baf6de8..17db535 100644 --- a/mod/html5/bbb-html5.yml +++ b/mod/html5/bbb-html5.yml @@ -1,5 +1,6 @@ public: app: + html5ClientBuild: {{ .Env.TAG_HTML5 }} bbbServerVersion: {{ .Env.TAG_HTML5 }}-docker listenOnlyMode: {{ .Env.LISTEN_ONLY_MODE }} skipCheck: {{ .Env.DISABLE_ECHO_TEST }} diff --git a/mod/jodconverter/Dockerfile b/mod/jodconverter/Dockerfile index fdbab6f..8ae7e27 100644 --- a/mod/jodconverter/Dockerfile +++ b/mod/jodconverter/Dockerfile @@ -1,6 +1,6 @@ -FROM eugenmayer/jodconverter:rest +FROM ghcr.io/jodconverter/jodconverter-examples:rest RUN echo "ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true" | debconf-set-selections -RUN sed -i 's/main/main contrib/' /etc/apt/sources.list && apt-get update +RUN sed -i 's/main/main contrib/' /etc/apt/sources.list.d/debian.sources && apt-get update RUN apt-get update && apt -y install --no-install-recommends \ fonts-arkpandora \ fonts-crosextra-carlito \ diff --git a/mod/nginx/Dockerfile b/mod/nginx/Dockerfile index 7e6922a..091ebde 100644 --- a/mod/nginx/Dockerfile +++ b/mod/nginx/Dockerfile @@ -1,18 +1,17 @@ ARG BBB_BUILD_TAG -FROM gitlab.senfcall.de:5050/senfcall-public/docker-bbb-build:$BBB_BUILD_TAG AS builder +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 -RUN cd /bbb-playback && npm ci && npm run build +COPY --from=src-playback / /bbb-playback +RUN cd /bbb-playback && npm install && npm run-script build # -------------------- -FROM nginx:1.23-alpine +FROM nginx:1.25-alpine COPY --from=builder /bbb-learning-dashboard/build /www/learning-analytics-dashboard/ COPY --from=builder /bbb-playback/build /www/playback/presentation/2.3 diff --git a/mod/nginx/bbb-playback b/mod/nginx/bbb-playback deleted file mode 160000 index 2fd02ed..0000000 --- a/mod/nginx/bbb-playback +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 2fd02ed28f9b4f423783b1ba5f43135b9548b5e1 diff --git a/mod/nginx/bbb/learning-dashboard.nginx b/mod/nginx/bbb/learning-dashboard.nginx index d7899bf..2b78e2a 100644 --- a/mod/nginx/bbb/learning-dashboard.nginx +++ b/mod/nginx/bbb/learning-dashboard.nginx @@ -1,5 +1,5 @@ location ~ /learning-analytics-dashboard/([0-9a-f]+-[0-9]+)/(.*) { - root /var/bigbluebutton/learning-analytics-dashboard/; + alias /var/bigbluebutton/learning-dashboard/$1/$2; autoindex off; } diff --git a/mod/nginx/bbb/verto.nginx b/mod/nginx/bbb/verto.nginx deleted file mode 100644 index cfafdab..0000000 --- a/mod/nginx/bbb/verto.nginx +++ /dev/null @@ -1,10 +0,0 @@ -location /verto { - proxy_pass https://host.docker.internal:8082; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "Upgrade"; - proxy_read_timeout 6h; - proxy_send_timeout 6h; - client_body_timeout 6h; - send_timeout 6h; -} diff --git a/mod/recordings/Dockerfile b/mod/recordings/Dockerfile index f7e476b..9f08763 100644 --- a/mod/recordings/Dockerfile +++ b/mod/recordings/Dockerfile @@ -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 \ diff --git a/mod/recordings/bbb-web.properties b/mod/recordings/bbb-web.properties index c36b7e6..e891d1c 100644 --- a/mod/recordings/bbb-web.properties +++ b/mod/recordings/bbb-web.properties @@ -1 +1,2 @@ +bigbluebutton.web.serverURL=https://{{ .Env.DOMAIN }} securitySalt={{ .Env.SHARED_SECRET }} \ No newline at end of file diff --git a/mod/webhooks/Dockerfile b/mod/webhooks/Dockerfile index 782b6a9..f0aaa9f 100644 --- a/mod/webhooks/Dockerfile +++ b/mod/webhooks/Dockerfile @@ -1,4 +1,4 @@ -FROM node:16-bullseye-slim AS builder +FROM node:18-bullseye-slim AS builder RUN apt-get update && apt-get install -y git wget @@ -6,13 +6,13 @@ 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 # ------------------------------ -FROM node:16-bullseye-slim +FROM node:18-bullseye-slim RUN useradd --uid 2004 --user-group bbb-webhooks COPY --from=builder /usr/bin/yq /usr/bin/yq diff --git a/mod/webhooks/bbb-webhooks b/mod/webhooks/bbb-webhooks deleted file mode 160000 index 2eb5e44..0000000 --- a/mod/webhooks/bbb-webhooks +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 2eb5e4471083f9f99e969d5d19a44529ec735808 diff --git a/mod/webrtc-sfu/Dockerfile b/mod/webrtc-sfu/Dockerfile index 0eb4537..b3f57af 100644 --- a/mod/webrtc-sfu/Dockerfile +++ b/mod/webrtc-sfu/Dockerfile @@ -1,20 +1,15 @@ ARG BBB_BUILD_TAG -FROM gitlab.senfcall.de:5050/senfcall-public/docker-bbb-build:$BBB_BUILD_TAG AS builder +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 \ @@ -23,7 +18,7 @@ RUN cd /app \ # ============================= -FROM node:16-bullseye-slim +FROM node:18-bullseye-slim RUN useradd --uid 2004 --user-group webrtc-sfu ENV NODE_ENV production diff --git a/mod/webrtc-sfu/bbb-webrtc-sfu b/mod/webrtc-sfu/bbb-webrtc-sfu deleted file mode 160000 index f74deeb..0000000 --- a/mod/webrtc-sfu/bbb-webrtc-sfu +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f74deebf2fa9ef1fa96b650b9b25c5f32d1b24b5 diff --git a/mod/etherpad/bbb-etherpad-plugin b/repos/bbb-etherpad-plugin similarity index 100% rename from mod/etherpad/bbb-etherpad-plugin rename to repos/bbb-etherpad-plugin diff --git a/mod/etherpad/bbb-etherpad-skin b/repos/bbb-etherpad-skin similarity index 100% rename from mod/etherpad/bbb-etherpad-skin rename to repos/bbb-etherpad-skin diff --git a/repos/bbb-pads b/repos/bbb-pads new file mode 160000 index 0000000..433fe4c --- /dev/null +++ b/repos/bbb-pads @@ -0,0 +1 @@ +Subproject commit 433fe4c3934edff36cddcfb1e892e323c2fe75ea diff --git a/repos/bbb-playback b/repos/bbb-playback new file mode 160000 index 0000000..a8f5a72 --- /dev/null +++ b/repos/bbb-playback @@ -0,0 +1 @@ +Subproject commit a8f5a72a7dc55cc8bab6f980035291b6e8fe5de5 diff --git a/repos/bbb-webhooks b/repos/bbb-webhooks new file mode 160000 index 0000000..7c0cd8e --- /dev/null +++ b/repos/bbb-webhooks @@ -0,0 +1 @@ +Subproject commit 7c0cd8e6cad144578598f9fa6ea2d9ab78af560b diff --git a/repos/bbb-webrtc-sfu b/repos/bbb-webrtc-sfu new file mode 160000 index 0000000..c0de0ff --- /dev/null +++ b/repos/bbb-webrtc-sfu @@ -0,0 +1 @@ +Subproject commit c0de0ff3857146da4924233d36b710874d16a26f diff --git a/repos/bigbluebutton b/repos/bigbluebutton new file mode 160000 index 0000000..5d671b3 --- /dev/null +++ b/repos/bigbluebutton @@ -0,0 +1 @@ +Subproject commit 5d671b3b506712e54093f50c2a4bdb9995982fab diff --git a/repos/freeswitch b/repos/freeswitch new file mode 160000 index 0000000..4cb05e7 --- /dev/null +++ b/repos/freeswitch @@ -0,0 +1 @@ +Subproject commit 4cb05e7f4a23645ec387f3b5391194128be7d193 diff --git a/repos/tags b/repos/tags new file mode 100644 index 0000000..b569c71 --- /dev/null +++ b/repos/tags @@ -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 diff --git a/sample.env b/sample.env index 3528941..4913308 100644 --- a/sample.env +++ b/sample.env @@ -6,6 +6,8 @@ # HTTPS Proxy # fully automated Lets Encrypt certificates ENABLE_HTTPS_PROXY=true +# If your network doesn't allow access to DNS at 8.8.8.8 specify your own resolvers +#RESOLVER_ADDRESS=x.x.x.x # coturn (a TURN Server) # requires either the abhove HTTPS Proxy to be enabled diff --git a/scripts/bbb-record b/scripts/bbb-record index 3814956..31071bd 100755 --- a/scripts/bbb-record +++ b/scripts/bbb-record @@ -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" @@ -16,5 +13,5 @@ if [ ! "$ENABLE_RECORDING" == true ]; then exit 1 fi -docker-compose exec recordings bbb-record $@ -docker-compose logs --tail=15 recordings \ No newline at end of file +docker compose exec recordings bbb-record $@ +docker compose logs --tail=15 recordings \ No newline at end of file diff --git a/scripts/checkout-submodules b/scripts/checkout-submodules deleted file mode 100755 index 8165f33..0000000 --- a/scripts/checkout-submodules +++ /dev/null @@ -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 \ No newline at end of file diff --git a/scripts/collect-tags b/scripts/collect-tags new file mode 100755 index 0000000..d0e4b73 --- /dev/null +++ b/scripts/collect-tags @@ -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 + diff --git a/scripts/fs_cli b/scripts/fs_cli index fd1ec54..de7fc5d 100755 --- a/scripts/fs_cli +++ b/scripts/fs_cli @@ -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" +docker compose exec freeswitch /opt/freeswitch/bin/fs_cli -H 10.7.7.1 -p "$FSESL_PASSWORD" diff --git a/scripts/functions.sh b/scripts/functions.sh new file mode 100644 index 0000000..4f42e62 --- /dev/null +++ b/scripts/functions.sh @@ -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 + +} + diff --git a/scripts/generate-compose b/scripts/generate-compose index 077f62a..6348c9c 100755 --- a/scripts/generate-compose +++ b/scripts/generate-compose @@ -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,33 +30,30 @@ 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 ENABLE_WEBHOOKS=${ENABLE_WEBHOOKS:-false} \ -e ENABLE_COTURN=${ENABLE_COTURN:-false} \ diff --git a/scripts/greenlight-migrate-v2-v3 b/scripts/greenlight-migrate-v2-v3 index a341b19..e6ad3d1 100755 --- a/scripts/greenlight-migrate-v2-v3 +++ b/scripts/greenlight-migrate-v2-v3 @@ -8,7 +8,7 @@ then export $(cat .env | sed 's/#.*//g' | grep -E "RAILS_SECRET|POSTGRESQL_SECRET" | xargs) fi -COMPOSE_PREFIX=$(docker-compose ps | grep postgres | awk '{print $1}' | sed 's/-postgres-1//') +COMPOSE_PREFIX=$(docker compose ps | grep postgres | awk '{print $1}' | sed 's/-postgres-1//') docker kill -s SIGKILL greenlight-v2-tmp 2>/dev/null sleep 1 diff --git a/scripts/publish b/scripts/publish index 41b475f..601b787 100755 --- a/scripts/publish +++ b/scripts/publish @@ -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" @@ -31,11 +28,11 @@ fi docker build -t alangecker/bbb-docker-base-java:latest mod/base-java # buld and push other images -docker-compose build +docker compose build # push images docker push alangecker/bbb-docker-base-java:latest -docker-compose push \ +docker compose push \ html5-backend-1 \ bbb-web \ freeswitch \ diff --git a/scripts/setup b/scripts/setup index 3f4ecdf..1667c0d 100755 --- a/scripts/setup +++ b/scripts/setup @@ -208,4 +208,4 @@ echo "make sure to recreate the docker-compose.yml after each change" echo " $ ./scripts/generate-compose" echo "" echo "to start bigbluebutton run" -echo " $ docker-compose up -d" +echo " $ docker compose up -d" diff --git a/scripts/upgrade b/scripts/upgrade index 8ac1c35..4d403b5 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -21,7 +21,7 @@ else echo "" echo "# pull newest images" - docker-compose pull --ignore-pull-failures + docker compose pull --ignore-pull-failures COMMIT_HASH=$(git rev-parse --short HEAD) @@ -33,6 +33,6 @@ else echo "we are on $COMMIT_HASH ($BRANCH_NAME)" echo "" echo "use following command for restarting bbb:" - echo " $ docker-compose up -d --no-build" + echo " $ docker compose up -d --no-build" echo "-------------------------------------" fi \ No newline at end of file diff --git a/scripts/upgrade-and-build b/scripts/upgrade-and-build index 1decee6..9543c30 100755 --- a/scripts/upgrade-and-build +++ b/scripts/upgrade-and-build @@ -25,14 +25,14 @@ else echo "" echo "# pull newest images" - docker-compose pull --ignore-pull-failures + 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 + docker compose build COMMIT_HASH=$(git rev-parse --short HEAD) BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD) @@ -43,6 +43,6 @@ else echo "we are on $COMMIT_HASH ($BRANCH_NAME)" echo "" echo "use following command for restarting bbb:" - echo " $ docker-compose up -d" + echo " $ docker compose up -d" echo "-------------------------------------" fi \ No newline at end of file diff --git a/tags.env b/tags.env deleted file mode 100644 index 3563985..0000000 --- a/tags.env +++ /dev/null @@ -1,31 +0,0 @@ -# after changing a tag always run following commands to apply -# - ./scripts/generate-compose -# - docker-compose build - - -# https://gitlab.senfcall.de/senfcall-public/docker-bbb-build -BBB_BUILD_TAG=v2022-12-29-grails-524 - -# https://github.com/bigbluebutton/bigbluebutton -TAG_COMMON_MESSAGE=v2.6.0 -TAG_APPS_AKKA=v2.6.0 -TAG_FSESL_AKKA=v2.6.0 -TAG_BBB_WEB=v2.6.0 -TAG_HTML5=v2.6.0 -TAG_RECORDINGS=v2.6.0 - -TAG_LEARNING_DASHBOARD=v2.6.0 -TAG_FS_CONFIG=v2.6.0 -TAG_FS_BUILD_FILES=v2.6.0 - -TAG_FREESWITCH=v1.10.9 -TAG_GREENLIGHT=v3.0.2 - -# individual git submodules -# use `./scripts/checkout-submodules` to ensure, that the submodules -# match the provided tags here -TAG_WEBRTC_SFU=v2.9.8 -TAG_WEBHOOKS=v2.6.0 -TAG_PLAYBACK=v5.0.0-rc.2 -TAG_PADS=v1.4.1 -TAG_BBB_PRESENTATION_VIDEO=4.0.0-rc.2