GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Comment auto-héberger Jitsi Meet avec Docker

Jitsi Meet est un logiciel de visioconférence open source que vous pouvez auto-héberger. C'est une bonne alternative aux services propriétaires comme Google Meet ou Zoom.

Jitsi Meet peut être intégré à d'autres outils open source comme Nextcloud, Rocket.Chat ou Synapse (implémentation Matrix) pour vous offrir une solution complète.

Avec certaines limitations, Jitsi Meet peut être utilisé gratuitement sur leur serveur. Pour les fonctionnalités premium, vous pouvez opter pour Jitsi en tant que service des développeurs Jitsi. Vous pouvez également le déployer sur votre propre serveur ? Je vais vous aider avec la partie auto-hébergement.

Déployer Jitsi Meet avec Docker

Déployer Jitsi est incroyablement facile avec Docker. Je vais vous montrer les étapes du déploiement de Jitsi. Je couvrirai à la fois le proxy inverse et la méthode régulière.

Comment utiliser le proxy inverse Nginx avec plusieurs applications DockerDécouvrez comment vous pouvez déployer plusieurs services Web sur le même serveur à l'aide du proxy inverse Nginx et des conteneurs Docker. Manuel LinuxDebdut Chakraborty

Prérequis

Il y a quelques points à prendre en compte avant de continuer.

Connaissance de base de Docker et des conteneurs : Ce n'est pas un must, comme tous nos tutoriels, mais agréable à avoir.

Un domaine personnalisé : Ce déploiement ne sera pas servi sur IP, c'est-à-dire que je vais vous guider tout au long du déploiement sous un domaine (ou sous-domaine) réel avec HTTPS. Les déploiements tels que HTTP://[some IP]:[some port] conviennent aux tests, mais ne servent à rien dans ces guides.

Un serveur Linux physique ou dans le cloud : Je recommande d'utiliser Linode mais vous pouvez utiliser n'importe quel autre fournisseur comme DigitalOcean, Vultr ou UpCloud. Le déploiement sous AWS peut être très spécifique à la plate-forme et je n'en parlerai pas ici.

Selon la recommandation officielle, un serveur avec 4 Go de mémoire avec un processeur double cœur conviendrait à environ 10 à 20 utilisateurs.

Linode | Le cloud ouvert indépendant pour les développeursNotre mission est d'accélérer l'innovation en rendant le cloud computing simple, abordable et accessible à tous. Linode DigitalOcean – Le cloud de développementAide des millions de développeurs à créer, tester, gérer et faire évoluer facilement des applications de toute taille, plus rapidement que jamais auparavant.

Facultativement, notre configuration de proxy inverse : Si vous souhaitez le placer derrière un proxy inverse afin de pouvoir déployer plusieurs services Web sur le même serveur. Si Jitsi est la seule application qui va s'exécuter sur le serveur, vous n'avez pas besoin du proxy inverse.

Modification des enregistrements DNS

Avoir un nom de domaine ne suffit pas. Vous devez également vous assurer que les enregistrements DNS sont en place. Pour ce tutoriel, je vais utiliser un domaine openexperiment.in dans lequel je traîne depuis un bon moment.

Assurez-vous de modifier toutes les instances du domaine des exemples vers votre domaine.

