# Service VISIO Service de visio-conférence du candidat chaton de Libre en communs. Responsable: @human-geek CPU : 1 (4 core) RAM : 4 Go # INSTALLATION ## Généralités La majorité des éléments d'installation et de configuration sont tirés de la documentation officielle : https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-quickstart/ Sauf indication contraire les commandes sont executées avec les droits administrateurs. La documentation se concentre sur le service et laisse de coté les autres aspects de configurations de la machine. ## Pré-requis Afin de ```bash apt update apt install gnupg2 nginx-full apt-transport-https ``` ## Àjout du dépot de jitsi-meet ```bash curl https://download.jitsi.org/jitsi-key.gpg.key | sudo sh -c 'gpg --dearmor > /usr/share/keyrings/jitsi-keyring.gpg' echo 'deb [signed-by=/usr/share/keyrings/jitsi-keyring.gpg] https://download.jitsi.org stable/' | sudo tee /etc/apt/sources.list.d/jitsi-stable.list > /dev/null ``` ## Configuration Firewall Afin de permettre à Jitsi de fonctionner correctement un certain nombre de port doivent être ouverts. - 80 TCP => Pour la gestion des certificat SSL. Requis - 443 TCP => Pour l'accès à l'interface de Jitsi Meet. Requis - 10000 UDP => Pour la majorité des flux réseau audio et vidéo. Requis - 3478 UDP => Pour interroger le serveur stun (coturn, optionnel, besoin de configurer le fichier config.js). - 5349 TCP => Pour les communication réseau audio et vidéo de secours via TCP (quand UDP est bloquée), fournis par coturn . Requis Les commandes suivantes concerne UFW. C'est à adapter si vous utilisez un autre Firewall. ```bash ufw allow 80/tcp ufw allow 443/tcp ufw allow 10000/udp ufw allow 22/tcp ufw allow 3478/udp ufw allow 5349/tcp ufw enable ``` ## Certificat TLS L'installation du certificat TLS se fait via l'utilisation de certbot. Afin d'éviter les soucis de cron notamment il est conseillé (contrairement à ce qu'indique la documentation officielle) de générer son propre certificat et ne pas laisser jitsi gérer le certificat. TODO ## Installation de Jitsi Meet L'installation se fait via le paquet debian du dépot officiel de jitsi-meet. L'installation est à même de détecter le serveur web déjà installé. ```bash apt install jitsi-meet ``` # Configurations ## Serveur web /etc/nginx/sites-enabled/visio.chalec.org.conf ``` include visio.chalec.org.conf; ``` ## Vidéobridge Éditer le fichier /etc/jitsi/videobridge/sip-communicator.properties ``` #org.ice4j.ice.harvest.DISABLE_AWS_HARVESTER=true org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=XXX.XXX.XXX.XXX org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=80.67.179.96 #org.ice4j.ice.harvest.STUN_MAPPING_HARVESTER_ADDRESSES=meet-jit-si-turnrelay.jitsi.net:443 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.chalec.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.chalec.org org.jitsi.videobridge.xmpp.user.shard.MUC_NICKNAME=XXXXXX-XXXXXX-XXXXXXX-XXXXXXXXX ``` ## Statistiques Éditer le fichier /etc/jitsi/videobridge/config et activer l'api rest : ``` JVB_OPTS="--apis=rest, " ``` Il est possible de tester l'api avec le script suivant : ``` curl http://localhost:8080/about/version curl http://localhost:8080/colibri/conferences curl http://localhost:8080/colibri/stats curl http://localhost:8080/colibri/stats 2> /dev/null | jshon -e participants -u ``` ## Éléments d'interfaces ### Configuration web Afin de séparer au maximum la configuration fournis en amont et les éléments de personnalisations un fichier de configuration nginx spécifique au service est créé : - /etc/nginx/visio.chalec.org.conf ``` set $custom_path /var/www/visio.chalec.org; location = /interface_config.js { alias $custom_path/interface_config.js; } location = /images/favicon.ico { alias $custom_path/images/visio.chalec.org.ico; } location = /images/watermark.svg { alias $custom_path/images/visio.chalec.org.svg; } location = /images/welcome-background.png { alias $custom_path/images/welcome-background.webp; } location = /static/recommendedBrowsers.html { alias $custom_path/static/recommendedBrowsers.html; } # StatoolInfos. include /etc/nginx/statoolinfos.conf; ``` Il permet de faire des alias et de remplacer les fichiers déclarés par défaut par les nôtres, le tout peut importe leurs noms. Il faut juste que la configuration nginx soit cohérente. ### Racine de stockage L'ensemble des fichiers (images, icônes, etc) sont créés dans le dossier /var/www/visio.chalec.org. À ce titre nous recréons l'arborescence de jitsi. ``` mkdir -p /var/www/visio.chalec.org/{images/statics} ``` ### Favicon, Watermark et fond d'accueil Les différentes images sont à incorporer dans le dossier : ``` /var/www/visio.chalec.org/images ``` Dans notre configuration actuelle les éléments sont nommé comme suis : - visio.chalec.org.ico pour le favicon. - visio.chalec.org.svg pour le filigrame (watermark), il faut noter que le lien http est à configurer dans la partie javascript. - welcome-background.webp pour le fond d'écran d'accueil. ### Javascript Le fichiers javascript permet de configurer certaines informations, aussi nous en fesons une copie puis éditons les valeurs afin de faire correspondre à notre service. ``` cp /usr/share/jitsi-meet/interface_config.js /var/www/visio.chalec.org/ ``` Une fois cela fait un certain nombre d'éléments sont à personnaliser ```js APP_NAME: 'Visio Chalec', DEFAULT_LOGO_URL: 'images/watermark.svg', DISPLAY_WELCOME_FOOTER: false, DISPLAY_WELCOME_PAGE_ADDITIONAL_CARD: true, DISPLAY_WELCOME_PAGE_CONTENT: true, JITSI_WATERMARK_LINK: 'https://chalec.org', OPTIMAL_BROWSERS: [ 'chromium', 'firefox', 'nwjs', 'electron' ], PROVIDER_NAME: 'Jitsi et Chalec', ``` ### Redémarrer les services Il est ensuite primordial de redémarrer le serveur web et jitsi. ``` service nginx restart; service jitsi-videobridge2 restart; service jicofo restart; ```