====== 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 :
En cas de problème vous pouvez contacter le support à cette adresse : Message support
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