cimnine.jitsi_meet

jitsi_meet

Un rôle Ansible pour installer Jitsi Meet.

Introduction

Ceci est un rôle Ansible qui installe Jitsi Meet avec nginx comme proxy de terminaison TLS et (facultativement) un certificat Let's Encrypt (via certbot) sur Ubuntu Bionic (18.04).

Exigences

  • Un domaine doit pointer vers votre serveur pour utiliser Let's Encrypt.
  • Votre pare-feu doit autoriser les ports 80/tcp, 443/tcp, 4443/tcp, 10000/udp.
    • Si votre serveur est derrière un NAT, assurez-vous de rediriger ces ports.

Variables du rôle

  • apt_mirror: Sur Ubuntu, universe doit être activé. Cette variable doit indiquer votre miroir système. Par défaut, il s'agit de http://archive.ubuntu.com/ubuntu.
  • jitsi_domain: Sous quel domaine Jitsi sera accessible. Doit être un nom de domaine si vous comptez utiliser Let's Encrypt. Peut être une adresse IP sinon. Par défaut, c'est {{ inventory_hostname }}.
  • certbot_enabled: Indique si certbot doit être installé et une demande de certificat pour {{ jitsi_domain }} doit être faite. Par défaut, c'est false.
  • certbot_admin_email: Quelle adresse e-mail enregistrer pour Let's Encrypt. Nécessaire si certbot_enabled=true. L'e-mail doit exister. Pas de valeur par défaut.
  • jitsi_nat: Indique si vous exécutez jitsi meet derrière un NAT. Par défaut, c'est false. Si activé, vous devez définir les variables jitsi_nat_local_ip et jitsi_nat_public_ip.
  • jitsi_nat_public_ip: L'adresse IP publique de votre hôte jitsi meet. Par défaut, cela correspond à l'IPv4 rapportée par ipify.
  • jitsi_nat_private_ip: L'adresse IP privée de votre hôte jitsi meet. Par défaut, cela correspond à l'IPv4 que Ansible considère comme la valeur par défaut pour l'hôte.
  • nginx_server_names_hash_bucket_size: La valeur de server_names_hash_bucket_size de nginx. Cela sera déclaré dans le fichier global nginx.conf si nginx_modify_server_names_hash_bucket_size est réglé sur true. Par défaut, c'est 64.
  • nginx_modify_server_names_hash_bucket_size: Indique si vous souhaitez modifier la valeur de server_names_hash_bucket_size dans le fichier global nginx.conf. Par défaut, c'est true.

Consultez également geerlingguy/ansible-role-certbot/.../defaults/main.yml pour des paramètres de configuration supplémentaires liés à certbot.

Dépendances

Dépend du rôle Ansible geerlingguy.certbot pour les tâches Let's Encrypt / certbot :

ansible-galaxy install geerlingguy.certbot

Démarrage rapide

Installez Ansible :

# sur macOS avec Homebrew
brew install ansible

# sur Debian
sudo apt update
sudo apt install software-properties-common
sudo apt-add-repository --yes --update ppa:ansible/ansible
sudo apt install ansible

# ou via Python / pip
sudo python3 -m pip install ansible

Configurez un nouveau serveur avec Ubuntu 18.04 ou obtenez-en un sur Digital Ocean, Vultr, Hetzner Cloud, Cloudscale, Azure, Google Cloud, AWS, ...

Assurez-vous de pouvoir vous connecter via votre clé SSH :

ssh-copy-id [email protected]
ssh [email protected]

Créez un fichier d'inventaire :

# jitsi.ini
[jitsi]
mon-serveur-jitsi.com jitsi_domain=mon-serveur-jitsi.com [email protected]

[jitsi:vars]
ansible_user=ubuntu
ansible_become=yes # à régler sur `no` si vous vous connectez via root
apt_mirror=http://archive.ubuntu.com/ubuntu # changez pour le miroir que vous utilisez déjà
certbot_enabled=yes
jitsi_nat=no # activez si votre serveur est derrière un NAT.

Créez un fichier de playbook :

# jitsi.yml
- hosts: jitsi
  roles:
      - cimnine.jitsi_meet

Installez les dépendances requises :

ansible-galaxy install cimnine.jitsi_meet
ansible-galaxy install geerlingguy.certbot

Exécutez le fichier playbook sur l'inventaire :

