Update to 2021-04-29 19:00

master
Daniel Berteaud 4 years ago
parent 7237e322a1
commit 49923bd1a0
  1. 17
      roles/jitsi/defaults/main.yml
  2. 5
      roles/jitsi/tasks/conf.yml
  3. 5
      roles/jitsi/tasks/directories.yml
  4. 18
      roles/jitsi/tasks/facts.yml
  5. 2
      roles/jitsi/templates/jicofo/sip-communicator.properties.j2
  6. 1
      roles/jitsi/templates/jitsi-confmapper.service.j2
  7. 1
      roles/jitsi/templates/jitsi-jicofo.service.j2
  8. 1
      roles/jitsi/templates/jitsi-jigasi.service.j2
  9. 5
      roles/jitsi/templates/prosody.cfg.lua.j2
  10. 1
      roles/jitsi_jibri/meta/main.yml
  11. 9
      roles/jitsi_jibri/tasks/conf.yml
  12. 3
      roles/jitsi_jibri/tasks/directories.yml
  13. 2
      roles/jitsi_jibri/tasks/install.yml
  14. 8
      roles/jitsi_jibri/templates/jibri.conf.j2
  15. 3
      roles/jitsi_jibri/templates/jitsi-jibri-xorg.service.j2
  16. 4
      roles/jitsi_jibri/templates/jitsi-jibri.service.j2
  17. 5
      roles/jitsi_jibri/templates/nginx.conf.j2

@ -68,9 +68,7 @@ jitsi_meet_conf_base:
domain: "{{ jitsi_domain }}" domain: "{{ jitsi_domain }}"
muc: conference.{{ jitsi_domain }} muc: conference.{{ jitsi_domain }}
bosh: '//{{ jitsi_domain }}/http-bind' bosh: '//{{ jitsi_domain }}/http-bind'
# websocket support is broken on prosody 0.11.7 when running lua 5.1 (on EL7), so disable it for now so it fallback to BOSH websocket: wss://{{ jitsi_domain }}/xmpp-websocket
# websocket: wss://{{ jitsi_domain }}/xmpp-websocket
websocket: False
clientNode: http://jitsi.org/jitsimeet clientNode: http://jitsi.org/jitsimeet
focusUserJid: "{{ jitsi_jicofo_xmpp_user }}@{{ jitsi_auth_domain }}" focusUserJid: "{{ jitsi_jicofo_xmpp_user }}@{{ jitsi_auth_domain }}"
disableAudioLevels: True disableAudioLevels: True
@ -95,7 +93,7 @@ jitsi_meet_conf_base:
localRecording: localRecording:
enabled: True enabled: True
p2p: p2p:
enabled: True enabled: False
useStunTurn: True useStunTurn: True
stunServers: "{{ jitsi_stun_servers }}" stunServers: "{{ jitsi_stun_servers }}"
preferH264: True preferH264: True
@ -144,7 +142,7 @@ jitsi_meet_interface_conf_base:
- hangup - hangup
- profile - profile
- chat - chat
#- recording - recording
#- livestreaming #- livestreaming
- etherpad - etherpad
- sharedvideo - sharedvideo
@ -270,6 +268,13 @@ jitsi_confmapper_conf_base:
host: 0.0.0.0 host: 0.0.0.0
expire_seconds: 86400 expire_seconds: 86400
id_max_length: 4 id_max_length: 4
db_file: "{{ jitsi_root_dir }}/data/confmapper.sqlite" db_file: "{{ jitsi_root_dir }}/data/confmapper/confmapper.sqlite"
jitsi_confmapper_conf_extra: {} jitsi_confmapper_conf_extra: {}
jitsi_confmapper_conf: "{{ jitsi_confmapper_conf_base | combine(jitsi_confmapper_conf_extra, recursive=True) }}" jitsi_confmapper_conf: "{{ jitsi_confmapper_conf_base | combine(jitsi_confmapper_conf_extra, recursive=True) }}"
# This is for Jibri integration
jitsi_jibri_xmpp_user: jibri
# jitsi_jibri_xmpp_pass: s3cr3t.
jitsi_jibri_recorder_xmpp_user: recorder
# jitsi_jibri_recorder_xmpp_pass: p@ssw0rd

