Skip to content
This repository has been archived by the owner on Dec 14, 2021. It is now read-only.

Commit

Permalink
Merge pull request #16 from artemtech/v2.2.x
Browse files Browse the repository at this point in the history
Add recording feature
  • Loading branch information
alangecker authored Sep 6, 2020
2 parents f726f7e + d4374f6 commit e6ff3c7
Show file tree
Hide file tree
Showing 23 changed files with 346 additions and 56 deletions.
18 changes: 18 additions & 0 deletions docker-compose.exporter.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
version: '3.2'
services:
node_exporter:
container_name: node_exporter
# Always check if there is a newer stable release:
# https://hub.docker.com/r/prom/node-exporter/tags
image: prom/node-exporter:v0.18.1
command:
- "--path.rootfs=/host"
- "--web.listen-address=127.0.0.1:9100"
network_mode: "host"
pid: "host"
volumes:
- type: "bind"
source: "/"
target: "/host"
read_only: true
restart: unless-stopped
14 changes: 8 additions & 6 deletions docker-compose.greenlight.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,22 @@ services:
environment:
DB_ADAPTER: postgresql
DB_HOST: postgres
DB_NAME: greenlight
DB_USERNAME: postgres
DB_PASSWORD: password
DB_NAME: ${POSTGRES_DB}
DB_USERNAME: ${POSTGRES_USER}
DB_PASSWORD: ${POSTGRES_PASSWORD}
BIGBLUEBUTTON_ENDPOINT: ${GREENLIGHT_ENDPOINT}
BIGBLUEBUTTON_SECRET: ${SHARED_SECRET}
SECRET_KEY_BASE: ${RAILS_SECRET}
depends_on:
- redis
ports:
- 10.7.7.1:5000:80
postgres:
image: postgres:12
restart: unless-stopped
environment:
POSTGRES_DB: greenlight
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- ./postgres-data:/var/lib/postgresql/data
15 changes: 15 additions & 0 deletions docker-compose.recordings.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
version: '3.6'
services:
recordings:
build: mod/recordings
depends_on:
- redis
environment:
DOMAIN: ${DOMAIN}
volumes:
- bigbluebutton:/var/bigbluebutton
- vol-freeswitch:/var/freeswitch/meetings
- vol-kurento:/var/kurento
networks:
bbb-net:
ipv4_address: 10.7.7.16
4 changes: 2 additions & 2 deletions docker-compose.webhooks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ services:
environment:
DOMAIN: ${DOMAIN}
SHARED_SECRET: ${SHARED_SECRET}
extra_hosts:
- "redis:10.7.7.5"
depends_on:
- redis
networks:
bbb-net:
ipv4_address: 10.7.7.15
14 changes: 9 additions & 5 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ services:
environment:
DEV_MODE: ${DEV_MODE:-}
DOMAIN: ${DOMAIN}
ENABLE_RECORDING: ${ENABLE_RECORDING:-false}
SHARED_SECRET: ${SHARED_SECRET}
WELCOME_MESSAGE: ${WELCOME_MESSAGE:-}
WELCOME_FOOTER: ${WELCOME_FOOTER}
Expand All @@ -17,6 +18,8 @@ services:
TURN_SECRET: ${TURN_SECRET:-}
volumes:
- bigbluebutton:/var/bigbluebutton
- vol-freeswitch:/var/freeswitch/meetings
- vol-kurento:/var/kurento
networks:
bbb-net:
ipv4_address: 10.7.7.2
Expand All @@ -41,10 +44,11 @@ services:
volumes:
- ./conf/sip_profiles:/etc/freeswitch/sip_profiles/external
- ./conf/dialplan_public:/etc/freeswitch/dialplan/public_docker
- vol-freeswitch:/var/freeswitch/meetings
network_mode: host

nginx:
image: nginx:1.19-alpine
build: mod/nginx
restart: unless-stopped
depends_on:
- etherpad
Expand All @@ -54,8 +58,6 @@ services:
- "8080:80"
volumes:
- bigbluebutton:/var/bigbluebutton
- ./mod/nginx/bbb:/etc/nginx/bbb
- ./mod/nginx/bigbluebutton:/etc/nginx/conf.d/default.conf
- ${DEFAULT_PRESENTATION:-/dev/null}:/etc/nginx/html/default.pdf
network_mode: host
extra_hosts:
Expand All @@ -79,8 +81,6 @@ services:
redis:
image: redis:6.0-alpine
restart: unless-stopped
ports:
- "127.0.0.1:6379:6379" # TODO: remove as soon as we updated all redis host references
networks:
bbb-net:
ipv4_address: 10.7.7.5
Expand All @@ -103,6 +103,8 @@ services:
KMS_TURN_URL:
KMS_NETWORK_INTERFACES: ${NETWORK_INTERFACE:-}
network_mode: host
volumes:
- vol-kurento:/var/kurento

