freedomofpress.jitsi-meet
Jitsi Meet
==========
This tool sets up and configures the Jitsi Meet video conferencing software.
Requirements
You need to have DNS pointing to your server and SSL keys. If you don’t have SSL keys for your domain, you can use the thefinn93.letsencrypt Ansible role to get free SSL certificates from LetsEncrypt.
You also need to open ports 443 (TCP) and 10000 (UDP) for Jitsi Meet to function. By default, this role will use ufw
to allow these ports. If you're using a different firewall like iptables, set jitsi_meet_configure_firewall: false
. If you're on AWS or a similar platform, you will need to open those ports in the Security Group.
Role Variables
# Default certificate files are located at /var/lib/prosody/localhost.{crt,key}
# Not set here to prevent skipping custom Nginx configuration tasks with empty strings.
jitsi_meet_ssl_cert_path: ''
jitsi_meet_ssl_key_path: ''
# Use "localhost" by default unless SSL information is provided.
# If automatic Nginx configuration is off, use FQDN for vhost config.
jitsi_meet_server_name: "{{ ansible_fqdn if (jitsi_meet_ssl_cert_path or not jitsi_meet_configure_nginx) else 'localhost' }}"
# Only allows anonymous access, letting anyone use the server.
jitsi_meet_authentication: anonymous
# This role reads the config file to preserve secrets.
# To use your own secrets, set the following variables.
jitsi_meet_videobridge_secret: ''
jitsi_meet_jicofo_secret: ''
jitsi_meet_jicofo_password: ''
# Default username and port for the Jicofo service.
jitsi_meet_jicofo_user: focus
jitsi_meet_jicofo_port: 5347
# The port for Jitsi Videobridge can be specified here. Defaults to 5347.
jitsi_meet_videobridge_port: 5347
# This setting improves privacy by disabling third-party requests.
jitsi_meet_disable_third_party_requests: true
# For screen sharing with Chrome; requires building a specific extension.
jitsi_meet_desktop_sharing_chrome_method: 'ext'
jitsi_meet_desktop_sharing_chrome_ext_id: 'diibjkoicjeejcmhdnailmkgecihlobk'
# Provide local extension filename for copying to the target host.
jitsi_meet_desktop_sharing_chrome_extension_filename: ''
# Screen sharing setup for Firefox; disabled by default.
jitsi_meet_desktop_sharing_firefox_ext_id: 'null'
jitsi_meet_desktop_sharing_firefox_disabled: true
jitsi_meet_desktop_sharing_firefox_max_version_ext_required: '-1'
# Configuration options for responding to prompts during Jitsi Meet installation.
jitsi_meet_debconf_settings:
- name: jitsi-meet
question: jitsi-meet/jvb-hostname
value: "{{ jitsi_meet_server_name }}"
vtype: string
- name: jitsi-meet
question: jitsi-meet/jvb-serve
value: "false"
vtype: boolean
- name: jitsi-meet-prosody
question: jitsi-meet-prosody/jvb-hostname
value: "{{ jitsi_meet_server_name }}"
vtype: string
# Configure ufw firewall rules for Jitsi Meet.
jitsi_meet_configure_firewall: true
# Automatically configure nginx for Jitsi Meet.
jitsi_meet_configure_nginx: true
Screen Sharing
Jitsi Meet allows screen sharing through browser extensions. Only the person sharing their screen needs the extension; others can view it without any installation. You’ll have to create your own browser extension for Chrome and/or Firefox. For more details, check the Jidesha documentation. This role works only with custom Chrome extensions.
Chrome requires that extensions be installed from approved sites. To install, download the .crx
file, go to chrome://extensions
, and drag-and-drop the file there. To share screen support with others, send them the extension's URL via the Jitsi Meet chat.
Dependencies
While not a requirement, you should look into thefinn93.letsencrypt for easily obtaining SSL certificates.
Example Playbook
Here is an example of how to use this role with variables:
- name: Configure Jitsi Meet server.
hosts: jitsi
vars:
# Update this to match your host's DNS entry.
jitsi_meet_server_name: meet.example.com
roles:
- role: thefinn93.letsencrypt
become: yes
letsencrypt_email: "webmaster@{{ jitsi_meet_server_name }}"
letsencrypt_cert_domains:
- "{{ jitsi_meet_server_name }}"
tags: letsencrypt
- role: ansible-role-jitsi-meet
jitsi_meet_ssl_cert_path: "/etc/letsencrypt/live/{{ jitsi_meet_server_name }}/fullchain.pem"
jitsi_meet_ssl_key_path: "/etc/letsencrypt/live/{{ jitsi_meet_server_name }}/privkey.pem"
become: yes
tags: jitsi
Running the Tests
This role uses Molecule and ServerSpec for testing. Install them with:
pip install molecule
gem install serverspec
molecule test
You can run specific tests with:
molecule idempotence
molecule verify
Refer to the Molecule documentation for more details.
License
MIT
Author Information
ansible-galaxy install freedomofpress.jitsi-meet