« Jitsi » : différence entre les versions
(10 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 14 : | Ligne 14 : | ||
* Prérequis : | * Prérequis : | ||
<source> | <source> | ||
apt install curl | apt install curl gnupg2 nginx-full software-properties-common apt-transport-https | ||
</source> | </source> | ||
* Suivre ceci : https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-quickstart | * Suivre ceci : https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-quickstart | ||
Ligne 29 : | Ligne 29 : | ||
=== Modifications effectuées === | === Modifications effectuées === | ||
==== Fichier /etc/jitsi/meet/visio.<domaine>-config.js ===== | ==== Fichier /etc/jitsi/meet/visio.<domaine>-config.js ===== | ||
disableModeratorIndicator: false, | |||
disableReactions: false, | |||
liveStreamingEnabled: false, | |||
enableInsecureRoomNameWarning: true, | enableInsecureRoomNameWarning: true, | ||
enableAutomaticUrlCopy: true, | enableAutomaticUrlCopy: true, | ||
toolbarButtons: [ | |||
'camera', | |||
'chat', | |||
'closedcaptions', | |||
/ 'desktop', | |||
// 'download', | |||
// 'embedmeeting', | |||
// 'etherpad', | |||
// 'feedback', | |||
// 'filmstrip', | |||
'fullscreen', | |||
'hangup', | |||
'help', | |||
// 'invite', | |||
// 'livestreaming', | |||
'microphone', | |||
'mute-everyone', | |||
'mute-video-everyone', | |||
'participants-pane', | |||
'profile', | |||
'raisehand', | |||
// 'recording', | |||
'security', | |||
// 'select-background', | |||
'settings', | |||
// 'shareaudio', | |||
'sharedvideo', | |||
'shortcuts', | |||
'stats', | |||
'tileview', | |||
'toggle-camera', | |||
'videoquality', | |||
'__end' | |||
], | |||
enableDisplayNameInStats: true, | enableDisplayNameInStats: true, | ||
disableThirdPartyRequests: true, | disableThirdPartyRequests: true, | ||
hideLobbyButton: true, | |||
requireDisplayName: true, | |||
defaultLocalDisplayName: 'moi', | |||
defaultRemoteDisplayName: 'Autre participant', | |||
defaultLanguage: 'fr', | defaultLanguage: 'fr', | ||
noticeMessage: 'Bienvenue sur la plateforme de webconférence sécurisée de l\'Ambassade de France en Italie !', | noticeMessage: 'Bienvenue sur la plateforme de webconférence sécurisée de l\'Ambassade de France en Italie !', | ||
disableInviteFunctions: true, | disableInviteFunctions: true, | ||
enableLipSync | |||
enableLipSync: true, | |||
liveStreamingEnabled: false, | liveStreamingEnabled: false, | ||
A tester :video | |||
hideConferenceSubject: false, | |||
hideConferenceTimer: false, | |||
hideParticipantsStats: true, | |||
==== Fichier /var/www/jitsi-custom/interface_config.js ==== | ==== Fichier /var/www/jitsi-custom/interface_config.js ==== | ||
On va maintenant copier le fichier suivant dans un répertoire accessible de NGINX | |||
<source> | |||
mkdir /var/www/jitsi-custom | mkdir /var/www/jitsi-custom | ||
cp /usr/share/jitsi-meet/interface_config.js /var/www/jitsi-custom | cp /usr/share/jitsi-meet/interface_config.js /var/www/jitsi-custom/interface_config.js | ||
</source> | |||
Puis on modifie le fichier ainsi copié : | |||
<source> | |||
nano /var/www/jitsi-custom/interface_config.js | |||
BRAND_WATERMARK_LINK: 'https://it.ambafrance.org/', | BRAND_WATERMARK_LINK: 'https://it.ambafrance.org/', | ||
DISABLE_VIDEO_BACKGROUND: true, | |||
DISPLAY_WELCOME_FOOTER: false, | |||
ENABLE_DIAL_OUT: false, | ENABLE_DIAL_OUT: false, | ||
GENERATE_ROOMNAMES_ON_WELCOME_PAGE: false, | GENERATE_ROOMNAMES_ON_WELCOME_PAGE: false,a | ||
HIDE_INVITE_MORE_HEADER: true, | HIDE_INVITE_MORE_HEADER: true, | ||
LANG_DETECTION: false, // Allow i18n to detect the system language | |||
SHOW_BRAND_WATERMARK: true, | |||
</source> | |||
Puis on modifie le fichier de configuration de Nginx afin qu'il utilise les ressources modifiées | |||
<source> | |||
cp /etc/nginx/sites-available/visio.domaine.fr.conf /etc/nginx/sites-available/visio.domaine.fr.conf.bak | |||
nano /etc/nginx/sites-available/visio.domaine.fr.conf | |||
</source> | |||
On ajoute les redirections suivantes : | |||
<source> | |||
location = /interface_config.js { | |||
alias /var/www/jitsi-custom/interface_config.js; | |||
} | |||
location = /images/watermark.png { | |||
alias /var/www/jitsi-custom/watermark.png; | |||
} | |||
location = /images/watermark.svg { | |||
alias /var/www/jitsi-custom/watermark.png; | |||
} | |||
</source> | |||
Et on relance le serveur Nginx pour prendre en compte ces modifs | |||
<source> | |||
nginx -t && nginx -s reload | |||
</source> | |||
Enfin on modifie directement le fichier des libellés : | |||
==== Fichier /usr/share/jitsi-meet/libs/app.bundle.min.js ==== | |||
Ce fichier contient l'écran affiché par défaut en anglais. Il peut et doit être modifié si le texte affiché par défaut ne convient pas. | |||
# Rechercher "headerTitle" et modifier la valeur associée. Les caractères accentués sont autorisés, mais les apostrophes doivent impérativement être précédées d'un anti-slash \ | |||
# Rechercher "headerSubtitle" et modifier sa valeur de la même façon. | |||
# Enregistrer | |||
# Relancer le navigateur en forçant le rechargement du cache. | |||
==== Fichier /usr/share/jitsi-meet/lang/main-fr.json ==== | ==== Fichier /usr/share/jitsi-meet/lang/main-fr.json ==== | ||
"headerTitle": "Plateforme de visioconférence de l'Ambassade de France en Italie", | "headerTitle": "Plateforme de visioconférence de l'Ambassade de France en Italie", | ||
"headerSubtitle": "Webconférences sécurisées", | "headerSubtitle": "Webconférences sécurisées", | ||
Voir aussi ici : | Voir aussi ici : | ||
* https://community.hetzner.com/tutorials/jitsi-meet-on-debian-ubuntu | * https://community.hetzner.com/tutorials/jitsi-meet-on-debian-ubuntu | ||
* Mettre un serveur STUN : https://community.hetzner.com/tutorials/install-turn-stun-server-on-debian-ubuntu-with-coturn | * Mettre un serveur STUN : https://community.hetzner.com/tutorials/install-turn-stun-server-on-debian-ubuntu-with-coturn | ||
=== Autres supports pertinents === | === Autres supports pertinents === | ||
* Pour tout comprendre de Jitsi : https://www.aduneo.com/ameliorer-lacces-aux-visioconference-jitsi/ | * Pour tout comprendre de Jitsi : https://www.aduneo.com/ameliorer-lacces-aux-visioconference-jitsi/ |
Dernière version du 17 décembre 2021 à 09:29
Généralités
JITSI est un serveur de visio-conférence libre et gratuit.
Les premiers essais n'ont pas été très conclusifs pour les raisons suivantes :
- Ne fonctionne bien qu'avec Chrome et les applications Jitsi-Meet, mais aussi avec les applications basées sur Electron.
- Ne fonctionne pas avec Firefox hélas
- Je n'avais pas employé le FQDN pour la création du serveur... En reprenant tout, c'est passé comme une lettre à la poste.
Nouveautés
Il existe désormais un site qui reprend toutes les informations : https://jitsi.github.io/handbook/
Installation
Ubuntu Server 20.04
- Prérequis :
apt install curl gnupg2 nginx-full software-properties-common apt-transport-https
Ubuntu 18.04
J'utilise un CT avec Ubuntu Server 18.04.4
Il faut bien suivre scrupuleusement ces sites, et utilisant systématiquement le FQDN créé.
- Installation de base : https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-quickstart
- Customisation : https://framacloud.org/fr/cultiver-son-jardin/jitsi-meet
- Sécurisation : https://crosstalksolutions.com/how-to-enable-jitsi-server-authentication/
Modifications effectuées
Fichier /etc/jitsi/meet/visio.<domaine>-config.js =
disableModeratorIndicator: false, disableReactions: false,
liveStreamingEnabled: false,
enableInsecureRoomNameWarning: true, enableAutomaticUrlCopy: true,
toolbarButtons: [ 'camera', 'chat', 'closedcaptions', / 'desktop', // 'download', // 'embedmeeting', // 'etherpad', // 'feedback', // 'filmstrip', 'fullscreen', 'hangup', 'help', // 'invite', // 'livestreaming', 'microphone', 'mute-everyone', 'mute-video-everyone', 'participants-pane', 'profile', 'raisehand', // 'recording', 'security', // 'select-background', 'settings', // 'shareaudio', 'sharedvideo', 'shortcuts', 'stats', 'tileview', 'toggle-camera', 'videoquality', '__end' ],
enableDisplayNameInStats: true, disableThirdPartyRequests: true,
hideLobbyButton: true, requireDisplayName: true,
defaultLocalDisplayName: 'moi', defaultRemoteDisplayName: 'Autre participant',
defaultLanguage: 'fr', noticeMessage: 'Bienvenue sur la plateforme de webconférence sécurisée de l\'Ambassade de France en Italie !',
disableInviteFunctions: true,
enableLipSync: true, liveStreamingEnabled: false,
A tester :video
hideConferenceSubject: false,
hideConferenceTimer: false,
hideParticipantsStats: true,
Fichier /var/www/jitsi-custom/interface_config.js
On va maintenant copier le fichier suivant dans un répertoire accessible de NGINX
mkdir /var/www/jitsi-custom
cp /usr/share/jitsi-meet/interface_config.js /var/www/jitsi-custom/interface_config.js
Puis on modifie le fichier ainsi copié :
nano /var/www/jitsi-custom/interface_config.js
BRAND_WATERMARK_LINK: 'https://it.ambafrance.org/',
DISABLE_VIDEO_BACKGROUND: true,
DISPLAY_WELCOME_FOOTER: false,
ENABLE_DIAL_OUT: false,
GENERATE_ROOMNAMES_ON_WELCOME_PAGE: false,a
HIDE_INVITE_MORE_HEADER: true,
LANG_DETECTION: false, // Allow i18n to detect the system language
SHOW_BRAND_WATERMARK: true,
Puis on modifie le fichier de configuration de Nginx afin qu'il utilise les ressources modifiées
cp /etc/nginx/sites-available/visio.domaine.fr.conf /etc/nginx/sites-available/visio.domaine.fr.conf.bak
nano /etc/nginx/sites-available/visio.domaine.fr.conf
On ajoute les redirections suivantes :
location = /interface_config.js {
alias /var/www/jitsi-custom/interface_config.js;
}
location = /images/watermark.png {
alias /var/www/jitsi-custom/watermark.png;
}
location = /images/watermark.svg {
alias /var/www/jitsi-custom/watermark.png;
}
Et on relance le serveur Nginx pour prendre en compte ces modifs
nginx -t && nginx -s reload
Enfin on modifie directement le fichier des libellés :
Ce fichier contient l'écran affiché par défaut en anglais. Il peut et doit être modifié si le texte affiché par défaut ne convient pas.
- Rechercher "headerTitle" et modifier la valeur associée. Les caractères accentués sont autorisés, mais les apostrophes doivent impérativement être précédées d'un anti-slash \
- Rechercher "headerSubtitle" et modifier sa valeur de la même façon.
- Enregistrer
- Relancer le navigateur en forçant le rechargement du cache.
"headerTitle": "Plateforme de visioconférence de l'Ambassade de France en Italie", "headerSubtitle": "Webconférences sécurisées",
Voir aussi ici :
- https://community.hetzner.com/tutorials/jitsi-meet-on-debian-ubuntu
- Mettre un serveur STUN : https://community.hetzner.com/tutorials/install-turn-stun-server-on-debian-ubuntu-with-coturn
Autres supports pertinents
- Pour tout comprendre de Jitsi : https://www.aduneo.com/ameliorer-lacces-aux-visioconference-jitsi/
- Customiser : https://www.sixmedium.com/category/jitsi/page/2/
- Jitsi Meet Torture : https://github.com/jitsi/jitsi-meet-torture
SIP et Jigasi
- Installer JIGASI
apt install jigasi
- Modifier le fichier "/etc/jitsi/jigasi/sip-communicator.properties"
- Créer un compte jigasi :
prosodyctl register jigasi visio.cahuet.fr mdp_jigasi
prosodyctl check prosodyctl cert generate example.org auth.example.org
I went into /etc/prosody/conf.d/domain.com.cfg.lua and changes storage="empty" to storage="memory". Suddenly it started working.
Modifier les fichiers nano /etc/jitsi/videobridge/config JVB_ENABLE_APIS=rest,colibri
nano /etc/jitsi/videobridge/sip-communicator.properties org.jitsi.videobridge.ENABLE_STATISTICS=true org.jitsi.videobridge.STATISTICS_TRANSPORT=muc,colibri org.jitsi.videobridge.STATISTICS_INTERVAL=5000
Voir https://community.jitsi.org/t/quick-install-cant-get-colibri-stats-working/26461 http://192.168.100.208:8080/colibri/stats
upgrades
- Activer les logs callstats : https://www.callstats.io/integrate/jitsi-videobridge/
- tests de charge d'un serveur Jitsi : https://github.com/jitsi/jitsi-hammer
Documentation
- Excellents schémas : https://www.terena.org/activities/tf-webrtc/meeting1/slides/Jitsi.pdf
- Article sur LinuxFR : https://linuxfr.org/news/organiser-des-visioconferences-de-haute-qualite-avec-le-logiciel-libre-jitsi-meet
- Sécurité : https://jitsi.org/security/
- Personnalisation : https://community.jitsi.org/t/how-to-how-to-customize-meeting-options/74665
Particularités
- Je n'hébergeais pas de serveur jusqu'à présent sur mon proxmox. Il a donc fallu faire quelques adaptations pour mettre en place ce service.
- Créer un dyndns qui pointe vers mon adresse IP publique (via OVH et pfSense, pas de difficulté)
- Créer les règles de nattage afin de renvoyer les flux http, https et 10000 vers le serveur en DMZ
- Mise en DMZ du pfSense sur le modem opérateur
Clients
Ordinateurs
Sur Mac, Windows ou Linux, nécessité d'utiliser le navigateur Chrome de Google.
Sinon, télécharger le logiciel Jitsi Meet adapté à votre environnement sur https://github.com/jitsi/jitsi-meet-electron/releases/tag/v2.0.0 ou ici : https://github.com/jitsi/jitsi-meet-electron
Pour Mac
Installer homebrew si ce n'est pas déjà fait, et utiliser la commande :
brew cask install jitsi-meet
Android ou iPhone/iPad
Installer le logiciel Jitsi Meet puis configurer le serveur avec https://jitsi.cahuet.fr En profiter pour renseigner votre prénom.
Effectuer la demande de certificats Let's Encrypt
Executer le script suivant, et bien renseigner le FQDN
- /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
Automatiser la mise à jour des certificats
modifier le fichier crontab et ajouter les deux lignes suivantes :
crontab -e
- 4 * * 0 /usr/local/sbin/certbot-auto renew >> /var/log/certificates-renew.log
- 4 * * 0 systemctl restart nginx
Supervision
Voir Supervision Serveurs
http://172.30.1.101:3000/d/mcfIHGrZz/serveur-visioconference?orgId=1&refresh=30s
- Installer Grafana : https://grafana.com/docs/grafana/latest/installation/debian/
- installer InfluxDB : https://portal.influxdata.com/downloads/
- Récupérer le numéro du DashBoard : 11969 (https://grafana.com/grafana/dashboards/11969)
- Créer son propre Dashboard : https://community.jitsi.org/t/how-to-to-setup-grafana-dashboards-to-monitor-jitsi-my-comprehensive-tutorial-for-the-beginner/38696
- Mettre en place les statistiques : https://github.com/jitsi/jitsi-videobridge/blob/master/doc/statistics.md
Architecture
Tuning
- https://github.com/jitsi/jitsi-videobridge/blob/master/doc/octo.md
- https://community.jitsi.org/t/working-multi-jitsi-meet-multi-videobridge-setup/24704
- Désactivation du niveau du son : https://tweenpath.net/installing-jitsi-jibri-machine/
LoadBalancing
Jibri
Customisation
- nano /usr/share/jitsi-meet/libs/app.bundle.min.js
- Voir ici : https://www.bujarra.com/instalando-un-servidor-jitsi-para-tener-nuestra-solucion-corporativa-para-videconferencias/?lang=en
Ajout des fonctions de diffusion
Cela passe par l'isntallation d'un serveur JIBRI qui permet de diffuser une visioconférence sur YouTube : https://community.jitsi.org/t/tutorial-jibri-overview-troubleshooting-tips-tricks-solve-your-jibri-problems-quickly/86054
Comparatif solutions visio
Quelques références
- Installation de base : https://github.com/jitsi/jitsi-meet/blob/master/doc/quick-install.md
- Customisation : https://framacloud.org/fr/cultiver-son-jardin/jitsi-meet
- Promotheus Exporter : https://github.com/karrieretutor/jitsi-prom-exporter
- Jitsi-Videobridge : https://jitsi.org/jitsi-videobridge/
- Evaluation des performances : https://jitsi.org/jitsi-videobridge-performance-evaluation/
- https://www.howtoforge.com/tutorial/how-to-create-your-own-video-conference-using-jitsi-meet-on-ubuntu-1804/
- https://www.scaleway.com/en/docs/setting-up-jitsi-meet-videoconferencing-on-debian-buster/