Pourquoi self-héberger Jitsi sur un VPS
Les services de visioconférence grand public imposent des limites de durée, des quotas de participants et conservent vos enregistrements sur leurs serveurs. Jitsi Meet, auto-hébergé, supprime ces contraintes : salles illimitées, durée illimitée, aucun compte requis pour rejoindre une réunion, et le flux vidéo qui reste sur votre infrastructure. C'est particulièrement pertinent pour une organisation soucieuse de la confidentialité de ses réunions, ou pour intégrer la visio dans son propre site (Jitsi propose une API iframe). Attention toutefois : la visioconférence est l'un des cas d'usage les plus gourmands en réseau, c'est moins le CPU que la bande passante qui dimensionne votre VPS.
Bénéfices concrets d'un Jitsi auto-hébergé
- Réunions sans limite de durée ni de nombre de salles, contrairement aux offres gratuites grand public.
- Aucun compte requis : un simple lien suffit pour rejoindre une salle.
- API iframe pour intégrer la visio directement dans votre application ou votre site.
- Chiffrement du transport et contrôle total des éventuels enregistrements.
- Personnalisation complète de l'interface et du nom de domaine des réunions.
- Aucune télémétrie envoyée à un tiers : les flux restent sur votre VPS.
Prérequis matériels et logiciels
Jitsi est moins limité par le CPU que par la bande passante et les ports réseau. Pour de petites réunions (jusqu'à 15-20 participants), un VPS de 2 à 4 vCPU et 4 Go de RAM convient, mais c'est la bande passante sortante qui compte : prévoyez une connexion généreuse et non plafonnée, car chaque participant relayé multiplie le débit. Le port UDP 10000 doit être ouvert sur le pare-feu et l'IP publique — c'est par lui que transite la vidéo (JVB). Il faut Docker et Compose, un nom de domaine meet.votredomaine.ma avec enregistrement A, et idéalement une IP publique dédiée et stable.
Déployer Jitsi Meet avec Docker et SSL
Récupérer docker-jitsi-meet
Clonez le dépôt officiel docker-jitsi-meet, copiez env.example vers .env, puis exécutez le script gen-passwords.sh qui génère tous les secrets internes des composants (Prosody, Jicofo, JVB).
Configurer le domaine et le réseau
Dans .env, renseignez PUBLIC_URL=https://meet.votredomaine.ma et DOCKER_HOST_ADDRESS avec l'IP publique du VPS. C'est crucial : sans la bonne adresse, le pont vidéo JVB ne saura pas annoncer la bonne IP aux participants.
Ouvrir le port UDP 10000
Autorisez le port UDP 10000 dans le pare-feu du VPS (ufw allow 10000/udp) et au niveau de votre fournisseur. C'est par ce port que circule le média vidéo ; s'il est fermé, les participants se voient mais sans flux.
Lancer la stack
Exécutez docker compose up -d. Les conteneurs web, prosody, jicofo et jvb démarrent. Suivez docker compose logs -f jvb pour confirmer que le bridge s'est enregistré correctement.
Provisionner le certificat SSL
Jitsi peut générer Let's Encrypt automatiquement : renseignez ENABLE_LETSENCRYPT=1 et LETSENCRYPT_DOMAIN/LETSENCRYPT_EMAIL dans .env. Vérifiez d'abord que le DNS de meet.votredomaine.ma pointe bien vers le VPS, sinon l'émission échouera.
Sécuriser l'accès aux salles
Par défaut n'importe qui peut créer une salle. Activez l'authentification (AUTH_TYPE=internal) pour exiger un compte côté organisateur tout en laissant les invités rejoindre librement. Créez les comptes hôtes avec prosodyctl register.
Jitsi fonctionne en mode SFU : le pont vidéo (JVB) relaie chaque flux, donc la bande passante sortante grimpe vite avec le nombre de participants. Pour les grandes réunions, activez le mode dernière vidéo active et le simulcast côté client, et surveillez la charge réseau du JVB plutôt que le CPU. Au-delà de quelques dizaines de participants simultanés, déployez plusieurs instances JVB sur des VPS distincts derrière un seul Jicofo : c'est ainsi que Jitsi passe à l'échelle horizontalement.