From 747f64e90159299645a00054fb4cc352529c9c2e Mon Sep 17 00:00:00 2001 From: chandi Date: Wed, 23 Dec 2020 23:58:24 +0100 Subject: [PATCH] updates for v2.3-alpha-3 --- bbb-webrtc-sfu | 2 +- docker-compose.greenlight.yml | 2 +- docker-compose.recordings.yml | 3 + docker-compose.yml | 6 +- mod/apps-akka/Dockerfile | 4 +- mod/apps-akka/application.conf | 6 +- mod/bbb-web/Dockerfile | 8 +- mod/bbb-web/bigbluebutton.properties | 39 +--- mod/bbb-web/entrypoint.sh | 16 ++ mod/bbb-web/mocked-ps | 3 + mod/fsesl-akka/Dockerfile | 6 +- mod/html5/Dockerfile | 4 +- mod/html5/entrypoint.sh | 14 +- mod/html5/settings.yml | 254 ++++++++++++++------------- mod/nginx/Dockerfile | 2 +- mod/nginx/bbb/bbb-html5.nginx | 19 +- mod/nginx/bbb/client.nginx | 4 - mod/nginx/bbb/guest-wait.html | 81 --------- mod/recordings/Dockerfile | 44 ++--- mod/recordings/bigbluebutton.yml | 26 ++- mod/recordings/entrypoint.sh | 32 +--- mod/recordings/log-collector.py | 45 ----- mod/recordings/supervisord.conf | 32 ++++ 23 files changed, 288 insertions(+), 364 deletions(-) create mode 100755 mod/bbb-web/mocked-ps delete mode 100644 mod/nginx/bbb/client.nginx delete mode 100644 mod/nginx/bbb/guest-wait.html delete mode 100644 mod/recordings/log-collector.py create mode 100644 mod/recordings/supervisord.conf diff --git a/bbb-webrtc-sfu b/bbb-webrtc-sfu index 400fe63..54934c7 160000 --- a/bbb-webrtc-sfu +++ b/bbb-webrtc-sfu @@ -1 +1 @@ -Subproject commit 400fe636e63563437fb112c2df0261d6be9f103e +Subproject commit 54934c71cff96be1bfcff84c204b452b9529c208 diff --git a/docker-compose.greenlight.yml b/docker-compose.greenlight.yml index 9dc0b6e..bfbd495 100644 --- a/docker-compose.greenlight.yml +++ b/docker-compose.greenlight.yml @@ -17,7 +17,7 @@ services: ports: - 10.7.7.1:5000:80 postgres: - image: postgres:12 + image: postgres:12-alpine restart: unless-stopped environment: POSTGRES_DB: greenlight diff --git a/docker-compose.recordings.yml b/docker-compose.recordings.yml index b6b188c..dbfdf5a 100644 --- a/docker-compose.recordings.yml +++ b/docker-compose.recordings.yml @@ -10,6 +10,9 @@ services: - bigbluebutton:/var/bigbluebutton - vol-freeswitch:/var/freeswitch/meetings - vol-kurento:/var/kurento + tmpfs: + - /var/log/bigbluebutton + - /tmp networks: bbb-net: ipv4_address: 10.7.7.16 \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 57e8d90..abab638 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -88,7 +88,7 @@ services: ipv4_address: 10.7.7.5 mongodb: - image: mongo:4.2 + image: mongo:4.4 restart: unless-stopped networks: bbb-net: @@ -162,12 +162,16 @@ services: fsesl-akka: build: mod/fsesl-akka + depends_on: + - redis networks: bbb-net: ipv4_address: 10.7.7.14 apps-akka: build: mod/apps-akka + depends_on: + - redis environment: DOMAIN: ${DOMAIN} SHARED_SECRET: ${SHARED_SECRET} diff --git a/mod/apps-akka/Dockerfile b/mod/apps-akka/Dockerfile index 1ab5d81..bc57c8b 100644 --- a/mod/apps-akka/Dockerfile +++ b/mod/apps-akka/Dockerfile @@ -3,7 +3,7 @@ FROM mozilla/sbt:8u181_1.2.7 AS builder RUN apt-get update && apt-get install -y subversion # download bbb-common-message -ENV TAG_COMMON_MESSAGE v2.3-alpha-2 +ENV TAG_COMMON_MESSAGE v2.3-alpha-3 RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_COMMON_MESSAGE/bbb-common-message /bbb-common-message \ && rm -rf /bbb-common-message/.svn @@ -14,7 +14,7 @@ RUN cd /bbb-common-message \ # =================================================== -ENV TAG v2.3-alpha-2 +ENV TAG v2.3-alpha-3 RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/akka-bbb-apps /source \ && rm -rf /source/.svn diff --git a/mod/apps-akka/application.conf b/mod/apps-akka/application.conf index b7fda2f..74eaa36 100644 --- a/mod/apps-akka/application.conf +++ b/mod/apps-akka/application.conf @@ -59,11 +59,6 @@ eventBus { outBbbMsgMsgChannel = "OutBbbMsgChannel" } -sharedNotes { - maxNumberOfNotes = 3 - maxNumberOfUndos = 30 -} - http { interface = "10.7.7.2" port = 9999 @@ -76,6 +71,7 @@ services { apps { checkPermissions = true + ejectOnViolation = false endMeetingWhenNoMoreAuthedUsers = false endMeetingWhenNoMoreAuthedUsersAfterMinutes = 2 } diff --git a/mod/bbb-web/Dockerfile b/mod/bbb-web/Dockerfile index 2d18d47..aaecb35 100644 --- a/mod/bbb-web/Dockerfile +++ b/mod/bbb-web/Dockerfile @@ -3,7 +3,7 @@ FROM mozilla/sbt:8u181_1.2.7 AS builder RUN apt-get update && apt-get install -y subversion # download bbb-common-message -ENV TAG_COMMON_MESSAGE v2.3-alpha-2 +ENV TAG_COMMON_MESSAGE v2.3-alpha-3 RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_COMMON_MESSAGE/bbb-common-message /bbb-common-message \ && rm -rf /bbb-common-message/.svn @@ -26,7 +26,7 @@ RUN cd /opt \ ENV PATH="/opt/gradle-6.7/bin:${PATH}" # download bbb-common-web -ENV TAG_COMMON_WEB v2.3-alpha-2 +ENV TAG_COMMON_WEB v2.3-alpha-3 RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_COMMON_WEB/bbb-common-web /bbb-common-web \ && rm -rf /bbb-common-message/.svn @@ -35,7 +35,7 @@ RUN cd /bbb-common-web \ && ./deploy.sh # download bbb-web -ENV TAG_WEB v2.3-alpha-2 +ENV TAG_WEB v2.3-alpha-3 RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_WEB/bigbluebutton-web /bbb-web \ && rm -rf /bbb-web/.svn @@ -90,6 +90,8 @@ COPY --from=builder /dist /usr/share/bbb-web COPY --from=builder /bbb-web/pres-checker/lib /usr/share/prescheck/lib COPY --from=builder /bbb-web/pres-checker/run.sh /usr/share/prescheck/prescheck.sh +COPY mocked-ps /usr/bin/ps + # add entrypoint and templates COPY entrypoint.sh /entrypoint.sh COPY bigbluebutton.properties /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties.tmpl diff --git a/mod/bbb-web/bigbluebutton.properties b/mod/bbb-web/bigbluebutton.properties index 8301163..fd8ecf4 100644 --- a/mod/bbb-web/bigbluebutton.properties +++ b/mod/bbb-web/bigbluebutton.properties @@ -19,7 +19,7 @@ # # These are the default properites for BigBlueButton Web application -# Default loglevel. +# Default loglevel. appLogLevel=DEBUG #---------------------------------------------------- @@ -172,19 +172,10 @@ defaultMaxUsers=0 # Current default is 0 (meeting doesn't end). defaultMeetingDuration=0 -# Number of minutes elapse of no activity before -# ending the meeting. Default zero (0) to disable -# check. -maxInactivityTimeoutMinutes=0 - # Number of minutes to logout client if user # isn't responsive clientLogoutTimerInMinutes=0 -# Send warning to moderators to warn that -# meeting would be ended due to inactivity -warnMinutesBeforeMax=5 - # End meeting if no user joined within # a period of time after meeting created. meetingExpireIfNoUserJoinedInMinutes=5 @@ -204,7 +195,7 @@ userInactivityThresholdInMinutes=30 # warning before being logged out. userActivitySignResponseDelayInMinutes=5 -# Disable recording by default. +# Disable recording by default. # true - don't record even if record param in the api call is set to record # false - when record param is passed from api, override this default {{ if isTrue .Env.ENABLE_RECORDING }} @@ -215,7 +206,7 @@ disableRecordingDefault=true # Start recording when first user joins the meeting. # For backward compatibility with 0.81 where whole meeting -# is recorded. +# is recorded. autoStartRecording=false # Allow the user to start/stop recording. @@ -256,31 +247,19 @@ bigbluebutton.web.serverURL=https://{{ .Env.DOMAIN }} # If "default", it returns to bigbluebutton.web.serverURL bigbluebutton.web.logoutURL=default -# The url of the BigBlueButton client. Users will be redirected here when +# The url of the BigBlueButton HTML5 client. Users will be redirected here when # successfully joining the meeting. -defaultClientUrl=${bigbluebutton.web.serverURL}/client/BigBlueButton.html +defaultHTML5ClientUrl=${bigbluebutton.web.serverURL}/html5client/%%INSTANCEID%%/join # Allow requests without JSESSIONID to be handled (default = false) allowRequestsWithoutSession=false -# Force all attendees to join the meeting using the HTML5 client -attendeesJoinViaHTML5Client=true - -# Force all moderators to join the meeting using the HTML5 client -moderatorsJoinViaHTML5Client=true - -# The url of the BigBlueButton HTML5 client. Users will be redirected here when -# successfully joining the meeting. -html5ClientUrl=${bigbluebutton.web.serverURL}/html5client/join - - # The url for where the guest will poll if approved to join or not. -defaultGuestWaitURL=${bigbluebutton.web.serverURL}/client/guest-wait.html +defaultGuestWaitURL=${bigbluebutton.web.serverURL}/html5client/guestWait -# The default avatar image to display if nothing is passed on the JOIN API (avatarURL) -# call. This avatar is displayed if the user isn't sharing the webcam and -# the option (displayAvatar) is enabled in config.xml -defaultAvatarURL=${bigbluebutton.web.serverURL}/client/avatar.png +# The default avatar image to display. +useDefaultAvatar=false +defaultAvatarURL=${bigbluebutton.web.serverURL}/html5client/resources/images/avatar.png # The URL of the default configuration defaultConfigURL=${bigbluebutton.web.serverURL}/client/conf/config.xml diff --git a/mod/bbb-web/entrypoint.sh b/mod/bbb-web/entrypoint.sh index e3933c6..1993bbd 100755 --- a/mod/bbb-web/entrypoint.sh +++ b/mod/bbb-web/entrypoint.sh @@ -8,6 +8,22 @@ for i in `seq 1 4` ; do socat TCP-LISTEN:$PORT,fork TCP:10.7.7.7:$PORT & done +# create recording directory structure if it doesn't exist yet +mkdir -p /var/bigbluebutton/recording/raw +mkdir -p /var/bigbluebutton/recording/process +mkdir -p /var/bigbluebutton/recording/publish +mkdir -p /var/bigbluebutton/recording/status/recorded +mkdir -p /var/bigbluebutton/recording/status/archived +mkdir -p /var/bigbluebutton/recording/status/processed +mkdir -p /var/bigbluebutton/recording/status/sanity +mkdir -p /var/bigbluebutton/recording/status/ended +mkdir -p /var/bigbluebutton/recording/status/published +mkdir -p /var/bigbluebutton/captions/inbox +mkdir -p /var/bigbluebutton/published +mkdir -p /var/bigbluebutton/deleted +mkdir -p /var/bigbluebutton/unpublished +chown -R bigbluebutton:bigbluebutton /var/bigbluebutton + cd /usr/share/bbb-web/ dockerize \ -template /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties.tmpl:/usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties \ diff --git a/mod/bbb-web/mocked-ps b/mod/bbb-web/mocked-ps new file mode 100755 index 0000000..93770ae --- /dev/null +++ b/mod/bbb-web/mocked-ps @@ -0,0 +1,3 @@ +#!/bin/bash +echo "(mocked-ps for HTML5LoadBalancingService.java)" +echo " 0.1 /usr/share/node-v12.16.1-linux-x64/bin/node main.js INFO_INSTANCE_ID=1" \ No newline at end of file diff --git a/mod/fsesl-akka/Dockerfile b/mod/fsesl-akka/Dockerfile index a83596d..b5975ef 100644 --- a/mod/fsesl-akka/Dockerfile +++ b/mod/fsesl-akka/Dockerfile @@ -3,7 +3,7 @@ FROM mozilla/sbt:8u181_1.2.7 AS builder RUN apt-get update && apt-get install -y subversion # download bbb-common-message -ENV TAG_COMMON_MESSAGE v2.3-alpha-2 +ENV TAG_COMMON_MESSAGE v2.3-alpha-3 RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_COMMON_MESSAGE/bbb-common-message /bbb-common-message \ && rm -rf /bbb-common-message/.svn @@ -13,7 +13,7 @@ RUN cd /bbb-common-message \ # =================================================== -ENV TAG_FSESL v2.3-alpha-2 +ENV TAG_FSESL v2.3-alpha-3 RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_FSESL/bbb-fsesl-client /bbb-fsesl-client \ && rm -rf /bbb-fsesl-client/.svn @@ -21,7 +21,7 @@ RUN cd /bbb-fsesl-client \ && ./deploy.sh -ENV TAG v2.3-alpha-2 +ENV TAG v2.3-alpha-3 RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/akka-bbb-fsesl /source \ && rm -rf /source/.svn diff --git a/mod/html5/Dockerfile b/mod/html5/Dockerfile index 7a5c0cd..4ac662b 100644 --- a/mod/html5/Dockerfile +++ b/mod/html5/Dockerfile @@ -14,7 +14,7 @@ USER meteor ENV METEOR_VERSION 1.10.2 RUN curl -sL https://install.meteor.com?release=$METEOR_VERSION | sed s/--progress-bar/-sL/g | /bin/sh -ENV TAG v2.3-alpha-2 +ENV TAG v2.3-alpha-3 RUN cd ~ \ && svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/bigbluebutton-html5 \ && mv ~/bigbluebutton-html5 ~/source \ @@ -41,4 +41,4 @@ COPY settings.yml /app/programs/server/assets/app/config/settings.yml.tmpl ENTRYPOINT ["/entrypoint.sh"] # lets set the tag again, so that it is include in the image for later version retrieval -ENV TAG v2.3-alpha-2 +ENV TAG v2.3-alpha-3 diff --git a/mod/html5/entrypoint.sh b/mod/html5/entrypoint.sh index 250ca76..3e7f92d 100755 --- a/mod/html5/entrypoint.sh +++ b/mod/html5/entrypoint.sh @@ -2,13 +2,13 @@ set -e cd /app -export ROOT_URL=http://127.0.0.1/html5client +# export MONGO_OPLOG_URL=mongodb://10.7.7.6/local export MONGO_URL=mongodb://10.7.7.6/meteor export NODE_ENV=production -export ENVIRONMENT_TYPE=production export SERVER_WEBSOCKET_COMPRESSION=0 -export PORT=3000 +export BIND_IP=0.0.0.0 export LANG=en_US.UTF-8 +export INSTANCE_MAX=1 if [ "$DEV_MODE" == true ]; then echo "DEV_MODE=true, disable TLS certificate rejecting" @@ -22,6 +22,14 @@ if [ -d "/html5-static" ]; then cp -r /app/programs/web.browser/* /html5-static fi + +# TODO: start multiple instances (introduced with v2.3-alpha-3) +# https://github.com/bigbluebutton/bigbluebutton/releases/tag/v2.3-alpha-3 + +export INSTANCE_ID=1 +export ROOT_URL=http://127.0.0.1/html5client/$INSTANCE_ID +export PORT=4000 + rm -f /app/programs/server/assets/app/config/settings.yml dockerize \ -template /app/programs/server/assets/app/config/settings.yml.tmpl:/app/programs/server/assets/app/config/settings.yml \ diff --git a/mod/html5/settings.yml b/mod/html5/settings.yml index 9756608..0b2e5bb 100644 --- a/mod/html5/settings.yml +++ b/mod/html5/settings.yml @@ -9,13 +9,13 @@ public: skipCheck: {{ .Env.DISABLE_ECHO_TEST }} clientTitle: {{ .Env.CLIENT_TITLE }} appName: BigBlueButton HTML5 Client - bbbServerVersion: 2.3-dev - copyright: "©2020 BigBlueButton Inc." - html5ClientBuild: 1250 + bbbServerVersion: 2.3-dev-docker + copyright: '©2020 BigBlueButton Inc.' + html5ClientBuild: "1311-docker" helpLink: https://bigbluebutton.org/html5/ lockOnJoin: true - cdn: "" - basename: "/html5client" + cdn: '' + basename: '/html5client' askForFeedbackOnLogout: false # the default logoutUrl matches window.location.origin i.e. bigbluebutton.org for demo.bigbluebutton.org # in some cases we want only custom logoutUrl to be used when provided on meeting create. Default value: true @@ -27,17 +27,18 @@ public: enableTalkingIndicator: true mirrorOwnWebcam: false viewersInWebcam: 8 - ipv4FallbackDomain: "" + ipv4FallbackDomain: '' allowLogout: true allowFullscreen: true preloadNextSlides: 2 mutedAlert: - enabled: true + enabled: false interval: 200 threshold: -50 duration: 4000 remainingTimeThreshold: 30 remainingTimeAlertThreshold: 1 + enableDebugWindow: true # Warning: increasing the limit of breakout rooms per meeting # can generate excessive overhead to the server. We recommend # this value to be kept under 12. @@ -89,6 +90,9 @@ public: openActions: accesskey: A descId: openActions + openDebugWindow: + accesskey: K + descId: openDebugWindow branding: displayBrandingArea: true connectionTimeout: 60000 @@ -261,8 +265,8 @@ public: captions: enabled: true enableDictation: false - backgroundColor: "#000000" - fontColor: "#FFFFFF" + backgroundColor: '#000000' + fontColor: '#FFFFFF' fontFamily: Calibri fontSize: 24px takeOwnership: true @@ -301,13 +305,13 @@ public: layout: autoSwapLayout: false hidePresentation: false - webcamsDefaultPlacement: "top" + webcamsDefaultPlacement: 'top' media: - stunTurnServersFetchAddress: "/bigbluebutton/api/stuns" + stunTurnServersFetchAddress: '/bigbluebutton/api/stuns' cacheStunTurnServers: true - fallbackStunServer: '' + fallbackStunServer: '' recvonlyIceGatheringCheck: true - mediaTag: "#remote-media" + mediaTag: '#remote-media' callTransferTimeout: 5000 callHangupTimeout: 2000 callHangupMaximumRetries: 10 @@ -353,46 +357,46 @@ public: defaultPresentationFile: default.pdf panZoomThrottle: 32 restoreOnUpdate: false - uploadEndpoint: "/bigbluebutton/presentation/upload" + uploadEndpoint: '/bigbluebutton/presentation/upload' uploadSizeMin: 0 uploadSizeMax: 50000000 uploadValidMimeTypes: - - extension: .pdf - mime: application/pdf - - extension: .doc - mime: application/msword - - extension: .docx - mime: application/vnd.openxmlformats-officedocument.wordprocessingml.document - - extension: .xls - mime: application/vnd.ms-excel - - extension: .xlsx - mime: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - extension: .ppt - mime: application/vnd.ms-powerpoint - - extension: .pptx - mime: application/vnd.openxmlformats-officedocument.presentationml.presentation - - extension: .txt - mime: text/plain - - extension: .rtf - mime: application/rtf - - extension: .odt - mime: application/vnd.oasis.opendocument.text - - extension: .ods - mime: application/vnd.oasis.opendocument.spreadsheet - - extension: .odp - mime: application/vnd.oasis.opendocument.presentation - - extension: .odg - mime: application/vnd.oasis.opendocument.graphics - - extension: .odc - mime: application/vnd.oasis.opendocument.chart - - extension: .odi - mime: application/vnd.oasis.opendocument.image - - extension: .jpg - mime: image/jpeg - - extension: .jpeg - mime: image/jpeg - - extension: .png - mime: image/png + - extension: .pdf + mime: application/pdf + - extension: .doc + mime: application/msword + - extension: .docx + mime: application/vnd.openxmlformats-officedocument.wordprocessingml.document + - extension: .xls + mime: application/vnd.ms-excel + - extension: .xlsx + mime: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet + - extension: .ppt + mime: application/vnd.ms-powerpoint + - extension: .pptx + mime: application/vnd.openxmlformats-officedocument.presentationml.presentation + - extension: .txt + mime: text/plain + - extension: .rtf + mime: application/rtf + - extension: .odt + mime: application/vnd.oasis.opendocument.text + - extension: .ods + mime: application/vnd.oasis.opendocument.spreadsheet + - extension: .odp + mime: application/vnd.oasis.opendocument.presentation + - extension: .odg + mime: application/vnd.oasis.opendocument.graphics + - extension: .odc + mime: application/vnd.oasis.opendocument.chart + - extension: .odi + mime: application/vnd.oasis.opendocument.image + - extension: .jpg + mime: image/jpeg + - extension: .jpeg + mime: image/jpeg + - extension: .png + mime: image/png user: role_moderator: MODERATOR role_viewer: VIEWER @@ -405,77 +409,77 @@ public: toolbar: multiUserPenOnly: false colors: - - label: black - value: "#000000" - - label: white - value: "#ffffff" - - label: red - value: "#ff0000" - - label: orange - value: "#ff8800" - - label: eletricLime - value: "#ccff00" - - label: Lime - value: "#00ff00" - - label: Cyan - value: "#00ffff" - - label: dodgerBlue - value: "#0088ff" - - label: blue - value: "#0000ff" - - label: violet - value: "#8800ff" - - label: magenta - value: "#ff00ff" - - label: silver - value: "#c0c0c0" + - label: black + value: '#000000' + - label: white + value: '#ffffff' + - label: red + value: '#ff0000' + - label: orange + value: '#ff8800' + - label: eletricLime + value: '#ccff00' + - label: Lime + value: '#00ff00' + - label: Cyan + value: '#00ffff' + - label: dodgerBlue + value: '#0088ff' + - label: blue + value: '#0000ff' + - label: violet + value: '#8800ff' + - label: magenta + value: '#ff00ff' + - label: silver + value: '#c0c0c0' thickness: - - value: 14 - - value: 12 - - value: 10 - - value: 8 - - value: 6 - - value: 4 - - value: 2 - - value: 1 + - value: 14 + - value: 12 + - value: 10 + - value: 8 + - value: 6 + - value: 4 + - value: 2 + - value: 1 font_sizes: - - value: 36 - - value: 32 - - value: 28 - - value: 24 - - value: 20 - - value: 16 + - value: 36 + - value: 32 + - value: 28 + - value: 24 + - value: 20 + - value: 16 tools: - - icon: text_tool - value: text - - icon: line_tool - value: line - - icon: circle_tool - value: ellipse - - icon: triangle_tool - value: triangle - - icon: rectangle_tool - value: rectangle - - icon: pen_tool - value: pencil - - icon: hand - value: hand + - icon: text_tool + value: text + - icon: line_tool + value: line + - icon: circle_tool + value: ellipse + - icon: triangle_tool + value: triangle + - icon: rectangle_tool + value: rectangle + - icon: pen_tool + value: pencil + - icon: hand + value: hand presenterTools: - - text - - line - - ellipse - - triangle - - rectangle - - pencil - - hand + - text + - line + - ellipse + - triangle + - rectangle + - pencil + - hand multiUserTools: - - text - - line - - ellipse - - triangle - - rectangle - - pencil - - hand + - text + - line + - ellipse + - triangle + - rectangle + - pencil + - hand clientLog: server: enabled: false @@ -490,11 +494,11 @@ public: method: POST throttleInterval: 400 flushOnClose: true - logTag: "" + logTag: '' private: app: host: 0.0.0.0 - port: 3000 + port: 4000 localesUrl: /locales pencilChunkLength: 100 loadSlidesFromHttpAlways: false @@ -518,15 +522,15 @@ private: toAkkaApps: to-akka-apps-redis-channel toThirdParty: to-third-party-redis-channel subscribeTo: - - to-html5-redis-channel - - from-akka-apps-* - - from-third-party-redis-channel - - from-etherpad-redis-channel + - to-html5-redis-channel + - from-akka-apps-* + - from-third-party-redis-channel + - from-etherpad-redis-channel async: - - from-akka-apps-wb-redis-channel + - from-akka-apps-wb-redis-channel ignored: - - CheckAlivePongSysMsg - - DoLatencyTracerMsg + - CheckAlivePongSysMsg + - DoLatencyTracerMsg serverLog: level: info streamerLog: false diff --git a/mod/nginx/Dockerfile b/mod/nginx/Dockerfile index 5ac1ed0..56d6405 100644 --- a/mod/nginx/Dockerfile +++ b/mod/nginx/Dockerfile @@ -2,7 +2,7 @@ FROM nginx:1.19-alpine RUN apk add subversion -ENV TAG v2.3-alpha-2 +ENV TAG v2.3-alpha-3 # get bbb-playback-presentation web files RUN mkdir /www \ diff --git a/mod/nginx/bbb/bbb-html5.nginx b/mod/nginx/bbb/bbb-html5.nginx index 69324a0..27fd27a 100644 --- a/mod/nginx/bbb/bbb-html5.nginx +++ b/mod/nginx/bbb/bbb-html5.nginx @@ -1,28 +1,33 @@ location @html5client { - proxy_pass http://html5:3000; + proxy_pass http://html5:4000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; } -location /html5client/compatibility { +location /html5client/1/compatibility { alias /html5-static/app/compatibility; } -location /html5client/fonts { +location /html5client/1/fonts { alias /html5-static/app/fonts; } -location /html5client/resources { +location /html5client/1/resources { alias /html5-static/app/resources; } -location /html5client/svgs { +location /html5client/1/svgs { alias /html5-static/app/svgs; } -location /html5client { +location /html5client/1 { + alias /html5-static; + try_files $uri @html5client; +} + +location /html5client/ { alias /html5-static; try_files $uri @html5client; } location /_timesync { - proxy_pass http://html5:3000; + proxy_pass http://html5:4000; } diff --git a/mod/nginx/bbb/client.nginx b/mod/nginx/bbb/client.nginx deleted file mode 100644 index 2a4e787..0000000 --- a/mod/nginx/bbb/client.nginx +++ /dev/null @@ -1,4 +0,0 @@ -location = /client/guest-wait.html { - alias /etc/nginx/bbb/guest-wait.html; -} - diff --git a/mod/nginx/bbb/guest-wait.html b/mod/nginx/bbb/guest-wait.html deleted file mode 100644 index c1c4b53..0000000 --- a/mod/nginx/bbb/guest-wait.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - Guest Lobby - - - - - - - - -
-

