diff --git a/mod/core/Dockerfile b/mod/core/Dockerfile index 734a09b..e657100 100644 --- a/mod/core/Dockerfile +++ b/mod/core/Dockerfile @@ -1,17 +1,12 @@ -FROM ubuntu:16.04 +FROM ubuntu:18.04 MAINTAINER ffdixon@bigbluebutton.org -# TODO: -# - separate bbb-apps into an own container -# - separate bbb-web - ENV DEBIAN_FRONTEND noninteractive ENV container docker ENV DOCKERIZE_VERSION v0.6.1 RUN apt-get update && apt-get install -y software-properties-common language-pack-en wget apt-utils RUN update-locale LANG=en_US.UTF-8 -RUN LC_CTYPE=C.UTF-8 add-apt-repository ppa:rmescandon/yq # install dockerize RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \ @@ -22,12 +17,13 @@ RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSI # RUN apt-get install -y tcpdump telnet htop vim # -- Install Dependencies -RUN apt-get install -y supervisor apt-transport-https equivs libreoffice haveged ttf-liberation net-tools +RUN (echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | debconf-set-selections) \ + && apt-get install -y supervisor apt-transport-https equivs libreoffice haveged ttf-mscorefonts-installer fonts-crosextra-carlito fonts-crosextra-caladea fonts-noto net-tools # bbb repo & packages RUN LC_CTYPE=C.UTF-8 add-apt-repository ppa:bigbluebutton/support -RUN sh -c 'wget https://ubuntu.bigbluebutton.org/repo/bigbluebutton.asc -O- | apt-key add -' \ - && sh -c 'echo "deb https://ubuntu.bigbluebutton.org/xenial-22 bigbluebutton-xenial main" > /etc/apt/sources.list.d/bigbluebutton.list' +RUN sh -c 'wget https://packages-eu.bigbluebutton.org/repo/bigbluebutton.asc -O- | apt-key add -' \ + && sh -c 'echo "deb https://ubuntu.bigbluebutton.org/bionic-230-dev bigbluebutton-bionic main" > /etc/apt/sources.list.d/bigbluebutton.list' # create dummy packages to satisfy dependencies RUN equivs-control redis-server.control \ @@ -38,15 +34,9 @@ RUN equivs-control redis-server.control \ # this variable is not used, but it triggers # rebuilding from here on if changed -ENV VERSION v2.2.31 +ENV VERSION v2.3-alpha-1 -RUN apt-get update && apt-get install -y bbb-web \ - bbb-fsesl-akka bbb-apps-akka bbb-transcode-akka bbb-apps \ - bbb-apps-video bbb-apps-screenshare bbb-apps-video-broadcast - -# -- avoid blocking java -# https://github.com/bigbluebutton/bigbluebutton/issues/8959 -RUN sed -i 's|securerandom.source=file:/dev/random|securerandom.source=file:/dev/urandom|g' /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/java.security +RUN apt-get update && apt-get install -y bbb-web bbb-fsesl-akka bbb-apps-akka bbb-transcode-akka # add blank presentation files and allow conversation to pdf/svg RUN mkdir -p /usr/share/bigbluebutton/blank \ @@ -58,15 +48,6 @@ RUN mkdir -p /usr/share/bigbluebutton/blank \ # -- copy configuration files -COPY red5-webapps/bigbluebutton/application.conf /usr/share/red5/webapps/bigbluebutton/WEB-INF/classes/application.conf -COPY red5-webapps/bigbluebutton/bigbluebutton.properties /usr/share/red5/webapps/bigbluebutton/WEB-INF/bigbluebutton.properties -COPY red5-webapps/bigbluebutton/redis.properties /usr/share/red5/webapps/bigbluebutton/WEB-INF/redis.properties -COPY red5-webapps/sip/bigbluebutton-sip.properties /usr/share/red5/webapps/sip/WEB-INF/bigbluebutton-sip.properties -COPY red5-webapps/screenshare/screenshare.properties /usr/share/red5/webapps/screenshare/WEB-INF/screenshare.properties -COPY red5-webapps/screenshare/screenshare-app.conf /usr/share/red5/webapps/screenshare/WEB-INF/classes/screenshare-app.conf -COPY red5-webapps/screenshare/application.conf /usr/share/red5/webapps/screenshare/WEB-INF/classes/application.conf -COPY red5-webapps/video/bigbluebutton-video.properties /usr/share/red5/webapps/video/WEB-INF/bigbluebutton-video.properties -COPY red5-webapps/video-broadcast/video-broadcast.properties /usr/share/red5/webapps/video-broadcast/WEB-INF/video-broadcast.properties COPY web/bigbluebutton.properties /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties.tmpl COPY web/turn-stun-servers.xml /usr/share/bbb-web/WEB-INF/classes/spring/turn-stun-servers.xml.tmpl diff --git a/mod/core/README.md b/mod/core/README.md index e11c979..10eed17 100644 --- a/mod/core/README.md +++ b/mod/core/README.md @@ -4,4 +4,3 @@ based on the bigbluebutton/docker with bbb-install.sh setup, but got so far redu - bbb-fsesl-akka - bbb-apps-akka - bbb-transcode-akka -- bbb-apps-(video|screenshare|video-broadcast) diff --git a/mod/core/red5-webapps/bigbluebutton/application.conf b/mod/core/red5-webapps/bigbluebutton/application.conf deleted file mode 100644 index 9399112..0000000 --- a/mod/core/red5-webapps/bigbluebutton/application.conf +++ /dev/null @@ -1,43 +0,0 @@ -akka { - actor { - debug { - # enable DEBUG logging of all AutoReceiveMessages (Kill, PoisonPill et.c.) - autoreceive = on - # enable DEBUG logging of actor lifecycle changes - lifecycle = on - } - } - loggers = ["akka.event.slf4j.Slf4jLogger"] - loglevel = "DEBUG" - - redis-publish-worker-dispatcher { - mailbox-type = "akka.dispatch.SingleConsumerOnlyUnboundedMailbox" - # Throughput defines the maximum number of messages to be - # processed per actor before the thread jumps to the next actor. - # Set to 1 for as fair as possible. - throughput = 512 - } - - redis-subscriber-worker-dispatcher { - mailbox-type = "akka.dispatch.SingleConsumerOnlyUnboundedMailbox" - # Throughput defines the maximum number of messages to be - # processed per actor before the thread jumps to the next actor. - # Set to 1 for as fair as possible. - throughput = 512 - } -} - -redis { - host="redis" - port=6379 - password="" - # recording keys should expire in 14 days - keyExpiry=1209600 -} - -eventBus { - meetingManagerChannel = "FROM APPLICATION.CONF MeetingManagerChannel" - outMessageChannel = "OutgoingMessageChannel" - incomingJsonMsgChannel = "IncomingJsonMsgChannel" - outBbbMsgMsgChannel = "OutBbbMsgChannel" -} \ No newline at end of file diff --git a/mod/core/red5-webapps/bigbluebutton/bigbluebutton.properties b/mod/core/red5-webapps/bigbluebutton/bigbluebutton.properties deleted file mode 100644 index 63f2f36..0000000 --- a/mod/core/red5-webapps/bigbluebutton/bigbluebutton.properties +++ /dev/null @@ -1,32 +0,0 @@ -# -# BigBlueButton open source conferencing system - http://www.bigbluebutton.org/ -# -# Copyright (c) 2012 BigBlueButton Inc. and by respective authors (see below). -# -# This program is free software; you can redistribute it and/or modify it under the -# terms of the GNU Lesser General Public License as published by the Free Software -# Foundation; either version 3.0 of the License, or (at your option) any later -# version. -# -# BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public License along -# with BigBlueButton; if not, see . -# - -# Locate of BBB default meeting dir -default.BigBlueButtonDirectory=/var/bigbluebutton - -freeswitch.esl.host=10.7.7.1 -freeswitch.esl.port=8021 -freeswitch.esl.password=ClueCon - -redisHost=redis -redisPort=6379 -redisPassword= -redisExpireKey=1209600 - -# Maximum message length allowed from the client. -maxMessageLength=32000 diff --git a/mod/core/red5-webapps/bigbluebutton/redis.properties b/mod/core/red5-webapps/bigbluebutton/redis.properties deleted file mode 100644 index 89324f9..0000000 --- a/mod/core/red5-webapps/bigbluebutton/redis.properties +++ /dev/null @@ -1,5 +0,0 @@ -# Redis settings - -redis.host=redis -redis.port=6379 -redis.pass= \ No newline at end of file diff --git a/mod/core/red5-webapps/screenshare/application.conf b/mod/core/red5-webapps/screenshare/application.conf deleted file mode 100644 index 9399112..0000000 --- a/mod/core/red5-webapps/screenshare/application.conf +++ /dev/null @@ -1,43 +0,0 @@ -akka { - actor { - debug { - # enable DEBUG logging of all AutoReceiveMessages (Kill, PoisonPill et.c.) - autoreceive = on - # enable DEBUG logging of actor lifecycle changes - lifecycle = on - } - } - loggers = ["akka.event.slf4j.Slf4jLogger"] - loglevel = "DEBUG" - - redis-publish-worker-dispatcher { - mailbox-type = "akka.dispatch.SingleConsumerOnlyUnboundedMailbox" - # Throughput defines the maximum number of messages to be - # processed per actor before the thread jumps to the next actor. - # Set to 1 for as fair as possible. - throughput = 512 - } - - redis-subscriber-worker-dispatcher { - mailbox-type = "akka.dispatch.SingleConsumerOnlyUnboundedMailbox" - # Throughput defines the maximum number of messages to be - # processed per actor before the thread jumps to the next actor. - # Set to 1 for as fair as possible. - throughput = 512 - } -} - -redis { - host="redis" - port=6379 - password="" - # recording keys should expire in 14 days - keyExpiry=1209600 -} - -eventBus { - meetingManagerChannel = "FROM APPLICATION.CONF MeetingManagerChannel" - outMessageChannel = "OutgoingMessageChannel" - incomingJsonMsgChannel = "IncomingJsonMsgChannel" - outBbbMsgMsgChannel = "OutBbbMsgChannel" -} \ No newline at end of file diff --git a/mod/core/red5-webapps/screenshare/screenshare-app.conf b/mod/core/red5-webapps/screenshare/screenshare-app.conf deleted file mode 100644 index 098586f..0000000 --- a/mod/core/red5-webapps/screenshare/screenshare-app.conf +++ /dev/null @@ -1,43 +0,0 @@ -akka { - actor { - debug { - # enable DEBUG logging of all AutoReceiveMessages (Kill, PoisonPill et.c.) - autoreceive = on - # enable DEBUG logging of actor lifecycle changes - lifecycle = on - } - } - loggers = ["akka.event.slf4j.Slf4jLoggerDDD"] - loglevel = "DEBUG" - - redis-publish-worker-dispatcher { - mailbox-type = "akka.dispatch.SingleConsumerOnlyUnboundedMailbox" - # Throughput defines the maximum number of messages to be - # processed per actor before the thread jumps to the next actor. - # Set to 1 for as fair as possible. - throughput = 512 - } - - redis-subscriber-worker-dispatcher { - mailbox-type = "akka.dispatch.SingleConsumerOnlyUnboundedMailbox" - # Throughput defines the maximum number of messages to be - # processed per actor before the thread jumps to the next actor. - # Set to 1 for as fair as possible. - throughput = 512 - } -} - -redis { - host="redis" - port=6379 - password="" - # recording keys should expire in 14 days - keyExpiry=1209600 -} - -eventBus { - meetingManagerChannel = "FROM SCREEN-APPLICATION.CONF MeetingManagerChannel" - outMessageChannel = "OutgoingMessageChannel" - incomingJsonMsgChannel = "IncomingJsonMsgChannel" - outBbbMsgMsgChannel = "OutBbbMsgChannel" -} \ No newline at end of file diff --git a/mod/core/red5-webapps/screenshare/screenshare.properties b/mod/core/red5-webapps/screenshare/screenshare.properties deleted file mode 100644 index b0ba4b5..0000000 --- a/mod/core/red5-webapps/screenshare/screenshare.properties +++ /dev/null @@ -1,20 +0,0 @@ -recordingDirectory=/usr/share/red5/webapps/screenshare/streams - -redis.host=redis -redis.port=6379 -redis.password= -redis.keyExpiry=1209600 - -streamBaseUrl=rtmp://10.130.218.38/screenshare -jnlpUrl=http://10.130.218.38/screenshare -jnlpFile=http://10.130.218.38/screenshare/screenshare.jnlp -useH264=false - -# NOTES: -# 1. GOP (group of pictures) is calculated as frameRate * keyFrameInterval -# 2. intra-refresh=1 doesn't work in Chrome. Late comers can't view the stream as -# the user missed the key frame -# 3. keyFrameInterval is in seconds -# 4. Make sure you encode & into & as it will break the JNLP XML -#codecOptions=crf=36&preset=veryfast&tune=animation,zerolatency&frameRate=12.0&keyFrameInterval=6 -codecOptions=crf=38&preset=veryfast&tune=zerolatency&frameRate=5.0&keyFrameInterval=5 diff --git a/mod/core/red5-webapps/sip/bigbluebutton-sip.properties b/mod/core/red5-webapps/sip/bigbluebutton-sip.properties deleted file mode 100644 index 2a49875..0000000 --- a/mod/core/red5-webapps/sip/bigbluebutton-sip.properties +++ /dev/null @@ -1,25 +0,0 @@ -# The ip and port the BBB SIP app is going to use -bbb.sip.app.ip=127.0.0.1 -bbb.sip.app.port=5070 - -# The username and password the BBB SIP app to use to -# register with FreeSWITCH -sip.server.username=bbbuser -sip.server.password=secret - -# The ip and port of the FreeSWITCH server -freeswitch.ip=10.7.7.1 -freeswitch.port=5060 - -# The start/stop RTP port the application is going to use -# for the media stream. -startAudioPort=15000 -stopAudioPort=16383 - -redis.host=10.7.7.5 -redis.port=6379 -redis.password= - -# If you want mjsip stack (red5/log/*access*.log) to minimize the amount of logs it -# generates, set this to a lower value (e.g. 3). -sipStackDebugLevel=3 \ No newline at end of file diff --git a/mod/core/red5-webapps/video-broadcast/video-broadcast.properties b/mod/core/red5-webapps/video-broadcast/video-broadcast.properties deleted file mode 100644 index 5c6a147..0000000 --- a/mod/core/red5-webapps/video-broadcast/video-broadcast.properties +++ /dev/null @@ -1,2 +0,0 @@ -redis.host=redis -redis.port=6379 diff --git a/mod/core/red5-webapps/video/bigbluebutton-video.properties b/mod/core/red5-webapps/video/bigbluebutton-video.properties deleted file mode 100644 index bcab3d2..0000000 --- a/mod/core/red5-webapps/video/bigbluebutton-video.properties +++ /dev/null @@ -1,5 +0,0 @@ -redis.host=redis -redis.port=6379 -redis.password= -# recording keys should expire in 14 days -redis.keyExpiry=1209600 diff --git a/mod/core/supervisord.conf b/mod/core/supervisord.conf index 44d39f7..9d7ce23 100644 --- a/mod/core/supervisord.conf +++ b/mod/core/supervisord.conf @@ -1,12 +1,3 @@ -[program:red5] -command=/usr/local/bin/prefix-log /usr/share/red5/red5.sh -user=red5 -directory=/usr/share/red5 -stdout_logfile=/dev/fd/1 -stdout_logfile_maxbytes=0 -stderr_logfile=/dev/fd/2 -stderr_logfile_maxbytes=0 - [program:bbb-web] command=/usr/local/bin/prefix-log /usr/share/bbb-web/run-prod.sh user=bigbluebutton diff --git a/mod/html5/Dockerfile b/mod/html5/Dockerfile index c8f8dcb..7692695 100644 --- a/mod/html5/Dockerfile +++ b/mod/html5/Dockerfile @@ -1,6 +1,6 @@ -FROM node:8.17.0-buster-slim AS builder +FROM node:12-buster-slim AS builder -RUN apt-get update && apt-get install -y wget curl subversion python2 python3 build-essential +RUN apt-get update && apt-get install -y wget curl subversion python3 build-essential RUN groupadd -g 2000 meteor && useradd -m -u 2001 -g meteor meteor @@ -11,36 +11,24 @@ RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSI && rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz USER meteor -ENV METEOR_VERSION 1.8.1 +ENV METEOR_VERSION 1.9 RUN curl -sL https://install.meteor.com?release=$METEOR_VERSION | sed s/--progress-bar/-sL/g | /bin/sh -ENV TAG v2.2.31 +ENV TAG v2.3-alpha-1 RUN cd ~ \ && svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/bigbluebutton-html5 \ && mv ~/bigbluebutton-html5 ~/source \ - && rm -rf ~/source/.svn - -# source modifications for node v12 support: -# - remove memwatch since it is not available for node v12 and disabled anyway -# - set meteor release to 1.9 -# - install newer fibers version (4.0.3) which supports node v12 - -# RUN sed -i -r 's/import (memwatch|heapdump).*//g' ~/source/imports/startup/server/index.js \ -# && sed -i -r 's/.*(memwatch|heapdump).*//g' ~/source/package.json \ -# && echo "METEOR@$METEOR_VERSION" > ~/source/.meteor/release \ -# && cat ~/source/.meteor/release - -RUN cd ~/source \ + && cd ~/source \ && ~/.meteor/meteor npm install --production \ && ~/.meteor/meteor build --directory ~/app \ - && rm -r ~/source + && rm -rf ~/source RUN cd ~/app/bundle/programs/server \ && npm install --production # ------------------------------ -FROM node:8-alpine +FROM node:12-alpine RUN addgroup -g 2000 meteor && \ adduser -D -u 2001 -G meteor meteor && \ @@ -53,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.2.30 +ENV TAG v2.3-alpha-1 diff --git a/mod/html5/settings.yml b/mod/html5/settings.yml index 1d64f53..add96ee 100644 --- a/mod/html5/settings.yml +++ b/mod/html5/settings.yml @@ -45,6 +45,8 @@ public: chatPushAlerts: false userJoinAudioAlerts: false userJoinPushAlerts: false + raiseHandAudioAlerts: false + raiseHandPushAlerts: false fallbackLocale: en overrideLocale: null audio: @@ -96,16 +98,6 @@ public: packetLostThreshold: 10 kurento: wsUrl: wss://{{ .Env.DOMAIN }}/bbb-webrtc-sfu - # Valid for video-provider. Time (ms) before its WS connection times out - # and tries to reconnect. - wsConnectionTimeout: 4000 - cameraTimeouts: - # Base camera timeout: used as the camera *sharing* timeout and - # as the minimum camera subscribe reconnection timeout - baseTimeout: 15000 - # Max timeout: used as the max camera subscribe reconnection timeout. Each - # subscribe reattempt increases the reconnection timer up to this - maxTimeout: 60000 chromeDefaultExtensionKey: akgoaoikmbmhcopjgakkcepdgdgkjfbc chromeDefaultExtensionLink: https://chrome.google.com/webstore/detail/bigbluebutton-screenshare/akgoaoikmbmhcopjgakkcepdgdgkjfbc chromeExtensionKey: KEY @@ -276,6 +268,7 @@ public: layout: autoSwapLayout: false hidePresentation: false + webcamsDefaultPlacement: "top" media: stunTurnServersFetchAddress: "/bigbluebutton/api/stuns" cacheStunTurnServers: true @@ -304,7 +297,26 @@ public: websocketKeepAliveDebounce: 10 #Trace sip/audio messages in browser. If not set, default value is false. traceSip: false + stats: + enabled: true + interval: 2000 + length: 5 + log: false + jitter: + - 10 + - 20 + - 30 + loss: + - 0.05 + - 0.1 + - 0.2 + level: + - warning + - danger + - critical + help: STATS_HELP_URL presentation: + allowDownloadable: true defaultPresentationFile: default.pdf panZoomThrottle: 32 restoreOnUpdate: false diff --git a/mod/webhooks/Dockerfile b/mod/webhooks/Dockerfile index 36b1019..6b8d5d2 100644 --- a/mod/webhooks/Dockerfile +++ b/mod/webhooks/Dockerfile @@ -13,7 +13,7 @@ RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSI USER webhooks -ENV TAG v2.2.20 +ENV TAG v2.3-alpha-1 RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/bbb-webhooks /app \ && rm -rf /app/.svn \ && cd /app && npm install --production