webrtc-sfu:
build:
Expand Down Expand Up @@ -167,6 +169,8 @@ services:

volumes:
bigbluebutton:
vol-freeswitch:
vol-kurento:

networks:
bbb-net:
Expand Down
10 changes: 5 additions & 5 deletions mod/core/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ MAINTAINER ffdixon@bigbluebutton.org
# TODO:
# - separate bbb-apps into an own container
# - separate bbb-web
# - remove systemd

ENV DEBIAN_FRONTEND noninteractive
ENV container docker
Expand Down Expand Up @@ -45,7 +44,7 @@ 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
# -- 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

Expand All @@ -69,8 +68,6 @@ COPY red5-webapps/screenshare/application.conf /usr/share/red5/webapps/screensha
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 bigbluebutton.yml /usr/local/bigbluebutton/core/scripts/bigbluebutton.yml

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

Expand All @@ -79,6 +76,10 @@ COPY bbb-fsesl-akka/application.conf /etc/bbb-fsesl-akka/application.conf
COPY bbb-transcode-akka/application.conf /etc/bbb-transcode-akka/application.conf
COPY web-run.sh /usr/share/bbb-web/run-prod.sh

# add default presentation thumbnail
RUN mkdir -p /usr/share/bigbluebutton/blank \
&& wget -O /usr/share/bigbluebutton/blank/blank-thumb.png https://raw.githubusercontent.com/bigbluebutton/bigbluebutton/v2.2.20/bigbluebutton-config/slides/blank-thumb.png

COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
COPY entrypoint.sh /entrypoint.sh

Expand All @@ -87,4 +88,3 @@ RUN mkdir -p /var/log/supervisor

ENTRYPOINT ["/entrypoint.sh"]
CMD []

11 changes: 11 additions & 0 deletions mod/core/entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,27 @@
export LANG=en_US.UTF-8

# generate bbb folders
mkdir -p /var/bigbluebutton/events
mkdir -p /var/bigbluebutton/captions
mkdir -p /var/bigbluebutton/captions/inbox
mkdir -p /var/bigbluebutton/basic_stats
mkdir -p /var/bigbluebutton/recording/raw
mkdir -p /var/bigbluebutton/recording/process
mkdir -p /var/bigbluebutton/recording/publish
mkdir -p /var/bigbluebutton/recording/publish/presentation
mkdir -p /var/bigbluebutton/recording/status
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/published
mkdir -p /var/bigbluebutton/published/presentation
mkdir -p /var/bigbluebutton/deleted
mkdir -p /var/bigbluebutton/unpublished
mkdir -p /var/bigbluebutton/playback