Please wait for a moderator to approve you joining the meeting.

-
- - - diff --git a/mod/recordings/Dockerfile b/mod/recordings/Dockerfile index eff7980..60a58ec 100644 --- a/mod/recordings/Dockerfile +++ b/mod/recordings/Dockerfile @@ -14,7 +14,8 @@ RUN apt-get update && apt-get install -y \ python3-icu \ ffmpeg \ poppler-utils \ - imagemagick + imagemagick \ + supervisor # compile and install mkclean RUN cd /tmp \ @@ -25,7 +26,7 @@ RUN cd /tmp \ && ./mkclean/configure.compiled \ && make -C mkclean \ && cp ./release/gcc_linux_x64/mkclean /usr/bin/mkclean \ - && rm -r /tmp/mkclean-0.8.10 + && rm -r /tmp/mkclean-* # add dockerize ENV DOCKERIZE_VERSION v0.6.1 @@ -36,11 +37,9 @@ RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSI RUN mkdir -p \ /usr/local/bigbluebutton \ /usr/local/bigbluebutton/core \ - /etc/bigbluebutton \ - /var/log/bigbluebutton \ - /var/log/bigbluebutton/presentation + /etc/bigbluebutton -ENV TAG v2.3-alpha-2 +ENV TAG v2.3-alpha-3 # add bbb-record-core (lib, scripts and Gemfile) RUN cd /usr/local/bigbluebutton/core \ @@ -48,8 +47,8 @@ RUN cd /usr/local/bigbluebutton/core \ && svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/record-and-playback/core/scripts \ && rm -rf /usr/local/bigbluebutton/core/*/.svn \ && wget https://raw.githubusercontent.com/bigbluebutton/bigbluebutton/$TAG/record-and-playback/core/Gemfile.lock \ - && wget https://raw.githubusercontent.com/bigbluebutton/bigbluebutton/$TAG/record-and-playback/core/Gemfile - + && wget https://raw.githubusercontent.com/bigbluebutton/bigbluebutton/$TAG/record-and-playback/core/Gemfile \ + && wget https://raw.githubusercontent.com/bigbluebutton/bigbluebutton/$TAG/record-and-playback/core/Rakefile # add bbb-playback-presentation scripts RUN cd /tmp \ @@ -60,33 +59,36 @@ RUN cd /tmp \ # install ruby dependencies RUN cd /usr/local/bigbluebutton/core \ && gem install builder \ - && gem install bundler \ + && gem install bundler -v 2.1.4 \ && /usr/local/bin/bundle +# log to file instead of journald +RUN sed -i 's|Journald::Logger\.new.*|Logger.new("/var/log/bigbluebutton/recording.log")|g' /usr/local/bigbluebutton/core/lib/recordandplayback.rb && \ + sed -i 's|Journald::Logger\.new.*|Logger.new("/var/log/bigbluebutton/recording.log")|g' /usr/local/bigbluebutton/core/scripts/rap-caption-inbox.rb && \ + sed -i 's|Logger\.new.*|Logger.new("/var/log/bigbluebutton/recording.log")|g' /usr/local/bigbluebutton/core/scripts/rap-process-worker.rb + +# fix syntax error in v2.3-alpha-3 +# https://github.com/bigbluebutton/bigbluebutton/pull/11060 +RUN sed -i 's|File\.exist(|File.exist?(|' /usr/local/bigbluebutton/core/lib/recordandplayback/workers/events_worker.rb + # add bbb-record with some adjustments so bbb-record works in this environment RUN cd /usr/bin \ && wget https://raw.githubusercontent.com/bigbluebutton/bigbluebutton/$TAG/bigbluebutton-config/bin/bbb-record \ && chmod +x /usr/bin/bbb-record \ && sed -i 's/^BBB_WEB.*/BBB_WEB=""/' /usr/bin/bbb-record \ && sed -i 's/systemctl.*//' /usr/bin/bbb-record \ - && echo "BIGBLUEBUTTON_RELEASE=$TAG" > /etc/bigbluebutton/bigbluebutton-release \ - && touch /var/log/bigbluebutton/bbb-web.log + && echo "BIGBLUEBUTTON_RELEASE=$TAG" > /etc/bigbluebutton/bigbluebutton-release # create user # the ID should match the one creating the files in `core` RUN groupadd -g 998 bigbluebutton && useradd -m -u 998 -g bigbluebutton bigbluebutton + # change owner # https://github.com/alangecker/bigbluebutton-docker/issues/63 -RUN chown -R 998:998 /usr/local/bigbluebutton /var/log/bigbluebutton +RUN chown -R 998:998 /usr/local/bigbluebutton COPY bigbluebutton.yml /usr/local/bigbluebutton/core/scripts/bigbluebutton.yml.tmpl -ADD log-collector.py /log-collector.py -ADD entrypoint.sh /entrypoint.sh +COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf +COPY entrypoint.sh /entrypoint.sh -# change user before entrypoint -# to set user rights for all generated videos -USER bigbluebutton - -ENTRYPOINT dockerize \ - -template /usr/local/bigbluebutton/core/scripts/bigbluebutton.yml.tmpl:/usr/local/bigbluebutton/core/scripts/bigbluebutton.yml \ - /entrypoint.sh \ No newline at end of file +ENTRYPOINT /entrypoint.sh \ No newline at end of file diff --git a/mod/recordings/bigbluebutton.yml b/mod/recordings/bigbluebutton.yml index 78c7c10..e22f41a 100644 --- a/mod/recordings/bigbluebutton.yml +++ b/mod/recordings/bigbluebutton.yml @@ -1,4 +1,4 @@ -bbb_version: '2.2.30' +bbb_version: '2.1.0' raw_audio_src: /var/freeswitch/meetings raw_video_src: /usr/share/red5/webapps/video/streams kurento_video_src: /var/kurento/recordings @@ -11,14 +11,30 @@ notes_endpoint: http://etherpad:9001/p # Specify the notes formats we archive # txt, doc and odt are also supported notes_formats: -- etherpad -- html -- pdf + - etherpad + - html + - pdf redis_host: redis redis_port: 6379 # Uncomment and set password if redis require it. # redis_password: changeme +# redis_workers_host: 127.0.0.1 +# redis_workers_port: 6379 + +# Sequence of recording steps. Keys are the current step, values +# are the next step(s). Examples: +# current_step: next_step +# "current_step-format": "next_step-format" +# current_step: +# - next_step +# - another_step-format +steps: + archive: "sanity" + sanity: "captions" + captions: "process:presentation" + "process:presentation": "publish:presentation" + # For PRODUCTION log_dir: /var/log/bigbluebutton events_dir: /var/bigbluebutton/events @@ -34,4 +50,4 @@ playback_protocol: https #log_dir: /home/ubuntu/temp/log #recording_dir: /home/ubuntu/temp/recording #published_dir: /home/ubuntu/temp/published -#playback_host: meet.livingutopia.org +#playback_host: 127.0.0.1 \ No newline at end of file diff --git a/mod/recordings/entrypoint.sh b/mod/recordings/entrypoint.sh index f4b8318..2b85140 100755 --- a/mod/recordings/entrypoint.sh +++ b/mod/recordings/entrypoint.sh @@ -1,27 +1,11 @@ #!/bin/bash -# print all logs to stdout -python3 -u /log-collector.py & +touch /var/log/bigbluebutton/recording.log +touch /var/log/bigbluebutton/bbb-web.log +mkdir -p /var/log/bigbluebutton/presentation +chown -R bigbluebutton:bigbluebutton /var/log/bigbluebutton -cd /usr/local/bigbluebutton/core/scripts -PATH_CHECK="/var/bigbluebutton/recording/status" -while true; do - echo "execute workers..." - if [[ $(compgen -G "$PATH_CHECK/recorded/*.done") ]];then - bundle exec ruby rap-archive-worker.rb - fi - if [[ $(compgen -G "$PATH_CHECK/archived/*.done") ]];then - bundle exec ruby rap-sanity-worker.rb - fi - if [[ $(compgen -G "$PATH_CHECK/sanity/*.done") ]];then - bundle exec ruby rap-process-worker.rb - fi - if [[ $(compgen -G "$PATH_CHECK/processed/*.done") ]];then - bundle exec ruby rap-publish-worker.rb - fi - #bundle exec ruby rap-caption-inbox.rb - if [[ $(compgen -G "$PATH_CHECK/ended/*.done") ]];then - bundle exec ruby rap-events-worker.rb - fi - sleep 30s -done +dockerize \ + -template /usr/local/bigbluebutton/core/scripts/bigbluebutton.yml.tmpl:/usr/local/bigbluebutton/core/scripts/bigbluebutton.yml \ + -stdout /var/log/bigbluebutton/recording.log \ + /usr/bin/supervisord --nodaemon \ No newline at end of file diff --git a/mod/recordings/log-collector.py b/mod/recordings/log-collector.py deleted file mode 100644 index af683e6..0000000 --- a/mod/recordings/log-collector.py +++ /dev/null @@ -1,45 +0,0 @@ -# this script sends all entries from different logfiles -# to stdout, so that they appear in the docker logs - -import threading -import subprocess -import time -import pyinotify -import os -import re -import sys - -log_dir = '/var/log/bigbluebutton' - -def thread_function(name, filename): - f = subprocess.Popen(['tail','-F', '-n', '0', filename],\ - stdout=subprocess.PIPE,stderr=subprocess.PIPE) - while True: - line = f.stdout.readline().decode('utf-8').strip() - if len(line): - print(name.ljust(10)+' |', line) - sys.stdout.flush() - -def tail_file(name, filename): - x = threading.Thread(target=thread_function, args=(name, filename,)) - x.start() - - -tail_file('rap-worker', log_dir+'/bbb-rap-worker.log') -tail_file('sanity', log_dir+'/sanity.log') -tail_file('publish', log_dir+'/post_publish.log') - -class EventHandler(pyinotify.ProcessEvent): - def process_IN_CREATE(self, event): - filename = os.path.basename(event.pathname) - if re.match('^archive-.*\.log$', filename): - tail_file('archive', event.pathname) - elif re.match('^process-.*\.log$', filename): - tail_file('process', event.pathname) - - -wm = pyinotify.WatchManager() -handler = EventHandler() -notifier = pyinotify.Notifier(wm, handler) -wdd = wm.add_watch(log_dir, pyinotify.IN_CREATE, rec=True) -notifier.loop() \ No newline at end of file diff --git a/mod/recordings/supervisord.conf b/mod/recordings/supervisord.conf new file mode 100644 index 0000000..36b3650 --- /dev/null +++ b/mod/recordings/supervisord.conf @@ -0,0 +1,32 @@ +[supervisord] +user=root + +[program:rasque_workers] +command=rake resque:workers +directory=/usr/local/bigbluebutton/core/scripts +environment=QUEUE="rap:archive,rap:publish,rap:process,rap:sanity,rap:captions",COUNT="1",VVERBOSE="1" +user=bigbluebutton +stdout_logfile=/dev/fd/1 +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/fd/2 +stderr_logfile_maxbytes=0 + + +[program:rap_starter] +command=bundle exec ruby /usr/local/bigbluebutton/core/scripts/rap-starter.rb +directory=/usr/local/bigbluebutton/core/scripts +user=bigbluebutton +stdout_logfile=/dev/fd/1 +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/fd/2 +stderr_logfile_maxbytes=0 + + +[program:rap_caption_inbox] +command=bundle exec ruby /usr/local/bigbluebutton/core/scripts/rap-caption-inbox.rb +directory=/usr/local/bigbluebutton/core/scripts +user=bigbluebutton +stdout_logfile=/dev/fd/1 +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/fd/2 +stderr_logfile_maxbytes=0