visio/README.md

223 lines
6.3 KiB
Markdown
Raw Permalink Normal View History

2021-12-04 22:27:45 +01:00
# Service VISIO
2021-12-05 13:05:23 +01:00
Service de visio-conférence du candidat chaton de Libre en communs.
2022-11-09 17:35:28 +01:00
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;
```