# add playback-presentation to /var/bigbluebutton volume
cp -r /usr/src/bbb-src-playback/* /var/bigbluebutton/playback

# -- fix directory permissions
chown -R bigbluebutton:bigbluebutton /var/bigbluebutton
Expand Down
4 changes: 1 addition & 3 deletions mod/core/supervisord.conf
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,4 @@ directory=/usr/share/bbb-transcode-akka
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
stderr_logfile=/dev/fd/2
stderr_logfile_maxbytes=0


stderr_logfile_maxbytes=0
12 changes: 8 additions & 4 deletions mod/core/web/bigbluebutton.properties
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
#
# These are the default properites for BigBlueButton Web application

# Default loglevel.
# Default loglevel.
appLogLevel=DEBUG

#----------------------------------------------------
Expand Down Expand Up @@ -189,18 +189,22 @@ 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 }}
disableRecordingDefault=false
{{ else }}
disableRecordingDefault=true
{{ end }}

# 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.
allowStartStopRecording=false
allowStartStopRecording=true

# Allow webcams streaming reception only to and from moderators
webcamsOnlyForModerator=false
Expand Down
10 changes: 10 additions & 0 deletions mod/freeswitch/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,16 @@ RUN cd /etc \
&& svn checkout https://github.com/alangecker/bbb-packages/tags/$GIT_TAG/bbb-freeswitch-core/data/opt/freeswitch/etc/freeswitch \
&& rm -rf /etc/freeswitch/.svn

# the current available freeswitch-mod-opusfile is broken,
# it can't write any .opus files.
# there is already a fix, but it is not included yet.
# https://github.com/signalwire/freeswitch/pull/719/files
# we rather switch to the binary built by bigbluebutton and add its dependencies
RUN wget -O /usr/lib/freeswitch/mod/mod_opusfile.so https://github.com/bbb-pkg/bbb-freeswitch-core/raw/43f3a47af1fcf5ea559e16bb28b900c925a7f2c3/opt/freeswitch/lib/freeswitch/mod/mod_opusfile.so \
&& 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

# add modifications
COPY ./conf /etc/freeswitch/

Expand Down
3 changes: 3 additions & 0 deletions mod/freeswitch/entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ for IP in "${ADDR[@]}"; do
iptables -I INPUT -p udp --dport 5060 -s $IP -j ACCEPT
done

chown -R freeswitch:daemon /var/freeswitch/meetings
chmod 777 /var/freeswitch/meetings

dockerize \
-template /etc/freeswitch/vars.xml.tmpl:/etc/freeswitch/vars.xml \
-template /etc/freeswitch/autoload_configs/conference.conf.xml.tmpl:/etc/freeswitch/autoload_configs/conference.conf.xml \
Expand Down
32 changes: 16 additions & 16 deletions mod/html5/settings.yml
Original file line number Diff line number Diff line change
Expand Up @@ -200,26 +200,26 @@ public:
profile: low-u25
- threshold: 30
profile: low-u30
pagination:
# whether to globally enable or disable pagination.
enabled: false
# how long (in ms) the negotiation will be debounced after a page change.
pageChangeDebounceTime: 2500
# video page sizes for DESKTOP endpoints. It stands for the number of SUBSCRIBER streams.
# PUBLISHERS aren't accounted for .
# A page size of 0 (zero) means that the page size is unlimited (disabled).
desktopPageSizes:
moderator: 0
viewer: 5
# video page sizes for MOBILE endpoints
mobilePageSizes:
moderator: 2
viewer: 2
pagination:
# whether to globally enable or disable pagination.
enabled: false
# how long (in ms) the negotiation will be debounced after a page change.
pageChangeDebounceTime: 2500
# video page sizes for DESKTOP endpoints. It stands for the number of SUBSCRIBER streams.
# PUBLISHERS aren't accounted for .
# A page size of 0 (zero) means that the page size is unlimited (disabled).
desktopPageSizes:
moderator: 0
viewer: 5
# video page sizes for MOBILE endpoints
mobilePageSizes:
moderator: 2
viewer: 2
pingPong:
clearUsersInSeconds: 180
pongTimeInSeconds: 15
allowOutsideCommands:
toggleRecording: false
toggleRecording: true
toggleSelfVoice: false
poll:
enabled: true
Expand Down
14 changes: 14 additions & 0 deletions mod/nginx/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
FROM nginx:1.19-alpine

RUN apk add subversion

ENV TAG v2.2.20

# get bbb-playback-presentation web files
RUN mkdir /www \
&& cd /www \
&& svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/record-and-playback/presentation/playback/presentation/ \
&& rm -rf /www/presentation/.svn /www/presentation/0.*

COPY ./bbb /etc/nginx/bbb
COPY ./bigbluebutton /etc/nginx/conf.d/default.conf
2 changes: 1 addition & 1 deletion mod/nginx/bbb/bbb-exporter.nginx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
location /bbb-exporter {
location /metrics {
proxy_pass http://10.7.7.33:9688;
proxy_http_version 1.1;
}
12 changes: 1 addition & 11 deletions mod/nginx/bbb/presentation.nginx
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,8 @@
# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
#

location /playback/presentation/playback.html {
return 301 /playback/presentation/0.81/playback.html?$query_string;
# If you have recordings from 0.9.0 beta versions and are sure
# that you will never want to play recordings made with
# BigBlueButton 0.81, comment the line above and uncomment the
# following line:
#return 301 /playback/presentation/0.9.0/playback.html?$query_string;
}

location /playback/presentation {
root /var/bigbluebutton;
index index.html index.htm;
alias /www/presentation;
}

location /presentation {
Expand Down
Loading

0 comments on commit e6ff3c7

Please sign in to comment.