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 dehttp://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'estfalse
.certbot_admin_email
: Quelle adresse e-mail enregistrer pour Let's Encrypt. Nécessaire sicertbot_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'estfalse
. Si activé, vous devez définir les variablesjitsi_nat_local_ip
etjitsi_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 deserver_names_hash_bucket_size
de nginx. Cela sera déclaré dans le fichier globalnginx.conf
singinx_modify_server_names_hash_bucket_size
est réglé surtrue
. Par défaut, c'est64
.nginx_modify_server_names_hash_bucket_size
: Indique si vous souhaitez modifier la valeur deserver_names_hash_bucket_size
dans le fichier globalnginx.conf
. Par défaut, c'esttrue
.
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
# 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
Install jitsi-meet with nginx and (optionally) certbot
ansible-galaxy install cimnine.jitsi_meet