public: app: mobileFontSize: 16px desktopFontSize: 14px audioChatNotification: false # Shows the audio modal when user joins the room. The audio modal prompts # user to select an option ("Microphone" and/or "Listen only") for joining # audio autoJoin: true # Disables the listen only option in audio modal. listenOnlyMode: true forceListenOnly: false # Skips the echo test when connecting with microphone. skipCheck: false # Skips the echo test when connecting with microphone right after user # joins the room the first time. Subsequent joins to microphone won't # have echo test skipped, for example if user leaves and joins the mic # again or reloading page and joining mic again. # This setting won't have effect if skipCheck = true skipCheckOnJoin: false # # Allow users to change microphone/speaker dynamically # The device is changed immediately, without the need to rejoin # audio. Default value is true # Firefox users: if no output devices is shown, you may set the flag # "media.setsinkid.enabled" to make it work properly enableDynamicAudioDeviceSelection: true # skipEchoTestIfPreviousDevice: false clientTitle: BigBlueButton appName: BigBlueButton HTML5 Client bbbServerVersion: HTML5_FULL_BBB_VERSION displayBbbServerVersion: true copyright: '©2024 BigBlueButton Inc.' html5ClientBuild: HTML5_CLIENT_VERSION helpLink: https://bigbluebutton.org/html5/ delayForUnmountOfSharedNote: 120000 bbbTabletApp: enabled: true iosAppStoreUrl: 'https://apps.apple.com/us/app/bigbluebutton-tablet/id1641156756' iosAppUrlScheme: 'bigbluebutton-tablet' lockOnJoin: true cdn: '' basename: '/html5client' # the base location of the BBB API. If you use a cluster setup with a load # balancer which hides the individual nodes, then this should be # https://bbb-host/bigbluebutton # If you run a traditional setup of multiple nodes behind scalelite and the # users see the hostnames of the individual nodes, you can leave this at the # default setting bbbWebBase: '/bigbluebutton' # If you run a cluster setup with a load balancer which hides the individual # nodes, then this should be set to https://bbb-host/learning-analytics-dashboard learningDashboardBase: '/learning-analytics-dashboard' # Use https URL of CSS file. Example: https://docs.bigbluebutton.org/administration/customize customStyleUrl: null darkTheme: enabled: true askForFeedbackOnLogout: false # the default logoutUrl matches window.location.origin i.e. bigbluebutton.org for demo.bigbluebutton.org # in some cases we want only custom logoutUrl to be used when provided on meeting create. Default value: true askForConfirmationOnLeave: true wakeLock: enabled: true allowDefaultLogoutUrl: true dynamicGuestPolicy: true enableGuestLobbyMessage: true guestPolicyExtraAllowOptions: false alwaysShowWaitingRoomUI: true enableLimitOfViewersInWebcam: false enableMultipleCameras: true enableCameraAsContent: true # Allow users to open webcam video modal/preview when video is already # active. This also allows to change virtual backgrounds without # restarting webcam. enableWebcamSelectorButton: true enableTalkingIndicator: true enableCameraBrightness: true mirrorOwnWebcam: false viewersInWebcam: 8 ipv4FallbackDomain: '' allowLogout: true allowFullscreen: true preloadNextSlides: 2 warnAboutUnsavedContentOnMeetingEnd: false # Flag used to enable apollo dev tools in production enableApolloDevTools: false # Allows users to enable automatic transcription when joining a meeting. # Automatic transcription requires the browser to support the web # speech API, which involves sending voice data to third-party servers! # https://developer.mozilla.org/en-US/docs/Web/API/Web_Speech_API/Using_the_Web_Speech_API#speech_recognition audioCaptions: enabled: false alwaysVisible: false # mobile: - controls speech transcription availability on mobile mobile: false # provider: [webspeech, vosk, gladia] provider: webspeech language: # Available languages will depend on the transcription service # Google: https://cloud.google.com/speech-to-text/docs/speech-to-text-supported-languages # Gladia: https://docs.gladia.io/chapters/speech-to-text-api/pages/languages#supported-languages available: # - de-DE - en-US - es-ES - fr-FR # - hi-IN # - it-IT # - ja-JP - pt-BR # - ru-RU # - zh-CN # If true, automatically uses the below locale field content as transcription language # and the language selector in audio modal won't show up! forceLocale: false # If true, the default selected value for language selector in audio modal # is the below locale field content defaultSelectLocale: true # Possible Values: # browserLanguage: to set browser language # [en-US, es-ES, pt-BR,...]: to set a specific locale # disabled: to set disabled locale: disabled mutedAlert: enabled: true interval: 200 threshold: -50 duration: 4000 remainingTimeThreshold: 30 remainingTimeAlertThresholdArray: [1,5] enableDebugWindow: true # Warning: increasing the limit of breakout rooms per meeting # can generate excessive overhead to the server. We recommend # this value to be kept under 16. breakouts: allowUserChooseRoomByDefault: false captureWhiteboardByDefault: false captureSharedNotesByDefault: false sendInvitationToAssignedModeratorsByDefault: false breakoutRoomLimit: 16 allowPresentationManagementInBreakouts: true # https://github.com/bigbluebutton/bigbluebutton/pull/10826 customHeartbeat: false customHeartbeatUseDataFrames: true showAllAvailableLocales: true # Show "Audio Filters for Microphone" option in settings menu. # When set to true, users are able to enable/disable microphone constraints, # otherwise default values for 'microphoneConstraints' option # are used. # For more info, see 'microphoneConstraints' option in this config. # If not set, default value is true. showAudioFilters: true reactionsButton: enabled: true emojiRain: # If true, new reactions will be activated enabled: false # Can set the throttle, the number of emojis that will be displayed and their size intervalEmojis: 2000 numberOfEmojis: 5 # emojiSize: size of the emoji in 'em' units emojiSize: 2 # If enabled, before joining microphone the client will perform a trickle # ICE against Kurento and use the information about successful # candidate-pairs to filter out local candidates in SIP.js's SDP. # Try enabling this setting in scenarios where the listenonly mode works, # but microphone doesn't (for example, when using VPN). # For compatibility check "Browser compatibility" section in: # https://developer.mozilla.org/en-US/docs/Web/API/RTCDtlsTransport/iceTransport # This is an EXPERIMENTAL setting and the default value is false # experimentalUseKmsTrickleIceForMicrophone: false # # Shows stats about download and upload rates, audio jitter, lost packets # and turn information enableNetworkStats: true # Enable the button to allow users to copy network stats to clipboard enableCopyNetworkStatsButton: true # where should client settings be stored? if you run a single BBB server or # a cluster with a reverse proxy in front of it, you may set this to 'local' # See See https://docs.bigbluebutton.org/administration/cluster-proxy # allowed values: # 'session' -> settings are stored in browser sessionStorage # 'local' -> settings are stored in browser localStorage userSettingsStorage: session defaultSettings: application: selectedLayout: 'custom' animations: true chatAudioAlerts: false chatPushAlerts: false userJoinAudioAlerts: false userJoinPushAlerts: false userLeaveAudioAlerts: false userLeavePushAlerts: false raiseHandAudioAlerts: true raiseHandPushAlerts: true guestWaitingAudioAlerts: true guestWaitingPushAlerts: true wakeLock: true paginationEnabled: true whiteboardToolbarAutoHide: false pushToTalkEnabled: false autoCloseReactionsBar: true directLeaveButton: true darkTheme: false # set a custom color for talking highlight in webcam webcamBorderHighlightColor: [] # fallbackLocale: if the locale the client is loaded in does not have a # translation a string, it will use the translation from the locale # specified in fallbackLocale. Note that fallbackLocale should be a # 100% translated locale for best user experience fallbackLocale: en # overrideLocale (default is null): if set (for example to 'de') will # force all clients to display the German translations of the strings. # Users can individually set their preferred locale through Settings, # but on first page load overrideLocale will trump the browser's # preferred locale overrideLocale: null #Audio constraints for microphone. Use this to control browser's #filters, such as AGC (Auto Gain Control) , Echo Cancellation, #Noise Suppression, etc. #For more deails, see: # https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints #Currently, google chrome sets {ideal: true} for autoGainControl, #echoCancellation and noiseSuppression, if not set. #The accepted value for each constraint is an object of type #https://developer.mozilla.org/en-US/docs/Web/API/ConstrainBoolean #These values are used as initial constraints for every new participant, #and can be changed by user in: Settings > Application > Microphone #Audio Filters. # microphoneConstraints: # autoGainControl: # ideal: true # echoCancellation: # ideal: true # noiseSuppression: # ideal: true audio: inputDeviceId: undefined outputDeviceId: undefined dataSaving: viewParticipantsWebcams: true viewScreenshare: true # Options that are sent to the transcription backed (only Gladia is supported for now) transcription: # Indicates if the transcription backend should include partial results partialUtterances: true # The minumum length (in seconds) an utterance has to have for we to use it minUtteranceLength: 1 shortcuts: openOptions: accesskey: O descId: openOptions toggleUserList: accesskey: U descId: toggleUserList toggleMute: accesskey: M descId: toggleMute joinAudio: accesskey: J descId: joinAudio leaveAudio: accesskey: L descId: leaveAudio togglePublicChat: accesskey: P descId: togglePublicChat hidePrivateChat: accesskey: H descId: hidePrivateChat closePrivateChat: accesskey: G descId: closePrivateChat raiseHand: accesskey: R descId: raiseHand openActions: accesskey: A descId: openActions openDebugWindow: accesskey: K descId: openDebugWindow branding: displayBrandingArea: true connectionTimeout: 60000 showHelpButton: true effectiveConnection: - critical - danger - warning # Whether the fallback mechanism should be used # when the locale string is empty. If false, the empty # string will be returned. fallbackOnEmptyLocaleString: true disableWebsocketFallback: true # Maximum number of bytes allowed in each mutation message payload. # Defaults to 10485760 (10MB) maxMutationPayloadSize: 10485760 # plugins: # - name: SamplePresentationToolbarPlugin # url: https:///plugins/SamplePresentationToolbarPlugin.js externalVideoPlayer: enabled: true kurento: wsUrl: HOST cameraWsOptions: # Valid for video-provider. Time (ms) before its WS connection times out # and tries to reconnect. wsConnectionTimeout: 4000 # maxRetries: max reconnection retries maxRetries: 7 # debug: console trace logging for video-provider's ws debug: false heartbeat: interval: 15000 delay: 3000 reconnectOnFailure: true # Time in milis to wait for the browser to return a gUM call (used in video-preview) gUMTimeout: 20000 # Controls whether ICE candidates should be signaled to bbb-webrtc-sfu. # Enable this if you want to use Kurento as the media server. signalCandidates: false # restartIce: controls whether ICE restarts should be signaled to bbb-webrtc-sfu # whenever peers of the selected type (audio, video, screenshare) transition # to failure states. Disabled by default (experimental). # restartIce..retries: number of ICE restart retries before giving up # (i.e.: throwing an error). Default is 1 for audio, 3 for video and screenshare. restartIce: audio: enabled: false retries: 1 video: enabled: false retries: 3 screenshare: enabled: false retries: 3 # traceLogs: - enable trace logs in SFU peers traceLogs: false cameraTimeouts: # Base camera timeout: used as the camera *sharing* timeout and # as the minimum camera subscribe reconnection timeout baseTimeout: 30000 # Max timeout: used as the max camera subscribe reconnection timeout. Each # subscribe reattempt increases the reconnection timer up to this maxTimeout: 60000 screenshare: showButtonForNonPresenters: false # Whether volume control should be allowed if screen sharing has audio enableVolumeControl: true # Experimental. True is the canonical behavior. Flip to false to reverse # the negotiation flow for subscribers. subscriberOffering: false # Experimental. Server wide configuration to choose which bbb-webrtc-sfu # media server adapter should be used for screen sharing. # Default is undefined, which means the default setting in bbb-webrtc-sfu # prevails (screenshareMediaServer). #mediaServer: Kurento bitrate: 1500 mediaTimeouts: maxConnectionAttempts: 2 # Base screen media timeout (send|recv) - first connections baseTimeout: 20000 # Base screen media timeout (send|recv) - re-connections baseReconnectionTimeout: 8000 # Max timeout: used as the max camera subscribe connection timeout. Each # subscribe reattempt increases the reconnection timer up to this maxTimeout: 25000 timeoutIncreaseFactor: 1.5 constraints: video: frameRate: ideal: 5 max: 10 width: max: 2560 height: max: 1600 audio: true # cameraProfiles is an array of: # - id: profile identifier # name: human-readable profile name # bitrate # hidden: whether this profile will be hidden in the video preview dropdown # constraints: a video media constraints dictionary (without the video key) cameraProfiles: # id: unique identifier of the profile # name: name of the profile visible to users # default: if this is the default profile which is pre-selected # bitrate: the average bitrate for used for a webcam stream # constraints: # # Optional constraints put on the requested video a browser MAY honor # # For a detailed list on possible values see: # # https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints # # Examples: # width: requested width of the camera stream # frameRate: requested framerate - id: low-u30 name: low-u30 bitrate: 30 hidden: true - id: low-u25 name: low-u25 bitrate: 40 hidden: true - id: low-u20 name: low-u20 bitrate: 50 hidden: true - id: low-u15 name: low-u15 bitrate: 70 hidden: true - id: low-u12 name: low-u12 bitrate: 90 hidden: true - id: low-u8 name: low-u8 bitrate: 100 hidden: true - id: low name: Low default: false bitrate: 100 - id: medium name: Medium default: true bitrate: 200 - id: high name: High default: false bitrate: 500 constraints: width: 1280 height: 720 frameRate: 15 - id: hd name: High definition default: false bitrate: 800 constraints: width: 1280 height: 720 frameRate: 30 - id: fhd name: Camera as content hidden: true default: false bitrate: 1500 constraints: width: 1920 height: 1080 enableScreensharing: true enableVideo: true enableVideoMenu: true enableVideoPin: true # Experimental. Server wide configuration to choose which bbb-webrtc-sfu # media server adapter should be used for listen only. # Default is undefined, which means the default setting in bbb-webrtc-sfu # prevails (listenOnlyMediaServer). #listenOnlyMediaServer: mediasoup # Experimental. Server wide configuration to choose which bbb-webrtc-sfu # media server adapter should be used for webcams. # Default is undefined, which means the default setting in bbb-webrtc-sfu # prevails (videoMediaServer). #videoMediaServer: Kurento autoShareWebcam: false skipVideoPreview: false skipVideoPreviewOnFirstJoin: false skipVideoPreviewIfPreviousDevice: false # cameraSortingModes.paginationSorting: sorting mode to be applied when pagination is active # cameraSortingModes.defaultSorting: sorting mode when pagination is not active (full mesh) # Current implemented modes are: # 'LOCAL_ALPHABETICAL' | 'VOICE_ACTIVITY_LOCAL' | 'LOCAL_VOICE_ACTIVITY' | 'LOCAL_PRESENTER_ALPHABETICAL' # The algorithm names are self-explanatory. cameraSortingModes: defaultSorting: LOCAL_ALPHABETICAL paginationSorting: VOICE_ACTIVITY_LOCAL # Entry `thresholds` is an array of: # - threshold: minimum number of cameras being shared for profile to applied # profile: a camera profile id from the cameraProfiles configuration array # that will be applied to all cameras when threshold is hit cameraQualityThresholds: enabled: true # applyConstraints: whether profile constraints should be applied on profile changes applyConstraints: false # privilegedStreams: whether cameras should revert to their original profile on # certain actions (eg floor changes, pin) privilegedStreams: true debounceTime: 2500 thresholds: - threshold: 8 profile: low-u8 - threshold: 12 profile: low-u12 - threshold: 15 profile: low-u15 - threshold: 20 profile: low-u20 - threshold: 25 profile: low-u25 - threshold: 30 profile: low-u30 pagination: # WARNING: the pagination.enabled setting has moved to # public.app.defaultSettings.application.paginationEnabled # paginationToggleEnabled: show a pagination toggle in settings for the # user to enable/disable it paginationToggleEnabled: true # how long (in ms) the negotiation will be debounced after a page change. pageChangeDebounceTime: 1000 # video page sizes for DESKTOP endpoints. It stands for the number of SUBSCRIBER streams. # PUBLISHERS aren't accounted for . # A page size of 0 (zero) means that the page size is unlimited (disabled). desktopPageSizes: moderator: 0 viewer: 5 # video page sizes for MOBILE endpoints mobilePageSizes: moderator: 2 viewer: 2 # grid size for DESKTOP endpoints desktopGridSizes: moderator: 48 viewer: 48 # grid size for MOBILE endpoints mobileGridSizes: moderator: 14 viewer: 14 paginationThresholds: enabled: false thresholds: - users: 30 desktopPageSizes: moderator: 25 viewer: 25 - users: 40 desktopPageSizes: moderator: 20 viewer: 20 - users: 50 desktopPageSizes: moderator: 16 viewer: 16 - users: 60 desktopPageSizes: moderator: 14 viewer: 12 - users: 70 desktopPageSizes: moderator: 12 viewer: 10 - users: 80 desktopPageSizes: moderator: 10 viewer: 8 - users: 90 desktopPageSizes: moderator: 8 viewer: 6 - users: 100 desktopPageSizes: moderator: 6 viewer: 4 syncUsersWithConnectionManager: enabled: false syncInterval: 60000 poll: enabled: true allowCustomResponseInput: true maxCustom: 5 maxTypedAnswerLength: 45 chatMessage: true captions: enabled: true id: captions dictation: false background: '#000000' font: color: '#ffffff' family: Calibri size: 24px # maximum number of simultaneous captions on screen captionLimit: 3 # maximum size of a caption line in characters lineLimit: 60 # maximum number of lines a caption can have on screen lines: 2 # time the captions will hang on screen after last updated time: 5000 # Default pad which will store automatically generated captions defaultPad: en showButton: false locales: - locale: "af" name: "Afrikaans" - locale: "ar" name: "العربية" - locale: "az" name: "Azərbaycan dili" - locale: "bg-BG" name: "Български" - locale: "bn" name: "বাংলা" - locale: "ca" name: "Català" - locale: "cs-CZ" name: "Čeština" - locale: "da" name: "Dansk" - locale: "de" name: "Deutsch" - locale: "dv" name: "ދިވެހި" - locale: "el-GR" name: "Ελληνικά" - locale: "en" name: "English" - locale: "en-US" name: "English" - locale: "eo" name: "Esperanto" - locale: "es" name: "Español" - locale: "es-419" name: "Español (Latinoamérica)" - locale: "es-ES" name: "Español (España)" - locale: "es-MX" name: "Español (México)" - locale: "et" name: "eesti keel" - locale: "eu" name: "Euskara" - locale: "fa-IR" name: "فارسی" - locale: "fi" name: "Suomi" - locale: "fr" name: "Français" - locale: "gl" name: "Galego" - locale: "he" name: "עברית‏" - locale: "hi-IN" name: "हिन्दी" - locale: "hr" name: "Hrvatski" - locale: "hu-HU" name: "Magyar" - locale: "hy" name: "Հայերեն" - locale: "id" name: "Bahasa Indonesia" - locale: "it-IT" name: "Italiano" - locale: "ja" name: "日本語" - locale: "ka" name: "ქართული" - locale: "km" name: "ភាសាខ្មែរ" - locale: "kn" name: "ಕನ್ನಡ" - locale: "ko-KR" name: "한국어 (韩国)" - locale: "lo-LA" name: "ລາວ" - locale: "lt-LT" name: "Lietuvių" - locale: "lv" name: "Latviešu" - locale: "ml" name: "മലയാളം" - locale: "mn-MN" name: "Монгол" - locale: "nb-NO" name: "Norsk (bokmål)" - locale: "nl" name: "Nederlands" - locale: "oc" name: "Occitan" - locale: "pl-PL" name: "Polski" - locale: "pt" name: "Português" - locale: "pt-BR" name: "Português (Brasil)" - locale: "ro-RO" name: "Română" - locale: "ru" name: "Русский" - locale: "sk-SK" name: "Slovenčina (Slovakia)" - locale: "sl" name: "Slovenščina" - locale: "sr" name: "Српски" - locale: "sv-SE" name: "Svenska" - locale: "ta" name: "தமிழ்" - locale: "te" name: "తెలుగు" - locale: "th" name: "ภาษาไทย" - locale: "tr-TR" name: "Türkçe" - locale: "uk-UA" name: "Українська" - locale: "vi-VN" name: "Tiếng Việt" - locale: "zh-CN" name: "中文(中国" - locale: "zh-TW" name: "中文(台灣" timer: enabled: true alarm: true music: enabled: false volume: 0.4 track1: "RelaxingMusic" track2: "CalmMusic" track3: "aristocratDrums" interval: clock: 100 offset: 60000 time: 5 tabIndicator: false chat: enabled: true itemsPerPage: 100 timeBetweenFetchs: 1000 enableSaveAndCopyPublicChat: true bufferChatInsertsMs: 0 startClosed: false min_message_length: 1 max_message_length: 5000 grouping_messages_window: 10000 type_system: SYSTEM_MESSAGE type_public: PUBLIC_ACCESS type_private: PRIVATE_ACCESS system_userid: SYSTEM_MESSAGE system_username: SYSTEM_MESSAGE public_id: public public_group_id: MAIN-PUBLIC-GROUP-CHAT public_userid: public_chat_userid public_username: public_chat_username storage_key: UNREAD_CHATS system_messages_keys: chat_clear: PUBLIC_CHAT_CLEAR chat_poll_result: PUBLIC_CHAT_POLL_RESULT chat_exported_presentation: PUBLIC_CHAT_EXPORTED_PRESENTATION chat_status_message: PUBLIC_CHAT_STATUS typingIndicator: enabled: true showNames: true moderatorChatEmphasized: true privateMessageReadFeedback: enabled: false autoConvertEmoji: true emojiPicker: enable: false # e.g.: disableEmojis: ['grin','laughing'] disableEmojis: [] allowedElements: ['a', 'code', 'em', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'li', 'ol', 'ul', 'p', 'strong'] # available options for toolbar: reply, edit, delete, reactions # example: ['reply', 'delete'] toolbar: [] userReaction: enabled: true expire: 30 reactions: - id: 'smiley' native: '😃' - id: 'neutral_face' native: '😐' - id: 'slightly_frowning_face' native: '🙁' - id: '+1' native: '👍' - id: '-1' native: '👎' - id: 'clap' native: '👏' notes: enabled: true id: notes pinnable: true layout: hidePresentationOnJoin: false showParticipantsOnLogin: true showPushLayoutButton: true showPushLayoutToggle: true pads: url: ETHERPAD_HOST media: audio: # # # Default bridge to be used by full audio mechanism. # This is the bridge's name as contained in 'bridges' array defaultFullAudioBridge: fullaudio # # # Server wide configuration to choose which bbb-webrtc-sfu # media server adapter should be used for fullaudio. # Default is undefined, which means the default setting in bbb-webrtc-sfu # prevails (fullAudioMediaServer). #fullAudioMediaServer: mediasoup # # # Default bridge to be used by listen only mechanism. defaultListenOnlyBridge: fullaudio # # # Bridge array, here's where we list our bridges. # To add new bridges, simply add the corresponding .js file in # /imports/api/audio/client/bridge/ and add it to this list. # # Each bridge in this list, must have a name and path attribute. # The name is the desired name/string you can set for your bridge, while # the path specifies the file path, relative to # '/imports/api/audio/client' dir. # bridges: # name: The name of the bridge - name: sipjs # path: the bridge file path, relative to /imports/api/audio/client path: 'bridge/sip' - name: fullaudio path: 'bridge/sfu-audio-bridge' # Forces a retry with iceTransportPolicy = 'relay' if the first attempt # fails with a few selected errors codes (eg 1007, 1010) retryThroughRelay: false stunTurnServersFetchAddress: '/bigbluebutton/api/stuns' cacheStunTurnServers: true fallbackStunServer: '' # Forces relay usage on all browsers, environments and media modules. # If true, supersedes public.kurento.forceRelayOnFirefox forceRelay: false # Firefox has a buggy ICE implementation. With mediasoup this leads to # connection problems unless all traffic is relayed through a turn server. forceRelayOnFirefox: true mediaTag: '#remote-media' callTransferTimeout: 5000 callHangupTimeout: 2000 callHangupMaximumRetries: 10 echoTestNumber: 'echo' listenOnlyCallTimeout: 15000 # Experimental: enables a new audio mechanism that has a server-side, # transparent listen only mode. See issue #14021. # bbb_userdata-transparent-listen-only supersedes this setting transparentListenOnly: false # Dev flag. Controls the WebRTC SDP negotiation role for SFU full audio. fullAudioOffering: true # Dev flag. Controls the WebRTC negotiation role for listen only. listenOnlyOffering: false #Timeout (ms) for gathering ICE candidates. When this timeout expires #the SDP is sent to the server with the candidates the browser gathered #so far. Increasing this value might help avoiding 1004 error when #user activates microphone. iceGatheringTimeout: 5000 # Timeout (ms) for connecting to the audio's signaling websocket. audioConnectionTimeout: 5000 # Delay (ms) between each reconnection attempt of the audio's signaling # websocket. audioReconnectionDelay: 5000 # Number of reconnection attempts of the signaling websocket, before # showing to the user there's an audio error. audioReconnectionAttempts: 3 sipjsHackViaWs: false # sipjsAllowMdns: whether mDNS candidates should be allowed in local SDPs. # Default is false since FreeSWITCH doesn't resolve mDNS by default. sipjsAllowMdns: false # the fqdn of this host. # If you run a traditional setup of multiple nodes behind scalelite and the users see the hostnames of the # individual nodes, you can leave this at the default setting sip_ws_host: '' # Mute/umute toggle throttle time toggleMuteThrottleTime: 300 #Websocket keepAlive interval (seconds). You may set this to prevent #websocket disconnection in some environments. When set, BBB will send #'\r\n\r\n' string through SIP.js's websocket. If not set, default value #is 0. websocketKeepAliveInterval: 30 #Debounce time (seconds) for sending SIP.js's websocket keep alive message. #If not set, default value is 10. websocketKeepAliveDebounce: 10 #Trace sip/audio messages in browser. If not set, default value is false. traceSip: false # SDP semantics: plan-b|unified-plan sdpSemantics: 'unified-plan' # localEchoTest: # enabled: Boolean => enables an experimental, simplified echo test mode # initialHearingState: Boolean => whether users should hear themselves firsthand # useRtcLoopbackInChromium: Boolean => whether a local RTC loopback should # be used in Chromium browsers. Works around the fact that Chromium has no # echo cancellation in non-rtc audio streams localEchoTest: enabled: true initialHearingState: true useRtcLoopbackInChromium: true # delay: delay (seconds) to be added to the audio feedback return delay: enabled: true delayTime: 0.5 maxDelayTime: 2 # networkPriorities: DSCP markings for each media type. Chromium only, applies # to sender flows. See https://datatracker.ietf.org/doc/html/rfc8837#section-5 # for further info. #networkPriorities: # audio: high # webcam: medium # screenshare: medium # # audioTroubleshootingLinks: links to help users troubleshoot audio issues # If no link is provided, the audio troubleshooting button will not be shown. # Index is the error code: # - 7: permission denied error code # - 0: unknown error #audioTroubleshootingLinks: # 7: 'https://link.bigbluebutton.org/perm' # 0: 'https://link.bigbluebutton.org/unk' # muteAudioOutputWhenAway: mute output audio if user is in away mode muteAudioOutputWhenAway: false # Index is the error code: # - 1136: permission denied screenshareTroubleshootingLinks: 1136: 'https://support.bigbluebutton.org/hc/en-us/articles/1500005316582-Share-my-screen#:~:text=Error%201136%3A%20Permission%20to%20capture,able%20to%20screen%20share%20again' stats: enabled: true interval: 10000 timeout: 30000 log: true notification: warning: false error: true loss: warning: 0.05 danger: 0.1 critical: 0.2 rtt: warning: 500 danger: 1000 critical: 2000 help: STATS_HELP_URL presentation: allowDownloadOriginal: true allowDownloadWithAnnotations: true allowSnapshotOfCurrentSlide: true panZoomThrottle: 32 restoreOnUpdate: true uploadEndpoint: '/bigbluebutton/presentation/upload' fileUploadConstraintsHint: false # mirroredFromBBBCore are values controlled in bbb-web properties file. We include a copy here for notification purposes mirroredFromBBBCore: uploadSizeMax: 30000000 uploadPagesMax: 200 # If the following mime-types list is changed, please, make sure to also change: # bbb-common-web/src/main/java/org/bigbluebutton/presentation/MimeTypeUtils.java: L34 (and related files.) # docs/docs/development/api.md: L1222 uploadValidMimeTypes: - extension: .pdf mime: application/pdf - extension: .doc mime: application/msword - extension: .docx mime: application/vnd.openxmlformats-officedocument.wordprocessingml.document - extension: .xls mime: application/vnd.ms-excel - extension: .xlsx mime: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - extension: .ppt mime: application/vnd.ms-powerpoint - extension: .pptx mime: application/vnd.openxmlformats-officedocument.presentationml.presentation - extension: .txt mime: text/plain - extension: .rtf mime: application/rtf - extension: .odt mime: application/vnd.oasis.opendocument.text - extension: .ods mime: application/vnd.oasis.opendocument.spreadsheet - extension: .odp mime: application/vnd.oasis.opendocument.presentation - extension: .odg mime: application/vnd.oasis.opendocument.graphics - extension: .jpg mime: image/jpeg - extension: .jpeg mime: image/jpeg - extension: .png mime: image/png - extension: .webp mime: image/webp - extension: .svg mime: image/svg+xml user: role_moderator: MODERATOR role_viewer: VIEWER label: moderator: false mobile: true guest: true sharingWebcam: true whiteboard: annotationsQueueProcessInterval: 60 cursorInterval: 150 allowInfiniteWhiteboard: false allowInfiniteWhiteboardInBreakouts: false pointerDiameter: 5 maxStickyNoteLength: 1000 # limit number of annotations per slide maxNumberOfAnnotations: 300 annotations: status: start: DRAW_START update: DRAW_UPDATE end: DRAW_END styles: # color is one of 'black', 'blue', 'green', 'grey', 'light-blue', 'light-green', 'light-red', 'light-violet', 'orange', 'red', 'violet', 'yellow' colorStyle: 'black' # dash is one of 'dashed', 'dotted', 'draw', 'solid' dashStyle: 'draw' # fill is one of 'none', 'pattern', 'semi', 'solid' fillStyle: 'none' # font is one of 'draw','mono','sans', 'serif' fontStyle: 'draw' # size is one of 'l', 'm', 's', 'xl' sizeStyle: 'm' # this one is obsoleted now text: # Initial font family. # family: mono|sans|script|serif family: script toolbar: multiUserPenOnly: false presenterTools: - select - hand - draw - eraser - arrow - text - note - rectangle - more multiUserTools: - select - hand - draw - eraser - arrow - text - note - rectangle - more clientLog: console: enabled: true level: debug external: enabled: false level: info url: https://LOG_HOST/html5Log method: POST throttleInterval: 400 flushOnClose: true logTag: '' virtualBackgrounds: enabled: true enableVirtualBackgroundUpload: true storedOnBBB: true showThumbnails: true imagesPath: /resources/images/virtual-backgrounds/ thumbnailsPath: /resources/images/virtual-backgrounds/thumbnails/ fileNames: - home.jpg - coffeeshop.jpg - board.jpg private: analytics: includeChat: true app: host: 127.0.0.1 localesUrl: /locale-list pencilChunkLength: 100 loadSlidesFromHttpAlways: false minBrowserVersions: - browser: chrome version: 72 - browser: chromeMobileIOS version: 94 - browser: firefox version: 68 - browser: firefoxMobile version: 68 - browser: edge version: 79 - browser: ie version: Infinity - browser: safari version: [12, 1] - browser: mobileSafari version: [12, 1] - browser: opera version: 50 - browser: electron version: [0, 36] - browser: SamsungInternet version: 10 - browser: YandexBrowser version: 19 # Direct Prometheus instrumentation. # EXPERIMENTAL, so disabled by default. prometheus: enabled: false # Metrics endpoint path path: '/metrics' # Whether default metrics for Node.js processes should be exported collectDefaultMetrics: false