Une fois que vous avez un domaine et déployé un serveur (pas avec Jitsi, juste le serveur), rassemblez les adresses IP du serveur (IPv4 et IPv6 à la fois), et ajoutez les enregistrements A et AAAA pour chacun respectivement. Après cela, vous devrez également ajouter un enregistrement CNAME. Vous pouvez ajouter un sous-domaine spécifique ou, comme moi, ajouter une entrée générique (si vous l'hébergez sur le domaine principal).

Voir la capture d'écran ci-dessous si vous êtes toujours confus. J'ai flouté les adresses IP réelles (je suis très secret... chut).

Vous devrez peut-être attendre un certain temps pour que les modifications DNS prennent effet. Vous pouvez vérifier cela en utilisant la commande ping.

ping le domaine jusqu'à ce que vous voyiez l'adresse IP de votre serveur comme ceci -

❯ ping openexperiment.in -4
PING openexperiment.in (xxx.xxx.xxx.xxx) 56(84) bytes of data.
^C64 bytes from xxx.xxx.xxx.xxx: icmp_seq=1 ttl=55 time=36.6 ms

--- openexperiment.in ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 36.610/36.610/36.610/0.000 ms

Vous pouvez également utiliser la commande dig pour vérifier les enregistrements DNS.

dig openexperiment.in +nocmd +nocomments

Vous devriez voir quelque chose comme ce qui suit

❯ dig openexperiment.in +nocmd +nocomments
;openexperiment.in.   IN  A
openexperiment.in.  2970  IN  A xxx.xxx.xxx.xxx
;; Query time: 1 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Sun Mar 07 11:38:20 IST 2021
;; MSG SIZE  rcvd: 62

Comprendre les composants de Jitsi Meet

Avant d'aller de l'avant, je pense qu'il est utile de savoir quels sont ces composants et pourquoi ils sont importants, ainsi que ceux que vous allez utiliser pour ce déploiement.

Si cela ne vous intéresse pas, passez évidemment à la section déploiement de cet article.

jitsi/web:dernier : L'interface utilisateur Web de Jitsi Meet, que vous voyez sur votre navigateur, se trouve à l'intérieur de cette image. Avec Nginx pour le serveur Web.

jitsi/prosodie :dernier : C'est le serveur XMPP, c'est ce qui est responsable des appels audio/vidéo ou des chats textuels. Cela peut être considéré comme le cœur de Jitsi.

jitsi/jicofo :le plus récent : Le composant focus du serveur XMPP, chargé de gérer les sessions vidéo entre les participants et le videobridge, autrement dit, c'est lui qui gère les conférences. Ceci est un autre composant obligatoire de Jitsi.

jitsi/jvb :le plus récent : Le Videobridge Jitsi se charge de relayer les canaux vidéo entrants vers tous les participants.

Ce sont les parties obligatoires d'un déploiement Jitsi opérationnel, et je ne les utiliserai que pour ce guide. Il existe d'autres composants comme Jibri, Jigasi, mais comme ils sont facultatifs, je vais les laisser de côté pour le moment.

Assez lu, il est temps de travailler sur le tas.

Si vous envisagez de le déployer avec un proxy inverse, assurez-vous de l'avoir configuré avant d'aborder celui-ci.Comment utiliser le proxy inverse Nginx avec plusieurs applications DockerDécouvrez comment vous pouvez déployer plusieurs services Web sur le même serveur à l'aide du proxy inverse Nginx et conteneurs Docker. Manuel LinuxDebdut Chakraborty

Cloner le dépôt docker-jitsi-meet

Ce dépôt contient tous les fichiers dont nous aurons besoin pour ce déploiement (avec évidemment quelques modifications).

Clonez le référentiel et modifiez votre PWD dans le répertoire cloné.

git clone https://github.com/jitsi/docker-jitsi-meet jitsi
cd jitsi

Commencer à modifier les variables d'environnement

Puisque vous utilisez Docker, vous devez modifier certaines variables d'environnement. Commencez par copier l'exemple de fichier de configuration.

cp env.example .env

Ouvrez maintenant le .env fichier et examinez les 6 premières variables d'environnement.

Étant donné que tous ces composants sont essentiellement une sorte de serveurs fonctionnant dans des conteneurs, vous avez besoin d'un moyen de vous assurer que les serveurs sont vraiment ceux qu'ils prétendent être. Ces secrets sont là pour cette raison. Les clients doivent d'abord s'authentifier avant d'établir une connexion.

Vous n'avez pas à définir ces secrets par vous-même. Il y a déjà un script pour vous faciliter la vie. Exécutez la commande suivante pendant que vous êtes dans le répertoire du référentiel

./gen-passwords.sh

Une fois exécuté, vous pouvez rouvrir le .env fichier, et les secrets doivent être remplis.

Vous n'aurez pas besoin de tous ces secrets pour ce déploiement, mais laissez-les tels quels, il n'est pas nécessaire de les supprimer ou de les commenter.

Il y aura maintenant trois sous-sections ici, une pour les affectations de variables communes (proxy inverse ou pas de proxy inverse), une autre pour le proxy inverse et la dernière pour aucun proxy inverse. Tous vont dans le fichier .env.

Variables communes (pour les méthodes de proxy inverse et non inverse)

Voici les variables communes aux deux méthodes de déploiement et vous les ajoutez dans le fichier .env.

CONFIG : Vous pouvez changer la valeur de this, mais ce n'est pas nécessaire. La valeur de cette variable est un répertoire de votre hôte, qui sera monté en liaison à l'intérieur des conteneurs pour stocker des données persistantes. Donc, modifier cela dépend entièrement de vous.

PUBLIC_URL : Le domaine sur lequel Jitsi va être hébergé (avec le protocole). Dans mon cas, la valeur est https://meet.openexperiment.in

ENABLE_AUTH : Voulez-vous une authentification ? Avec l'authentification, l'utilisateur devra entrer un nom d'utilisateur et un mot de passe avant de pouvoir rejoindre ou créer une réunion. Si c'est le cas, décommentez cette ligne et assurez-vous qu'elle est définie sur 1.

AUTH_TYPE : Si vous définissez ENABLE_AUTH sur 1, définissez celui-ci sur "interne". Je n'aborderai pas l'authentification LDAP ou JWT dans cet article.

RESTART_POLICY : Politique de redémarrage des conteneurs. La valeur par défaut est unless-stopped . Je préfère always ou on-failure .

TZ : Réglez-le sur le fuseau horaire de votre système. Étant donné que mes serveurs fonctionnent dans le fuseau horaire UTC, je n'ai pas à le changer.

Variables pour la méthode de proxy non inverse

Si vous n'utilisez pas de proxy inverse, vous devez ajouter ces variables au fichier .env :

HTTP_PORT , HTTPS_PORT : Remplacez-les par 80 et 443 respectivement. Ce sont les ports auxquels votre conteneur va se lier.

ENABLE_LETSENCRYPT : Définissez ceci sur 1, vous avez besoin de HTTPS.

LETSENCRYPT_DOMAIN &LETSENCRYPT_EMAIL : Le domaine sur lequel votre instance sera hébergée et votre identifiant de messagerie pour vos notifications liées au certificat.

ENABLE_HTTP_REDIRECT : Définissez ceci sur 1, le trafic HTTP doit être relayé vers HTTPS.

ENABLE_HSTS : Cela obligera en quelque sorte les navigateurs à utiliser une connexion de confiance. Réglez-le sur 1.

Variables requises pour le proxy inverse

Si vous avez opté pour le proxy inverse, vous devez ajouter ces variables au fichier .env :

DISABLE_HTTPS : Étant donné que HTTPS va être géré par le serveur Web de votre proxy inverse, vous n'avez pas besoin d'activer HTTPS depuis Jitsi lui-même.

ENABLE_HTTP_REDIRECT : Pas nécessaire, définissez-le sur 0. HTTP/HTTPS va être géré par notre proxy inverse.

VIRTUAL_HOST &LETSENCRYPT_HOST : Ces variables ne sont pas là par défaut. Ajoutez-les, et pour les valeurs, utilisez le nom de domaine où votre instance va être hébergée. Pour plus d'informations, lisez mon article sur le proxy révéré.

[ONLY IF USING REVERSE PROXY] Modifier le fichier de composition

Ouvrez le fichier docker-compose.yml dans votre éditeur de texte préféré.

La seule définition de service qui doit être modifiée est le service Web. Modifiez-le selon la liste suivante

  • Supprimez la section des ports. Vous n'avez plus besoin de lier un port de votre conteneur à l'hôte.
  • Ajoutez un autre réseau, le même réseau que celui utilisé dans votre configuration de proxy inverse.
  • Définissez le réseau à la fin du fichier de composition comme ceci
networks:
  net:
    external: true

En supposant que le nom du réseau est net , remplacez-le par ce que vous avez défini pour le vôtre.

  • Ajouter les variables d'environnement VIRTUAL_HOST &LETSENCRYPT_HOST comme ça
- VIRTUAL_HOST
- LETSENCRYPT_HOST

Déployer les conteneurs

Une fois toutes les modifications effectuées, vous pouvez déployer Jitsi avec docker-compose up -d commande.

Assurez-vous que vos conteneurs de proxy inverse fonctionnent SI vous avez opté pour la méthode de proxy inverse.

Vous avez presque terminé le déploiement de Jitsi Meet, à l'exception de la dernière étape qui consiste à créer des utilisateurs authentifiés pour votre serveur Jitsi.

Création d'utilisateurs authentifiés

Si vous avez activé l'authentification (avec ENABLE_AUTH ), vous devrez enregistrer les utilisateurs avant de pouvoir utiliser Jitsi.

Pour ce faire, c'est assez simple. Rendez-vous dans le répertoire du référentiel cloné et exécutez une commande similaire à la suivante

docker-compose exec prosody prosodyctl --config=/config/prosody.cfg.lua register [USERNAME] meet.jitsi [PASSWORD]

Vous pouvez également supprimer un utilisateur en utilisant le unregister commande comme je l'ai montré ici :

docker-compose exec prosody prosodyctl --config=/config/prosody.cfg.lua unregister [USERNAME] meet.jitsi

Enfin, vous pouvez aller de l'avant et vérifier le frontal Jitsi Meet sur l'URL désignée dans un navigateur Web :

Vous avez encore des questions ou des suggestions ? N'hésitez pas à laisser un commentaire.

Si vous aimez ce tutoriel et souhaitez nous voir produire plus de contenu utile, veuillez envisager d'opter pour l'adhésion Pro ou faire un don unique pour nous soutenir :)


Docker
  1. Comment installer et héberger un serveur OpenVPN avec Docker

  2. Comment installer Jenkins avec Docker

  3. Comment partager des images Docker avec d'autres

  4. Comment et pourquoi utiliser un hôte Docker distant

  5. Comment monter un répertoire hôte dans un conteneur Docker

Comment installer Jitsi Meet sur Debian 10

Comment héberger votre propre plate-forme en tant que service (PaaS) avec Dokku

Comment se connecter à Localhost dans un conteneur Docker

Comment copier des fichiers avec Docker cp dans votre conteneur Docker

Comment créer une image Docker personnalisée avec Dockerfile

Comment déployer le serveur de conférence Jitsi Meet avec Ubuntu 22.04