Skip to content
This repository has been archived by the owner on Jan 23, 2022. It is now read-only.

Allow multiple videobridges #1

Open
wants to merge 25 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
90 changes: 38 additions & 52 deletions defaults/main.yml → meet/defaults/main.yml
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
---

jitsi_meet_packages:
- jitsi-meet
- jicofo
- jitsi-meet-prosody
- jitsi-meet-web
- jitsi-meet-web-config
- jitsi-videobridge2

jitsi_meet_server_name: "meet.example.com"
jitsi_meet_server_name_aliases: []

jitsi_meet_videobridge_port: 5347
## single server vs scalable setup
jitsi_meet_single_instance: True
jitsi_meet_videobridge_instances:
- name: 'default-id'
ip: 127.0.0.1

jitsi_meet_jicofo_user: focus
jitsi_meet_jicofo_port: 5347

Expand All @@ -24,6 +27,8 @@ jitsi_meet_cert_choice: "Generate a new self-signed certificate (You will later
jitsi_meet_config_default_language: "de"
jitsi_meet_config_disable_third_party_requests: "true"
jitsi_meet_config_disable_audio_levels: "false"
jitsi_meet_config_enable_no_audio_detection: "true"
jitsi_meet_config_enable_noisy_mic_detection: "true"
jitsi_meet_config_disable_aec: "false" # disable acoustic echo cancellation
jitsi_meet_config_disable_agc: "false" # disable automatic gain control
jitsi_meet_config_disable_ap: "false" # disable all audio processing
Expand All @@ -37,18 +42,21 @@ jitsi_meet_config_require_display_name: "false"
jitsi_meet_config_resolution: 720
jitsi_meet_config_constraints:
video:
frameRate:
max: 20
min: 5
height:
ideal: "{{ jitsi_meet_config_resolution }}"
max: 720
min: 240
jitsi_meet_config_start_audio_only: "false"
jitsi_meet_config_start_audio_muted: 10 # every participant after the Nth will start audio muted
jitsi_meet_config_start_video_muted: 10 # every participant after the Nth will start video muted
jitsi_meet_config_stun_servers:
- meet-jit-si-turnrelay.jitsi.net:443

# Jitsi Meet global variables

# Jitsi Meet global variables

jitsi_meet_title: Jitsi Meet
jitsi_meet_description: Join a WebRTC video conference powered by the Jitsi Videobridge

Expand All @@ -69,7 +77,19 @@ jitsi_meet_interface_mobile_download_link_android: https://play.google.com/store
jitsi_meet_interface_mobile_download_link_f_droid: https://f-droid.org/en/packages/org.jitsi.meet/
jitsi_meet_interface_mobile_download_link_ios: https://itunes.apple.com/us/app/jitsi-meet/id1165103905
jitsi_meet_interface_native_app_name: Jitsi Meet
jitsi_meet_interface_connection_indicator_disabled: "false"
jitsi_meet_interface_disable_dominant_speaker_indicator: "false"
jitsi_meet_interface_disable_focus_indicator: "false"
jitsi_meet_interface_disable_join_leave_notifications: "false"
jitsi_meet_interface_disable_video_background: "false"
jitsi_meet_interface_set_filmstrip_enabled: "true"
jitsi_meet_interface_toolbar_buttons: [
'microphone', 'camera', 'closedcaptions', 'desktop', 'embedmeeting', 'fullscreen',
'fodeviceselection', 'hangup', 'profile', 'chat', 'recording',
'livestreaming', 'etherpad', 'sharedvideo', 'settings', 'raisehand',
'videoquality', 'filmstrip', 'invite', 'feedback', 'stats', 'shortcuts',
'tileview', 'videobackgroundblur', 'download', 'help', 'mute-everyone', 'security'
]

# Jitsi Meet variables for title.html

Expand All @@ -78,62 +98,28 @@ jitsi_meet_title_favicon: images/favicon.ico?v=1

jitsi_meet_debsums_ignore_custom_assets: false

# Jibri
jitsi_meet_jibri_enabled: False
jitsi_meet_jibri_password: "CHANGEME6"
jitsi_meet_recorder_password: "CHANGEME7"

# Jigasi SIP Dial-In
jitsi_meet_jigasi_enabled: False

# Octo
jitsi_meet_octo_enabled: False
jitsi_meet_octo_selection_strategy: "RegionBasedBridgeSelectionStrategy"

## Logging
jitsi_meet_logrotate_retained_days: 7
jitsi_meet_loglevel: "WARNING"
jitsi_meet_videobridge_loglevel: "{{ jitsi_meet_loglevel }}"
jitsi_meet_jicofo_loglevel: "{{ jitsi_meet_loglevel }}"
jitsi_meet_jicofo_logging_properties: |
handlers= java.util.logging.ConsoleHandler
#handlers= java.util.logging.ConsoleHandler, com.agafua.syslog.SyslogHandler