@ -20,6 +20,11 @@
pass: "{{ jitsi_jicofo_xmpp_pass }}" pass: "{{ jitsi_jicofo_xmpp_pass }}"
- user: "{{ jitsi_jigasi_xmpp_user }}" - user: "{{ jitsi_jigasi_xmpp_user }}"
pass: "{{ jitsi_jigasi_xmpp_pass }}" pass: "{{ jitsi_jigasi_xmpp_pass }}"
- user: "{{ jitsi_jibri_xmpp_user }}"
pass: "{{ jitsi_jibri_xmpp_pass }}"
- name: Register recorder XMPP account
command: prosodyctl register {{ jitsi_jibri_recorder_xmpp_user }} recorder.{{ jitsi_domain }} '{{ jitsi_jibri_recorder_xmpp_pass }}'
- name: add focus component in focus user roster - name: add focus component in focus user roster
command: prosodyctl mod_roster_command subscribe focus.{{ jitsi_domain }} {{ jitsi_jicofo_xmpp_user }}@{{ jitsi_auth_domain }} command: prosodyctl mod_roster_command subscribe focus.{{ jitsi_domain }} {{ jitsi_jicofo_xmpp_user }}@{{ jitsi_auth_domain }}

@ -21,6 +21,7 @@
- dir: "{{ jitsi_root_dir }}/src/meet" - dir: "{{ jitsi_root_dir }}/src/meet"
owner: "{{ jitsi_user }}" owner: "{{ jitsi_user }}"
- dir: "{{ jitsi_root_dir }}/videobridge" - dir: "{{ jitsi_root_dir }}/videobridge"
- dir: "{{ jitsi_root_dir }}/jibri"
- dir: "{{ jitsi_root_dir }}/jicofo" - dir: "{{ jitsi_root_dir }}/jicofo"
- dir: "{{ jitsi_root_dir }}/jigasi" - dir: "{{ jitsi_root_dir }}/jigasi"
- dir: "{{ jitsi_root_dir }}/meet" - dir: "{{ jitsi_root_dir }}/meet"
@ -28,6 +29,8 @@
mode: 700 mode: 700
- dir: "{{ jitsi_root_dir }}/archives" - dir: "{{ jitsi_root_dir }}/archives"
mode: 700 mode: 700
- dir: "{{ jitsi_root_dir }}/etc/"
mode: 755
- dir: "{{ jitsi_root_dir }}/etc/videobridge" - dir: "{{ jitsi_root_dir }}/etc/videobridge"
owner: "{{ jitsi_user }}" owner: "{{ jitsi_user }}"
group: "{{ jitsi_user }}" group: "{{ jitsi_user }}"
@ -42,6 +45,8 @@
mode: 700 mode: 700
- dir: "{{ jitsi_root_dir }}/etc/confmapper" - dir: "{{ jitsi_root_dir }}/etc/confmapper"
- dir: "{{ jitsi_root_dir }}/data" - dir: "{{ jitsi_root_dir }}/data"
mode: 755
- dir: "{{ jitsi_root_dir }}/data/confmapper"
owner: "{{ jitsi_user }}" owner: "{{ jitsi_user }}"
group: "{{ jitsi_user }}" group: "{{ jitsi_user }}"
mode: 700 mode: 700

