diff --git a/docker-compose.demo.yml b/docker-compose.demo.yml new file mode 100644 index 0000000..6249114 --- /dev/null +++ b/docker-compose.demo.yml @@ -0,0 +1,10 @@ +version: '3.6' + +services: + demo: + build: mod/demo + environment: + DOMAIN: ${DOMAIN} + SHARED_SECRET: ${SHARED_SECRET} + ports: + - 10.7.7.1:8001:8080 \ No newline at end of file diff --git a/docker-compose.greenlight.yml b/docker-compose.greenlight.yml new file mode 100644 index 0000000..002a598 --- /dev/null +++ b/docker-compose.greenlight.yml @@ -0,0 +1,24 @@ +version: '3.6' + +services: + greenlight: + container_name: greenlight-v2 + image: bigbluebutton/greenlight:v2 + env_file: .env + environment: + DB_ADAPTER: postgresql + DB_HOST: postgres + DB_NAME: greenlight + DB_USERNAME: postgres + DB_PASSWORD: password + BIGBLUEBUTTON_ENDPOINT: https://${DOMAIN}/bigbluebutton/api/ + BIGBLUEBUTTON_SECRET: ${SHARED_SECRET} + SECRET_KEY_BASE: ${RAILS_SECRET} + ports: + - 10.7.7.1:5000:80 + postgres: + image: postgres:12 + environment: + POSTGRES_DB: greenlight + POSTGRES_USER: postgres + POSTGRES_PASSWORD: password diff --git a/docker-compose.yml b/docker-compose.yml index df0498c..e81badf 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -12,7 +12,6 @@ services: DOMAIN: ${DOMAIN} EXTERNAL_IP: ${EXTERNAL_IP} SHARED_SECRET: ${SHARED_SECRET} - WELCOME_MESSAGE: ${WELCOME_MESSAGE} WELCOME_FOOTER: ${WELCOME_FOOTER} container: docker tmpfs: @@ -43,13 +42,14 @@ services: - webrtc-sfu - html5 ports: - - "80:80" + - "8080:80" volumes: - bigbluebutton:/var/bigbluebutton - ./mod/nginx/bbb:/etc/nginx/bbb - ./mod/nginx/bigbluebutton:/etc/nginx/conf.d/default.conf + - ./mod/nginx/503.html:/etc/nginx/conf.d/default.conf networks: - - bluenet + - bbb-net extra_hosts: - "host.docker.internal:10.7.7.1" @@ -64,7 +64,7 @@ services: - ./mod/pad/entrypoint.sh:/entrypoint.sh entrypoint: /entrypoint.sh networks: - bluenet: + bbb-net: ipv4_address: 10.7.7.4 redis: @@ -72,13 +72,13 @@ services: ports: - "127.0.0.1:6379:6379" # TODO: remove as soon as we updated all redis host references networks: - bluenet: + bbb-net: ipv4_address: 10.7.7.5 mongodb: image: mongo:3.4 networks: - bluenet: + bbb-net: ipv4_address: 10.7.7.6 kurento: @@ -88,7 +88,7 @@ services: KMS_STUN_PORT: ${STUN_PORT} KMS_MIN_PORT: 24577 KMS_MAX_PORT: 32768 - KMS_EXTERNAL_ADDRESS: + KMS_EXTERNAL_ADDRESS: ${EXTERNAL_IP} KMS_TURN_URL: network_mode: host @@ -103,7 +103,7 @@ services: KURENTO_NAME: kurento REDIS_HOST: redis FREESWITCH_IP: host.docker.internal - FREESWITCH_SIP_IP: ${EXTERNAL_IP} + FREESWITCH_SIP_IP: 10.7.7.1 ESL_IP: host.docker.internal LOG_LEVEL: info NODE_CONFIG: '{"kurento":[{"ip":"${EXTERNAL_IP}","url":"ws://kurento:8888/kurento"}]}' @@ -113,7 +113,7 @@ services: - host.docker.internal:10.7.7.1 - kurento:10.7.7.1 networks: - - bluenet + - bbb-net html5: image: bbb-html5 @@ -128,7 +128,7 @@ services: SCREENSHARE_EXTENSION_LINK: ${SCREENSHARE_EXTENSION_LINK} ETHERPAD_API_KEY: ${ETHERPAD_API_KEY} networks: - - bluenet + - bbb-net volumes: - ./mod/html5/entrypoint.sh:/entrypoint.sh - ./mod/html5/settings.yml:/app/programs/server/assets/app/config/settings.yml.tmpl @@ -138,7 +138,7 @@ volumes: bigbluebutton: networks: - bluenet: + bbb-net: ipam: driver: default config: diff --git a/mod/core/README.md b/mod/core/README.md new file mode 100644 index 0000000..2f99bb7 --- /dev/null +++ b/mod/core/README.md @@ -0,0 +1,8 @@ +# bbb-core +based on the bigbluebutton/docker with bbb-install.sh setup, but got so far reduced to following components: +- bbb-web +- bbb-freeswitch-core +- bbb-fsesl-akka +- bbb-apps-akka +- bbb-transcode-akka +- bbb-apps-(video|screenshare|video-broadcast) diff --git a/mod/demo/Dockerfile b/mod/demo/Dockerfile new file mode 100644 index 0000000..0c3bc79 --- /dev/null +++ b/mod/demo/Dockerfile @@ -0,0 +1,16 @@ +FROM tomcat:7-jdk8-openjdk + +ENV DOCKERIZE_VERSION v0.6.1 + +RUN apt-get update && apt-get install -y wget binutils + +# download & install bbb-demo package manually +RUN PACKAGE_PATH=$(curl -s https://ubuntu.bigbluebutton.org/xenial-220/dists/bigbluebutton-xenial/main/binary-amd64/Packages | grep -E 'Filename.*bbb-demo' | awk '{print $2}') \ + && wget https://ubuntu.bigbluebutton.org/xenial-220/$PACKAGE_PATH \ + && ar x bbb-demo_*.deb \ + && tar x -f data.tar.gz ./var/tmp/demo.war \ + && unzip ./var/tmp/demo.war -d /usr/local/tomcat/webapps/demo + +COPY entrypoint.sh /entrypoint.sh + +ENTRYPOINT /entrypoint.sh \ No newline at end of file diff --git a/mod/demo/entrypoint.sh b/mod/demo/entrypoint.sh new file mode 100755 index 0000000..cb0069a --- /dev/null +++ b/mod/demo/entrypoint.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +FILE=/usr/local/tomcat/webapps/demo/bbb_api_conf.jsp +echo -n "<%" > $FILE + echo "! +// This is the security salt that must match the value set in the BigBlueButton server +String salt = \"$SHARED_SECRET\"; + +// This is the URL for the BigBlueButton server +String BigBlueButtonURL = \"https://$DOMAIN/bigbluebutton/\"; +%> +" >> $FILE + +/usr/local/tomcat/bin/catalina.sh run \ No newline at end of file diff --git a/mod/nginx/bbb/demo.nginx b/mod/nginx/bbb/demo.nginx index 9e6ff55..8b68775 100644 --- a/mod/nginx/bbb/demo.nginx +++ b/mod/nginx/bbb/demo.nginx @@ -1,7 +1,10 @@ # Forward request to /demo to tomcat. This is for # the BigBlueButton api demos. - location /demo { - proxy_pass http://host.docker.internal:8080; + location = /demo/ { + return 301 /demo/demo1.jsp; + } + location /demo { + proxy_pass http://host.docker.internal:8001; proxy_redirect default; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; @@ -19,5 +22,5 @@ proxy_temp_file_write_size 64k; include fastcgi_params; - } + } diff --git a/mod/nginx/bbb/greenlight.nginx b/mod/nginx/bbb/greenlight.nginx new file mode 100644 index 0000000..4e648d1 --- /dev/null +++ b/mod/nginx/bbb/greenlight.nginx @@ -0,0 +1,27 @@ +# Routes requests to Greenlight based on the '/b' prefix. +# Use this file to route '/b' paths on your BigBlueButton server +# to the Greenlight application. If you are using a different +# subpath, you should change it here. + + +location /b { + proxy_pass http://host.docker.internal:5000; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_http_version 1.1; +} + +location /b/cable { + proxy_pass http://host.docker.internal:5000; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "Upgrade"; + proxy_http_version 1.1; + proxy_read_timeout 6h; + proxy_send_timeout 6h; + client_body_timeout 6h; + send_timeout 6h; +} \ No newline at end of file diff --git a/mod/nginx/bigbluebutton b/mod/nginx/bigbluebutton index dbc2534..fbfe289 100644 --- a/mod/nginx/bigbluebutton +++ b/mod/nginx/bigbluebutton @@ -3,6 +3,11 @@ server { server_name _; access_log /var/log/nginx/bigbluebutton.access.log; + # redirect to greenlight + location = / { + return 302 /b; + } + # Handle RTMPT (RTMP Tunneling). Forwards requests # to Red5 on port 5080 location ~ (/open/|/close/|/idle/|/send/|/fcs/) { @@ -39,22 +44,7 @@ server { include fastcgi_params; } - # BigBlueButton landing page. - location / { - root /var/www/bigbluebutton-default; - index index.html index.htm; - expires 1m; - } - # Include specific rules for record and playback include /etc/nginx/bbb/*.nginx; - #error_page 404 /404.html; - - # Redirect server error pages to the static page /50x.html - # - error_page 500 502 503 504 /50x.html; - location = /50x.html { - root /var/www/nginx-default; - } } diff --git a/sample.env b/sample.env index 6f2661d..7e208e6 100644 --- a/sample.env +++ b/sample.env @@ -1,7 +1,7 @@ # important! change these to random values ETHERPAD_API_KEY=NEQKi2eFXSBce4kyGjwAzMn2jeF66peNYQmyFVRr SHARED_SECRET=w6y7nycPafjPhVz3gZdBpQhR4H4MvEQzcZzia5LT - +RAILS_SECRET=cdfbae48b197805a435ab7881da31c642ac1a7d4d5c006441efa8125ae63865ce7c915c651117e0f14358cd98f5287c431929e0f796f4100b2b1c3eb5baad1b0 DOMAIN=bbb.example.com @@ -17,3 +17,172 @@ SCREENSHARE_EXTENSION_LINK=https://chrome.google.com/webstore/detail/bigbluebutt CLIENT_TITLE=BigBlueButton WELCOME_FOOTER=This server is running BigBlueButton. + + + +# ------------------------------- +# greenlight configuration +# ------------------------------- + +# Microsoft Office365 Login Provider (optional) +# +# For in-depth steps on setting up a Office 365 Login Provider, see: +# +# https://docs.bigbluebutton.org/greenlight/gl-config.html#office365-oauth2 +# +OFFICE365_KEY= +OFFICE365_SECRET= +OFFICE365_HD= + +# OAUTH2_REDIRECT allows you to specify the redirect_url passed to oauth on sign in. +# It is useful for cases when Greenlight is deployed behind a Network Load Balancer or proxy +OAUTH2_REDIRECT= + +# LDAP Login Provider (optional) +# +# You can enable LDAP authentication by providing values for the variables below. +# Configuring LDAP authentication will take precedence over all other providers. +# For information about setting up LDAP, see: +# +# https://docs.bigbluebutton.org/greenlight/gl-config.html#ldap-auth +# +# LDAP_SERVER=ldap.example.com +# LDAP_PORT=389 +# LDAP_METHOD=plain +# LDAP_UID=uid +# LDAP_BASE=dc=example,dc=com +# LDAP_BIND_DN=cn=admin,dc=example,dc=com +# LDAP_PASSWORD=password +# LDAP_ROLE_FIELD=ou +LDAP_SERVER= +LDAP_PORT= +LDAP_METHOD= +LDAP_UID= +LDAP_BASE= +LDAP_BIND_DN= +LDAP_PASSWORD= +LDAP_ROLE_FIELD= + +# Set this to true if you want GreenLight to support user signup and login without +# Omniauth. For more information, see: +# +# https://docs.bigbluebutton.org/greenlight/gl-overview.html#accounts-and-profile +# +ALLOW_GREENLIGHT_ACCOUNTS=true + + +# Set this to true if you want GreenLight to send verification emails upon +# the creation of a new account +# +# ALLOW_MAIL_NOTIFICATIONS=true +# +# The notifications are sent using sendmail, unless the SMTP_SERVER variable is set. +# In that case, make sure the rest of the variables are properly set. +# +# SMTP_SERVER=smtp.gmail.com +# SMTP_PORT=587 +# SMTP_DOMAIN=gmail.com +# SMTP_USERNAME= +# SMTP_PASSWORD= +# SMTP_AUTH=plain +# SMTP_STARTTLS_AUTO=true +# +SMTP_SERVER= +SMTP_PORT= +SMTP_DOMAIN= +SMTP_USERNAME= +SMTP_PASSWORD= +SMTP_AUTH= +SMTP_STARTTLS_AUTO= + +# Specify the email address that all mail is sent from +SMTP_SENDER= + +# Prefix for the applications root URL. +# Useful for deploying the application to a subdirectory, which is highly recommended +# if deploying on a BigBlueButton server. Keep in mind that if you change this, you'll +# have to update your authentication callback URL's to reflect this change. +# +# The recommended prefix is "/b". +# +RELATIVE_URL_ROOT=/b + +# Specify which settings you would like the users to configure on room creation +# or edit after the room has been created +# By default, all settings are turned OFF. +# +# Current settings available: +# mute-on-join: Automatically mute users by default when they join a room +# require-moderator-approval: Require moderators to approve new users before they can join the room +# anyone-can-start: Allows anyone with the join url to start the room in BigBlueButton +# all-join-moderator: All users join as moderators in BigBlueButton +ROOM_FEATURES=mute-on-join,require-moderator-approval,anyone-can-start,all-join-moderator + +# Specify the maximum number of records to be sent to the BigBlueButton API in one call +# Default is set to 25 records +PAGINATION_NUMBER=25 + +# Specify the maximum number of rows that should be displayed per page for a paginated table +# Default is set to 25 rows +NUMBER_OF_ROWS=25 + +# Set the application into Maintenance Mode +# +# Current options supported: +# true: Renders an error page that does not allow users to access any of the features in the application +# false: Application runs normally +MAINTENANCE_MODE=false + +# Displays a flash that appears to inform the user of a scheduled maintenance window +# This variable should contain ONLY the date and time of the scheduled maintenance +# +# Ex: MAINTENANCE_WINDOW=Friday August 18 6pm-10pm EST +MAINTENANCE_WINDOW= + +# The link to the Report an Issue button that appears on the 500 page and in the Account Dropdown +# +# Defaults to the Github Issues Page for Greenlight +# Button can be disabled by setting the value to blank +REPORT_ISSUE_URL=https://github.com/bigbluebutton/greenlight/issues/new + +# Comment this out to send logs to STDOUT in production instead of log/production.log . +# +# RAILS_LOG_TO_STDOUT=true +# +# When using docker-compose the logs can be sent to an centralized repository like PaperTrail +# just by using the built in driver. Make sure to add to docker-compose.yml the next lines: +# +# logging: +# driver: $LOG_DRIVER +# options: +# syslog-address: $LOG_ADDRESS +# tag: $LOG_TAG +# +# And set this variables up: +# +# LOG_DRIVER=syslog +# LOG_ADDRESS=udp://logs4.papertrailapp.com:[99999] +# LOG_TAG=greenlight.example.com:v2 +# +# Check docker-compose and papertrail documentation for encrypting and +# protecting access to the log repository. +# https://docs.docker.com/config/containers/logging/syslog/#options +# https://help.papertrailapp.com/kb/configuration/encrypting-remote-syslog-with-tls-ssl/ +# +# For sending logs to a remote aggregator enable these variables: +# +# RAILS_LOG_REMOTE_NAME=logxx.papertrailapp.com +# RAILS_LOG_REMOTE_PORT=9999 +# RAILS_LOG_REMOTE_TAG=greenlight +# +# Force SSL +# +# ENABLE_SSL=true + +# Specify the default registration to be used by Greenlight until an administrator sets the +# registration method +# Allowed values are: +# open - For open registration +# invite - For invite only registration +# approval - For approve/decline registration +DEFAULT_REGISTRATION=open \ No newline at end of file