{{ $JIBRI_XMPP_USER := .Env.JIBRI_XMPP_USER | default "jibri" -}} {{ $JIBRI_RECORDER_USER := .Env.JIBRI_RECORDER_USER | default "recorder" -}} {{ $JIBRI_USAGE_TIMEOUT := .Env.JIBRI_USAGE_TIMEOUT | default "0" -}} {{ $JIBRI_RECORDING_RESOLUTION := .Env.JIBRI_RECORDING_RESOLUTION | default "1280x720" -}} {{ $JIBRI_RECORDING_VIDEO_ENCODE_PRESET := .Env.JIBRI_RECORDING_VIDEO_ENCODE_PRESET | default "veryfast" -}} {{ $JIBRI_RECORDING_CONSTANT_RATE_FACTOR := .Env.JIBRI_RECORDING_CONSTANT_RATE_FACTOR | default 25 -}} {{ $JIBRI_RECORDING_FRAMERATE := .Env.JIBRI_RECORDING_FRAMERATE | default 30 -}} {{ $JIBRI_RECORDING_QUEUE_SIZE := .Env.JIBRI_RECORDING_QUEUE_SIZE | default 4096 -}} {{ $JIBRI_RECORDING_STREAMING_MAX_BITRATE := .Env.JIBRI_RECORDING_STREAMING_MAX_BITRATE | default 2976 -}} {{ $JIBRI_BREWERY_MUC := .Env.JIBRI_BREWERY_MUC | default "jibribrewery" -}} {{ $JIBRI_SINGLE_USE_MODE := .Env.JIBRI_SINGLE_USE_MODE | default "false" -}} {{ $XMPP_AUTH_DOMAIN := .Env.XMPP_AUTH_DOMAIN | default "auth.meet.jitsi" -}} {{ $XMPP_DOMAIN := .Env.XMPP_DOMAIN | default "meet.jitsi" -}} {{ $XMPP_INTERNAL_MUC_DOMAIN := .Env.XMPP_INTERNAL_MUC_DOMAIN | default "internal-muc.meet.jitsi" -}} {{ $XMPP_MUC_DOMAIN := .Env.XMPP_MUC_DOMAIN | default "muc.meet.jitsi" -}} {{ $XMPP_MUC_DOMAIN_PREFIX := (split "." $XMPP_MUC_DOMAIN)._0 -}} {{ $JIBRI_STRIP_DOMAIN_JID := .Env.JIBRI_STRIP_DOMAIN_JID | default $XMPP_MUC_DOMAIN_PREFIX -}} {{ $XMPP_RECORDER_DOMAIN := .Env.XMPP_RECORDER_DOMAIN | default "recorder.meet.jitsi" -}} {{ $XMPP_TRUST_ALL_CERTS := .Env.XMPP_TRUST_ALL_CERTS | default "true" | toBool -}} {{ $XMPP_PORT := .Env.XMPP_PORT | default "5222" -}} {{ $XMPP_SERVER := .Env.XMPP_SERVER | default "xmpp.meet.jitsi" -}} {{ $XMPP_SERVERS := splitList "," $XMPP_SERVER -}} {{ $STATSD_HOST := .Env.JIBRI_STATSD_HOST | default "localhost" -}} {{ $STATSD_PORT := .Env.JIBRI_STATSD_PORT | default "8125" -}} {{/* assign env from context, preserve during range when . is re-assigned */}} {{ $ENV := .Env -}} jibri { // A unique identifier for this Jibri id = "{{ .Env.JIBRI_INSTANCE_ID }}" // Whether or not Jibri should return to idle state after handling // (successfully or unsuccessfully) a request. A value of 'true' // here means that a Jibri will NOT return back to the IDLE state // and will need to be restarted in order to be used again. single-use-mode = {{ $JIBRI_SINGLE_USE_MODE }} api { {{ if or .Env.JIBRI_HTTP_API_EXTERNAL_PORT .Env.JIBRI_HTTP_API_INTERNAL_PORT -}} http { {{ if .Env.JIBRI_HTTP_API_EXTERNAL_PORT -}} external-api-port = {{ .Env.JIBRI_HTTP_API_EXTERNAL_PORT }} {{ end -}} {{ if .Env.JIBRI_HTTP_API_INTERNAL_PORT -}} internal-api-port = {{ .Env.JIBRI_HTTP_API_INTERNAL_PORT }} {{ end -}} } {{ end -}} xmpp { // See example_xmpp_envs.conf for an example of what is expected here environments = [ {{ range $index, $element := $XMPP_SERVERS -}} {{ $SERVER := splitn ":" 2 $element }} { // A user-friendly name for this environment name = "{{ $ENV.XMPP_ENV_NAME }}-{{$index}}" // A list of XMPP server hosts to which we'll connect xmpp-server-hosts = [ "{{ $SERVER._0 }}" ] // The base XMPP domain xmpp-domain = "{{ $XMPP_DOMAIN }}" {{ if $ENV.PUBLIC_URL -}} // An (optional) base url the Jibri will join if it is set base-url = "{{ $ENV.PUBLIC_URL }}" {{ end -}} // The MUC we'll join to announce our presence for // recording and streaming services control-muc { domain = "{{ $XMPP_INTERNAL_MUC_DOMAIN }}" room-name = "{{ $JIBRI_BREWERY_MUC }}" nickname = "{{ $ENV.JIBRI_INSTANCE_ID }}" } // The login information for the control MUC control-login { domain = "{{ $XMPP_AUTH_DOMAIN }}" port = "{{ $SERVER._1 | default $XMPP_PORT }}" username = "{{ $JIBRI_XMPP_USER }}" password = "{{ $ENV.JIBRI_XMPP_PASSWORD }}" } // The login information the selenium web client will use call-login { domain = "{{ $XMPP_RECORDER_DOMAIN }}" username = "{{ $JIBRI_RECORDER_USER }}" password = "{{ $ENV.JIBRI_RECORDER_PASSWORD }}" } // The value we'll strip from the room JID domain to derive // the call URL strip-from-room-domain = "{{ $JIBRI_STRIP_DOMAIN_JID }}." // How long Jibri sessions will be allowed to last before // they are stopped. A value of 0 allows them to go on // indefinitely usage-timeout = "{{ $JIBRI_USAGE_TIMEOUT }}" // Whether or not we'll automatically trust any cert on // this XMPP domain trust-all-xmpp-certs = {{ $XMPP_TRUST_ALL_CERTS }} } {{ end }} ] } } recording { recordings-directory = "{{ .Env.JIBRI_RECORDING_DIR | default "/config/recordings" }}" {{ if .Env.JIBRI_FINALIZE_RECORDING_SCRIPT_PATH -}} finalize-script = "{{ .Env.JIBRI_FINALIZE_RECORDING_SCRIPT_PATH }}" {{ end -}} } {{ if .Env.JIBRI_WEBHOOK_SUBSCRIBERS -}} webhook { subscribers = [{{ range $index, $element := splitList "," .Env.JIBRI_WEBHOOK_SUBSCRIBERS }}{{ if gt $index 0}},{{ end }}"{{ $element }}"{{ end }}] }{{ end }} ffmpeg { resolution = "{{ $JIBRI_RECORDING_RESOLUTION }}" // The audio source that will be used to capture audio on Linux audio-source = "pulse" // The audio device that will be used to capture audio on Linux audio-device = "default" framerate = {{ $JIBRI_RECORDING_FRAMERATE }} queue-size = {{ $JIBRI_RECORDING_QUEUE_SIZE }} streaming-max-bitrate = {{ $JIBRI_RECORDING_STREAMING_MAX_BITRATE }} // Available presets: ultrafast, superfast, veryfast, faster, fast, medium, // slow, slower, veryslow, placebo video-encode-preset = "{{ $JIBRI_RECORDING_VIDEO_ENCODE_PRESET }}" // The range of the CRF scale is 0-51, where 0 is lossless, // 23 is the default, and 51 is worst quality possible. h264-constant-rate-factor = {{ $JIBRI_RECORDING_CONSTANT_RATE_FACTOR }} } {{ if .Env.CHROMIUM_FLAGS -}} chrome { // The flags which will be passed to chromium when launching flags = [ "{{ join "\",\"" (splitList "," .Env.CHROMIUM_FLAGS) }}" ] } {{ end -}} {{ if .Env.ENABLE_STATS_D -}} stats { enable-stats-d = {{ .Env.ENABLE_STATS_D }} host = "{{ $STATSD_HOST }}" port = {{ $STATSD_PORT }} } {{ end -}} }