Skip to main content
Version: 4.0

Configuration Files

Overview​

This document gives an overview of the BigBlueButton configuration files.

We recommend you make changes only to the override files (/etc/bigbluebutton) so that when you update to a newer version of BigBlueButton your configuration changes are not overwritten by the new packages.

Local overrides for configuration settings​

Many of the configuration files have local overrides so the administrator can specify the local equivalents. We recommend you make changes only to the override files (/etc/bigbluebutton) so that when you update to a newer version of BigBlueButton your configuration changes are not overwritten by the new packages.

PackageOverrideNotes
/usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties/etc/bigbluebutton/bbb-web.propertiesMinimum containing general configuration (securitySalt and serverURL)
/etc/default/bbb-web/etc/bigbluebutton/bbb-web.envEnvironment of the bbb-web service (heap size, listen address, JDK_JAVA_OPTIONS)
/usr/share/bbb-apps-akka/conf/application.conf/etc/bigbluebutton/bbb-apps-akka.conf
/usr/share/bbb-fsesl-akka/conf/application.conf/etc/bigbluebutton/bbb-fsesl-akka.conf
/usr/share/bigbluebutton/html5-client/private/config/settings.yml/etc/bigbluebutton/bbb-html5.ymlArrays are merged by replacement (as of 2.4-rc-5)
/etc/default/bbb-graphql-server/etc/bigbluebutton/bbb-graphql-server.envIt can replace any Hasura config but HASURA_GRAPHQL_ADMIN_SECRET
/usr/share/bbb-graphql-server/admin-secretStores Hasura admin password (HASURA_GRAPHQL_ADMIN_SECRET), it can be edited
/usr/share/bbb-graphql-middleware/config.yml/etc/bigbluebutton/bbb-graphql-middleware.yml
/usr/lib/systemd/system/bbb-graphql-actions.service/etc/bigbluebutton/bbb-graphql-actions.envOptional environment file (KEY=VALUE), e.g. BBB_REDIS_HOST, BBB_REDIS_PORT, BBB_REDIS_PASSWORD
/usr/share/bbb-web/WEB-INF/classes/spring/turn-stun-servers.xml/etc/bigbluebutton/turn-stun-servers.xmlReplaces the original file
/usr/local/bigbluebutton/bbb-webrtc-sfu/config/default.yml/etc/bigbluebutton/bbb-webrtc-sfu/production.ymlArrays are merged by replacement
/etc/bbb-webrtc-recorder/bbb-webrtc-recorder.yml/etc/bigbluebutton/bbb-webrtc-recorder.ymlReplaces the original file; BBBRECORDER_* variables in /etc/default/bbb-webrtc-recorder override single settings
/usr/share/livekit-server/livekit.yaml/etc/bigbluebutton/livekit.yamlMerged when livekit-server starts; holds the API keys
/usr/share/livekit-server/livekit-sip.yaml/etc/bigbluebutton/livekit-sip.yamlMerged when livekit-sip starts
/usr/share/bbb-shared-notes-server/config/default.yml/etc/bigbluebutton/bbb-shared-notes-server.yml
/usr/local/bigbluebutton/core/scripts/bigbluebutton.yml/etc/bigbluebutton/recording/recording.yml
/usr/local/bigbluebutton/core/scripts/presentation.yml/etc/bigbluebutton/recording/presentation.yml
/etc/cron.daily/bigbluebutton/etc/default/bigbluebutton-cron-configOnly variables allowed in the override


For bbb-web.properties, the settings are name/value pair. For example, the following bbb-web.properties overrides the settings for bigbluebutton.web.serverURL and securitySalt (shared secret).

#
# Use this file to override default entries in /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties
#

bigbluebutton.web.serverURL=https://droplet-7162.meetbbb.com
securitySalt=UsanRxRk938d02cTWfAqSM9Cvin7bnzsREfqFfzpf2U

This override will ensure that bbb-web uses the above values regardless of changes the packaging scripts make to the upgrade.

For bbb-apps-akka and bbb-fsesl-akka, the settings file are formatted as shown below. For example, the file bbb-apps-akka.conf overrides the settings for /usr/share/bbb-apps-akka/conf/application.conf.

