Debian 10 64 Bits – Installation de Jitsi

Mise en place d'une plateforme de communication en temps réel

Auteur : Vince NADUS
Date de publication : April 8, 2021
debian buster video jitsi communication

Installer sur une fresh install Debian 10.6 net install (utilisateur root)


Installation et Configuration de Jitsi

https://www.digitalocean.com/community/tutorials/how-to-install-jitsi-meet-on-ubuntu-18-04

Pré-requis

Jitsi

https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-quickstart

apt-get install gnupg2 apt-transport-https nginx-full wget curl

Pour OpenJDK sur debian 10

https://adoptopenjdk.net/installation.html#linux-pkg

wget -qO - https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | apt-key add -
echo "deb https://adoptopenjdk.jfrog.io/adoptopenjdk/deb \
buster main" | tee /etc/apt/sources.list.d/adoptopenjdk.list
apt-get update
apt-cache search adoptopenjdk
apt-get install adoptopenjdk-8-hotspot

Configurer le nom de la machine Debian.

Dans mon cas, je l’ai déjà correctement configuré à l’installation de la Debian

127.0.0.1 localhost
x.x.x.x meet.example.org meet

Ajout des dépots Jitsi.

https://github.com/jitsi/jitsi-meet#installation

curl https://download.jitsi.org/jitsi-key.gpg.key | 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/' | tee /etc/apt/sources.list.d/jitsi-stable.list > /dev/null
apt-get -y update

Firewall : Serveur Jitsi

ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 10000/udp
ufw allow 22/tcp
ufw allow 3478/udp
ufw allow 5349/tcp

Dans mon cas j’utilise un firewall OPNSense en amont. Si je souhaite augmenter la sécurité je peux également restreindre les ports sur la machine Jitsi également.

Jitsi

Installation de Jitsi

apt-get -y install jitsi-meet

1 – Mettre le FQDN (Ex: visio.domain.com)
2 – Dans mon cas, je n’ai qu’une seule adresse IP Public pour toute mon architecture. Je vais donc passer par un reverse proxy Nginx entre le firewall et la machine Jitsi.

J’utilise donc le certificat auto-signé. Le certificat Let’s Encrypt sera géré par le reverse proxy.
Pour un réseau NATTER comme le mien des modification seront à réaliser.

Configurer Jitsi

/etc/jitsi/videobridge/sip-communicator.properties

Ajouter y les lignes suivantes :

org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=10.10.10.26
org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=X.X.X.X(IP_PUBLIC)

Dans mon cas le port 10000 est utilisé. Pour le modifier c’est également dans ce fichier.

Reverse Proxy Nginx

https://community.jitsi.org/t/jitsi-behind-the-nginx-reverse-proxy/25463/6

server {
if ($host = visio.domaine.com) {
return 301 https://$host$request_uri;
}
listen 80;
listen [::]:80;
server_name visio.domaine.com;
}

server {
server_name visio.domaine.com;
listen 443 ssl;
location / {
ssi on;
proxy_pass https://10.10.2.26:4444;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
}

location /http-bind {
proxy_pass http://10.10.2.26:5280/http-bind;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
}

location /xmpp-websocket {
proxy_pass http://10.10.2.26:5280/xmpp-websocket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
tcp_nodelay on;
}

ssl_certificate /etc/letsencrypt/live/visio.domaine.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/visio.domaine.com/privkey.pem;
}

Firewall : Routeur en amont

jitsi server

iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 4443 -j DNAT --to 10.10.10.26:4443
iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 4444 -j DNAT --to 10.10.10.26:4444
iptables -t nat -A PREROUTING -i vmbr0 -p udp --dport 10000 -j DNAT --to 10.10.10.26:10000
Si cela ne marche pas :
– Accès à l’interface Web mais problème pour ouvrir des pont visio : Bien vérifier la configuration de son firewall

Pour info voici le résultat de mon netstat :

netstat -lptune
Connexions Internet actives (seulement serveurs)
Proto Recv-Q Send-Q Adresse locale Adresse distante Etat Utilisatr Inode PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 0 13531 365/sshd
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 0 17954 362/nginx: master p
tcp 0 0 0.0.0.0:5280 0.0.0.0:* LISTEN 107 20070 3308/lua5.2
tcp 0 0 127.0.0.1:5347 0.0.0.0:* LISTEN 107 20062 3308/lua5.2
tcp 0 0 0.0.0.0:5222 0.0.0.0:* LISTEN 107 20067 3308/lua5.2
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 0 13278 362/nginx: master p
tcp 0 0 0.0.0.0:5269 0.0.0.0:* LISTEN 107 20063 3308/lua5.2
tcp6 0 0 :::22 :::* LISTEN 0 13292 365/sshd
tcp6 0 0 :::8888 :::* LISTEN 997 18235 1636/java
tcp6 0 0 :::443 :::* LISTEN 0 17955 362/nginx: master p
tcp6 0 0 :::5280 :::* LISTEN 107 20071 3308/lua5.2
tcp6 0 0 :::9090 :::* LISTEN 998 17854 1242/java
tcp6 0 0 ::1:5347 :::* LISTEN 107 20061 3308/lua5.2
tcp6 0 0 :::5222 :::* LISTEN 107 20068 3308/lua5.2
tcp6 0 0 127.0.0.1:8080 :::* LISTEN 998 17202 1242/java
tcp6 0 0 :::80 :::* LISTEN 0 13279 362/nginx: master p
tcp6 0 0 :::5269 :::* LISTEN 107 20064 3308/lua5.2
udp 0 0 10.10.2.26:3478 0.0.0.0:* 108 20837 3347/turnserver
udp 0 0 10.10.2.26:3478 0.0.0.0:* 108 20836 3347/turnserver
udp 0 0 127.0.0.1:3478 0.0.0.0:* 108 20833 3347/turnserver
udp 0 0 127.0.0.1:3478 0.0.0.0:* 108 20832 3347/turnserver
udp 0 0 10.10.2.26:3479 0.0.0.0:* 108 20839 3347/turnserver
udp 0 0 10.10.2.26:3479 0.0.0.0:* 108 20838 3347/turnserver
udp 0 0 127.0.0.1:3479 0.0.0.0:* 108 20835 3347/turnserver
udp 0 0 127.0.0.1:3479 0.0.0.0:* 108 20834 3347/turnserver
udp6 0 0 ::1:3478 :::* 108 20840 3347/turnserver
udp6 0 0 ::1:3478 :::* 108 20841 3347/turnserver
udp6 0 0 ::1:3479 :::* 108 20842 3347/turnserver
udp6 0 0 ::1:3479 :::* 108 20843 3347/turnserver
udp6 0 0 :::31408 :::* 997 18190 1636/java

Pour le debug :

/var/log/jitsi/jvb.log

/var/log/jitsi/jicofo.log

/var/log/prosody/prosody.log

Pour récupérer les statistiques avec Prometheus et les afficher sur Grafana

Memos Nadus - Statistique Jitsi avec Prometheur et Grafana