mirror of
https://github.com/bigbluebutton/docker.git
synced 2025-06-19 03:17:00 +02:00
separate bbb-html5
This commit is contained in:
parent
2d6e43193d
commit
e2901ddd81
@ -2,7 +2,7 @@ version: '3.6'
|
||||
|
||||
services:
|
||||
base:
|
||||
image: bbb
|
||||
image: bbb-base
|
||||
hostname: meet.livingutopia.org
|
||||
cap_add:
|
||||
- SYS_NICE # for realtime scheduling
|
||||
@ -15,13 +15,13 @@ services:
|
||||
- /tmp:exec,mode=777
|
||||
volumes:
|
||||
- /sys/fs/cgroup:/sys/fs/cgroup:ro # for systemd
|
||||
- ./setup.sh:/opt/setup.sh
|
||||
- ./mod/base/setup.sh:/opt/setup.sh
|
||||
- ./mod/freeswitch/vars.xml:/opt/freeswitch/conf/vars.xml
|
||||
- ./mod/freeswitch/external.xml:/opt/freeswitch/conf/sip_profiles/external.xml
|
||||
- ./mod/html5/systemd_start.sh:/usr/share/meteor/bundle/systemd_start.sh
|
||||
- ./mod/html5/config.yml:/usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml
|
||||
- ./mod/web/override.conf:/etc/systemd/system/bbb-web.service.d/override.conf
|
||||
- ./mod/web/bigbluebutton.properties:/usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties
|
||||
- ./mod/base/bigbluebutton.yml:/usr/local/bigbluebutton/core/scripts/bigbluebutton.yml
|
||||
- ./mod/bbb-apps-akka/application.conf:/usr/share/bbb-apps-akka/conf/application.conf
|
||||
network_mode: host
|
||||
|
||||
nginx:
|
||||
@ -29,6 +29,7 @@ services:
|
||||
depends_on:
|
||||
- etherpad
|
||||
- webrtc-sfu
|
||||
- html5
|
||||
ports:
|
||||
- "80:80"
|
||||
volumes:
|
||||
@ -101,6 +102,17 @@ services:
|
||||
networks:
|
||||
- bluenet
|
||||
|
||||
html5:
|
||||
image: bbb-html5
|
||||
depends_on:
|
||||
- redis
|
||||
- etherpad
|
||||
networks:
|
||||
- bluenet
|
||||
volumes:
|
||||
- ./mod/html5/entrypoint.sh:/entrypoint.sh
|
||||
- ./mod/html5/settings.yml:/app/programs/server/assets/app/config/settings.yml
|
||||
|
||||
networks:
|
||||
bluenet:
|
||||
ipam:
|
||||
|
@ -27,13 +27,6 @@ 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-220 bigbluebutton-xenial main" > /etc/apt/sources.list.d/bigbluebutton.list'
|
||||
|
||||
RUN sh -c 'wget -qO - https://www.mongodb.org/static/pgp/server-3.4.asc | sudo apt-key add -' \
|
||||
&& sh -c 'echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list'
|
||||
|
||||
# nodejs
|
||||
RUN sh -c "curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -"
|
||||
|
||||
|
||||
# create dummy packages to satisfy dependencies
|
||||
RUN equivs-control redis-server.control \
|
||||
&& sed -i 's/<package name; defaults to equivs-dummy>/redis-server/g' redis-server.control \
|
||||
@ -61,23 +54,14 @@ COPY dummy.service /etc/systemd/system/redis-server.service
|
||||
COPY dummy.service /etc/systemd/system/kurento-media-server.service
|
||||
COPY dummy.service /etc/systemd/system/bbb-webrtc-sfu.service
|
||||
|
||||
RUN apt-get install -y nodejs
|
||||
|
||||
# bbb-html5 installer expects this file
|
||||
RUN mkdir /usr/share/etherpad-lite && sh -c 'echo invalid > /usr/share/etherpad-lite/APIKEY.txt'
|
||||
|
||||
|
||||
RUN touch /etc/init.d/nginx && chmod +x /etc/init.d/nginx
|
||||
RUN apt-get install -y bbb-web bbb-record-core bbb-playback-presentation bbb-freeswitch-core \
|
||||
RUN apt-get update && apt-get install -y bbb-web bbb-record-core bbb-playback-presentation bbb-freeswitch-core \
|
||||
bbb-fsesl-akka bbb-apps-akka bbb-transcode-akka bbb-apps bbb-apps-sip \
|
||||
bbb-apps-video bbb-apps-screenshare bbb-apps-video-broadcast
|
||||
|
||||
RUN mkdir -p /etc/nginx/sites-enabled /var/kurento
|
||||
|
||||
RUN apt-get install -y bbb-html5 bbb-config
|
||||
RUN apt-get install -y mongodb-org
|
||||
# RUN apt-get install -y bbb-demo
|
||||
|
||||
RUN apt-get install -y bbb-config
|
||||
|
||||
# -- Disable unneeded services
|
||||
RUN systemctl disable systemd-journal-flush
|
||||
@ -93,7 +77,15 @@ RUN chown bbb /home/bbb
|
||||
RUN sh -c 'echo "bbb ALL=(ALL:ALL) NOPASSWD: ALL" | tee /etc/sudoers.d/bbb'
|
||||
RUN sh -c 'echo "bbb:bbb" | chpasswd'
|
||||
|
||||
COPY mod/tomcat7 /etc/init.d/tomcat7
|
||||
# disable IPv6 support
|
||||
RUN rm -rf /opt/freeswitch/conf/sip_profiles/*-ipv6*
|
||||
|
||||
# disable all services
|
||||
RUN find /etc/systemd/ | grep wants | xargs -r -n 1 basename | grep service | grep -v networking | grep -v tty | xargs -r -n 1 -I __ systemctl disable __
|
||||
RUN systemctl disable tomcat7
|
||||
RUN systemctl enable red5 freeswitch bbb-apps-akka bbb-transcode-akka bbb-fsesl-akka bbb-rap-caption-inbox bbb-web
|
||||
|
||||
COPY tomcat7 /etc/init.d/tomcat7
|
||||
RUN chmod +x /etc/init.d/tomcat7
|
||||
|
||||
COPY setup.sh /opt/setup.sh
|
||||
|
37
mod/base/bigbluebutton.yml
Normal file
37
mod/base/bigbluebutton.yml
Normal file
@ -0,0 +1,37 @@
|
||||
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
|
||||
kurento_screenshare_src: /var/kurento/screenshare
|
||||
raw_screenshare_src: /usr/share/red5/webapps/screenshare/streams
|
||||
raw_webrtc_deskshare_src: /usr/share/red5/webapps/video-broadcast/streams
|
||||
raw_deskshare_src: /var/bigbluebutton/deskshare
|
||||
raw_presentation_src: /var/bigbluebutton
|
||||
notes_endpoint: http://localhost:9001/p
|
||||
# Specify the notes formats we archive
|
||||
# txt, doc and odt are also supported
|
||||
notes_formats:
|
||||
- etherpad
|
||||
- html
|
||||
- pdf
|
||||
redis_host: 127.0.0.1
|
||||
redis_port: 6379
|
||||
# Uncomment and set password if redis require it.
|
||||
# redis_password: changeme
|
||||
|
||||
# For PRODUCTION
|
||||
log_dir: /var/log/bigbluebutton
|
||||
events_dir: /var/bigbluebutton/events
|
||||
recording_dir: /var/bigbluebutton/recording
|
||||
published_dir: /var/bigbluebutton/published
|
||||
captions_dir: /var/bigbluebutton/captions
|
||||
playback_host: meet.livingutopia.org
|
||||
playback_protocol: https
|
||||
|
||||
# For DEVELOPMENT
|
||||
# This allows us to run the scripts manually
|
||||
#scripts_dir: /home/ubuntu/dev/bigbluebutton/record-and-playback/core/scripts
|
||||
#log_dir: /home/ubuntu/temp/log
|
||||
#recording_dir: /home/ubuntu/temp/recording
|
||||
#published_dir: /home/ubuntu/temp/published
|
||||
#playback_host: meet.livingutopia.org
|
102
mod/bbb-apps-akka/application.conf
Normal file
102
mod/bbb-apps-akka/application.conf
Normal file
@ -0,0 +1,102 @@
|
||||
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="127.0.0.1"
|
||||
port=6379
|
||||
password=""
|
||||
# recording keys should expire in 14 days
|
||||
keyExpiry=1209600
|
||||
}
|
||||
|
||||
expire {
|
||||
# time in seconds
|
||||
lastUserLeft = 60
|
||||
neverJoined = 300
|
||||
maxRegUserToJoin = 300
|
||||
}
|
||||
|
||||
services {
|
||||
bbbWebAPI="https://meet.livingutopia.org/bigbluebutton/api"
|
||||
sharedSecret="I8x5c5yzaXZktgXK00tEqSi3B17nQySH5ssDWzxwL4"
|
||||
}
|
||||
|
||||
red5 {
|
||||
deskshareip="meet.livingutopia.org"
|
||||
deskshareapp="video-broadcast"
|
||||
}
|
||||
|
||||
eventBus {
|
||||
meetingManagerChannel = "MeetingManagerChannel"
|
||||
outMessageChannel = "OutgoingMessageChannel"
|
||||
incomingJsonMsgChannel = "IncomingJsonMsgChannel"
|
||||
outBbbMsgMsgChannel = "OutBbbMsgChannel"
|
||||
}
|
||||
|
||||
sharedNotes {
|
||||
maxNumberOfNotes = 3
|
||||
maxNumberOfUndos = 30
|
||||
}
|
||||
|
||||
http {
|
||||
interface = "0.0.0.0"
|
||||
port = 9999
|
||||
}
|
||||
|
||||
services {
|
||||
telizeHost = "www.telize.com"
|
||||
telizePort = 80
|
||||
}
|
||||
|
||||
apps {
|
||||
checkPermissions = true
|
||||
endMeetingWhenNoMoreAuthedUsers = false
|
||||
endMeetingWhenNoMoreAuthedUsersAfterMinutes = 2
|
||||
}
|
||||
|
||||
voiceConf {
|
||||
recordPath = "/var/freeswitch/meetings"
|
||||
# Use ogg instead of wav to get smaller audio files.
|
||||
# Valid values "wav", "ogg", "flac", "opus"
|
||||
recordCodec = "opus"
|
||||
# Interval seconds to check if FreeSWITCH is recording.
|
||||
checkRecordingInterval = 23
|
||||
# Internval seconds to sync voice users status.
|
||||
syncUserStatusInterval = 41
|
||||
}
|
||||
|
||||
recording {
|
||||
# set zero to disable chapter break
|
||||
chapterBreakLengthInMinutes = 0
|
||||
}
|
||||
|
||||
whiteboard {
|
||||
multiUserDefault = false
|
||||
}
|
||||
|
24
mod/html5/Dockerfile
Normal file
24
mod/html5/Dockerfile
Normal file
@ -0,0 +1,24 @@
|
||||
# TODO: build from github repo with node:12
|
||||
FROM node:8-stretch
|
||||
|
||||
ENV NODE_ENV production
|
||||
|
||||
RUN apt-get update && apt-get install -y sudo wget binutils
|
||||
|
||||
RUN useradd -m meteor
|
||||
|
||||
RUN wget https://ubuntu.bigbluebutton.org/xenial-220/pool/main/b/bbb-html5/bbb-html5_2.2.0-870_amd64.deb \
|
||||
&& ar x bbb-html5_*.deb \
|
||||
&& tar -zxf data.tar.gz ./usr/share/meteor/bundle \
|
||||
&& mv /usr/share/meteor/bundle /app \
|
||||
&& rm -rf /app/programs/server/node_modules \
|
||||
&& chown meteor:meteor /app/programs/server \
|
||||
&& rm /*.deb /*.tar.gz
|
||||
|
||||
USER meteor
|
||||
RUN cd /app/programs/server && npm install && npm cache clear --force
|
||||
|
||||
|
||||
COPY entrypoint.sh /entrypoint.sh
|
||||
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
10
mod/html5/entrypoint.sh
Executable file
10
mod/html5/entrypoint.sh
Executable file
@ -0,0 +1,10 @@
|
||||
#!/bin/bash
|
||||
|
||||
cd /app
|
||||
export ROOT_URL=http://127.0.0.1/html5client
|
||||
export MONGO_URL=mongodb://10.7.7.6/meteor
|
||||
export NODE_ENV=production
|
||||
export ENVIRONMENT_TYPE=production
|
||||
export PORT=3000
|
||||
|
||||
node main.js
|
@ -307,7 +307,7 @@ public:
|
||||
throttleInterval: 400, flushOnClose: true, logTag: ""}
|
||||
private:
|
||||
app:
|
||||
host: 127.0.0.1
|
||||
host: 0.0.0.0
|
||||
port: 3000
|
||||
localesUrl: /locales
|
||||
pencilChunkLength: 100
|
||||
@ -315,10 +315,10 @@ private:
|
||||
etherpad:
|
||||
apikey: 9xLdxQJ8XoTUy3q7W4ZgpvKYqX16yqirdESk9i54FVm6PiJ1paRd8JOI1MT4pywm
|
||||
version: 1.2.13
|
||||
host: 10.7.7.4
|
||||
host: etherpad
|
||||
port: 9001
|
||||
redis:
|
||||
host: 10.7.7.5
|
||||
host: redis
|
||||
port: '6379'
|
||||
timeout: 5000
|
||||
password: null
|
@ -1,32 +0,0 @@
|
||||
#!/bin/bash -e
|
||||
#Allow to run outside of directory
|
||||
cd `dirname $0`
|
||||
|
||||
if [ -w /sys/kernel/mm/transparent_hugepage/enabled ]; then
|
||||
unameEnabled="$(stat --format '%U' /sys/kernel/mm/transparent_hugepage/enabled)"
|
||||
if [ "x${unameEnabled}" != "xnobody" ]; then
|
||||
echo "never" > /sys/kernel/mm/transparent_hugepage/enabled
|
||||
echo "transparent_hugepage/enabled set to 'never'"
|
||||
else
|
||||
echo "transparent_hugepage/enabled could not be set to 'never'"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -w /sys/kernel/mm/transparent_hugepage/defrag ]; then
|
||||
unameDefrag="$(stat --format '%U' /sys/kernel/mm/transparent_hugepage/defrag)"
|
||||
if [ "x${unameDefrag}" != "xnobody" ]; then
|
||||
echo "never" > /sys/kernel/mm/transparent_hugepage/defrag
|
||||
echo "transparent_hugepage/defrag set to 'never'"
|
||||
else
|
||||
echo "transparent_hugepage/defrag could not be set to 'never'"
|
||||
fi
|
||||
fi
|
||||
|
||||
# change to start meteor in production (https) or development (http) mode
|
||||
ENVIRONMENT_TYPE=production
|
||||
|
||||
cd /usr/share/meteor/bundle
|
||||
export ROOT_URL=http://127.0.0.1/html5client
|
||||
export MONGO_URL=mongodb://10.7.7.6/meteor
|
||||
export NODE_ENV=production
|
||||
PORT=3000 /usr/bin/node main.js
|
@ -1,10 +1,10 @@
|
||||
location /html5client {
|
||||
proxy_pass http://host.docker.internal:3000;
|
||||
proxy_pass http://html5:3000;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "Upgrade";
|
||||
}
|
||||
|
||||
location /_timesync {
|
||||
proxy_pass http://host.docker.internal:3000;
|
||||
proxy_pass http://html5:3000;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user