// include default config from upstream
include "/usr/share/bbb-apps-akka/conf/application.conf"

// you can customize everything here. API endpoint and secret have to be changed
// This file will not be overridden by packages

services {
bbbWebAPI="https://bbb.example.com/bigbluebutton/api"
sharedSecret="UsanRxRk938d02cTWfAqSM9Cvin7bnzsREfqFfzpf2U"
}

Using a password-protected Redis​

Redis has no password by default. To require one, set requirepass in /etc/redis/redis.conf and restart redis-server, then set the same password in every service that connects to Redis and restart them:

ServiceFileSetting
bbb-web/etc/bigbluebutton/bbb-web.propertiesredisPassword=
bbb-apps-akka/etc/bigbluebutton/bbb-apps-akka.confredis { password="" }
bbb-fsesl-akka/etc/bigbluebutton/bbb-fsesl-akka.confredis { password="" }
bbb-graphql-middleware/etc/bigbluebutton/bbb-graphql-middleware.ymlredis.password
bbb-graphql-actions/etc/bigbluebutton/bbb-graphql-actions.envBBB_REDIS_PASSWORD=
bbb-shared-notes-server/etc/bigbluebutton/bbb-shared-notes-server.ymlredis.password
bbb-webrtc-sfu/etc/bigbluebutton/bbb-webrtc-sfu/production.ymlredisPassword
Recording processing/etc/bigbluebutton/recording/recording.ymlredis_password
bbb-export-annotations/usr/local/bigbluebutton/bbb-export-annotations/config/settings.jsonredis.password (no override file; reapply after package upgrades)
bbb-webrtc-recorder/etc/bbb-webrtc-recorder/bbb-webrtc-recorder.ymlpubsub.adapters.redis.password
bbb-transcription-controller/etc/bigbluebutton/bbb-transcription-controller/production.ymlredis.password
livekit-server/etc/bigbluebutton/livekit.yamlredis.password
livekit-sip/etc/bigbluebutton/livekit-sip.yamlredis.password
bbb-webhooks (if installed)/usr/local/bigbluebutton/bbb-webhooks/config/default.ymlredis.password (regenerated on package upgrades)

HTML5 Client​

Configuration files​

For bbb-html5.yml the settings file are YAML formatted. Any setting in this file overrides the corresponding setting in /usr/share/bigbluebutton/html5-client/private/config/settings.yml. For example, the following bbb-html5.yml overrides the values for public.kurento.screenshare.constraints.audio to true.

public:
kurento:
screenshare:
constraints:
audio: true

Log files​

Log monitoring for server logs​

The HTML5 client is a static bundle served by nginx, so it has no service of its own. The services behind it are bbb-apps-akka, which holds the meeting logic, and the GraphQL stack that the client talks to:

journalctl -f -u bbb-apps-akka.service

SYSTEMD_LESS=FRXMK journalctl -f -u bbb-graphql-middleware.service -u bbb-graphql-server.service -u bbb-graphql-actions.service

bbb-apps-akka also writes /var/log/bbb-apps-akka/bbb-apps-akka.log.

Logs sent directly from the client​

To assist with monitoring and debugging, the HTML5 client can send its logs to the BigBlueButton server via the logger function. Here's an example of its use:

The client logger has two targets, console and external, configured under public.clientLog in /etc/bigbluebutton/bbb-html5.yml. Each target has its own settings:

NameTargetAccepted ValuesDescription
enabledbothtrue / falseWhether the target receives logs.
levelboth"debug", "info", "warn", "error"The lowest log level that will be sent. Any log level higher than this will also be sent to the target.
enableRuntimeErrorLoggingconsoletrue / falseWhen true, the client installs global listeners to capture runtime errors, unhandled rejections, and resource load failures.
urlexternal-The end point where logs will be sent to.
methodexternal"POST", "PUT"HTTP method used to send the logs.
throttleIntervalexternalmillisecondsHow often buffered log entries are sent.
flushOnCloseexternaltrue / falseSend the remaining entries when the page is closed.

The default values are:

clientLog:
console:
{
enabled: true,
level: debug,
enableRuntimeErrorLogging: false,
}
external:
{
enabled: false,
level: info,
url: https://LOG_HOST/html5Log,
method: POST,
throttleInterval: 400,
flushOnClose: true,
}

Notice that the external option is disabled by default - you can enable it on your own server after a few configuration changes.

When enabling the external logging output, the BigBlueButton client will POST the log events to the URL endpoint provided by url. To create an associated endpoint on the BigBlueButton server for the POST request, create a file /etc/bigbluebutton/nginx/html5-client-log.nginx with the following contents:

location /html5Log {
access_log /var/log/nginx/html5-client.log postdata;
echo_read_request_body;
}

Then create a file in /etc/nginx/conf.d/html5-client-log.conf with the following contents:

log_format postdata '$remote_addr [$time_iso8601] $request_body';

Next, install the full version of nginx.

$ sudo apt-get install nginx-full

You may also need to create the external output file and give it the appropriate permissions and ownership:

$ sudo touch /var/log/nginx/html5-client.log
$ sudo chown www-data:adm /var/log/nginx/html5-client.log
$ sudo chmod 640 /var/log/nginx/html5-client.log

Restart BigBlueButton with sudo bbb-conf --restart and launch the BigBlueButton HTML5 client in a new session. You should see the logs appearing in /var/log/nginx/html5-client.log as follows

99.239.102.0 [2018-09-09T14:59:10+00:00] [{\x22name: .. }]

You can follow the logs on the server with the command

$ tail -f /var/log/nginx/html5-client.log | sed -u -e 's/\\x22/"/g' -e 's/\\x5C/\\/g'

Here's a sample log entry

"requesterUserId":"w_klfavdlkumj8",
"fullname":"Ios",
"confname":"Demo Meeting",
"externUserID":"w_klfavdlkumj8"
},
"url":"https://demo.bigbluebutton.org/html5client/users",
"userAgent":"Mozilla/5.0 (iPad; CPU OS 11_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Mobile/15E148 Safari/604.1",
"count":1
}

nginx​

Configuration files​

Located in /etc/nginx/sites-enabled/bigbluebutton

This configures nginx to use /var/www/bigbluebutton-default/assets as the default site. (src) The configuration of each component is included from /etc/bigbluebutton/nginx/*.nginx.

On a server installed by bbb-install.sh with the built-in TURN server, port 443 belongs to HAProxy, which terminates TLS and passes HTTP connections to nginx on ports 81 and 82 (with the PROXY protocol) and TURN connections to coturn. nginx itself listens on port 80 and on those two local ports.

Log files​

LogDescription
/var/log/nginx/bigbluebutton.access.logWeb log of access to BigBlueButton HTML pages.
/var/log/nginx/error.logWeb log of errors generated by nginx based on browser requests.

bbb-web​

Configuration files​

/usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties
/etc/bigbluebutton/bbb-web.properties

This is one of the main configuration files for BigBlueButton applications.

https://github.com/bigbluebutton/bigbluebutton/blob/v4.0.x-release/bigbluebutton-web/grails-app/conf/bigbluebutton.properties

Log files​

LogDescription
/var/log/bigbluebutton/bbb-web.logThe bbb-web application log (API calls, meetings, presentation conversion); rotated daily, 14 days are kept.
journalctl -u bbb-webThe service's standard output, including startup errors.
/var/log/bigbluebuttonAlso contains the recording processing logs (see below).

FreeSWITCH​

Configuration Files​

/opt/freeswitch/conf/vars.xml

Setup host and external IP values.

/opt/freeswitch/conf/autoload_configs/conference.conf.xml

Setup voice conference properties.

/opt/freeswitch/conf/dialplan/default
/opt/freeswitch/conf/dialplan/public

Recording​

Log files​

For each workflow and meeting we have a different logfile, they come in the form: <workflow>-<meetingId>.log, as specified below:

LogDescription
/var/log/bigbluebutton/archive-<meetingId>.logAll logs for archive phase
/var/log/bigbluebutton/presentation/process-<meetingId>.logAll logs for process phase
/var/log/bigbluebutton/presentation/publish-<meetingId>.logAll logs for publish phase