@ -40,6 +40,24 @@
when: jitsi_jigasi_xmpp_pass is not defined when: jitsi_jigasi_xmpp_pass is not defined
tags: jitsi tags: jitsi
- name: Generate a random password for jibri XMPP account
block:
- import_tasks: ../includes/get_rand_pass.yml
vars:
- pass_file: "{{ jitsi_root_dir }}/meta/ansible_jibri_xmpp_pass"
- set_fact: jitsi_jibri_xmpp_pass={{ rand_pass }}
when: jitsi_jibri_xmpp_pass is not defined
tags: jitsi
- name: Generate a random password for recorder XMPP account
block:
- import_tasks: ../includes/get_rand_pass.yml
vars:
- pass_file: "{{ jitsi_root_dir }}/meta/ansible_jibri_recorder_xmpp_pass"
- set_fact: jitsi_jibri_recorder_xmpp_pass={{ rand_pass }}
when: jitsi_jibri_recorder_xmpp_pass is not defined
tags: jitsi
- name: Set certificate path - name: Set certificate path
set_fact: jitsi_cert_path='/etc/prosody/certs/jitsi.crt' set_fact: jitsi_cert_path='/etc/prosody/certs/jitsi.crt'
when: jitsi_cert_path is not defined when: jitsi_cert_path is not defined

@ -7,3 +7,5 @@ org.jitsi.jicofo.BRIDGE_MUC=JvbBrewery@internal.{{ jitsi_auth_domain }}
{% if jitsi_jigasi %} {% if jitsi_jigasi %}
org.jitsi.jicofo.jigasi.BREWERY=JigasiBrewery@internal.{{ jitsi_auth_domain }} org.jitsi.jicofo.jigasi.BREWERY=JigasiBrewery@internal.{{ jitsi_auth_domain }}
{% endif %} {% endif %}
org.jitsi.jicofo.jibri.BREWERY=JibriBrewery@internal.{{ jitsi_auth_domain }}
org.jitsi.jicofo.jibri.PENDING_TIMEOUT=90

@ -14,6 +14,7 @@ Restart=on-failure
StartLimitInterval=0 StartLimitInterval=0
RestartSec=30 RestartSec=30
ExecStart={{ jitsi_root_dir }}/confmapper/daemon.py ExecStart={{ jitsi_root_dir }}/confmapper/daemon.py
SyslogIdentifier=confmapper
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target

@ -24,6 +24,7 @@ ExecStart=/opt/jitsi/jicofo/jicofo.sh \
--user_name=${JICOFO_USER} \ --user_name=${JICOFO_USER} \
--user_password=${JICOFO_USER_PASS} \ --user_password=${JICOFO_USER_PASS} \
${JICOFO_OPT} ${JICOFO_OPT}
SyslogIdentifier=jicofo
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target

@ -20,6 +20,7 @@ ExecStart=/opt/jitsi/jigasi/jigasi.sh \
--configdirname=jigasi \ --configdirname=jigasi \
--nocomponent=true \ --nocomponent=true \
${JIGASI_OPT} ${JIGASI_OPT}
SyslogIdentifier=jigasi
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target

@ -75,6 +75,11 @@ VirtualHost "{{ jitsi_auth_domain }}"
authentication = "internal_hashed" authentication = "internal_hashed"
c2s_require_encryption = false c2s_require_encryption = false
VirtualHost "recorder.{{ jitsi_domain }}"
modules_enabled = { "ping"; }
authentication = "internal_hashed"
c2s_require_encryption = false
Component "conference.{{ jitsi_domain }}" "muc" Component "conference.{{ jitsi_domain }}" "muc"
storage = "memory" storage = "memory"
modules_enabled = { "ping"; } modules_enabled = { "ping"; }

@ -3,3 +3,4 @@
dependencies: dependencies:
- role: repo_rpmfusion # For ffmpeg - role: repo_rpmfusion # For ffmpeg
- role: repo_google_chrome # For, well, Google Chrome ;-) - role: repo_google_chrome # For, well, Google Chrome ;-)
- role: nginx # For nginx, to expose recordings

@ -41,9 +41,14 @@
- name: Configure snd-aloop to be loaded on boot - name: Configure snd-aloop to be loaded on boot
copy: copy:
content: snd-aloop content: snd-aloop
dest: /etc/modules-load/jibri.conf dest: /etc/modules-load.d/jibri.conf
tags: jitsi tags: jitsi
- name: Configure asound - name: Configure asound
template: asound.conf.j2 dest={{ jitsi_root_dir }}/jibri/.asoundrc owner={{ jitsi_jibri_user }} template: src=asound.conf.j2 dest={{ jitsi_root_dir }}/jibri/.asoundrc owner={{ jitsi_jibri_user }}
tags: jitsi
- name: Configure nginx to serve recordings
template: src=nginx.conf.j2 dest=/etc/nginx/ansible_location.d/10-jitsi-jibri.conf
notify: reload nginx
tags: jitsi tags: jitsi

