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

Add recording feature #16

Merged
merged 29 commits into from
Sep 6, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
1800ce0
add recording
artemtech Jun 11, 2020
cad5652
add missing monitor recording file
artemtech Jun 12, 2020
c0933e2
fix file permission
artemtech Jun 12, 2020
2dfbb33
fix typo
artemtech Jun 12, 2020
e304beb
fix argparse error
artemtech Jun 12, 2020
78a3865
fix time sleep error
artemtech Jun 12, 2020
0d08246
fix infinite loop
artemtech Jun 12, 2020
4ade613
test the bbb-record
artemtech Jun 12, 2020
60c5b18
use main recording scripts for supervisord
artemtech Jun 15, 2020
9ce65a2
use bash to monitor files
artemtech Jun 17, 2020
befebed
update supervisor to run record-monitor.sh
artemtech Jun 17, 2020
0ebfe4d
update Dockerfile
artemtech Jun 17, 2020
88fb25c
fix override path variables
artemtech Jun 17, 2020
ff2f590
fix playback url not using env.Domain
artemtech Jun 17, 2020
bae3b78
Merge branch 'v2.2.x' of https://github.com/alangecker/bigbluebutton-…
artemtech Aug 14, 2020
fe17745
re-commit recordings from upstream for testing only
artemtech Aug 15, 2020
25a345d
add recording feature into setup scripts
artemtech Aug 15, 2020
e056e52
use env file in greenlight database
artemtech Aug 27, 2020
4ada698
remove unused dockerize file
artemtech Aug 27, 2020
a575e2c
update volumes
artemtech Aug 27, 2020
66d0541
update recording containner scripts
artemtech Aug 27, 2020
13044fb
add node exporter
artemtech Aug 27, 2020
ef32b62
generate random password by default on postgres password
artemtech Aug 27, 2020
f7aa707
fix typo
artemtech Aug 29, 2020
cd76d89
fix recording entrypoint error
artemtech Aug 29, 2020
20dfb43
fix setup recording
artemtech Aug 29, 2020
22331da
Merge branch 'develop' into v2.2.x
alangecker Sep 6, 2020
889cee2
remove database mounts (contains only temporary data anyway)
alangecker Sep 6, 2020
d4374f6
update versions and fix for wrong indentation with applied v2.2.23 ch…
alangecker Sep 6, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 @@ -9,20 +9,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