mirror of
https://github.com/bigbluebutton/docker.git
synced 2025-06-19 11:27:11 +02:00
separate bbb-html5
This commit is contained in:
parent
2d6e43193d
commit
e2901ddd81
@ -2,7 +2,7 @@ version: '3.6'
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
base:
|
base:
|
||||||
image: bbb
|
image: bbb-base
|
||||||
hostname: meet.livingutopia.org
|
hostname: meet.livingutopia.org
|
||||||
cap_add:
|
cap_add:
|
||||||
- SYS_NICE # for realtime scheduling
|
- SYS_NICE # for realtime scheduling
|
||||||
@ -15,13 +15,13 @@ services:
|
|||||||
- /tmp:exec,mode=777
|
- /tmp:exec,mode=777
|
||||||
volumes:
|
volumes:
|
||||||
- /sys/fs/cgroup:/sys/fs/cgroup:ro # for systemd
|
- /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/vars.xml:/opt/freeswitch/conf/vars.xml
|
||||||
- ./mod/freeswitch/external.xml:/opt/freeswitch/conf/sip_profiles/external.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/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/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
|
network_mode: host
|
||||||
|
|
||||||
nginx:
|
nginx:
|
||||||
@ -29,6 +29,7 @@ services:
|
|||||||
depends_on:
|
depends_on:
|
||||||
- etherpad
|
- etherpad
|
||||||
- webrtc-sfu
|
- webrtc-sfu
|
||||||
|
- html5
|
||||||
ports:
|
ports:
|
||||||
- "80:80"
|
- "80:80"
|
||||||
volumes:
|
volumes:
|
||||||
@ -101,6 +102,17 @@ services:
|
|||||||
networks:
|
networks:
|
||||||
- bluenet
|
- 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:
|
networks:
|
||||||
bluenet:
|
bluenet:
|
||||||
ipam:
|
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 -' \
|
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'
|
&& 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
|
# create dummy packages to satisfy dependencies
|
||||||
RUN equivs-control redis-server.control \
|
RUN equivs-control redis-server.control \
|
||||||
&& sed -i 's/<package name; defaults to equivs-dummy>/redis-server/g' 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/kurento-media-server.service
|
||||||
COPY dummy.service /etc/systemd/system/bbb-webrtc-sfu.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 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-fsesl-akka bbb-apps-akka bbb-transcode-akka bbb-apps bbb-apps-sip \
|
||||||
bbb-apps-video bbb-apps-screenshare bbb-apps-video-broadcast
|
bbb-apps-video bbb-apps-screenshare bbb-apps-video-broadcast
|
||||||
|
|
||||||
RUN mkdir -p /etc/nginx/sites-enabled /var/kurento
|
RUN mkdir -p /etc/nginx/sites-enabled /var/kurento
|
||||||
|
|
||||||
RUN apt-get install -y bbb-html5 bbb-config
|
RUN apt-get install -y bbb-config
|
||||||
RUN apt-get install -y mongodb-org
|
|
||||||
# RUN apt-get install -y bbb-demo
|
|
||||||
|
|
||||||
|
|
||||||
# -- Disable unneeded services
|
# -- Disable unneeded services
|
||||||
RUN systemctl disable systemd-journal-flush
|
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 ALL=(ALL:ALL) NOPASSWD: ALL" | tee /etc/sudoers.d/bbb'
|
||||||
RUN sh -c 'echo "bbb:bbb" | chpasswd'
|
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
|
RUN chmod +x /etc/init.d/tomcat7
|
||||||
|
|
||||||
COPY setup.sh /opt/setup.sh
|
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: ""}
|
throttleInterval: 400, flushOnClose: true, logTag: ""}
|
||||||
private:
|
private:
|
||||||
app:
|
app:
|
||||||
host: 127.0.0.1
|
host: 0.0.0.0
|
||||||
port: 3000
|
port: 3000
|
||||||
localesUrl: /locales
|
localesUrl: /locales
|
||||||
pencilChunkLength: 100
|
pencilChunkLength: 100
|
||||||
@ -315,10 +315,10 @@ private:
|
|||||||
etherpad:
|
etherpad:
|
||||||
apikey: 9xLdxQJ8XoTUy3q7W4ZgpvKYqX16yqirdESk9i54FVm6PiJ1paRd8JOI1MT4pywm
|
apikey: 9xLdxQJ8XoTUy3q7W4ZgpvKYqX16yqirdESk9i54FVm6PiJ1paRd8JOI1MT4pywm
|
||||||
version: 1.2.13
|
version: 1.2.13
|
||||||
host: 10.7.7.4
|
host: etherpad
|
||||||
port: 9001
|
port: 9001
|
||||||
redis:
|
redis:
|
||||||
host: 10.7.7.5
|
host: redis
|
||||||
port: '6379'
|
port: '6379'
|
||||||
timeout: 5000
|
timeout: 5000
|
||||||
password: null
|
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 {
|
location /html5client {
|
||||||
proxy_pass http://host.docker.internal:3000;
|
proxy_pass http://html5:3000;
|
||||||
proxy_http_version 1.1;
|
proxy_http_version 1.1;
|
||||||
proxy_set_header Upgrade $http_upgrade;
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
proxy_set_header Connection "Upgrade";
|
proxy_set_header Connection "Upgrade";
|
||||||
}
|
}
|
||||||
|
|
||||||
location /_timesync {
|
location /_timesync {
|
||||||
proxy_pass http://host.docker.internal:3000;
|
proxy_pass http://html5:3000;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user