====== Service visio.chapril.org ====== Le service Visio du Chapril est une instance de [[https://github.com/jitsi/jitsi-meet|Jitsi Meet]]. Le dépôt d’outillage pour Visio est https://forge.april.org/Chapril/visio.chapril.org-tools. ====== Installation ====== ===== Configuration DNS ===== Sur la VM DNS, ajouter le domaine ''visio.chapril.org''. Voir [[admin:procedures:ajout-record-dns]]. ===== Configuration Bastion ===== Créer dans la VM Bastion le fichier ''/etc/nginx/sites-available/visio.chapril.org''. Créer le lien symbolique : cd /etc/nginx/sites-enabled/ ln -s ../sites-available/visio.chapril.org Créer le répertoire des logs HTTP : mkdir /var/log/nginx/visio.chapril.org/ Désactiver le protocole HTTPS dans la configuration Nginx de Visio : nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful nginx -s reload Étendre la liste des domaines gérée par Dehydrated : echo "visio.chapril.org" >> /etc/dehydrated/domains.txt Lancer Dehydrated pour récupérer le certificat TLS du domaine : dehydrated -c # INFO: Using main config file /etc/dehydrated/config # INFO: Using additional config file /etc/dehydrated/conf.d/test-ca.sh Processing visio.chapril.org + Creating new directory /var/lib/dehydrated/certs/visio.chapril.org ... + Signing domains... + Generating private key... + Generating signing request... + Requesting new certificate order from CA... + Received 1 authorizations URLs from the CA + Handling authorization for visio.chapril.org + 1 pending challenge(s) + Deploying challenge tokens... + Responding to challenge for visio.chapril.org authorization... + Challenge is valid! + Cleaning challenge tokens... + Requesting certificate... + Checking certificate... + Done! + Creating fullchain.pem... + Done! Activer le protocole HTTPS dans la configuration Nginx de Visio et recharger : nginx -t nginx -s reload ===== Configuration VM Allo ===== ==== Prérequis ==== La [[https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-quickstart|documentation officielle d'installation]] cite quelques prérequis. Installer certains paquets : apt-get install gnupg2 Définir le domaine ''visio.chapril.org'' dans ''/etc/hosts'' : 127.0.2.1 visio.chapril.org visio ==== Configuration des ports ==== Définir dans FireHOL une configuration pour Jitsi dans ''/etc/firehol/services/jitsi.conf'' : #FHVER: 1:213 # La première ligne ci-dessus est nécessaire !! server_jitsi_ports="udp/10000 tcp/4443" client_jitsi_ports="default" Activer cette configuration en ajoutant la ligne suivante dans ''/etc/firehol/firehol-ext2me.conf'' : server jitsi accept Tester : firehol try Si OK alors répondre //oui// à la proposition d'activer la nouvelle configuration de FireHOL. ==== Configuration du dépôt Jitsi ==== Ajouter le dépôt Jitsi : echo 'deb https://download.jitsi.org stable/' >> /etc/apt/sources.list.d/jitsi-stable.list Charger la clef du dépôt Jitsi : wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | apt-key add - OK ==== Installer un serveur Web ==== L'installation du paquet Jitsi va détecter la présence d'un serveur Web et y placer un fichier de configuration pour le domaine. Installer Nginx… ==== Installation des paquets Jitsi ==== Mettre à jour la liste des paquets et installer le paquet ''jitsi'' : apt-get update Atteint :1 https://apt.chapril.org/debian buster InRelease Réception de :2 http://security.debian.org/debian-security buster/updates InRelease [65,4 kB] Atteint :3 http://ftp.de.debian.org/debian buster InRelease Réception de :4 https://download.jitsi.org stable/ InRelease [2 415 B] Réception de :5 https://download.jitsi.org stable/ Packages [36,4 kB] 104 ko réceptionnés en 0s (272 ko/s) Lecture des listes de paquets... Fait apt install jitsi-meet Lecture des listes de paquets... Fait Construction de l'arbre des dépendances Lecture des informations d'état... Fait ==== Configuration Nginx ==== À l'installation du paquet Jitsi, un serveur Web est détecté ou installé et une configuration est ajoutée pour le domaine déclaré. Compléter le fichier ''/etc/nginx/sites-availabled/visio.chapril.org''. Créer le lien symbolique : cd /etc/nginx/sites-enabled/ ln -s ../sites-available/visio.chapril.org Créer le dossier des logs HTTP : mkdir /var/log/nginx/visio.chapril.org/ Relancer le site Web : nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful nginx -s reload ==== Configuration Videobridge ==== Éditer le fichier ''/etc/jitsi/videobridge/sip-communicator.properties'' : #org.jitsi.videobridge.AUTHORIZED_SOURCE_REGEXP=focus@auth.visio.chapril.org/.* org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=192.168.1.64 org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=88.99.233.240 org.jitsi.videobridge.ENABLE_STATISTICS=true org.jitsi.videobridge.STATISTICS_TRANSPORT=muc org.jitsi.videobridge.xmpp.user.shard.HOSTNAME=localhost org.jitsi.videobridge.xmpp.user.shard.DOMAIN=auth.visio.chapril.org org.jitsi.videobridge.xmpp.user.shard.USERNAME=jvb org.jitsi.videobridge.xmpp.user.shard.PASSWORD=XXXXXXXXXXXXXXXXXXX org.jitsi.videobridge.xmpp.user.shard.MUC_JIDS=JvbBrewery@internal.auth.visio.chapril.org org.jitsi.videobridge.xmpp.user.shard.MUC_NICKNAME=XXXXXX-XXXXXX-XXXXXXX-XXXXXXXXX ==== Limiter la mémoire de Videobridge ==== Par défaut, la valeur maximale de mémoire allouable est 3072 Mo, ce qui peut paraître beaucoup. À modifier dans le fichier ''/usr/share/jitsi-videobridge/lib/videobridge.rc'' : VIDEOBRIDGE_MAX_MEMORY=2048m ===== Activation des statistiques ===== Éditer le fichier ''/etc/jitsi/videobridge/config'' : JVB_OPTS="--apis=rest, " Redémarrer : systemctl restart nginx.service jicofo.service jitsi-videobridge2.service Tester dans la VM Allo : cd ~/ curl http://localhost:8080/about/version {"name":"JVB","version":"2.1.376-g9f12bfe2","os":"Linux"} curl http://localhost:8080/colibri/conferences [] curl http://localhost:8080/colibri/stats {"inactive_endpoints":0,"inactive_conferences":0,"total_ice_succeeded_relayed"… curl http://localhost:8080/colibri/stats 2> /dev/null | jshon -e participants -u 9 Documentation : * https://github.com/jitsi/jitsi-videobridge/blob/master/doc/rest.md ; * https://github.com/jitsi/jitsi-videobridge/blob/master/doc/statistics.md#implementation ; * https://github.com/jitsi/jitsi-videobridge/blob/master/doc/rest-colibri.md. ===== Personnalisation ====== ==== Espace de fichiers ==== La personnalisation va passer par plusieurs fichiers à délivrer sur demande. Création de l'espace des fichiers de personnalisation : mkdir /var/www/visio.chapril.org/ Copier le fichier de configuration de l'interface dans l'espace de fichiers personnalisés : cd /var/www/visio.chapril.org/ cp /usr/share/jitsi-meet/interface_config.js . Ajouter dans ''/etc/nginx/sites-enabled/visio.chapril.org'' (avant les autres directives ''location'') : location = /interface_config.js { alias /var/www/visio.chapril.org/interface_config.js; } Activer la nouvelle configuration : nginx -t && nginx -s reload ==== Favicon Chapril ==== Le fichier //favicon// : {{:admin:services:favicon-visiochaprilorg.ico|Logotype Favicon de Visio}}. Placer le fichier //favicon// dans l'espace qui va bien : cd /var/www/visio.chapril.org/ mkdir images cd images/ wget https://admin.chapril.org/lib/exe/detail.php?id=admin%3Aservices%3Avisio.chapril.org&media=admin:services:favicon-visiochaprilorg.ico mv favicon-visiochaprilorg.ico favicon.ico Ajouter dans ''/etc/nginx/sites-enabled/visio.chapril.org'' (avant les autres directives ''location'') : location = /images/favicon.ico { alias /var/www/visio.chapril.org/images/favicon.ico; } Activer la nouvelle configuration : nginx -t && nginx -s reload ==== Watermark Chapril ==== Placer l'image dans l'espace qui va bien : cd /var/www/visio.chapril.org/ mkdir images cd images/ wget https://www.chapril.org/IMG/siteon0.png?1569921870 mv siteon0.png?1569921870 logo-chapril.png Ajouter dans ''/etc/nginx/sites-enabled/visio.chapril.org'' (avant les autres directives ''location'') : location = /images/watermark.png { alias /var/www/visio.chapril.org/images/logo-chapril.png; } Activer la nouvelle configuration : nginx -t && nginx -s reload Modifier le fichier ''/var/www/visio.chapril.org/interface_config.js'' : < JITSI_WATERMARK_LINK: 'https://jitsi.org', --- > JITSI_WATERMARK_LINK: 'https://www.chapril.org/', ==== Parties tierces ==== Dans le fichier ''/etc/jitsi/meet/visio.chapril.org-config.js'' : disableThirdPartyRequests: true, ==== Titres et onglet ==== Modifier le fichier ''/var/www/visio.chapril.org/interface_config.js'' : < APP_NAME: 'Jitsi Meet', < NATIVE_APP_NAME: 'Jitsi Meet', < PROVIDER_NAME: 'Jitsi', --- > APP_NAME: 'Visio.chapril.org', > NATIVE_APP_NAME: 'Visio.chapril.org', > PROVIDER_NAME: 'Chapril', ==== Interface en Français ==== Réglages à faire pour imposer le Français comme langue d'interface((Ça permet de ne pas multiplier les traductions des personnalisations.)). Dans le fichier ''/var/www/visio.chapril.org/interface_config.js'' : LANG_DETECTION: false, // Allow i18n to detect the system language Dans le fichier ''/etc/jitsi/meet/visio.chapril.org-config.js'' : defaultLanguage: 'fr', Dans le fichier ''/var/www/visio.chapril.org/interface_config.js'', personnaliser les champs suivants : < DEFAULT_REMOTE_DISPLAY_NAME: 'Fellow Jitster', < DEFAULT_LOCAL_DISPLAY_NAME: 'me', --- > DEFAULT_REMOTE_DISPLAY_NAME: 'autre', > DEFAULT_LOCAL_DISPLAY_NAME: 'moi', ==== Textes page d'accueil ==== Copier le fichier français d'internalisation dans l'espace de fichiers personnalisés : cd /var/www/visio.chapril.org/ mkdir lang cd lang/ cp /usr/share/jitsi-meet/lang/main-fr.json . Ajouter dans ''/etc/nginx/sites-enabled/visio.chapril.org'' (avant les autres directives ''location'') : location = /lang/main-fr.json { alias /var/www/visio.chapril.org/lang/main-fr.json; } ==== Ajouter un lien vers la messagerie support sur la page d'accueil ==== Éditer le fichier ''/usr/share/jitsi-meet/static/welcomePageAdditionalContent.html'' comme suit : Activer la nouvelle configuration : nginx -t && nginx -s reload Modifier les entrées ''headerTitle'' et ''headerSubtitle'' comme suit : < "headerTitle": "Visio.chapril.org", < "headerSubtitle": "Visio.chapril.org est un service libre de visioconférence. Rien à installer, tout se passe dans votre navigateur. Pas de réglage à faire, le son est parfait par défaut.\nAnonyme, pas de besoin de compte. Chiffré, votre intimité numérique est préservée. Ouvert à tout le monde, invitez qui vous voulez, quand vous voulez. Recommandation : 5 personnes maximum par salon et éviter les connexions Internet faibles.", --- > "headerTitle": "Jitsi Meet", > "headerSubtitle": "Conférences sécurisées et de haute qualité", ==== Désactivation de la caméra par défaut ==== Dans le fichier ''/etc/jitsi/meet/visio.chapril.org-config.js'' : startWithVideoMuted: true, Possibilité de désactiver automatiquement à partir d'un certain nombre de participants : // Every participant after the Nth will start video muted. // startVideoMuted: 10, ==== Abaisser la qualité vidéo par défaut ==== Dans ''/etc/jitsi/meet/visio.chapril.org-config.js'' : // Sets the preferred resolution (height) for local video. Defaults to 720. - // resolution: 720, + resolution: 360, - // constraints: { - // video: { - // aspectRatio: 16 / 9, - // height: { - // ideal: 720, - // max: 720, - // min: 240 - // } - // } - // }, + constraints: { + video: { + aspectRatio: 16 / 9, + height: { + ideal: 360, + max: 360, + min: 240 + } + } + }, ==== Retrait pub privateur ==== Dans le fichier ''/var/www/visio.chapril.org/interface_config.js'' : < OPTIMAL_BROWSERS: [ 'chrome', 'chromium', 'firefox', 'nwjs', 'electron', 'safari' ], --- > OPTIMAL_BROWSERS: [ 'chromium', 'firefox', 'nwjs', 'electron' ], ==== Retirer des entrées inutiles du menu ==== Actuellement, une fois dans un salon Jitsi, dans le menu sont proposées les entrées : * Démarrer la diffusion en direct ; * Commencer l'enregistrement ; * Partager une vidéo YouTube. Sauf que quand on clique dessus, ça ne fonctionne pas. Alors, en fait, ces fonctionnalités ne sont pas souhaitables dans le cadre du Chapril : * Techniquement, elles nécessitent l'installation de services supplémentaires (Jibri) potentiellement complexes et très consommateurs de ressources ; * Certaines font la promotion de plateformes non libres ; * Trop avancées pour le Chapril qui a pour but de faire découvrir des services libres et d'être utile. Si un utilisateur réclame ces fonctionnalités, il faut l'inviter à aller vers un autre hébergeur ou à héberger lui-même. Pour retirer ces entrées, éditer le fichier ''root@allo:/var/www/visio.chapril.org/interface_config.js''. Dans la variable ''TOOLBAR_BUTTONS'', retirer les valeurs ''sharedvideo'',''livestreaming'' et ''recording'' puis redémarrer. Avant : {{:admin:services:jitsi-menu-avant.png?nolink|Menu de Jitsi Meet avant}} Après : {{:admin:services:jitsi-menu-apres.png?nolink|Menu de Jitsi Meet après}} Ce sujet a fait l'objet du [[https://agir.april.org/issues/4887|ticket n°4887]]. ===== Patch needrestart ====== Needrestart est perturbé par Videobridge qu'il ne cesse de signaler comme étant à redémarrer. Un ticket est ouvert sur le projet officiel : https://github.com/jitsi/jitsi-videobridge/issues/1166. En attendant, application d'une astuce trouvée sur https://unix.stackexchange.com/questions/574325/jitsi-videobridge-service-daemons-using-outdated-libraries. Dans ''/etc/needrestart/needrestart.conf'' : $nrconf{blacklist_mappings} = [ […] # Videobridge bug (agir #5168). qr(^/tmp/jna-), qr(^/usr/share/jitsi-videobridge/.cache/JNA/temp/jna), qr(^/tmp/nativeutils), Et maintenant Needrestart est bon. ====== Supervision ====== ===== Contrôle de l'expiration du certificat TLS ===== La sonde est située dans ''/srv/visio.chapril.org/tools/monitoring/check_visio_certificate.sh'' avec un lien vers ''/usr/local/lib/nagios/plugins/check_visio_certificate''. C'est une encapsulation de la sonde //standard// ''check_http'' avec des paramètres fixes et d'autres modifiables : ./check_visio_certificate.sh -h check_visio_certificate SYNTAXE check_visio_certificate -t -i EXEMPLE ./check_visio_certificate -t 30,14 -i 192.168.1.1 Le premier seuil (30 dans l'exemple), donne le nombre de jours avant de générer un avertissement d'expiration ''warning''. Le deuxième seuil (14 dans l'exemple), donne le nombre de jours avant de générer une alerte critique d'expiration ''critical''. ===== Contrôle du processus videobridge ===== La sonde est située dans ''/srv/visio.chapril.org/tools/monitoring/check_jitsi_videobridge'' avec un lien vers ''/usr/local/lib/nagios/plugins/check_jitsi_videobridge''. C'est une encapsulation de la sonde //standard// ''check_procs'' avec l'argument ''-a'' forcé à ''jitsi-videobridge''. ===== Contrôle du processus jicofo ===== La sonde est située dans ''/srv/visio.chapril.org/tools/monitoring/check_jitsi_jicofo'' avec un lien vers ''/usr/local/lib/nagios/plugins/check_jitsi_jicofo''. C'est une encapsulation de la sonde //standard// ''check_procs'' avec l'argument ''-a'' forcé à ''jicofo''. ====== Rapports d'activité ====== Des rapports d'activité sont générés à plusieurs niveaux (granularité, dates etc.). Un rapport d'activité est produit avec le script //standard// ''rapport_activite.sh''. Il est situé dans ''/srv/visio.chapril.org/tools/rapport_activite/rapport_activite.sh''. Ce script génère des éléments statistiques par analyse des fichiers de logs du serveur. Un complément à ces informations a été ajouté en utilisant les statistiques internes à Jitsi : Colibri. Le script est situé dans ''/srv/visio.chapril.org/tools/statistiques/parseStats.py''. Il exploite un autre script, ''/srv/visio.chapril.org/tools/statistiques/getStats.py'', qui génère des statistique directement depuis le serveur de Visio. Les données statistiques sont récoltées et stockées dans une base de données SQLite dans ''/srv/visio.chapril.org/statistiques/stats_sqlite.db''. Elles sont ensuite consolidés par le script ''parseStats.py'' avant d'être envoyées dans le rapport d'activité. Ces deux scripts sont appelés par un fichier Cron : ''/etc/cron.d/visiochaprilorg-rapportactivite''. Ce dernier permet d'ajouter leur résultat directement dans un ticket Redmine dédié à cette récolte : le [[https://agir.april.org/issues/4368|ticket n°4368]]. ====== Gestion des erreurs ====== ===== Coturn ===== Démarrer le service Coturn provoque une erreur dans la connexion au Videobridge. ====== Voir aussi ====== * https://wiki.hadoly.fr/documentation_technique:jitsi