java.util.logging.ConsoleHandler.level = {{ jitsi_meet_jicofo_loglevel }}
java.util.logging.ConsoleHandler.formatter = org.jitsi.utils.logging2.JitsiLogFormatter

net.java.sip.communicator.util.ScLogFormatter.programname=JVB

.level= {{ jitsi_meet_jicofo_loglevel }}

org.jitsi.videobridge.xmpp.ComponentImpl.level=FINE

# All of the INFO level logs from MediaStreamImpl are unnecessary in the context of jitsi-videobridge.
org.jitsi.impl.neomedia.MediaStreamImpl.level=WARNING

# Syslog(uncomment handler to use)
com.agafua.syslog.SyslogHandler.transport = udp
com.agafua.syslog.SyslogHandler.facility = local0
com.agafua.syslog.SyslogHandler.port = 514
com.agafua.syslog.SyslogHandler.hostname = localhost
com.agafua.syslog.SyslogHandler.formatter = org.jitsi.utils.logging2.JitsiLogFormatter
com.agafua.syslog.SyslogHandler.escapeNewlines = false

# to disable double timestamps in syslog uncomment next line
#net.java.sip.communicator.util.ScLogFormatter.disableTimestamp=true

# time series logging
java.util.logging.SimpleFormatter.format= %5$s%n
java.util.logging.FileHandler.level = ALL
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.FileHandler.pattern = /tmp/jvb-series.log
java.util.logging.FileHandler.limit = 200000000
java.util.logging.FileHandler.count = 1
java.util.logging.FileHandler.append = false

timeseries.level=OFF
timeseries.org.jitsi.videobridge.cc.vp8.level=ALL
timeseries.useParentHandlers = false
timeseries.handlers = java.util.logging.FileHandler

jitsi_meet_nginx_base_config: True

# Disable nginx access log per default
jitsi_meet_nginx_access_log: "off"
jitsi_meet_nginx_error_log: /var/log/nginx/error.log

jitsi_meet_jibri_enabled: False
jitsi_meet_jibri_password: "CHANGEME6"
jitsi_meet_recorder_password: "CHANGEME7"
jitsi_meet_nginx_error_log: "/var/log/nginx/{{ jitsi_meet_server_name }}.error.log"

jitsi_meet_nginx_ssl_preset: "intermediate"
jitsi_meet_nginx_ssl_presets:
Expand Down
File renamed without changes.
File renamed without changes.
10 changes: 10 additions & 0 deletions meet/meta/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
galaxy_info:
role_name: meet
dependencies:
- role: systemli.apt_repositories
vars:
apt_repositories:
- preset: jitsi
name: download_jitsi_org
packages: "{{ jitsi_meet_packages }}"
55 changes: 15 additions & 40 deletions tasks/jitsi-meet.yml → meet/tasks/jitsi-meet.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,6 @@
value: "{{ item.value }}"
vtype: "{{ item.vtype }}"
loop:
- name: jitsi-videobridge2
question: jitsi-videobridge/jvb-hostname
value: "{{ jitsi_meet_server_name }}"
vtype: string
- name: jitsi-meet-web-config
question: jitsi-meet/cert-choice
value: "{{ jitsi_meet_cert_choice }}"
Expand All @@ -27,6 +23,18 @@
question: jitsi-meet-prosody/turn-secret
value: "{{ jitsi_meet_turn_secret }}"
vtype: string
- name: jitsi-meet-prosody
question: jitsi-videobridge/jvb-hostname
value: "{{ jitsi_meet_server_name }}"
vtype: string
- name: jitsi-videobridge2
question: jitsi-videobridge/jvb-hostname
value: "{{ jitsi_meet_server_name }}"
vtype: string
- name: jitsi-meet
question: jitsi-meet/jvb-serve
value: "{{ jitsi_meet_single_instance | to_json }}"
vtype: boolean

- name: Install jitsi-meet
apt:
Expand All @@ -35,15 +43,6 @@
state: present
update_cache: yes

- name: Copy videobridge sip-communicator.properties
template:
src: videobridge/sip-communicator.properties.j2
dest: /etc/jitsi/videobridge/sip-communicator.properties
owner: jvb
group: jitsi
mode: 0640
notify: restart jitsi-videobridge2

- name: Copy jicofo config
template:
src: jicofo/config.j2
Expand All @@ -60,46 +59,22 @@
owner: jicofo
group: jitsi
notify: restart jicofo
when: jitsi_meet_jibri_enabled

