jibri.conf 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. {{ $JIBRI_XMPP_USER := .Env.JIBRI_XMPP_USER | default "jibri" -}}
  2. {{ $JIBRI_RECORDER_USER := .Env.JIBRI_RECORDER_USER | default "recorder" -}}
  3. {{ $JIBRI_USAGE_TIMEOUT := .Env.JIBRI_USAGE_TIMEOUT | default "0" -}}
  4. {{ $JIBRI_RECORDING_RESOLUTION := .Env.JIBRI_RECORDING_RESOLUTION | default "1280x720" -}}
  5. {{ $JIBRI_RECORDING_VIDEO_ENCODE_PRESET := .Env.JIBRI_RECORDING_VIDEO_ENCODE_PRESET | default "veryfast" -}}
  6. {{ $JIBRI_RECORDING_CONSTANT_RATE_FACTOR := .Env.JIBRI_RECORDING_CONSTANT_RATE_FACTOR | default 25 -}}
  7. {{ $JIBRI_RECORDING_FRAMERATE := .Env.$JIBRI_RECORDING_FRAMERATE | default 30 -}}
  8. {{ $JIBRI_RECORDING_QUEUE_SIZE := .Env.$JIBRI_RECORDING_QUEUE_SIZE | default 4096 -}}
  9. {{ $JIBRI_RECORDING_STREAMING_MAX_BITRATE := .Env.$JIBRI_RECORDING_STREAMING_MAX_BITRATE | default 2976 -}}
  10. {{ $JIBRI_BREWERY_MUC := .Env.JIBRI_BREWERY_MUC | default "jibribrewery" -}}
  11. {{ $JIBRI_SINGLE_USE_MODE := .Env.JIBRI_SINGLE_USE_MODE | default "false" -}}
  12. {{ $XMPP_AUTH_DOMAIN := .Env.XMPP_AUTH_DOMAIN | default "auth.meet.jitsi" -}}
  13. {{ $XMPP_DOMAIN := .Env.XMPP_DOMAIN | default "meet.jitsi" -}}
  14. {{ $XMPP_INTERNAL_MUC_DOMAIN := .Env.XMPP_INTERNAL_MUC_DOMAIN | default "internal-muc.meet.jitsi" -}}
  15. {{ $XMPP_MUC_DOMAIN := .Env.XMPP_MUC_DOMAIN | default "muc.meet.jitsi" -}}
  16. {{ $XMPP_MUC_DOMAIN_PREFIX := (split "." $XMPP_MUC_DOMAIN)._0 -}}
  17. {{ $JIBRI_STRIP_DOMAIN_JID := .Env.JIBRI_STRIP_DOMAIN_JID | default $XMPP_MUC_DOMAIN_PREFIX -}}
  18. {{ $XMPP_RECORDER_DOMAIN := .Env.XMPP_RECORDER_DOMAIN | default "recorder.meet.jitsi" -}}
  19. {{ $XMPP_TRUST_ALL_CERTS := .Env.XMPP_TRUST_ALL_CERTS | default "true" | toBool -}}
  20. {{ $XMPP_PORT := .Env.XMPP_PORT | default "5222" -}}
  21. {{ $XMPP_SERVER := .Env.XMPP_SERVER | default "xmpp.meet.jitsi" -}}
  22. {{ $XMPP_SERVERS := splitList "," $XMPP_SERVER -}}
  23. {{ $STATSD_HOST := .Env.JIBRI_STATSD_HOST | default "localhost" -}}
  24. {{ $STATSD_PORT := .Env.JIBRI_STATSD_PORT | default "8125" -}}
  25. {{/* assign env from context, preserve during range when . is re-assigned */}}
  26. {{ $ENV := .Env -}}
  27. jibri {
  28. // A unique identifier for this Jibri
  29. id = "{{ .Env.JIBRI_INSTANCE_ID }}"
  30. // Whether or not Jibri should return to idle state after handling
  31. // (successfully or unsuccessfully) a request. A value of 'true'
  32. // here means that a Jibri will NOT return back to the IDLE state
  33. // and will need to be restarted in order to be used again.
  34. single-use-mode = {{ $JIBRI_SINGLE_USE_MODE }}
  35. api {
  36. {{ if or .Env.JIBRI_HTTP_API_EXTERNAL_PORT .Env.JIBRI_HTTP_API_INTERNAL_PORT -}}
  37. http {
  38. {{ if .Env.JIBRI_HTTP_API_EXTERNAL_PORT -}}
  39. external-api-port = {{ .Env.JIBRI_HTTP_API_EXTERNAL_PORT }}
  40. {{ end -}}
  41. {{ if .Env.JIBRI_HTTP_API_INTERNAL_PORT -}}
  42. internal-api-port = {{ .Env.JIBRI_HTTP_API_INTERNAL_PORT }}
  43. {{ end -}}
  44. }
  45. {{ end -}}
  46. xmpp {
  47. // See example_xmpp_envs.conf for an example of what is expected here
  48. environments = [
  49. {{ range $index, $element := $XMPP_SERVERS -}}
  50. {{ $SERVER := splitn ":" 2 $element }}
  51. {
  52. // A user-friendly name for this environment
  53. name = "{{ $ENV.XMPP_ENV_NAME }}-{{$index}}"
  54. // A list of XMPP server hosts to which we'll connect
  55. xmpp-server-hosts = [
  56. "{{ $SERVER._0 }}"
  57. ]
  58. // The base XMPP domain
  59. xmpp-domain = "{{ $XMPP_DOMAIN }}"
  60. {{ if $ENV.PUBLIC_URL -}}
  61. // An (optional) base url the Jibri will join if it is set
  62. base-url = "{{ $ENV.PUBLIC_URL }}"
  63. {{ end -}}
  64. // The MUC we'll join to announce our presence for
  65. // recording and streaming services
  66. control-muc {
  67. domain = "{{ $XMPP_INTERNAL_MUC_DOMAIN }}"
  68. room-name = "{{ $JIBRI_BREWERY_MUC }}"
  69. nickname = "{{ $ENV.JIBRI_INSTANCE_ID }}"
  70. }
  71. // The login information for the control MUC
  72. control-login {
  73. domain = "{{ $XMPP_AUTH_DOMAIN }}"
  74. port = "{{ $SERVER._1 | default $XMPP_PORT }}"
  75. username = "{{ $JIBRI_XMPP_USER }}"
  76. password = "{{ $ENV.JIBRI_XMPP_PASSWORD }}"
  77. }
  78. // The login information the selenium web client will use
  79. call-login {
  80. domain = "{{ $XMPP_RECORDER_DOMAIN }}"
  81. username = "{{ $JIBRI_RECORDER_USER }}"
  82. password = "{{ $ENV.JIBRI_RECORDER_PASSWORD }}"
  83. }
  84. // The value we'll strip from the room JID domain to derive
  85. // the call URL
  86. strip-from-room-domain = "{{ $JIBRI_STRIP_DOMAIN_JID }}."
  87. // How long Jibri sessions will be allowed to last before
  88. // they are stopped. A value of 0 allows them to go on
  89. // indefinitely
  90. usage-timeout = "{{ $JIBRI_USAGE_TIMEOUT }}"
  91. // Whether or not we'll automatically trust any cert on
  92. // this XMPP domain
  93. trust-all-xmpp-certs = {{ $XMPP_TRUST_ALL_CERTS }}
  94. }
  95. {{ end }}
  96. ]
  97. }
  98. }
  99. recording {
  100. recordings-directory = "{{ .Env.JIBRI_RECORDING_DIR | default "/config/recordings" }}"
  101. {{ if .Env.JIBRI_FINALIZE_RECORDING_SCRIPT_PATH -}}
  102. finalize-script = "{{ .Env.JIBRI_FINALIZE_RECORDING_SCRIPT_PATH }}"
  103. {{ end -}}
  104. }
  105. {{ if .Env.JIBRI_WEBHOOK_SUBSCRIBERS -}}
  106. webhook {
  107. subscribers = [{{ range $index, $element := splitList "," .Env.JIBRI_WEBHOOK_SUBSCRIBERS }}{{ if gt $index 0}},{{ end }}"{{ $element }}"{{ end }}]
  108. }{{ end }}
  109. ffmpeg {
  110. resolution = "{{ $JIBRI_RECORDING_RESOLUTION }}"
  111. // The audio source that will be used to capture audio on Linux
  112. audio-source = "pulse"
  113. // The audio device that will be used to capture audio on Linux
  114. audio-device = "default"
  115. framerate = {{ $JIBRI_RECORDING_FRAMERATE }}
  116. queue-size = {{ $JIBRI_RECORDING_QUEUE_SIZE }}
  117. streaming-max-bitrate = {{ $JIBRI_RECORDING_STREAMING_MAX_BITRATE }}
  118. // Available presets: ultrafast, superfast, veryfast, faster, fast, medium,
  119. // slow, slower, veryslow, placebo
  120. video-encode-preset = "{{ $JIBRI_RECORDING_VIDEO_ENCODE_PRESET }}"
  121. // The range of the CRF scale is 0-51, where 0 is lossless,
  122. // 23 is the default, and 51 is worst quality possible.
  123. h264-constant-rate-factor = {{ $JIBRI_RECORDING_CONSTANT_RATE_FACTOR }}
  124. }
  125. {{ if .Env.CHROMIUM_FLAGS -}}
  126. chrome {
  127. // The flags which will be passed to chromium when launching
  128. flags = [
  129. "{{ join "\",\"" (splitList "," .Env.CHROMIUM_FLAGS) }}"
  130. ]
  131. }
  132. {{ end -}}
  133. {{ if .Env.ENABLE_STATS_D -}}
  134. stats {
  135. enable-stats-d = {{ .Env.ENABLE_STATS_D }}
  136. host = "{{ $STATSD_HOST }}"
  137. port = {{ $STATSD_PORT }}
  138. }
  139. {{ end -}}
  140. }