# si `sudo` sur votre serveur ne demande pas de mot de passe :
ansible-playbook -i jitsi.ini jitsi.yml

# ou si `sudo` sur votre serveur nécessite un mot de passe :
ansible-playbook -K -i jitsi.ini jitsi.yml

Configuration

Jitsi Meet peut être configuré via ce rôle Ansible. Pour cela, le fichier /etc/jitsi/meet/{{ jitsi_domain }}-config.js du package d'origine sera remplacé par un fichier géré par ce rôle.

Pour activer ce comportement, définissez la variable : managed_jitsi_config et réglez-la sur yes.

C'est-à-dire, ajoutez la dernière ligne de l'exemple suivant à votre jitsi.ini :

# jitsi.ini
[jitsi]
mon-serveur-jitsi.com jitsi_domain=mon-serveur-jitsi.com [email protected]
[jitsi:vars]
ansible_user=ubuntu
ansible_become=yes
apt_mirror=http://archive.ubuntu.com/ubuntu # changez pour le miroir que vous utilisez déjà
certbot_enabled=yes
jitsi_nat=no
managed_jitsi_config=yes  # gérez votre configuration jitsi via ce rôle

Ensuite, définissez toutes les variables de configuration requises. Les valeurs par défaut se trouvent dans le fichier defaults/main.yml du rôle. Toutes les variables doivent être fournies, pas seulement celles que vous souhaitez remplacer ! Faites attention aux variables vides telles que analytics: {} : en raison du fonctionnement de Jitsi, cela doit être un objet vide et ne peut pas être nul.

Tous les paramètres, leurs valeurs, leur utilisation et leur effet sont documentés dans jitsi-meet config.js.

Un exemple le plus simple pourrait être :

jitsi_config:
  hosts:
    domain: "{{ jitsi_domain }}"
    muc: "conference.{{ jitsi_domain }}"
  bosh: "//{{ jitsi_domain }}/http-bind"
  clientNode: "http://jitsi.org/jitsimeet"
  testing:
    enableFirefoxMulticast: false
    p2pTestMode: false
  desktopSharingChromeExtId: null
  desktopSharingChromeSources: [ 'screen', 'window', 'tab' ]
  desktopSharingChromeMinExtVersion: '0.1'
  channelLastN: -1
  enableWelcomePage: true
  enableUserRolesBasedOnToken: false
  p2p:
    enabled: true
    stunServers:
      - urls: 'stun:stun.l.google.com:19302'
      - urls: 'stun:stun1.l.google.com:19302'
      - urls: 'stun:stun2.l.google.com:19302'
    preferH264: true
  analytics: {}
  deploymentInfo: {}
  localRecording: {}
  e2eping: {}
  deploymentUrls: {}

NOTE : Les exigences de config.js peuvent changer à tout moment lors de la mise à jour de jitsi-meet, la communication en amont n'étant pas très claire à ce sujet. Vérifiez les CHANGELOG et les annonces du projet Jitsi Meet concernant les nouvelles valeurs requises avant de mettre à jour.

NOTE : La structure est sensible à la casse et suit les réglages de variables exacts dans config.js. Donc, par exemple, webrctIceUdpDisable est très différent de WebRTCIceUDPDisable. Jitsi est incohérent dans la nomenclature de ses variables (par exemple, il mélange URL et Url au hasard), donc faites attention au nom exact.

Désinstallation

Les commandes suivantes vous aideront à supprimer l’installation. Elles ne supprimeront peut-être pas tous les fichiers, mais elles suffisent pour recommencer en cas de problème.

systemctl stop jitsi-videobridge
systemctl disable jitsi-videobridge
apt-get purge -y jigasi jitsi-meet jitsi-meet-web-config jitsi-meet-prosody jitsi-meet-web jicofo jitsi-videobridge

systemctl stop nginx
systemctl disable nginx
apt-get purge -y nginx nginx-common nginx-full

apt purge certbot

rm -rf /etc/jitsi /etc/nginx /etc/letsencrypt

crontab -e -u root

reboot

Licence

MIT

À propos du projet

Install jitsi-meet with nginx and (optionally) certbot

Installer
ansible-galaxy install cimnine.jitsi_meet
Licence
mit
Téléchargements
651
Propriétaire
Called myself «serious software architect» as a joke, then ended up sticking to that.