- name: Copy Jicofo log.properties
copy:
content: "{{ jitsi_meet_jicofo_logging_properties }}"
- name: Copy Jicofo logging.properties
template:
src: jicofo/logging.properties.j2
dest: /etc/jitsi/jicofo/logging.properties
owner: jicofo
group: jitsi
mode: 0640
notify: restart jicofo

- name: Copy jitsi-videobridge2 config
template:
src: videobridge/config.j2
dest: /etc/jitsi/videobridge/config
owner: jvb
group: jitsi
mode: 0640
notify: restart jitsi-videobridge2

- name: Copy jitsi-videobridge2 log.properties
template:
src: videobridge/logging.properties.j2
dest: /etc/jitsi/videobridge/logging.properties
owner: jvb
group: jitsi
mode: 0640
notify: restart jitsi-videobridge2

- name: Copy jitsi meet config
template:
mode: 0644
src: meet-config.js.j2
dest: "/etc/jitsi/meet/{{ jitsi_meet_server_name }}-config.js"

- name: Enable jitsi-videobridge2
service:
name: jitsi-videobridge2
enabled: yes

- name: Enable jicofo
service:
name: jicofo
Expand Down
6 changes: 1 addition & 5 deletions tasks/main.yml → meet/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,7 @@
- jitsi_meet_videobridge_password
- jitsi_meet_jicofo_secret
- jitsi_meet_jicofo_password
when: jitsi_meet_base_secret is defined

- name: Derive videobridge nickname
set_fact:
jitsi_meet_videobridge_muc_nickname: "{{ (jitsi_meet_base_secret | string + 'jvb_muc_nick') | to_uuid }}"
- jitsi_meet_jigasi_secret
when: jitsi_meet_base_secret is defined

