bigbluebutton-Github/bigbluebutton-web
Pedro Beschorner Marin 2fb26ff0cf Patch of improvements for bbb-web
This patch includes two improvements made for bbb-web. It tries to better isolate
the sessionToken's handling and session's validation, including logs for each one of
these steps; and removes maxParticipats control from registered users (that are no
longer removed from bbb-web collections) binding it to joined users or users that
reached the enter API call. The following adds more details about this last one:

User's regular flow to join a meeting goes around an API join call -> redis register event ->
redirect to client page -> API enter call -> redis join event. When the guest policy is ASK_MODERATOR,
non-moderators are registered and redirected to a guest lobby that polls for her/his guest status and
only enters the meeting after a moderator approval.
Using registered users as control to check how many participants are in a meeting is problematic because
non-approved guests are counted as participants and bbb-web has to find out when to ditch registered users
records to make a seat in a meeting available again. In other words, a meeting with maxParicipants
of 5 can get it's joins locked with a moderator and 4 waiting guests or bbb-web can wrongly drop a registered
user record on a reconnection inducing weird 401 responses from the API.

This change proposes to control maxParticipants both at join and enter API calls monitoring the number
of redis joined users. This also includes an extra buffer to capture users that called the enter API but
still don't have an user joined event.
User left events are now handled different holding the user data before removing from the joined users collection
and only releasing after verifying that the user didn't reconnected.

Both user left timeout `usersTimeout` and entered user timeout `enteredUsersTimeout` can be configured at properties.
2020-09-28 09:59:52 -03:00
..
gradle/wrapper Implemented unit tests for create API. 2019-01-21 21:58:16 +01:00
grails-app Patch of improvements for bbb-web 2020-09-28 09:59:52 -03:00
nginx-confs - changing aliases to use meeting_id_2 instead of meeting_id_1 just in case we need to make the URL params different 2018-10-09 09:15:22 -07:00
pres-checker Updated java projects dependencies versions. 2020-02-28 10:44:28 +01:00
src Fix API variables formatting for meeting endTime and duration. 2019-03-25 13:41:14 +01:00
test Update bigbluebutton-web to gradle 5.1 (Work In Progress) 2019-01-09 21:06:09 +01:00
wrapper - upgrade bigbluebutton-web to grails 2.3.6 2014-02-25 15:46:06 +00:00
.dockerignore push unfinished work on docker 2018-08-24 17:15:47 -03:00
.gitignore updated .gitignore for bbb-web and bbb-html5 2019-03-14 16:43:48 +00:00
bbb-web.nginx Improve nginx matching on incoming URLs 2020-04-09 21:40:33 +03:00
build.gradle Fix XML(Formula) Injection 2020-05-19 08:56:00 +12:00
build.sh - separate building and running as most of the times, we don't need to re-run bringing in jars and configs. 2019-01-25 12:25:16 -08:00
COPYING.LESSER - upgrade bigbluebutton-web to grails 2.3.6 2014-02-25 15:46:06 +00:00
docker-entrypoint.sh add another property for redis on bbb-web; set freeswitch ip on webrtc-sfu; add volumes to store media files 2018-08-24 17:15:47 -03:00
Dockerfile update instructions and implementation of a working docker-compose (no recordings yet) 2018-08-24 17:15:47 -03:00
gradle.properties Update bigbluebutton-web to gradle 5.1 (Work In Progress) 2019-01-09 21:06:09 +01:00
gradlew Update bigbluebutton-web to gradle 5.1 (Work In Progress) 2019-01-09 21:06:09 +01:00
gradlew.bat Update bigbluebutton-web to gradle 5.1 (Work In Progress) 2019-01-09 21:06:09 +01:00
grails-wrapper.jar Update bigbluebutton-web to gradle 5.1 (Work In Progress) 2019-01-09 21:06:09 +01:00
grailsw Update bigbluebutton-web to gradle 5.1 (Work In Progress) 2019-01-09 21:06:09 +01:00
grailsw.bat Update bigbluebutton-web to gradle 5.1 (Work In Progress) 2019-01-09 21:06:09 +01:00
INSTALL - upgrade bigbluebutton-web to grails 2.3.6 2014-02-25 15:46:06 +00:00
README.md - update doc to build and run bbb-web during development 2019-02-07 08:05:50 -08:00
run-prod.sh Bind to localhost 2020-04-24 15:05:17 -07:00
run.sh - set the bbb-web port to 8090 2019-02-09 08:36:27 -08:00
settings.gradle Update bigbluebutton-web to gradle 5.1 (Work In Progress) 2019-01-09 21:06:09 +01:00
turn-stun-servers.xml.tmpl - reduce size of the bbb-html5 image 2018-08-24 17:15:47 -03:00

BigBlueButton Web Grails 3 Deployment Procedure

Upgrade Gradle and Grails

# Install SDKMan if you don't have it yet.

curl -s "https://get.sdkman.io" | bash

# Install Gradle
sdk install gradle 5.1.1

# Install Grails
sdk install grails 3.3.9

Development

Build bbb-common-message

cd /bigbluebutton/bbb-common-message

./deploy.sh

Build bbb-common-web

cd bigbluebutton/bbb-common-web

./deploy.sh

Build and run bbb-web

cd bigbluebutton/bigbluebutton-web

# Make sure you don't have old libs lying around. Might cause issues.
# You need to to this only once to cleanup lib dir.

rm lib/*

./build.sh

# This will listen on port 8989 so you need to adjust your nginx config.
# If you've setup your nginx config to bbb-web dev, you don't need to do anything.

./run.sh

To run unit tests: grails test-app --stacktrace

Production

To package the application for production:

  1. Compile the application and package it use grails assemble
  2. You now have the file build/libs/bigbluebutton-0.10.0.war
  3. Create a new directory mkdir exploded
  4. Navigate to that directory cd exploded
  5. Extract the war content jar -xvf ../build/libs/bigbluebutton-0.10.0.war
  6. Copy run script into exploded dir cp ../run-prod.sh .
  7. Package the content of the new directory in a debian package then add service configuration. Install into /usr/share/bbb-web.
  8. Create a systemd service file that runs run-prod.sh. App will be listening on port 8080
  9. To do custom config, edit /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties Don't forget to use full directories path and replace the dot before the org with the full path to the exploded war.