@ -13,5 +13,6 @@
mode: 750 mode: 750
- dir: "{{ jitsi_root_dir }}/data/recordings" - dir: "{{ jitsi_root_dir }}/data/recordings"
owner: "{{ jitsi_jibri_user }}" owner: "{{ jitsi_jibri_user }}"
mode: 700 group: nginx
mode: 750
tags: jitsi tags: jitsi

@ -9,7 +9,6 @@
- ffmpeg - ffmpeg
- curl - curl
- alsa-utils - alsa-utils
- icewm
- xdotool - xdotool
#- xorg-x11-drv-void #- xorg-x11-drv-void
- xorg-x11-drv-dummy - xorg-x11-drv-dummy
@ -71,7 +70,6 @@
loop: loop:
- jibri - jibri
- jibri-xorg - jibri-xorg
- jibri-icewm
register: jitsi_jibri_unit register: jitsi_jibri_unit
notify: restart jitsi-jibri notify: restart jitsi-jibri
tags: jitsi tags: jitsi

@ -47,6 +47,14 @@ jibri {
".*" ".*"
] ]
} }
ffmpeg {
resolution = "1024x768"
// The audio source that will be used to capture audio on Linux
audio-source = "alsa"
// The audio device that will be used to capture audio on Linux
audio-device = "plug:bsnoop"
}
chrome { chrome {
// The flags which will be passed to chromium when launching // The flags which will be passed to chromium when launching
flags = [ flags = [

@ -3,6 +3,7 @@ Description=Jibri Xorg Process
After=network.target After=network.target
[Service] [Service]
Type=simple
User={{ jitsi_jibri_user }} User={{ jitsi_jibri_user }}
Group={{ jitsi_jibri_user }} Group={{ jitsi_jibri_user }}
Environment=DISPLAY=:0 Environment=DISPLAY=:0
@ -12,7 +13,7 @@ ExecReload=/bin/kill -HUP $MAINPID
KillMode=process KillMode=process
Restart=on-failure Restart=on-failure
RestartPreventExitStatus=255 RestartPreventExitStatus=255
Type=simple SyslogIdentifier=jibri-xorg
[Install] [Install]
WantedBy=jitsi-jibri.service jitsi-jibri-icewm.service WantedBy=jitsi-jibri.service jitsi-jibri-icewm.service

@ -1,6 +1,7 @@
[Unit] [Unit]
Description=Jitsi Broadcasting Infrastructure Description=Jitsi Broadcasting Infrastructure
After=network.target After=network.target
Requires=jitsi-jibri-xorg.service
[Service] [Service]
Type=simple Type=simple
@ -8,10 +9,11 @@ SuccessExitStatus=143
User={{ jitsi_jibri_user }} User={{ jitsi_jibri_user }}
Group={{ jitsi_jibri_user }} Group={{ jitsi_jibri_user }}
PrivateTmp=true PrivateTmp=true
Restart=on-failure Restart=always
StartLimitInterval=0 StartLimitInterval=0
RestartSec=30 RestartSec=30
ExecStart=/bin/java -Dconfig.file={{ jitsi_root_dir }}/etc/jibri/jibri.conf -jar {{ jitsi_root_dir }}/jibri/jibri.jar ExecStart=/bin/java -Dconfig.file={{ jitsi_root_dir }}/etc/jibri/jibri.conf -jar {{ jitsi_root_dir }}/jibri/jibri.jar
SyslogIdentifier=jibri
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target

@ -0,0 +1,5 @@
# Serve recordings through nginx
location ~* /recordings/.+\.mp4 {
alias /opt/jitsi/data/recordings;
add_header Content-disposition "attachment";
}
Loading…
Cancel
Save