- import_tasks: jitsi-meet.yml
Expand Down
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -42,22 +42,22 @@ var interfaceConfig = {
*
* @type {boolean}
*/
CONNECTION_INDICATOR_DISABLED: false,
CONNECTION_INDICATOR_DISABLED: {{ jitsi_meet_interface_connection_indicator_disabled }},

DEFAULT_BACKGROUND: '{{ jitsi_meet_interface_default_background }}',
DEFAULT_LOCAL_DISPLAY_NAME: '{{ jitsi_meet_interface_default_local_display_name }}',
DEFAULT_LOGO_URL: '{{ jitsi_meet_interface_default_logo_url }}',
DEFAULT_REMOTE_DISPLAY_NAME: '{{ jitsi_meet_interface_default_remote_display_name }}',
DEFAULT_WELCOME_PAGE_LOGO_URL: '{{ jitsi_meet_interface_default_welcome_page_logo_url }}',

DISABLE_DOMINANT_SPEAKER_INDICATOR: false,
DISABLE_DOMINANT_SPEAKER_INDICATOR: {{ jitsi_meet_interface_disable_dominant_speaker_indicator }},

DISABLE_FOCUS_INDICATOR: false,
DISABLE_FOCUS_INDICATOR: {{ jitsi_meet_interface_disable_focus_indicator }},

/**
* If true, notifications regarding joining/leaving are no longer displayed.
*/
DISABLE_JOIN_LEAVE_NOTIFICATIONS: false,
DISABLE_JOIN_LEAVE_NOTIFICATIONS: {{ jitsi_meet_interface_disable_join_leave_notifications }},

/**
* If true, presence status: busy, calling, connected etc. is not displayed.
Expand Down Expand Up @@ -201,20 +201,16 @@ var interfaceConfig = {
* - it's impossible to control the placement of buttons
* - 'desktop' controls the "Share your screen" button
*/
TOOLBAR_BUTTONS: [
'microphone', 'camera', 'closedcaptions', 'desktop', 'embedmeeting', 'fullscreen',
'fodeviceselection', 'hangup', 'profile', 'chat', 'recording',
'livestreaming', 'etherpad', 'sharedvideo', 'settings', 'raisehand',
'videoquality', 'filmstrip', 'invite', 'feedback', 'stats', 'shortcuts',
'tileview', 'videobackgroundblur', 'download', 'help', 'mute-everyone', 'security'
],
TOOLBAR_BUTTONS: {{ jitsi_meet_interface_toolbar_buttons | to_nice_json }},

TOOLBAR_TIMEOUT: 4000,

// Browsers, in addition to those which do not fully support WebRTC, that
// are not supported and should show the unsupported browser page.
UNSUPPORTED_BROWSERS: [],

SET_FILMSTRIP_ENABLED: {{ jitsi_meet_interface_set_filmstrip_enabled }},

/**
* Whether to show thumbnails in filmstrip as a column instead of as a row.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,9 @@ JICOFO_AUTH_PASSWORD={{ jitsi_meet_jicofo_password }}
JICOFO_OPTS=""

# adds java system props that are passed to jicofo (default are for home and logging config file)
JAVA_SYS_PROPS="-Dnet.java.sip.communicator.SC_HOME_DIR_LOCATION=/etc/jitsi -Dnet.java.sip.communicator.SC_HOME_DIR_NAME=jicofo -Dnet.java.sip.communicator.SC_LOG_DIR_LOCATION=/var/log/jitsi -Djava.util.logging.config.file=/etc/jitsi/jicofo/logging.properties"
JAVA_SYS_PROPS=" \
-Dnet.java.sip.communicator.SC_HOME_DIR_LOCATION=/etc/jitsi \
-Dnet.java.sip.communicator.SC_HOME_DIR_NAME=jicofo \
-Dnet.java.sip.communicator.SC_LOG_DIR_LOCATION=/var/log/jitsi \
-Djava.util.logging.config.file=/etc/jitsi/jicofo/logging.properties \
"
50 changes: 50 additions & 0 deletions meet/templates/jicofo/logging.properties.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
handlers= java.util.logging.ConsoleHandler

# Handlers with XMPP debug enabled:
#handlers= java.util.logging.ConsoleHandler, org.jitsi.impl.protocol.xmpp.log.XmppPacketsFileHandler

# Handlers with syslog enabled:
#handlers= java.util.logging.ConsoleHandler, com.agafua.syslog.SyslogHandler

java.util.logging.ConsoleHandler.level = {{ jitsi_meet_jicofo_loglevel }}
java.util.logging.ConsoleHandler.formatter = org.jitsi.utils.logging2.JitsiLogFormatter
java.util.logging.ConsoleHandler.filter = org.jitsi.impl.protocol.xmpp.log.ExcludeXmppPackets

net.java.sip.communicator.util.ScLogFormatter.programname=Jicofo
.level= {{ jitsi_meet_jicofo_loglevel }}

# To enable XMPP packets logging add XmppPacketsFileHandler to the handlers property
org.jitsi.impl.protocol.xmpp.log.PacketDebugger.level=ALL
org.jitsi.impl.protocol.xmpp.log.XmppPacketsFileHandler.pattern=/var/log/jitsi/jicofo-xmpp.log
org.jitsi.impl.protocol.xmpp.log.XmppPacketsFileHandler.append=true
org.jitsi.impl.protocol.xmpp.log.XmppPacketsFileHandler.limit=200000000
org.jitsi.impl.protocol.xmpp.log.XmppPacketsFileHandler.count=3

# Syslog (uncomment handler to use)
com.agafua.syslog.SyslogHandler.transport = udp
com.agafua.syslog.SyslogHandler.facility = local0
com.agafua.syslog.SyslogHandler.port = 514
com.agafua.syslog.SyslogHandler.hostname = localhost
com.agafua.syslog.SyslogHandler.formatter = org.jitsi.utils.logging2.JitsiLogFormatter
com.agafua.syslog.SyslogHandler.escapeNewlines = false
com.agafua.syslog.SyslogHandler.filter = org.jitsi.impl.protocol.xmpp.log.ExcludeXmppPackets

# to disable double timestamps in syslog uncomment next line
#net.java.sip.communicator.util.ScLogFormatter.disableTimestamp=true

# time series logging
java.util.logging.SimpleFormatter.format= %5$s%n
java.util.logging.FileHandler.level = ALL
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.FileHandler.pattern = /tmp/jvb-series.log
java.util.logging.FileHandler.limit = 200000000
java.util.logging.FileHandler.count = 1
java.util.logging.FileHandler.append = false

timeseries.level=OFF
timeseries.org.jitsi.videobridge.cc.vp8.level=ALL
timeseries.useParentHandlers = false
timeseries.handlers = java.util.logging.FileHandler

# uncomment to see how Jicofo talks to the JVB
#org.jitsi.impl.protocol.xmpp.colibri.level=ALL
10 changes: 10 additions & 0 deletions meet/templates/jicofo/sip-communicator.properties.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[email protected].{{ jitsi_meet_server_name }}
{% if jitsi_meet_jibri_enabled == true -%}
[email protected].{{ jitsi_meet_server_name }}
org.jitsi.jicofo.jibri.PENDING_TIMEOUT=90
{% endif -%}

{% if jitsi_meet_octo_enabled -%}
org.jitsi.jicofo.BridgeSelector.BRIDGE_SELECTION_STRATEGY={{ jitsi_meet_octo_selection_strategy }}
org.jitsi.jicofo.SHORT_ID=1
{% endif -%}
Loading