[__jitsi*] Update to 2.0.6726

Sponsored by: plataformess.org
This commit is contained in:
evilham 2021-12-22 20:05:37 +01:00
parent a38275f6d7
commit e052178122
8 changed files with 1001 additions and 239 deletions

View file

@ -125,7 +125,10 @@ require="__directory${NGINX_ETC}/sites-available" __file "${NGINX_ETC}/sites-ava
server_names_hash_bucket_size 64; server_names_hash_bucket_size 64;
# nginx server configuration for: types {
# nginx's default mime.types doesn't include a mapping for wasm
application/wasm wasm;
}
server { server {

View file

@ -0,0 +1,30 @@
#!/bin/sh -eu
# This is a helper to update the '.sh.orig' files for jitsi's
# configuration files.
# Then the changes must be propagated to their corresponding .sh
# files by the type maintainer or a contributor
# We could automate this, but are using it as an indicator for the
# latest branch with which we conciliated changes.
BRANCH="jitsi-meet_6726"
REPO="https://github.com/jitsi/jitsi-meet"
get_url() {
file="${1}"
printf "%s/raw/stable/%s/%s" "${REPO}" "${BRANCH}" "${file}"
}
download_file() {
file="${1}"
destination="${2:-${file}.sh.orig}"
url="$(get_url "${file}")"
echo "Downloading ${destination}"
curl -L "${url}" > "${destination}"
echo
}
download_file config.js
download_file interface_config.js
download_file doc/debian/jitsi-meet/jitsi-meet.example nginx.sh.orig

View file

@ -39,9 +39,6 @@ fi
// Websocket URL // Websocket URL
// websocket: 'wss://${JITSI_HOST}/xmpp-websocket', // websocket: 'wss://${JITSI_HOST}/xmpp-websocket',
// The name of client node advertised in XEP-0115 'c' stanza
clientNode: 'http://jitsi.org/jitsimeet',
// The real JID of focus participant - can be overridden here // The real JID of focus participant - can be overridden here
// Do not change username - FIXME: Make focus username configurable // Do not change username - FIXME: Make focus username configurable
// https://github.com/jitsi/jitsi-meet/issues/7376 // https://github.com/jitsi/jitsi-meet/issues/7376
@ -56,9 +53,16 @@ fi
// issues related to insertable streams. // issues related to insertable streams.
// disableE2EE: false, // disableE2EE: false,
// Enables/disables thumbnail reordering in the filmstrip. It is enabled by default unless explicitly
// disabled by the below option.
// enableThumbnailReordering: true,
// Enables XMPP WebSocket (as opposed to BOSH) for the given amount of users.
// mobileXmppWsThreshold: 10 // enable XMPP WebSockets on mobile for 10% of the users
// P2P test mode disables automatic switching to P2P when there are 2 // P2P test mode disables automatic switching to P2P when there are 2
// participants in the conference. // participants in the conference.
p2pTestMode: false // p2pTestMode: false,
// Enables the test specific features consumed by jitsi-meet-torture // Enables the test specific features consumed by jitsi-meet-torture
// testMode: false // testMode: false
@ -71,8 +75,10 @@ fi
// simulcast is turned off for the desktop share. If presenter is turned // simulcast is turned off for the desktop share. If presenter is turned
// on while screensharing is in progress, the max bitrate is automatically // on while screensharing is in progress, the max bitrate is automatically
// adjusted to 2.5 Mbps. This takes a value between 0 and 1 which determines // adjusted to 2.5 Mbps. This takes a value between 0 and 1 which determines
// the probability for this to be enabled. // the probability for this to be enabled. This setting has been deprecated.
// capScreenshareBitrate: 1 // 0 to disable // desktopSharingFrameRate.max now determines whether simulcast will be enabled
// or disabled for the screenshare.
// capScreenshareBitrate: 1 // 0 to disable - deprecated.
// Enable callstats only for a percentage of users. // Enable callstats only for a percentage of users.
// This takes a value between 0 and 100 which determines the probability for // This takes a value between 0 and 100 which determines the probability for
@ -80,6 +86,18 @@ fi
// callStatsThreshold: 5 // enable callstats for 5% of the users. // callStatsThreshold: 5 // enable callstats for 5% of the users.
}, },
// Disables moderator indicators.
// disableModeratorIndicator: false,
// Disables the reactions feature.
// disableReactions: true,
// Disables polls feature.
// disablePolls: false,
// Disables self-view tile. (hides it from tile view and from filmstrip)
// disableSelfView: false,
// Disables ICE/UDP by filtering out local and remote UDP candidates in // Disables ICE/UDP by filtering out local and remote UDP candidates in
// signalling. // signalling.
// webrtcIceUdpDisable: false, // webrtcIceUdpDisable: false,
@ -92,6 +110,9 @@ fi
// Media // Media
// //
// Enable unified plan implementation support on Chromium based browsers.
// enableUnifiedOnChrome: false,
// Audio // Audio
// Disable measuring of audio levels. // Disable measuring of audio levels.
@ -108,6 +129,10 @@ fi
// about the call. // about the call.
// enableSaveLogs: false, // enableSaveLogs: false,
// Enabling this will hide the "Show More" link in the GSM popover that can be
// used to display more statistics about the connection (IP, Port, protocol, etc).
// disableShowMoreStats: true,
// Enabling this will run the lib-jitsi-meet noise detection module which will // Enabling this will run the lib-jitsi-meet noise detection module which will
// notify the user if there is noise, other than voice, coming from the current // notify the user if there is noise, other than voice, coming from the current
// selected microphone. The purpose it to let the user know that the input could // selected microphone. The purpose it to let the user know that the input could
@ -129,19 +154,34 @@ fi
// participants and to enable it back a reload is needed. // participants and to enable it back a reload is needed.
// startSilent: false // startSilent: false
// Sets the preferred target bitrate for the Opus audio codec by setting its
// 'maxaveragebitrate' parameter. Currently not available in p2p mode.
// Valid values are in the range 6000 to 510000
// opusMaxAverageBitrate: 20000,
// Enables support for opus-red (redundancy for Opus). // Enables support for opus-red (redundancy for Opus).
// enableOpusRed: false, // enableOpusRed: false,
// Specify audio quality stereo and opusMaxAverageBitrate values in order to enable HD audio.
// Beware, by doing so, you are disabling echo cancellation, noise suppression and AGC.
// audioQuality: {
// stereo: false,
// opusMaxAverageBitrate: null // Value to fit the 6000 to 510000 range.
// },
// Video // Video
// Sets the preferred resolution (height) for local video. Defaults to 720. // Sets the preferred resolution (height) for local video. Defaults to 720.
// resolution: 720, // resolution: 720,
// Specifies whether the raised hand will hide when someone becomes a dominant speaker or not
// disableRemoveRaisedHandOnFocus: false,
// Specifies whether there will be a search field in speaker stats or not
// disableSpeakerStatsSearch: false,
// Specifies whether participants in speaker stats should be ordered or not, and with what priority
// speakerStatsOrder: [
// 'role', <- Moderators on top
// 'name', <- Alphabetically by name
// 'hasLeft', <- The ones that have left in the bottom
// ] <- the order of the array elements determines priority
// How many participants while in the tile view mode, before the receiving video quality is reduced from HD to SD. // How many participants while in the tile view mode, before the receiving video quality is reduced from HD to SD.
// Use -1 to disable. // Use -1 to disable.
// maxFullResolutionParticipants: 2, // maxFullResolutionParticipants: 2,
@ -165,9 +205,10 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// Enable / disable simulcast support. // Enable / disable simulcast support.
// disableSimulcast: false, // disableSimulcast: false,
// Enable / disable layer suspension. If enabled, endpoints whose HD // Enable / disable layer suspension. If enabled, endpoints whose HD layers are not in use will be suspended
// layers are not in use will be suspended (no longer sent) until they // (no longer sent) until they are requested again. This is enabled by default. This must be enabled for screen
// are requested again. // sharing to work as expected on Chrome. Disabling this might result in low resolution screenshare being sent
// by the client.
// enableLayerSuspension: false, // enableLayerSuspension: false,
// Every participant after the Nth will start video muted. // Every participant after the Nth will start video muted.
@ -229,6 +270,18 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// subtitles and buttons can be configured) // subtitles and buttons can be configured)
// transcribingEnabled: false, // transcribingEnabled: false,
// If true transcriber will use the application language.
// The application language is either explicitly set by participants in their settings or automatically
// detected based on the environment, e.g. if the app is opened in a chrome instance which is using french as its
// default language then transcriptions for that participant will be in french.
// Defaults to true.
// transcribeWithAppLanguage: true,
// Transcriber language. This settings will only work if "transcribeWithAppLanguage" is explicitly set to false.
// Available languages can be found in
// ./src/react/features/transcribing/transcriber-langs.json.
// preferredTranscribeLanguage: 'en-US',
// Enables automatic turning on captions when recording is started // Enables automatic turning on captions when recording is started
// autoCaptionOnRecord: false, // autoCaptionOnRecord: false,
@ -237,6 +290,20 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// Default value for the channel "last N" attribute. -1 for unlimited. // Default value for the channel "last N" attribute. -1 for unlimited.
channelLastN: ${CHANNEL_LAST_N}, channelLastN: ${CHANNEL_LAST_N},
// Connection indicators
// connectionIndicators: {
// autoHide: true,
// autoHideTimeout: 5000,
// disabled: false,
// disableDetails: false,
// inactiveDisabled: false
// },
// Provides a way for the lastN value to be controlled through the UI.
// When startLastN is present, conference starts with a last-n value of startLastN and channelLastN
// value will be used when the quality level is selected using "Manage Video Quality" slider.
// startLastN: 1,
// Provides a way to use different "last N" values based on the number of participants in the conference. // Provides a way to use different "last N" values based on the number of participants in the conference.
// The keys in an Object represent number of participants and the values are "last N" to be used when number of // The keys in an Object represent number of participants and the values are "last N" to be used when number of
// participants gets to or above the number. // participants gets to or above the number.
@ -274,12 +341,24 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// // to take effect. // // to take effect.
// preferredCodec: 'VP8', // preferredCodec: 'VP8',
// //
// // Provides a way to enforce the preferred codec for the conference even when the conference has endpoints
// // that do not support the preferred codec. For example, older versions of Safari do not support VP9 yet.
// // This will result in Safari not being able to decode video from endpoints sending VP9 video.
// // When set to false, the conference falls back to VP8 whenever there is an endpoint that doesn't support the
// // preferred codec and goes back to the preferred codec when that endpoint leaves.
// // enforcePreferredCodec: false,
//
// // Provides a way to configure the maximum bitrates that will be enforced on the simulcast streams for // // Provides a way to configure the maximum bitrates that will be enforced on the simulcast streams for
// // video tracks. The keys in the object represent the type of the stream (LD, SD or HD) and the values // // video tracks. The keys in the object represent the type of the stream (LD, SD or HD) and the values
// // are the max.bitrates to be set on that particular type of stream. The actual send may vary based on // // are the max.bitrates to be set on that particular type of stream. The actual send may vary based on
// // the available bandwidth calculated by the browser, but it will be capped by the values specified here. // // the available bandwidth calculated by the browser, but it will be capped by the values specified here.
// // This is currently not implemented on app based clients on mobile. // // This is currently not implemented on app based clients on mobile.
// maxBitratesVideo: { // maxBitratesVideo: {
// H264: {
// low: 200000,
// standard: 500000,
// high: 1500000
// },
// VP8 : { // VP8 : {
// low: 200000, // low: 200000,
// standard: 500000, // standard: 500000,
@ -312,6 +391,13 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// resizeDesktopForPresenter: false // resizeDesktopForPresenter: false
// }, // },
// Notification timeouts
// notificationTimeouts: {
// short: 2500,
// medium: 5000,
// long: 10000
// },
// // Options for the recording limit notification. // // Options for the recording limit notification.
// recordingLimit: { // recordingLimit: {
// //
@ -330,6 +416,9 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// Disables or enables RTX (RFC 4588) (defaults to false). // Disables or enables RTX (RFC 4588) (defaults to false).
// disableRtx: false, // disableRtx: false,
// Moves all Jitsi Meet 'beforeunload' logic (cleanup, leaving, disconnecting, etc) to the 'unload' event.
// disableBeforeUnloadHandlers: true,
// Disables or enables TCC support in this client (default: enabled). // Disables or enables TCC support in this client (default: enabled).
// enableTcc: true, // enableTcc: true,
@ -345,8 +434,7 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// enableIceRestart: false, // enableIceRestart: false,
// Enables forced reload of the client when the call is migrated as a result of // Enables forced reload of the client when the call is migrated as a result of
// the bridge going down. Currently enabled by default as call migration through // the bridge going down.
// session-terminate is causing siganling issues when Octo is enabled.
// enableForcedReload: true, // enableForcedReload: true,
// Use TURN/UDP servers for the jitsi-videobridge connection (by default // Use TURN/UDP servers for the jitsi-videobridge connection (by default
@ -354,6 +442,11 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// bridge itself is reachable via UDP) // bridge itself is reachable via UDP)
// useTurnUdp: false // useTurnUdp: false
// Enable support for encoded transform in supported browsers. This allows
// E2EE to work in Safari if the corresponding flag is enabled in the browser.
// Experimental.
// enableEncodedTransformSupport: false,
// UI // UI
// //
@ -363,6 +456,12 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// Hides lobby button // Hides lobby button
// hideLobbyButton: false, // hideLobbyButton: false,
// If Lobby is enabled starts knocking automatically.
// autoKnockLobby: false,
// Hides add breakout room button
// hideAddRoomButton: false,
// Require users to always specify a display name. // Require users to always specify a display name.
// requireDisplayName: true, // requireDisplayName: true,
@ -382,7 +481,15 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// enableClosePage: false, // enableClosePage: false,
// Disable hiding of remote thumbnails when in a 1-on-1 conference call. // Disable hiding of remote thumbnails when in a 1-on-1 conference call.
// disable1On1Mode: false, // Setting this to null, will also disable showing the remote videos
// when the toolbar is shown on mouse movements
// disable1On1Mode: null | false | true,
// Default local name to be displayed
// defaultLocalDisplayName: 'me',
// Default remote name to be displayed
// defaultRemoteDisplayName: 'Fellow Jitster',
// Default language for the user interface. // Default language for the user interface.
defaultLanguage: '${DEFAULT_LANGUAGE}', defaultLanguage: '${DEFAULT_LANGUAGE}',
@ -405,8 +512,18 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// and microsoftApiApplicationClientID // and microsoftApiApplicationClientID
// enableCalendarIntegration: false, // enableCalendarIntegration: false,
// When 'true', it shows an intermediate page before joining, where the user can configure their devices. // Configs for prejoin page.
// prejoinPageEnabled: false, // prejoinConfig: {
// // When 'true', it shows an intermediate page before joining, where the user can configure their devices.
// // This replaces \`prejoinPageEnabled\`.
// enabled: true,
// // List of buttons to hide from the extra join options dropdown.
// hideExtraJoinButtons: ['no-audio', 'by-phone']
// },
// When 'true', the user cannot edit the display name.
// (Mainly useful when used in conjuction with the JWT so the JWT name becomes read only.)
// readOnlyName: false,
// If etherpad integration is enabled, setting this to true will // If etherpad integration is enabled, setting this to true will
// automatically open the etherpad when a participant joins. This // automatically open the etherpad when a participant joins. This
@ -427,6 +544,10 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// Base URL for a Gravatar-compatible service. Defaults to libravatar. // Base URL for a Gravatar-compatible service. Defaults to libravatar.
// gravatarBaseURL: 'https://seccdn.libravatar.org/avatar/', // gravatarBaseURL: 'https://seccdn.libravatar.org/avatar/',
// App name to be displayed in the invitation email subject, as an alternative to
// interfaceConfig.APP_NAME.
// inviteAppName: null,
// Moved from interfaceConfig(TOOLBAR_BUTTONS). // Moved from interfaceConfig(TOOLBAR_BUTTONS).
// The name of the toolbar buttons to display in the toolbar, including the // The name of the toolbar buttons to display in the toolbar, including the
// "More actions" menu. If present, the button will display. Exceptions are // "More actions" menu. If present, the button will display. Exceptions are
@ -439,13 +560,94 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// - 'desktop' controls the "Share your screen" button // - 'desktop' controls the "Share your screen" button
// - if \`toolbarButtons\` is undefined, we fallback to enabling all buttons on the UI // - if \`toolbarButtons\` is undefined, we fallback to enabling all buttons on the UI
// toolbarButtons: [ // toolbarButtons: [
// 'microphone', 'camera', 'closedcaptions', 'desktop', 'embedmeeting', 'fullscreen', // 'camera',
// 'fodeviceselection', 'hangup', 'profile', 'chat', 'recording', // 'chat',
// 'livestreaming', 'etherpad', 'sharedvideo', 'shareaudio', 'settings', 'raisehand', // 'closedcaptions',
// 'videoquality', 'filmstrip', 'invite', 'feedback', 'stats', 'shortcuts', // 'desktop',
// 'tileview', 'select-background', 'download', 'help', 'mute-everyone', 'mute-video-everyone', 'security' // 'download',
// 'embedmeeting',
// 'etherpad',
// 'feedback',
// 'filmstrip',
// 'fullscreen',
// 'hangup',
// 'help',
// 'invite',
// 'livestreaming',
// 'microphone',
// 'mute-everyone',
// 'mute-video-everyone',
// 'participants-pane',
// 'profile',
// 'raisehand',
// 'recording',
// 'security',
// 'select-background',
// 'settings',
// 'shareaudio',
// 'sharedvideo',
// 'shortcuts',
// 'stats',
// 'tileview',
// 'toggle-camera',
// 'videoquality',
// '__end'
// ], // ],
// Holds values related to toolbar visibility control.
// toolbarConfig: {
// // Moved from interfaceConfig.INITIAL_TOOLBAR_TIMEOUT
// // The initial numer of miliseconds for the toolbar buttons to be visible on screen.
// initialTimeout: 20000,
// // Moved from interfaceConfig.TOOLBAR_TIMEOUT
// // Number of miliseconds for the toolbar buttons to be visible on screen.
// timeout: 4000,
// // Moved from interfaceConfig.TOOLBAR_ALWAYS_VISIBLE
// // Whether toolbar should be always visible or should hide after x miliseconds.
// alwaysVisible: false
// },
// Toolbar buttons which have their click event exposed through the API on
// \`toolbarButtonClicked\` event instead of executing the normal click routine.
// buttonsWithNotifyClick: [
// 'camera',
// 'chat',
// 'closedcaptions',
// 'desktop',
// 'download',
// 'embedmeeting',
// 'etherpad',
// 'feedback',
// 'filmstrip',
// 'fullscreen',
// 'hangup',
// 'help',
// 'invite',
// 'livestreaming',
// 'microphone',
// 'mute-everyone',
// 'mute-video-everyone',
// 'participants-pane',
// 'profile',
// 'raisehand',
// 'recording',
// 'security',
// 'select-background',
// 'settings',
// 'shareaudio',
// 'sharedvideo',
// 'shortcuts',
// 'stats',
// 'tileview',
// 'toggle-camera',
// 'videoquality',
// '__end'
// ],
// List of pre meeting screens buttons to hide. The values must be one or more of the 5 allowed buttons:
// 'microphone', 'camera', 'select-background', 'invite', 'settings'
// hiddenPremeetingButtons: [],
// Stats // Stats
// //
@ -463,12 +665,37 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// callStatsID: '', // callStatsID: '',
// callStatsSecret: '', // callStatsSecret: '',
// The callstats initialize config params as described in the API:
// https://docs.callstats.io/docs/javascript#callstatsinitialize-with-app-secret
// callStatsConfigParams: {
// disableBeforeUnloadHandler: true, // disables callstats.js's window.onbeforeunload parameter.
// applicationVersion: "app_version", // Application version specified by the developer.
// disablePrecalltest: true, // disables the pre-call test, it is enabled by default.
// siteID: "siteID", // The name/ID of the site/campus from where the call/pre-call test is made.
// additionalIDs: { // additionalIDs object, contains application related IDs.
// customerID: "Customer Identifier. Example, walmart.",
// tenantID: "Tenant Identifier. Example, monster.",
// productName: "Product Name. Example, Jitsi.",
// meetingsName: "Meeting Name. Example, Jitsi loves callstats.",
// serverName: "Server/MiddleBox Name. Example, jvb-prod-us-east-mlkncws12.",
// pbxID: "PBX Identifier. Example, walmart.",
// pbxExtensionID: "PBX Extension Identifier. Example, 5625.",
// fqExtensionID: "Fully qualified Extension Identifier. Example, +71 (US) +5625.",
// sessionID: "Session Identifier. Example, session-12-34"
// },
// collectLegacyStats: true, //enables the collection of legacy stats in chrome browser
// collectIP: true //enables the collection localIP address
// },
// Enables sending participants' display names to callstats // Enables sending participants' display names to callstats
// enableDisplayNameInStats: false, // enableDisplayNameInStats: false,
// Enables sending participants' emails (if available) to callstats and other analytics // Enables sending participants' emails (if available) to callstats and other analytics
// enableEmailInStats: false, // enableEmailInStats: false,
// Enables detecting faces of participants and get their expression and send it to other participants
// enableFacialRecognition: true,
// Controls the percentage of automatic feedback shown to participants when callstats is enabled. // Controls the percentage of automatic feedback shown to participants when callstats is enabled.
// The default value is 100%. If set to 0, no automatic feedback will be requested // The default value is 100%. If set to 0, no automatic feedback will be requested
// feedbackPercentage: 100, // feedbackPercentage: 100,
@ -494,11 +721,8 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// connection. // connection.
enabled: true, enabled: true,
// The STUN servers that will be used in the peer to peer connections // Enable unified plan implementation support on Chromium for p2p connection.
stunServers: [ // enableUnifiedOnChrome: false,
{ urls: 'stun:${TURN_SERVER}:443' }
]
// Sets the ICE transport policy for the p2p connection. At the time // Sets the ICE transport policy for the p2p connection. At the time
// of this writing the list of possible values are 'all' and 'relay', // of this writing the list of possible values are 'all' and 'relay',
@ -525,10 +749,20 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// How long we're going to wait, before going back to P2P after the 3rd // How long we're going to wait, before going back to P2P after the 3rd
// participant has left the conference (to filter out page reload). // participant has left the conference (to filter out page reload).
// backToP2PDelay: 5 // backToP2PDelay: 5,
// The STUN servers that will be used in the peer to peer connections
stunServers: [
// { urls: 'stun:jitsi-meet.example.com:3478' },
{ urls: 'stun:${TURN_SERVER}:443' }
]
}, },
analytics: { analytics: {
// True if the analytics should be disabled
// disabled: false,
// The Google Analytics Tracking ID: // The Google Analytics Tracking ID:
// googleAnalyticsTrackingId: 'your-tracking-id-UA-123456-1' // googleAnalyticsTrackingId: 'your-tracking-id-UA-123456-1'
@ -544,7 +778,7 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// module connects to the provided rtcstatsEndpoint and sends statistics regarding // module connects to the provided rtcstatsEndpoint and sends statistics regarding
// PeerConnection states along with getStats metrics polled at the specified // PeerConnection states along with getStats metrics polled at the specified
// interval. // interval.
// rtcstatsEnabled: true, // rtcstatsEnabled: false,
// In order to enable rtcstats one needs to provide a endpoint url. // In order to enable rtcstats one needs to provide a endpoint url.
// rtcstatsEndpoint: wss://rtcstats-server-pilot.jitsi.net/, // rtcstatsEndpoint: wss://rtcstats-server-pilot.jitsi.net/,
@ -572,13 +806,43 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// userRegion: "asia" // userRegion: "asia"
}, },
// Array<string> of disabled sounds.
// Possible values:
// - 'ASKED_TO_UNMUTE_SOUND'
// - 'E2EE_OFF_SOUND'
// - 'E2EE_ON_SOUND'
// - 'INCOMING_MSG_SOUND'
// - 'KNOCKING_PARTICIPANT_SOUND'
// - 'LIVE_STREAMING_OFF_SOUND'
// - 'LIVE_STREAMING_ON_SOUND'
// - 'NO_AUDIO_SIGNAL_SOUND'
// - 'NOISY_AUDIO_INPUT_SOUND'
// - 'OUTGOING_CALL_EXPIRED_SOUND'
// - 'OUTGOING_CALL_REJECTED_SOUND'
// - 'OUTGOING_CALL_RINGING_SOUND'
// - 'OUTGOING_CALL_START_SOUND'
// - 'PARTICIPANT_JOINED_SOUND'
// - 'PARTICIPANT_LEFT_SOUND'
// - 'RAISE_HAND_SOUND'
// - 'REACTION_SOUND'
// - 'RECORDING_OFF_SOUND'
// - 'RECORDING_ON_SOUND'
// - 'TALK_WHILE_MUTED_SOUND'
// disabledSounds: [],
// DEPRECATED! Use \`disabledSounds\` instead.
// Decides whether the start/stop recording audio notifications should play on record. // Decides whether the start/stop recording audio notifications should play on record.
// disableRecordAudioNotification: false, // disableRecordAudioNotification: false,
// DEPRECATED! Use \`disabledSounds\` instead.
// Disables the sounds that play when other participants join or leave the // Disables the sounds that play when other participants join or leave the
// conference (if set to true, these sounds will not be played). // conference (if set to true, these sounds will not be played).
// disableJoinLeaveSounds: false, // disableJoinLeaveSounds: false,
// DEPRECATED! Use \`disabledSounds\` instead.
// Disables the sounds that play when a chat message is received.
// disableIncomingMessageSound: false,
// Information for the chrome extension banner // Information for the chrome extension banner
// chromeExtensionBanner: { // chromeExtensionBanner: {
// // The chrome extension to be installed address // // The chrome extension to be installed address
@ -599,8 +863,8 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// localRecording: { // localRecording: {
// Enables local recording. // Enables local recording.
// Additionally, 'localrecording' (all lowercase) needs to be added to // Additionally, 'localrecording' (all lowercase) needs to be added to
// TOOLBAR_BUTTONS in interface_config.js for the Local Recording // the \`toolbarButtons\`-array for the Local Recording button to show up
// button to show up on the toolbar. // on the toolbar.
// //
// enabled: true, // enabled: true,
// //
@ -609,6 +873,10 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// format: 'flac' // format: 'flac'
// //
// },
// e2ee: {
// labels,
// externallyManagedKey: false
// }, // },
// Options related to end-to-end (participant to participant) ping. // Options related to end-to-end (participant to participant) ping.
@ -663,7 +931,9 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// Options related to the remote participant menu. // Options related to the remote participant menu.
// remoteVideoMenu: { // remoteVideoMenu: {
// // If set to true the 'Kick out' button will be disabled. // // If set to true the 'Kick out' button will be disabled.
// disableKick: true // disableKick: true,
// // If set to true the 'Grant moderator' button will be disabled.
// disableGrantModerator: true
// }, // },
// If set to true all muting operations of remote participants will be disabled. // If set to true all muting operations of remote participants will be disabled.
@ -675,8 +945,11 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
/** /**
External API url used to receive branding specific information. External API url used to receive branding specific information.
If there is no url set or there are missing fields, the defaults are applied. If there is no url set or there are missing fields, the defaults are applied.
The config file should be in JSON.
None of the fields are mandatory and the response must have the shape: None of the fields are mandatory and the response must have the shape:
{ {
// The domain url to apply (will replace the domain in the sharing conference link/embed section)
inviteDomain: 'example-company.org,
// The hex value for the colour used as background // The hex value for the colour used as background
backgroundColor: '#fff', backgroundColor: '#fff',
// The url for the image used as background // The url for the image used as background
@ -684,11 +957,55 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// The anchor url used when clicking the logo image // The anchor url used when clicking the logo image
logoClickUrl: 'https://example-company.org', logoClickUrl: 'https://example-company.org',
// The url used for the image used as logo // The url used for the image used as logo
logoImageUrl: 'https://example.com/logo-img.png' logoImageUrl: 'https://example.com/logo-img.png',
// Overwrite for pool of background images for avatars
avatarBackgrounds: ['url(https://example.com/avatar-background-1.png)', '#FFF'],
// The lobby/prejoin screen background
premeetingBackground: 'url(https://example.com/premeeting-background.png)',
// A list of images that can be used as video backgrounds.
// When this field is present, the default images will be replaced with those provided.
virtualBackgrounds: ['https://example.com/img.jpg'],
// Object containing a theme's properties. It also supports partial overwrites of the main theme.
// For a list of all possible theme tokens and their current defaults, please check:
// https://github.com/jitsi/jitsi-meet/tree/master/resources/custom-theme/custom-theme.json
// For a short explanations on each of the tokens, please check:
// https://github.com/jitsi/jitsi-meet/blob/master/react/features/base/ui/Tokens.js
// IMPORTANT!: This is work in progress so many of the various tokens are not yet applied in code
// or they are partially applied.
customTheme: {
palette: {
ui01: "orange !important",
ui02: "maroon",
surface02: 'darkgreen',
ui03: "violet",
ui04: "magenta",
ui05: "blueviolet",
field02Hover: 'red',
action01: 'green',
action01Hover: 'lightgreen',
action02Disabled: 'beige',
success02: 'cadetblue',
action02Hover: 'aliceblue'
},
typography: {
labelRegular: {
fontSize: 25,
lineHeight: 30,
fontWeight: 500
}
}
}
} }
*/ */
dynamicBrandingUrl: "${DYNAMIC_BRANDING_URL}", dynamicBrandingUrl: "${DYNAMIC_BRANDING_URL}",
// When true the user cannot add more images to be used as virtual background.
// Only the default ones from will be available.
// disableAddingBackgroundImages: false,
// Disables using screensharing as virtual background.
// disableScreensharingVirtualBackground: false,
// Sets the background transparency level. '0' is fully transparent, '1' is opaque. // Sets the background transparency level. '0' is fully transparent, '1' is opaque.
// backgroundAlpha: 1, // backgroundAlpha: 1,
@ -700,12 +1017,35 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// If true, tile view will not be enabled automatically when the participants count threshold is reached. // If true, tile view will not be enabled automatically when the participants count threshold is reached.
// disableTileView: true, // disableTileView: true,
// If true, the tiles will be displayed contained within the available space rather than enlarged to cover it.
// disableTileEnlargement: true,
// Controls the visibility and behavior of the top header conference info labels.
// If a label's id is not in any of the 2 arrays, it will not be visible at all on the header.
// conferenceInfo: {
// // those labels will not be hidden in tandem with the toolbox.
// alwaysVisible: ['recording', 'local-recording'],
// // those labels will be auto-hidden in tandem with the toolbox buttons.
// autoHide: [
// 'subject',
// 'conference-timer',
// 'participants-count',
// 'e2ee',
// 'transcribing',
// 'video-quality',
// 'insecure-room'
// ]
// },
// Hides the conference subject // Hides the conference subject
// hideConferenceSubject: true, // hideConferenceSubject: true,
// Hides the conference timer. // Hides the conference timer.
// hideConferenceTimer: true, // hideConferenceTimer: true,
// Hides the recording label
// hideRecordingLabel: false,
// Hides the participants stats // Hides the participants stats
// hideParticipantsStats: true, // hideParticipantsStats: true,
@ -717,6 +1057,13 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// is not persisting the local storage inside the iframe. // is not persisting the local storage inside the iframe.
// useHostPageLocalStorage: true, // useHostPageLocalStorage: true,
// etherpad ("shared document") integration.
//
// If set, add a "Open shared document" link to the bottom right menu that
// will open an etherpad document.
// etherpad_base: 'https://your-etherpad-installati.on/p/',
// List of undocumented settings used in jitsi-meet // List of undocumented settings used in jitsi-meet
/** /**
_immediateReloadThreshold _immediateReloadThreshold
@ -729,8 +1076,8 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
dialOutCodesUrl dialOutCodesUrl
disableRemoteControl disableRemoteControl
displayJids displayJids
etherpad_base
externalConnectUrl externalConnectUrl
e2eeLabels
firefox_fake_device firefox_fake_device
googleApiApplicationClientID googleApiApplicationClientID
iAmRecorder iAmRecorder
@ -772,6 +1119,11 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
websocketKeepAliveUrl websocketKeepAliveUrl
*/ */
/**
* Default interval (milliseconds) for triggering mouseMoved iframe API event
*/
mouseMoveCallbackInterval: 1000,
/** /**
Use this array to configure which notifications will be shown to the user Use this array to configure which notifications will be shown to the user
The items correspond to the title or description key of that notification The items correspond to the title or description key of that notification
@ -805,11 +1157,19 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// 'lobby.notificationTitle', // shown when lobby is toggled and when join requests are allowed / denied // 'lobby.notificationTitle', // shown when lobby is toggled and when join requests are allowed / denied
// 'localRecording.localRecording', // shown when a local recording is started // 'localRecording.localRecording', // shown when a local recording is started
// 'notify.disconnected', // shown when a participant has left // 'notify.disconnected', // shown when a participant has left
// 'notify.connectedOneMember', // show when a participant joined
// 'notify.connectedTwoMembers', // show when two participants joined simultaneously
// 'notify.connectedThreePlusMembers', // show when more than 2 participants joined simultaneously
// 'notify.grantedTo', // shown when moderator rights were granted to a participant // 'notify.grantedTo', // shown when moderator rights were granted to a participant
// 'notify.invitedOneMember', // shown when 1 participant has been invited // 'notify.invitedOneMember', // shown when 1 participant has been invited
// 'notify.invitedThreePlusMembers', // shown when 3+ participants have been invited // 'notify.invitedThreePlusMembers', // shown when 3+ participants have been invited
// 'notify.invitedTwoMembers', // shown when 2 participants have been invited // 'notify.invitedTwoMembers', // shown when 2 participants have been invited
// 'notify.kickParticipant', // shown when a participant is kicked // 'notify.kickParticipant', // shown when a participant is kicked
// 'notify.moderationStartedTitle', // shown when AV moderation is activated
// 'notify.moderationStoppedTitle', // shown when AV moderation is deactivated
// 'notify.moderationInEffectTitle', // shown when user attempts to unmute audio during AV moderation
// 'notify.moderationInEffectVideoTitle', // shown when user attempts to enable video during AV moderation
// 'notify.moderationInEffectCSTitle', // shown when user attempts to share content during AV moderation
// 'notify.mutedRemotelyTitle', // shown when user is muted by a remote party // 'notify.mutedRemotelyTitle', // shown when user is muted by a remote party
// 'notify.mutedTitle', // shown when user has been muted upon joining, // 'notify.mutedTitle', // shown when user has been muted upon joining,
// 'notify.newDeviceAudioTitle', // prompts the user to use a newly detected audio device // 'notify.newDeviceAudioTitle', // prompts the user to use a newly detected audio device
@ -818,6 +1178,7 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// 'notify.passwordSetRemotely', // shown when a password has been set remotely // 'notify.passwordSetRemotely', // shown when a password has been set remotely
// 'notify.raisedHand', // shown when a partcipant used raise hand, // 'notify.raisedHand', // shown when a partcipant used raise hand,
// 'notify.startSilentTitle', // shown when user joined with no audio // 'notify.startSilentTitle', // shown when user joined with no audio
// 'notify.unmute', // shown to moderator when user raises hand during AV moderation
// 'prejoin.errorDialOut', // 'prejoin.errorDialOut',
// 'prejoin.errorDialOutDisconnected', // 'prejoin.errorDialOutDisconnected',
// 'prejoin.errorDialOutFailed', // 'prejoin.errorDialOutFailed',
@ -831,7 +1192,13 @@ $(if [ -n "${VIDEO_CONSTRAINTS}" ]; then echo "${VIDEO_CONSTRAINTS},"; fi)
// 'toolbar.noisyAudioInputTitle', // shown when noise is detected for the current microphone // 'toolbar.noisyAudioInputTitle', // shown when noise is detected for the current microphone
// 'toolbar.talkWhileMutedPopup', // shown when user tries to speak while muted // 'toolbar.talkWhileMutedPopup', // shown when user tries to speak while muted
// 'transcribing.failedToStart' // shown when transcribing fails to start // 'transcribing.failedToStart' // shown when transcribing fails to start
// ] // ],
// Prevent the filmstrip from autohiding when screen width is under a certain threshold
// disableFilmstripAutohiding: false,
// Specifies whether the chat emoticons are disabled or not
// disableChatSmileys: false,
// Allow all above example options to include a trailing comma and // Allow all above example options to include a trailing comma and
// prevent fear when commenting out the last value. // prevent fear when commenting out the last value.

View file

@ -27,9 +27,6 @@ var config = {
// Websocket URL // Websocket URL
// websocket: 'wss://jitsi-meet.example.com/xmpp-websocket', // websocket: 'wss://jitsi-meet.example.com/xmpp-websocket',
// The name of client node advertised in XEP-0115 'c' stanza
clientNode: 'http://jitsi.org/jitsimeet',
// The real JID of focus participant - can be overridden here // The real JID of focus participant - can be overridden here
// Do not change username - FIXME: Make focus username configurable // Do not change username - FIXME: Make focus username configurable
// https://github.com/jitsi/jitsi-meet/issues/7376 // https://github.com/jitsi/jitsi-meet/issues/7376
@ -44,9 +41,16 @@ var config = {
// issues related to insertable streams. // issues related to insertable streams.
// disableE2EE: false, // disableE2EE: false,
// Enables/disables thumbnail reordering in the filmstrip. It is enabled by default unless explicitly
// disabled by the below option.
// enableThumbnailReordering: true,
// Enables XMPP WebSocket (as opposed to BOSH) for the given amount of users.
// mobileXmppWsThreshold: 10 // enable XMPP WebSockets on mobile for 10% of the users
// P2P test mode disables automatic switching to P2P when there are 2 // P2P test mode disables automatic switching to P2P when there are 2
// participants in the conference. // participants in the conference.
p2pTestMode: false // p2pTestMode: false,
// Enables the test specific features consumed by jitsi-meet-torture // Enables the test specific features consumed by jitsi-meet-torture
// testMode: false // testMode: false
@ -59,8 +63,10 @@ var config = {
// simulcast is turned off for the desktop share. If presenter is turned // simulcast is turned off for the desktop share. If presenter is turned
// on while screensharing is in progress, the max bitrate is automatically // on while screensharing is in progress, the max bitrate is automatically
// adjusted to 2.5 Mbps. This takes a value between 0 and 1 which determines // adjusted to 2.5 Mbps. This takes a value between 0 and 1 which determines
// the probability for this to be enabled. // the probability for this to be enabled. This setting has been deprecated.
// capScreenshareBitrate: 1 // 0 to disable // desktopSharingFrameRate.max now determines whether simulcast will be enabled
// or disabled for the screenshare.
// capScreenshareBitrate: 1 // 0 to disable - deprecated.
// Enable callstats only for a percentage of users. // Enable callstats only for a percentage of users.
// This takes a value between 0 and 100 which determines the probability for // This takes a value between 0 and 100 which determines the probability for
@ -68,6 +74,18 @@ var config = {
// callStatsThreshold: 5 // enable callstats for 5% of the users. // callStatsThreshold: 5 // enable callstats for 5% of the users.
}, },
// Disables moderator indicators.
// disableModeratorIndicator: false,
// Disables the reactions feature.
// disableReactions: true,
// Disables polls feature.
// disablePolls: false,
// Disables self-view tile. (hides it from tile view and from filmstrip)
// disableSelfView: false,
// Disables ICE/UDP by filtering out local and remote UDP candidates in // Disables ICE/UDP by filtering out local and remote UDP candidates in
// signalling. // signalling.
// webrtcIceUdpDisable: false, // webrtcIceUdpDisable: false,
@ -80,6 +98,9 @@ var config = {
// Media // Media
// //
// Enable unified plan implementation support on Chromium based browsers.
// enableUnifiedOnChrome: false,
// Audio // Audio
// Disable measuring of audio levels. // Disable measuring of audio levels.
@ -96,6 +117,10 @@ var config = {
// about the call. // about the call.
// enableSaveLogs: false, // enableSaveLogs: false,
// Enabling this will hide the "Show More" link in the GSM popover that can be
// used to display more statistics about the connection (IP, Port, protocol, etc).
// disableShowMoreStats: true,
// Enabling this will run the lib-jitsi-meet noise detection module which will // Enabling this will run the lib-jitsi-meet noise detection module which will
// notify the user if there is noise, other than voice, coming from the current // notify the user if there is noise, other than voice, coming from the current
// selected microphone. The purpose it to let the user know that the input could // selected microphone. The purpose it to let the user know that the input could
@ -117,19 +142,34 @@ var config = {
// participants and to enable it back a reload is needed. // participants and to enable it back a reload is needed.
// startSilent: false // startSilent: false
// Sets the preferred target bitrate for the Opus audio codec by setting its
// 'maxaveragebitrate' parameter. Currently not available in p2p mode.
// Valid values are in the range 6000 to 510000
// opusMaxAverageBitrate: 20000,
// Enables support for opus-red (redundancy for Opus). // Enables support for opus-red (redundancy for Opus).
// enableOpusRed: false, // enableOpusRed: false,
// Specify audio quality stereo and opusMaxAverageBitrate values in order to enable HD audio.
// Beware, by doing so, you are disabling echo cancellation, noise suppression and AGC.
// audioQuality: {
// stereo: false,
// opusMaxAverageBitrate: null // Value to fit the 6000 to 510000 range.
// },
// Video // Video
// Sets the preferred resolution (height) for local video. Defaults to 720. // Sets the preferred resolution (height) for local video. Defaults to 720.
// resolution: 720, // resolution: 720,
// Specifies whether the raised hand will hide when someone becomes a dominant speaker or not
// disableRemoveRaisedHandOnFocus: false,
// Specifies whether there will be a search field in speaker stats or not
// disableSpeakerStatsSearch: false,
// Specifies whether participants in speaker stats should be ordered or not, and with what priority
// speakerStatsOrder: [
// 'role', <- Moderators on top
// 'name', <- Alphabetically by name
// 'hasLeft', <- The ones that have left in the bottom
// ] <- the order of the array elements determines priority
// How many participants while in the tile view mode, before the receiving video quality is reduced from HD to SD. // How many participants while in the tile view mode, before the receiving video quality is reduced from HD to SD.
// Use -1 to disable. // Use -1 to disable.
// maxFullResolutionParticipants: 2, // maxFullResolutionParticipants: 2,
@ -152,9 +192,10 @@ var config = {
// Enable / disable simulcast support. // Enable / disable simulcast support.
// disableSimulcast: false, // disableSimulcast: false,
// Enable / disable layer suspension. If enabled, endpoints whose HD // Enable / disable layer suspension. If enabled, endpoints whose HD layers are not in use will be suspended
// layers are not in use will be suspended (no longer sent) until they // (no longer sent) until they are requested again. This is enabled by default. This must be enabled for screen
// are requested again. // sharing to work as expected on Chrome. Disabling this might result in low resolution screenshare being sent
// by the client.
// enableLayerSuspension: false, // enableLayerSuspension: false,
// Every participant after the Nth will start video muted. // Every participant after the Nth will start video muted.
@ -216,6 +257,18 @@ var config = {
// subtitles and buttons can be configured) // subtitles and buttons can be configured)
// transcribingEnabled: false, // transcribingEnabled: false,
// If true transcriber will use the application language.
// The application language is either explicitly set by participants in their settings or automatically
// detected based on the environment, e.g. if the app is opened in a chrome instance which is using french as its
// default language then transcriptions for that participant will be in french.
// Defaults to true.
// transcribeWithAppLanguage: true,
// Transcriber language. This settings will only work if "transcribeWithAppLanguage" is explicitly set to false.
// Available languages can be found in
// ./src/react/features/transcribing/transcriber-langs.json.
// preferredTranscribeLanguage: 'en-US',
// Enables automatic turning on captions when recording is started // Enables automatic turning on captions when recording is started
// autoCaptionOnRecord: false, // autoCaptionOnRecord: false,
@ -224,6 +277,20 @@ var config = {
// Default value for the channel "last N" attribute. -1 for unlimited. // Default value for the channel "last N" attribute. -1 for unlimited.
channelLastN: -1, channelLastN: -1,
// Connection indicators
// connectionIndicators: {
// autoHide: true,
// autoHideTimeout: 5000,
// disabled: false,
// disableDetails: false,
// inactiveDisabled: false
// },
// Provides a way for the lastN value to be controlled through the UI.
// When startLastN is present, conference starts with a last-n value of startLastN and channelLastN
// value will be used when the quality level is selected using "Manage Video Quality" slider.
// startLastN: 1,
// Provides a way to use different "last N" values based on the number of participants in the conference. // Provides a way to use different "last N" values based on the number of participants in the conference.
// The keys in an Object represent number of participants and the values are "last N" to be used when number of // The keys in an Object represent number of participants and the values are "last N" to be used when number of
// participants gets to or above the number. // participants gets to or above the number.
@ -261,12 +328,24 @@ var config = {
// // to take effect. // // to take effect.
// preferredCodec: 'VP8', // preferredCodec: 'VP8',
// //
// // Provides a way to enforce the preferred codec for the conference even when the conference has endpoints
// // that do not support the preferred codec. For example, older versions of Safari do not support VP9 yet.
// // This will result in Safari not being able to decode video from endpoints sending VP9 video.
// // When set to false, the conference falls back to VP8 whenever there is an endpoint that doesn't support the
// // preferred codec and goes back to the preferred codec when that endpoint leaves.
// // enforcePreferredCodec: false,
//
// // Provides a way to configure the maximum bitrates that will be enforced on the simulcast streams for // // Provides a way to configure the maximum bitrates that will be enforced on the simulcast streams for
// // video tracks. The keys in the object represent the type of the stream (LD, SD or HD) and the values // // video tracks. The keys in the object represent the type of the stream (LD, SD or HD) and the values
// // are the max.bitrates to be set on that particular type of stream. The actual send may vary based on // // are the max.bitrates to be set on that particular type of stream. The actual send may vary based on
// // the available bandwidth calculated by the browser, but it will be capped by the values specified here. // // the available bandwidth calculated by the browser, but it will be capped by the values specified here.
// // This is currently not implemented on app based clients on mobile. // // This is currently not implemented on app based clients on mobile.
// maxBitratesVideo: { // maxBitratesVideo: {
// H264: {
// low: 200000,
// standard: 500000,
// high: 1500000
// },
// VP8 : { // VP8 : {
// low: 200000, // low: 200000,
// standard: 500000, // standard: 500000,
@ -299,6 +378,13 @@ var config = {
// resizeDesktopForPresenter: false // resizeDesktopForPresenter: false
// }, // },
// Notification timeouts
// notificationTimeouts: {
// short: 2500,
// medium: 5000,
// long: 10000
// },
// // Options for the recording limit notification. // // Options for the recording limit notification.
// recordingLimit: { // recordingLimit: {
// //
@ -317,6 +403,9 @@ var config = {
// Disables or enables RTX (RFC 4588) (defaults to false). // Disables or enables RTX (RFC 4588) (defaults to false).
// disableRtx: false, // disableRtx: false,
// Moves all Jitsi Meet 'beforeunload' logic (cleanup, leaving, disconnecting, etc) to the 'unload' event.
// disableBeforeUnloadHandlers: true,
// Disables or enables TCC support in this client (default: enabled). // Disables or enables TCC support in this client (default: enabled).
// enableTcc: true, // enableTcc: true,
@ -332,8 +421,7 @@ var config = {
// enableIceRestart: false, // enableIceRestart: false,
// Enables forced reload of the client when the call is migrated as a result of // Enables forced reload of the client when the call is migrated as a result of
// the bridge going down. Currently enabled by default as call migration through // the bridge going down.
// session-terminate is causing siganling issues when Octo is enabled.
// enableForcedReload: true, // enableForcedReload: true,
// Use TURN/UDP servers for the jitsi-videobridge connection (by default // Use TURN/UDP servers for the jitsi-videobridge connection (by default
@ -341,6 +429,11 @@ var config = {
// bridge itself is reachable via UDP) // bridge itself is reachable via UDP)
// useTurnUdp: false // useTurnUdp: false
// Enable support for encoded transform in supported browsers. This allows
// E2EE to work in Safari if the corresponding flag is enabled in the browser.
// Experimental.
// enableEncodedTransformSupport: false,
// UI // UI
// //
@ -350,6 +443,12 @@ var config = {
// Hides lobby button // Hides lobby button
// hideLobbyButton: false, // hideLobbyButton: false,
// If Lobby is enabled starts knocking automatically.
// autoKnockLobby: false,
// Hides add breakout room button
// hideAddRoomButton: false,
// Require users to always specify a display name. // Require users to always specify a display name.
// requireDisplayName: true, // requireDisplayName: true,
@ -369,7 +468,15 @@ var config = {
// enableClosePage: false, // enableClosePage: false,
// Disable hiding of remote thumbnails when in a 1-on-1 conference call. // Disable hiding of remote thumbnails when in a 1-on-1 conference call.
// disable1On1Mode: false, // Setting this to null, will also disable showing the remote videos
// when the toolbar is shown on mouse movements
// disable1On1Mode: null | false | true,
// Default local name to be displayed
// defaultLocalDisplayName: 'me',
// Default remote name to be displayed
// defaultRemoteDisplayName: 'Fellow Jitster',
// Default language for the user interface. // Default language for the user interface.
// defaultLanguage: 'en', // defaultLanguage: 'en',
@ -392,8 +499,18 @@ var config = {
// and microsoftApiApplicationClientID // and microsoftApiApplicationClientID
// enableCalendarIntegration: false, // enableCalendarIntegration: false,
// When 'true', it shows an intermediate page before joining, where the user can configure their devices. // Configs for prejoin page.
// prejoinPageEnabled: false, // prejoinConfig: {
// // When 'true', it shows an intermediate page before joining, where the user can configure their devices.
// // This replaces `prejoinPageEnabled`.
// enabled: true,
// // List of buttons to hide from the extra join options dropdown.
// hideExtraJoinButtons: ['no-audio', 'by-phone']
// },
// When 'true', the user cannot edit the display name.
// (Mainly useful when used in conjuction with the JWT so the JWT name becomes read only.)
// readOnlyName: false,
// If etherpad integration is enabled, setting this to true will // If etherpad integration is enabled, setting this to true will
// automatically open the etherpad when a participant joins. This // automatically open the etherpad when a participant joins. This
@ -414,6 +531,10 @@ var config = {
// Base URL for a Gravatar-compatible service. Defaults to libravatar. // Base URL for a Gravatar-compatible service. Defaults to libravatar.
// gravatarBaseURL: 'https://seccdn.libravatar.org/avatar/', // gravatarBaseURL: 'https://seccdn.libravatar.org/avatar/',
// App name to be displayed in the invitation email subject, as an alternative to
// interfaceConfig.APP_NAME.
// inviteAppName: null,
// Moved from interfaceConfig(TOOLBAR_BUTTONS). // Moved from interfaceConfig(TOOLBAR_BUTTONS).
// The name of the toolbar buttons to display in the toolbar, including the // The name of the toolbar buttons to display in the toolbar, including the
// "More actions" menu. If present, the button will display. Exceptions are // "More actions" menu. If present, the button will display. Exceptions are
@ -426,13 +547,94 @@ var config = {
// - 'desktop' controls the "Share your screen" button // - 'desktop' controls the "Share your screen" button
// - if `toolbarButtons` is undefined, we fallback to enabling all buttons on the UI // - if `toolbarButtons` is undefined, we fallback to enabling all buttons on the UI
// toolbarButtons: [ // toolbarButtons: [
// 'microphone', 'camera', 'closedcaptions', 'desktop', 'embedmeeting', 'fullscreen', // 'camera',
// 'fodeviceselection', 'hangup', 'profile', 'chat', 'recording', // 'chat',
// 'livestreaming', 'etherpad', 'sharedvideo', 'shareaudio', 'settings', 'raisehand', // 'closedcaptions',
// 'videoquality', 'filmstrip', 'invite', 'feedback', 'stats', 'shortcuts', // 'desktop',
// 'tileview', 'select-background', 'download', 'help', 'mute-everyone', 'mute-video-everyone', 'security' // 'download',
// 'embedmeeting',
// 'etherpad',
// 'feedback',
// 'filmstrip',
// 'fullscreen',
// 'hangup',
// 'help',
// 'invite',
// 'livestreaming',
// 'microphone',
// 'mute-everyone',
// 'mute-video-everyone',
// 'participants-pane',
// 'profile',
// 'raisehand',
// 'recording',
// 'security',
// 'select-background',
// 'settings',
// 'shareaudio',
// 'sharedvideo',
// 'shortcuts',
// 'stats',
// 'tileview',
// 'toggle-camera',
// 'videoquality',
// '__end'
// ], // ],
// Holds values related to toolbar visibility control.
// toolbarConfig: {
// // Moved from interfaceConfig.INITIAL_TOOLBAR_TIMEOUT
// // The initial numer of miliseconds for the toolbar buttons to be visible on screen.
// initialTimeout: 20000,
// // Moved from interfaceConfig.TOOLBAR_TIMEOUT
// // Number of miliseconds for the toolbar buttons to be visible on screen.
// timeout: 4000,
// // Moved from interfaceConfig.TOOLBAR_ALWAYS_VISIBLE
// // Whether toolbar should be always visible or should hide after x miliseconds.
// alwaysVisible: false
// },
// Toolbar buttons which have their click event exposed through the API on
// `toolbarButtonClicked` event instead of executing the normal click routine.
// buttonsWithNotifyClick: [
// 'camera',
// 'chat',
// 'closedcaptions',
// 'desktop',
// 'download',
// 'embedmeeting',
// 'etherpad',
// 'feedback',
// 'filmstrip',
// 'fullscreen',
// 'hangup',
// 'help',
// 'invite',
// 'livestreaming',
// 'microphone',
// 'mute-everyone',
// 'mute-video-everyone',
// 'participants-pane',
// 'profile',
// 'raisehand',
// 'recording',
// 'security',
// 'select-background',
// 'settings',
// 'shareaudio',
// 'sharedvideo',
// 'shortcuts',
// 'stats',
// 'tileview',
// 'toggle-camera',
// 'videoquality',
// '__end'
// ],
// List of pre meeting screens buttons to hide. The values must be one or more of the 5 allowed buttons:
// 'microphone', 'camera', 'select-background', 'invite', 'settings'
// hiddenPremeetingButtons: [],
// Stats // Stats
// //
@ -450,12 +652,37 @@ var config = {
// callStatsID: '', // callStatsID: '',
// callStatsSecret: '', // callStatsSecret: '',
// The callstats initialize config params as described in the API:
// https://docs.callstats.io/docs/javascript#callstatsinitialize-with-app-secret
// callStatsConfigParams: {
// disableBeforeUnloadHandler: true, // disables callstats.js's window.onbeforeunload parameter.
// applicationVersion: "app_version", // Application version specified by the developer.
// disablePrecalltest: true, // disables the pre-call test, it is enabled by default.
// siteID: "siteID", // The name/ID of the site/campus from where the call/pre-call test is made.
// additionalIDs: { // additionalIDs object, contains application related IDs.
// customerID: "Customer Identifier. Example, walmart.",
// tenantID: "Tenant Identifier. Example, monster.",
// productName: "Product Name. Example, Jitsi.",
// meetingsName: "Meeting Name. Example, Jitsi loves callstats.",
// serverName: "Server/MiddleBox Name. Example, jvb-prod-us-east-mlkncws12.",
// pbxID: "PBX Identifier. Example, walmart.",
// pbxExtensionID: "PBX Extension Identifier. Example, 5625.",
// fqExtensionID: "Fully qualified Extension Identifier. Example, +71 (US) +5625.",
// sessionID: "Session Identifier. Example, session-12-34"
// },
// collectLegacyStats: true, //enables the collection of legacy stats in chrome browser
// collectIP: true //enables the collection localIP address
// },
// Enables sending participants' display names to callstats // Enables sending participants' display names to callstats
// enableDisplayNameInStats: false, // enableDisplayNameInStats: false,
// Enables sending participants' emails (if available) to callstats and other analytics // Enables sending participants' emails (if available) to callstats and other analytics
// enableEmailInStats: false, // enableEmailInStats: false,
// Enables detecting faces of participants and get their expression and send it to other participants
// enableFacialRecognition: true,
// Controls the percentage of automatic feedback shown to participants when callstats is enabled. // Controls the percentage of automatic feedback shown to participants when callstats is enabled.
// The default value is 100%. If set to 0, no automatic feedback will be requested // The default value is 100%. If set to 0, no automatic feedback will be requested
// feedbackPercentage: 100, // feedbackPercentage: 100,
@ -481,12 +708,8 @@ var config = {
// connection. // connection.
enabled: true, enabled: true,
// The STUN servers that will be used in the peer to peer connections // Enable unified plan implementation support on Chromium for p2p connection.
stunServers: [ // enableUnifiedOnChrome: false,
// { urls: 'stun:jitsi-meet.example.com:3478' },
{ urls: 'stun:meet-jit-si-turnrelay.jitsi.net:443' }
]
// Sets the ICE transport policy for the p2p connection. At the time // Sets the ICE transport policy for the p2p connection. At the time
// of this writing the list of possible values are 'all' and 'relay', // of this writing the list of possible values are 'all' and 'relay',
@ -513,10 +736,20 @@ var config = {
// How long we're going to wait, before going back to P2P after the 3rd // How long we're going to wait, before going back to P2P after the 3rd
// participant has left the conference (to filter out page reload). // participant has left the conference (to filter out page reload).
// backToP2PDelay: 5 // backToP2PDelay: 5,
// The STUN servers that will be used in the peer to peer connections
stunServers: [
// { urls: 'stun:jitsi-meet.example.com:3478' },
{ urls: 'stun:meet-jit-si-turnrelay.jitsi.net:443' }
]
}, },
analytics: { analytics: {
// True if the analytics should be disabled
// disabled: false,
// The Google Analytics Tracking ID: // The Google Analytics Tracking ID:
// googleAnalyticsTrackingId: 'your-tracking-id-UA-123456-1' // googleAnalyticsTrackingId: 'your-tracking-id-UA-123456-1'
@ -532,7 +765,7 @@ var config = {
// module connects to the provided rtcstatsEndpoint and sends statistics regarding // module connects to the provided rtcstatsEndpoint and sends statistics regarding
// PeerConnection states along with getStats metrics polled at the specified // PeerConnection states along with getStats metrics polled at the specified
// interval. // interval.
// rtcstatsEnabled: true, // rtcstatsEnabled: false,
// In order to enable rtcstats one needs to provide a endpoint url. // In order to enable rtcstats one needs to provide a endpoint url.
// rtcstatsEndpoint: wss://rtcstats-server-pilot.jitsi.net/, // rtcstatsEndpoint: wss://rtcstats-server-pilot.jitsi.net/,
@ -560,13 +793,43 @@ var config = {
// userRegion: "asia" // userRegion: "asia"
}, },
// Array<string> of disabled sounds.
// Possible values:
// - 'ASKED_TO_UNMUTE_SOUND'
// - 'E2EE_OFF_SOUND'
// - 'E2EE_ON_SOUND'
// - 'INCOMING_MSG_SOUND'
// - 'KNOCKING_PARTICIPANT_SOUND'
// - 'LIVE_STREAMING_OFF_SOUND'
// - 'LIVE_STREAMING_ON_SOUND'
// - 'NO_AUDIO_SIGNAL_SOUND'
// - 'NOISY_AUDIO_INPUT_SOUND'
// - 'OUTGOING_CALL_EXPIRED_SOUND'
// - 'OUTGOING_CALL_REJECTED_SOUND'
// - 'OUTGOING_CALL_RINGING_SOUND'
// - 'OUTGOING_CALL_START_SOUND'
// - 'PARTICIPANT_JOINED_SOUND'
// - 'PARTICIPANT_LEFT_SOUND'
// - 'RAISE_HAND_SOUND'
// - 'REACTION_SOUND'
// - 'RECORDING_OFF_SOUND'
// - 'RECORDING_ON_SOUND'
// - 'TALK_WHILE_MUTED_SOUND'
// disabledSounds: [],
// DEPRECATED! Use `disabledSounds` instead.
// Decides whether the start/stop recording audio notifications should play on record. // Decides whether the start/stop recording audio notifications should play on record.
// disableRecordAudioNotification: false, // disableRecordAudioNotification: false,
// DEPRECATED! Use `disabledSounds` instead.
// Disables the sounds that play when other participants join or leave the // Disables the sounds that play when other participants join or leave the
// conference (if set to true, these sounds will not be played). // conference (if set to true, these sounds will not be played).
// disableJoinLeaveSounds: false, // disableJoinLeaveSounds: false,
// DEPRECATED! Use `disabledSounds` instead.
// Disables the sounds that play when a chat message is received.
// disableIncomingMessageSound: false,
// Information for the chrome extension banner // Information for the chrome extension banner
// chromeExtensionBanner: { // chromeExtensionBanner: {
// // The chrome extension to be installed address // // The chrome extension to be installed address
@ -587,8 +850,8 @@ var config = {
// localRecording: { // localRecording: {
// Enables local recording. // Enables local recording.
// Additionally, 'localrecording' (all lowercase) needs to be added to // Additionally, 'localrecording' (all lowercase) needs to be added to
// TOOLBAR_BUTTONS in interface_config.js for the Local Recording // the `toolbarButtons`-array for the Local Recording button to show up
// button to show up on the toolbar. // on the toolbar.
// //
// enabled: true, // enabled: true,
// //
@ -597,6 +860,10 @@ var config = {
// format: 'flac' // format: 'flac'
// //
// },
// e2ee: {
// labels,
// externallyManagedKey: false
// }, // },
// Options related to end-to-end (participant to participant) ping. // Options related to end-to-end (participant to participant) ping.
@ -651,7 +918,9 @@ var config = {
// Options related to the remote participant menu. // Options related to the remote participant menu.
// remoteVideoMenu: { // remoteVideoMenu: {
// // If set to true the 'Kick out' button will be disabled. // // If set to true the 'Kick out' button will be disabled.
// disableKick: true // disableKick: true,
// // If set to true the 'Grant moderator' button will be disabled.
// disableGrantModerator: true
// }, // },
// If set to true all muting operations of remote participants will be disabled. // If set to true all muting operations of remote participants will be disabled.
@ -663,8 +932,11 @@ var config = {
/** /**
External API url used to receive branding specific information. External API url used to receive branding specific information.
If there is no url set or there are missing fields, the defaults are applied. If there is no url set or there are missing fields, the defaults are applied.
The config file should be in JSON.
None of the fields are mandatory and the response must have the shape: None of the fields are mandatory and the response must have the shape:
{ {
// The domain url to apply (will replace the domain in the sharing conference link/embed section)
inviteDomain: 'example-company.org,
// The hex value for the colour used as background // The hex value for the colour used as background
backgroundColor: '#fff', backgroundColor: '#fff',
// The url for the image used as background // The url for the image used as background
@ -672,11 +944,55 @@ var config = {
// The anchor url used when clicking the logo image // The anchor url used when clicking the logo image
logoClickUrl: 'https://example-company.org', logoClickUrl: 'https://example-company.org',
// The url used for the image used as logo // The url used for the image used as logo
logoImageUrl: 'https://example.com/logo-img.png' logoImageUrl: 'https://example.com/logo-img.png',
// Overwrite for pool of background images for avatars
avatarBackgrounds: ['url(https://example.com/avatar-background-1.png)', '#FFF'],
// The lobby/prejoin screen background
premeetingBackground: 'url(https://example.com/premeeting-background.png)',
// A list of images that can be used as video backgrounds.
// When this field is present, the default images will be replaced with those provided.
virtualBackgrounds: ['https://example.com/img.jpg'],
// Object containing a theme's properties. It also supports partial overwrites of the main theme.
// For a list of all possible theme tokens and their current defaults, please check:
// https://github.com/jitsi/jitsi-meet/tree/master/resources/custom-theme/custom-theme.json
// For a short explanations on each of the tokens, please check:
// https://github.com/jitsi/jitsi-meet/blob/master/react/features/base/ui/Tokens.js
// IMPORTANT!: This is work in progress so many of the various tokens are not yet applied in code
// or they are partially applied.
customTheme: {
palette: {
ui01: "orange !important",
ui02: "maroon",
surface02: 'darkgreen',
ui03: "violet",
ui04: "magenta",
ui05: "blueviolet",
field02Hover: 'red',
action01: 'green',
action01Hover: 'lightgreen',
action02Disabled: 'beige',
success02: 'cadetblue',
action02Hover: 'aliceblue'
},
typography: {
labelRegular: {
fontSize: 25,
lineHeight: 30,
fontWeight: 500
}
}
}
} }
*/ */
// dynamicBrandingUrl: '', // dynamicBrandingUrl: '',
// When true the user cannot add more images to be used as virtual background.
// Only the default ones from will be available.
// disableAddingBackgroundImages: false,
// Disables using screensharing as virtual background.
// disableScreensharingVirtualBackground: false,
// Sets the background transparency level. '0' is fully transparent, '1' is opaque. // Sets the background transparency level. '0' is fully transparent, '1' is opaque.
// backgroundAlpha: 1, // backgroundAlpha: 1,
@ -688,12 +1004,35 @@ var config = {
// If true, tile view will not be enabled automatically when the participants count threshold is reached. // If true, tile view will not be enabled automatically when the participants count threshold is reached.
// disableTileView: true, // disableTileView: true,
// If true, the tiles will be displayed contained within the available space rather than enlarged to cover it.
// disableTileEnlargement: true,
// Controls the visibility and behavior of the top header conference info labels.
// If a label's id is not in any of the 2 arrays, it will not be visible at all on the header.
// conferenceInfo: {
// // those labels will not be hidden in tandem with the toolbox.
// alwaysVisible: ['recording', 'local-recording'],
// // those labels will be auto-hidden in tandem with the toolbox buttons.
// autoHide: [
// 'subject',
// 'conference-timer',
// 'participants-count',
// 'e2ee',
// 'transcribing',
// 'video-quality',
// 'insecure-room'
// ]
// },
// Hides the conference subject // Hides the conference subject
// hideConferenceSubject: true, // hideConferenceSubject: true,
// Hides the conference timer. // Hides the conference timer.
// hideConferenceTimer: true, // hideConferenceTimer: true,
// Hides the recording label
// hideRecordingLabel: false,
// Hides the participants stats // Hides the participants stats
// hideParticipantsStats: true, // hideParticipantsStats: true,
@ -705,6 +1044,13 @@ var config = {
// is not persisting the local storage inside the iframe. // is not persisting the local storage inside the iframe.
// useHostPageLocalStorage: true, // useHostPageLocalStorage: true,
// etherpad ("shared document") integration.
//
// If set, add a "Open shared document" link to the bottom right menu that
// will open an etherpad document.
// etherpad_base: 'https://your-etherpad-installati.on/p/',
// List of undocumented settings used in jitsi-meet // List of undocumented settings used in jitsi-meet
/** /**
_immediateReloadThreshold _immediateReloadThreshold
@ -717,8 +1063,8 @@ var config = {
dialOutCodesUrl dialOutCodesUrl
disableRemoteControl disableRemoteControl
displayJids displayJids
etherpad_base
externalConnectUrl externalConnectUrl
e2eeLabels
firefox_fake_device firefox_fake_device
googleApiApplicationClientID googleApiApplicationClientID
iAmRecorder iAmRecorder
@ -760,6 +1106,11 @@ var config = {
websocketKeepAliveUrl websocketKeepAliveUrl
*/ */
/**
* Default interval (milliseconds) for triggering mouseMoved iframe API event
*/
mouseMoveCallbackInterval: 1000,
/** /**
Use this array to configure which notifications will be shown to the user Use this array to configure which notifications will be shown to the user
The items correspond to the title or description key of that notification The items correspond to the title or description key of that notification
@ -793,11 +1144,19 @@ var config = {
// 'lobby.notificationTitle', // shown when lobby is toggled and when join requests are allowed / denied // 'lobby.notificationTitle', // shown when lobby is toggled and when join requests are allowed / denied
// 'localRecording.localRecording', // shown when a local recording is started // 'localRecording.localRecording', // shown when a local recording is started
// 'notify.disconnected', // shown when a participant has left // 'notify.disconnected', // shown when a participant has left
// 'notify.connectedOneMember', // show when a participant joined
// 'notify.connectedTwoMembers', // show when two participants joined simultaneously
// 'notify.connectedThreePlusMembers', // show when more than 2 participants joined simultaneously
// 'notify.grantedTo', // shown when moderator rights were granted to a participant // 'notify.grantedTo', // shown when moderator rights were granted to a participant
// 'notify.invitedOneMember', // shown when 1 participant has been invited // 'notify.invitedOneMember', // shown when 1 participant has been invited
// 'notify.invitedThreePlusMembers', // shown when 3+ participants have been invited // 'notify.invitedThreePlusMembers', // shown when 3+ participants have been invited
// 'notify.invitedTwoMembers', // shown when 2 participants have been invited // 'notify.invitedTwoMembers', // shown when 2 participants have been invited
// 'notify.kickParticipant', // shown when a participant is kicked // 'notify.kickParticipant', // shown when a participant is kicked
// 'notify.moderationStartedTitle', // shown when AV moderation is activated
// 'notify.moderationStoppedTitle', // shown when AV moderation is deactivated
// 'notify.moderationInEffectTitle', // shown when user attempts to unmute audio during AV moderation
// 'notify.moderationInEffectVideoTitle', // shown when user attempts to enable video during AV moderation
// 'notify.moderationInEffectCSTitle', // shown when user attempts to share content during AV moderation
// 'notify.mutedRemotelyTitle', // shown when user is muted by a remote party // 'notify.mutedRemotelyTitle', // shown when user is muted by a remote party
// 'notify.mutedTitle', // shown when user has been muted upon joining, // 'notify.mutedTitle', // shown when user has been muted upon joining,
// 'notify.newDeviceAudioTitle', // prompts the user to use a newly detected audio device // 'notify.newDeviceAudioTitle', // prompts the user to use a newly detected audio device
@ -806,6 +1165,7 @@ var config = {
// 'notify.passwordSetRemotely', // shown when a password has been set remotely // 'notify.passwordSetRemotely', // shown when a password has been set remotely
// 'notify.raisedHand', // shown when a partcipant used raise hand, // 'notify.raisedHand', // shown when a partcipant used raise hand,
// 'notify.startSilentTitle', // shown when user joined with no audio // 'notify.startSilentTitle', // shown when user joined with no audio
// 'notify.unmute', // shown to moderator when user raises hand during AV moderation
// 'prejoin.errorDialOut', // 'prejoin.errorDialOut',
// 'prejoin.errorDialOutDisconnected', // 'prejoin.errorDialOutDisconnected',
// 'prejoin.errorDialOutFailed', // 'prejoin.errorDialOutFailed',
@ -819,7 +1179,13 @@ var config = {
// 'toolbar.noisyAudioInputTitle', // shown when noise is detected for the current microphone // 'toolbar.noisyAudioInputTitle', // shown when noise is detected for the current microphone
// 'toolbar.talkWhileMutedPopup', // shown when user tries to speak while muted // 'toolbar.talkWhileMutedPopup', // shown when user tries to speak while muted
// 'transcribing.failedToStart' // shown when transcribing fails to start // 'transcribing.failedToStart' // shown when transcribing fails to start
// ] // ],
// Prevent the filmstrip from autohiding when screen width is under a certain threshold
// disableFilmstripAutohiding: false,
// Specifies whether the chat emoticons are disabled or not
// disableChatSmileys: false,
// Allow all above example options to include a trailing comma and // Allow all above example options to include a trailing comma and
// prevent fear when commenting out the last value. // prevent fear when commenting out the last value.

View file

@ -36,42 +36,13 @@ var interfaceConfig = {
BRAND_WATERMARK_LINK: '', BRAND_WATERMARK_LINK: '',
CLOSE_PAGE_GUEST_HINT: false, // A html text to be shown to guests on the close page, false disables it CLOSE_PAGE_GUEST_HINT: false, // A html text to be shown to guests on the close page, false disables it
/**
* Whether the connection indicator icon should hide itself based on
* connection strength. If true, the connection indicator will remain
* displayed while the participant has a weak connection and will hide
* itself after the CONNECTION_INDICATOR_HIDE_TIMEOUT when the connection is
* strong.
*
* @type {boolean}
*/
CONNECTION_INDICATOR_AUTO_HIDE_ENABLED: true,
/**
* How long the connection indicator should remain displayed before hiding.
* Used in conjunction with CONNECTION_INDICATOR_AUTOHIDE_ENABLED.
*
* @type {number}
*/
CONNECTION_INDICATOR_AUTO_HIDE_TIMEOUT: 5000,
/**
* If true, hides the connection indicators completely.
*
* @type {boolean}
*/
CONNECTION_INDICATOR_DISABLED: false,
DEFAULT_BACKGROUND: '#474747', DEFAULT_BACKGROUND: '#474747',
DEFAULT_LOCAL_DISPLAY_NAME: 'me',
DEFAULT_LOGO_URL: '${BRANDING_WATERMARK_PATH}', DEFAULT_LOGO_URL: '${BRANDING_WATERMARK_PATH}',
DEFAULT_REMOTE_DISPLAY_NAME: 'Fellow Jitster',
DEFAULT_WELCOME_PAGE_LOGO_URL: '${BRANDING_WATERMARK_PATH}', DEFAULT_WELCOME_PAGE_LOGO_URL: '${BRANDING_WATERMARK_PATH}',
DISABLE_DOMINANT_SPEAKER_INDICATOR: false, DISABLE_DOMINANT_SPEAKER_INDICATOR: false,
DISABLE_FOCUS_INDICATOR: false,
/** /**
* If true, notifications regarding joining/leaving are no longer displayed. * If true, notifications regarding joining/leaving are no longer displayed.
*/ */
@ -127,7 +98,6 @@ var interfaceConfig = {
*/ */
HIDE_INVITE_MORE_HEADER: false, HIDE_INVITE_MORE_HEADER: false,
INITIAL_TOOLBAR_TIMEOUT: 20000,
JITSI_WATERMARK_LINK: 'https://jitsi.org', JITSI_WATERMARK_LINK: 'https://jitsi.org',
LANG_DETECTION: true, // Allow i18n to detect the system language LANG_DETECTION: true, // Allow i18n to detect the system language
@ -213,16 +183,6 @@ var interfaceConfig = {
*/ */
SUPPORT_URL: 'https://community.jitsi.org/', SUPPORT_URL: 'https://community.jitsi.org/',
TOOLBAR_ALWAYS_VISIBLE: false,
/**
* DEPRECATED!
* This config was moved to config.js as \`toolbarButtons\`.
*/
// TOOLBAR_BUTTONS: [],
TOOLBAR_TIMEOUT: 4000,
// Browsers, in addition to those which do not fully support WebRTC, that // Browsers, in addition to those which do not fully support WebRTC, that
// are not supported and should show the unsupported browser page. // are not supported and should show the unsupported browser page.
UNSUPPORTED_BROWSERS: [], UNSUPPORTED_BROWSERS: [],
@ -274,19 +234,40 @@ var interfaceConfig = {
*/ */
// ANDROID_APP_PACKAGE: 'org.jitsi.meet', // ANDROID_APP_PACKAGE: 'org.jitsi.meet',
/**
* Override the behavior of some notifications to remain displayed until
* explicitly dismissed through a user action. The value is how long, in
* milliseconds, those notifications should remain displayed.
*/
// ENFORCE_NOTIFICATION_AUTO_DISMISS_TIMEOUT: 15000,
// List of undocumented settings // List of undocumented settings
/** /**
INDICATOR_FONT_SIZES INDICATOR_FONT_SIZES
PHONE_NUMBER_REGEX PHONE_NUMBER_REGEX
*/ */
// -----------------DEPRECATED CONFIGS BELOW THIS LINE-----------------------------
// Connection indicators (
// CONNECTION_INDICATOR_AUTO_HIDE_ENABLED,
// CONNECTION_INDICATOR_AUTO_HIDE_TIMEOUT,
// CONNECTION_INDICATOR_DISABLED) got moved to config.js.
// Please use disableModeratorIndicator from config.js
// DISABLE_FOCUS_INDICATOR: false,
// Please use defaultLocalDisplayName from config.js
// DEFAULT_LOCAL_DISPLAY_NAME: 'me',
// Please use defaultRemoteDisplayName from config.js
// DEFAULT_REMOTE_DISPLAY_NAME: 'Fellow Jitster',
// Moved to config.js as \`toolbarConfig.initialTimeout\`.
// INITIAL_TOOLBAR_TIMEOUT: 20000,
// Moved to config.js as \`toolbarConfig.alwaysVisible\`.
// TOOLBAR_ALWAYS_VISIBLE: false,
// This config was moved to config.js as \`toolbarButtons\`.
// TOOLBAR_BUTTONS: [],
// Moved to config.js as \`toolbarConfig.timeout\`.
// TOOLBAR_TIMEOUT: 4000,
// Allow all above example options to include a trailing comma and // Allow all above example options to include a trailing comma and
// prevent fear when commenting out the last value. // prevent fear when commenting out the last value.
// eslint-disable-next-line sort-keys // eslint-disable-next-line sort-keys

View file

@ -25,42 +25,13 @@ var interfaceConfig = {
BRAND_WATERMARK_LINK: '', BRAND_WATERMARK_LINK: '',
CLOSE_PAGE_GUEST_HINT: false, // A html text to be shown to guests on the close page, false disables it CLOSE_PAGE_GUEST_HINT: false, // A html text to be shown to guests on the close page, false disables it
/**
* Whether the connection indicator icon should hide itself based on
* connection strength. If true, the connection indicator will remain
* displayed while the participant has a weak connection and will hide
* itself after the CONNECTION_INDICATOR_HIDE_TIMEOUT when the connection is
* strong.
*
* @type {boolean}
*/
CONNECTION_INDICATOR_AUTO_HIDE_ENABLED: true,
/**
* How long the connection indicator should remain displayed before hiding.
* Used in conjunction with CONNECTION_INDICATOR_AUTOHIDE_ENABLED.
*
* @type {number}
*/
CONNECTION_INDICATOR_AUTO_HIDE_TIMEOUT: 5000,
/**
* If true, hides the connection indicators completely.
*
* @type {boolean}
*/
CONNECTION_INDICATOR_DISABLED: false,
DEFAULT_BACKGROUND: '#474747', DEFAULT_BACKGROUND: '#474747',
DEFAULT_LOCAL_DISPLAY_NAME: 'me',
DEFAULT_LOGO_URL: 'images/watermark.svg', DEFAULT_LOGO_URL: 'images/watermark.svg',
DEFAULT_REMOTE_DISPLAY_NAME: 'Fellow Jitster',
DEFAULT_WELCOME_PAGE_LOGO_URL: 'images/watermark.svg', DEFAULT_WELCOME_PAGE_LOGO_URL: 'images/watermark.svg',
DISABLE_DOMINANT_SPEAKER_INDICATOR: false, DISABLE_DOMINANT_SPEAKER_INDICATOR: false,
DISABLE_FOCUS_INDICATOR: false,
/** /**
* If true, notifications regarding joining/leaving are no longer displayed. * If true, notifications regarding joining/leaving are no longer displayed.
*/ */
@ -116,7 +87,6 @@ var interfaceConfig = {
*/ */
HIDE_INVITE_MORE_HEADER: false, HIDE_INVITE_MORE_HEADER: false,
INITIAL_TOOLBAR_TIMEOUT: 20000,
JITSI_WATERMARK_LINK: 'https://jitsi.org', JITSI_WATERMARK_LINK: 'https://jitsi.org',
LANG_DETECTION: true, // Allow i18n to detect the system language LANG_DETECTION: true, // Allow i18n to detect the system language
@ -202,16 +172,6 @@ var interfaceConfig = {
*/ */
SUPPORT_URL: 'https://community.jitsi.org/', SUPPORT_URL: 'https://community.jitsi.org/',
TOOLBAR_ALWAYS_VISIBLE: false,
/**
* DEPRECATED!
* This config was moved to config.js as `toolbarButtons`.
*/
// TOOLBAR_BUTTONS: [],
TOOLBAR_TIMEOUT: 4000,
// Browsers, in addition to those which do not fully support WebRTC, that // Browsers, in addition to those which do not fully support WebRTC, that
// are not supported and should show the unsupported browser page. // are not supported and should show the unsupported browser page.
UNSUPPORTED_BROWSERS: [], UNSUPPORTED_BROWSERS: [],
@ -263,19 +223,40 @@ var interfaceConfig = {
*/ */
// ANDROID_APP_PACKAGE: 'org.jitsi.meet', // ANDROID_APP_PACKAGE: 'org.jitsi.meet',
/**
* Override the behavior of some notifications to remain displayed until
* explicitly dismissed through a user action. The value is how long, in
* milliseconds, those notifications should remain displayed.
*/
// ENFORCE_NOTIFICATION_AUTO_DISMISS_TIMEOUT: 15000,
// List of undocumented settings // List of undocumented settings
/** /**
INDICATOR_FONT_SIZES INDICATOR_FONT_SIZES
PHONE_NUMBER_REGEX PHONE_NUMBER_REGEX
*/ */
// -----------------DEPRECATED CONFIGS BELOW THIS LINE-----------------------------
// Connection indicators (
// CONNECTION_INDICATOR_AUTO_HIDE_ENABLED,
// CONNECTION_INDICATOR_AUTO_HIDE_TIMEOUT,
// CONNECTION_INDICATOR_DISABLED) got moved to config.js.
// Please use disableModeratorIndicator from config.js
// DISABLE_FOCUS_INDICATOR: false,
// Please use defaultLocalDisplayName from config.js
// DEFAULT_LOCAL_DISPLAY_NAME: 'me',
// Please use defaultRemoteDisplayName from config.js
// DEFAULT_REMOTE_DISPLAY_NAME: 'Fellow Jitster',
// Moved to config.js as `toolbarConfig.initialTimeout`.
// INITIAL_TOOLBAR_TIMEOUT: 20000,
// Moved to config.js as `toolbarConfig.alwaysVisible`.
// TOOLBAR_ALWAYS_VISIBLE: false,
// This config was moved to config.js as `toolbarButtons`.
// TOOLBAR_BUTTONS: [],
// Moved to config.js as `toolbarConfig.timeout`.
// TOOLBAR_TIMEOUT: 4000,
// Allow all above example options to include a trailing comma and // Allow all above example options to include a trailing comma and
// prevent fear when commenting out the last value. // prevent fear when commenting out the last value.
// eslint-disable-next-line sort-keys // eslint-disable-next-line sort-keys

View file

@ -2,6 +2,14 @@
# shellcheck disable=SC2034 # This is intended to be included # shellcheck disable=SC2034 # This is intended to be included
JITSI_NGINX_CONFIG="$(cat <<EOF JITSI_NGINX_CONFIG="$(cat <<EOF
# Jitsi uses following lines by default, in our cdist types they must be commented
# out as we already set it with __jitsi_meet in the default server config.
#server_names_hash_bucket_size 64;
#
#types {
## nginx's default mime.types doesn't include a mapping for wasm
# application/wasm wasm;
#}
server { server {
listen 80; listen 80;
listen [::]:80; listen [::]:80;
@ -20,7 +28,7 @@ server {
include snippets/acme-challenge.conf; include snippets/acme-challenge.conf;
# Mozilla Guideline v5.4, nginx 1.17.7, OpenSSL 1.1.1d, intermediate configuration # Mozilla Guideline v5.4, nginx 1.17.7, OpenSSL 1.1.1d, intermediate configuration
ssl_protocols TLSv1.2 TLSv1.3; ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off; ssl_prefer_server_ciphers off;
@ -30,6 +38,7 @@ server {
ssl_session_tickets off; ssl_session_tickets off;
add_header Strict-Transport-Security "max-age=63072000" always; add_header Strict-Transport-Security "max-age=63072000" always;
set \$prefix "";
ssl_certificate /etc/letsencrypt/live/${DOMAIN}/fullchain.pem; ssl_certificate /etc/letsencrypt/live/${DOMAIN}/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/${DOMAIN}/privkey.pem; ssl_certificate_key /etc/letsencrypt/live/${DOMAIN}/privkey.pem;
@ -71,7 +80,7 @@ server {
alias /usr/share/jitsi-meet/libs/external_api.min.js; alias /usr/share/jitsi-meet/libs/external_api.min.js;
} }
#ensure all static content can always be found first # ensure all static content can always be found first
location ~ ^/(libs|css|static|images|fonts|lang|sounds|connection_optimization|.well-known)/(.*)\$ location ~ ^/(libs|css|static|images|fonts|lang|sounds|connection_optimization|.well-known)/(.*)\$
{ {
add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Origin' '*';
@ -85,7 +94,9 @@ server {
# BOSH # BOSH
location = /http-bind { location = /http-bind {
proxy_pass http://localhost:5280/http-bind; # We are using 127.0.0.1, because we are not specifying a resolver
# otherwise nginx will fail to resolve 'localhost'
proxy_pass http://127.0.0.1:5280/http-bind?prefix=\$prefix&\$args;
proxy_set_header X-Forwarded-For \$remote_addr; proxy_set_header X-Forwarded-For \$remote_addr;
# Prevision for 'multi-domain' jitsi instances # Prevision for 'multi-domain' jitsi instances
# https://community.jitsi.org/t/same-jitsi-meet-instance-with-multiple-domain-names/17391 # https://community.jitsi.org/t/same-jitsi-meet-instance-with-multiple-domain-names/17391
@ -113,6 +124,15 @@ server {
tcp_nodelay on; tcp_nodelay on;
} }
# load test minimal client, uncomment when used
#location ~ ^/_load-test/([^/?&:'"]+)\$ {
# rewrite ^/_load-test/(.*)\$ /load-test/index.html break;
#}
#location ~ ^/_load-test/libs/(.*)\$ {
# add_header 'Access-Control-Allow-Origin' '*';
# alias /usr/share/jitsi-meet/load-test/libs/\$1;
#}
location ~ ^/([^/?&:'"]+)\$ { location ~ ^/([^/?&:'"]+)\$ {
try_files \$uri @root_path; try_files \$uri @root_path;
} }
@ -129,13 +149,6 @@ server {
alias /etc/jitsi/meet/jitsi-meet.example.com-config.js; alias /etc/jitsi/meet/jitsi-meet.example.com-config.js;
} }
#Anything that didn't match above, and isn't a real file, assume it's a room name and redirect to /
location ~ ^/([^/?&:'"]+)/(.*)\$ {
set \$subdomain "\$1.";
set \$subdir "\$1/";
rewrite ^/([^/?&:'"]+)/(.*)\$ /\$2;
}
# BOSH for subdomains # BOSH for subdomains
location ~ ^/([^/?&:'"]+)/http-bind { location ~ ^/([^/?&:'"]+)/http-bind {
set \$subdomain "\$1."; set \$subdomain "\$1.";
@ -153,6 +166,13 @@ server {
rewrite ^/(.*)\$ /xmpp-websocket; rewrite ^/(.*)\$ /xmpp-websocket;
} }
# Anything that didn't match above, and isn't a real file, assume it's a room name and redirect to /
location ~ ^/([^/?&:'"]+)/(.*)\$ {
set \$subdomain "\$1.";
set \$subdir "\$1/";
rewrite ^/([^/?&:'"]+)/(.*)\$ /\$2;
}
} }
EOF EOF
)" )"

View file

@ -1,5 +1,9 @@
server_names_hash_bucket_size 64; server_names_hash_bucket_size 64;
types {
# nginx's default mime.types doesn't include a mapping for wasm
application/wasm wasm;
}
server { server {
listen 80; listen 80;
listen [::]:80; listen [::]:80;
@ -21,7 +25,7 @@ server {
listen [::]:443 ssl; listen [::]:443 ssl;
server_name jitsi-meet.example.com; server_name jitsi-meet.example.com;
# Mozilla Guideline v5.4, nginx 1.17.7, OpenSSL 1.1.1d, intermediate configuration # Mozilla Guideline v5.4, nginx 1.17.7, OpenSSL 1.1.1d, intermediate configuration
ssl_protocols TLSv1.2 TLSv1.3; ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off; ssl_prefer_server_ciphers off;
@ -31,6 +35,7 @@ server {
ssl_session_tickets off; ssl_session_tickets off;
add_header Strict-Transport-Security "max-age=63072000" always; add_header Strict-Transport-Security "max-age=63072000" always;
set $prefix "";
ssl_certificate /etc/jitsi/meet/jitsi-meet.example.com.crt; ssl_certificate /etc/jitsi/meet/jitsi-meet.example.com.crt;
ssl_certificate_key /etc/jitsi/meet/jitsi-meet.example.com.key; ssl_certificate_key /etc/jitsi/meet/jitsi-meet.example.com.key;
@ -58,7 +63,7 @@ server {
alias /usr/share/jitsi-meet/libs/external_api.min.js; alias /usr/share/jitsi-meet/libs/external_api.min.js;
} }
#ensure all static content can always be found first # ensure all static content can always be found first
location ~ ^/(libs|css|static|images|fonts|lang|sounds|connection_optimization|.well-known)/(.*)$ location ~ ^/(libs|css|static|images|fonts|lang|sounds|connection_optimization|.well-known)/(.*)$
{ {
add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Origin' '*';
@ -72,7 +77,7 @@ server {
# BOSH # BOSH
location = /http-bind { location = /http-bind {
proxy_pass http://localhost:5280/http-bind; proxy_pass http://127.0.0.1:5280/http-bind?prefix=$prefix&$args;
proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host; proxy_set_header Host $http_host;
} }
@ -96,6 +101,15 @@ server {
tcp_nodelay on; tcp_nodelay on;
} }
# load test minimal client, uncomment when used
#location ~ ^/_load-test/([^/?&:'"]+)$ {
# rewrite ^/_load-test/(.*)$ /load-test/index.html break;
#}
#location ~ ^/_load-test/libs/(.*)$ {
# add_header 'Access-Control-Allow-Origin' '*';
# alias /usr/share/jitsi-meet/load-test/libs/$1;
#}
location ~ ^/([^/?&:'"]+)$ { location ~ ^/([^/?&:'"]+)$ {
try_files $uri @root_path; try_files $uri @root_path;
} }
@ -112,13 +126,6 @@ server {
alias /etc/jitsi/meet/jitsi-meet.example.com-config.js; alias /etc/jitsi/meet/jitsi-meet.example.com-config.js;
} }
#Anything that didn't match above, and isn't a real file, assume it's a room name and redirect to /
location ~ ^/([^/?&:'"]+)/(.*)$ {
set $subdomain "$1.";
set $subdir "$1/";
rewrite ^/([^/?&:'"]+)/(.*)$ /$2;
}
# BOSH for subdomains # BOSH for subdomains
location ~ ^/([^/?&:'"]+)/http-bind { location ~ ^/([^/?&:'"]+)/http-bind {
set $subdomain "$1."; set $subdomain "$1.";
@ -136,4 +143,11 @@ server {
rewrite ^/(.*)$ /xmpp-websocket; rewrite ^/(.*)$ /xmpp-websocket;
} }
# Anything that didn't match above, and isn't a real file, assume it's a room name and redirect to /
location ~ ^/([^/?&:'"]+)/(.*)$ {
set $subdomain "$1.";
set $subdir "$1/";
rewrite ^/([^/?&:'"]+)/(.*)$ /$2;
}
} }