GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Docker

So hosten Sie Jitsi-Meetings mit Docker selbst

Jitsi Meet ist eine Open-Source-Videokonferenzsoftware, die Sie selbst hosten können. Es ist eine gute Alternative zu proprietären Diensten wie Google Meet oder Zoom.

Jitsi Meet kann mit anderen Open-Source-Tools wie Nextcloud, Rocket.Chat oder Synapse (Matrix-Implementierung) integriert werden, um Ihnen eine umfassende Lösung zu bieten.

Mit einigen Einschränkungen kann Jitsi Meet kostenlos auf ihrem Server verwendet werden. Für Premium-Funktionen können Sie sich für Jitsi as a Service von Jitsi-Entwicklern entscheiden. Sie können es auch auf Ihrem eigenen Server bereitstellen? Ich helfe Ihnen beim Selbsthosting.

Bereitstellen von Jitsi Meet mit Docker

Die Bereitstellung von Jitsi ist mit Docker unglaublich einfach. Ich werde Ihnen die Schritte für die Bereitstellung von Jitsi zeigen. Ich werde sowohl den Reverse-Proxy als auch die reguläre Methode behandeln.

So verwenden Sie Nginx Reverse Proxy mit mehreren Docker-AppsErfahren Sie, wie Sie mithilfe von Nginx Reverse Proxy und Docker-Containern mehrere Webdienste auf demselben Server bereitstellen können. Linux-Handbuch Debdut Chakraborty

Voraussetzungen

Es gibt ein paar Dinge, die erledigt werden müssen, bevor Sie fortfahren.

Grundkenntnisse von Docker und Containern: Dies ist kein Muss, wie alle unsere Tutorials, aber schön zu haben.

Eine benutzerdefinierte Domäne: Diese Bereitstellung wird nicht über IP bereitgestellt, das heißt, ich werde Sie durch die Bereitstellung unter einer tatsächlichen Domäne (oder Unterdomäne) mit HTTPS führen. Bereitstellungen wie HTTP://[irgendeine IP]:[irgendein Port] eignen sich gut zum Testen, erfüllen in diesen Anleitungen jedoch keinen Zweck.

Ein Linux-Server, entweder ein physischer oder in der Cloud: Ich empfehle die Verwendung von Linode, aber Sie können jeden anderen Anbieter wie DigitalOcean, Vultr oder UpCloud verwenden. Die Bereitstellung unter AWS kann sehr plattformspezifisch sein und darauf werde ich hier nicht eingehen.

Laut offizieller Empfehlung wäre ein Server mit 4 GB Speicher mit einem Dual-Core-Prozessor für etwa 10-20 Benutzer geeignet.

Linode | Die unabhängige offene Cloud für EntwicklerUnsere Mission ist es, Innovationen zu beschleunigen, indem wir Cloud Computing einfach, erschwinglich und für alle zugänglich machen. Linode DigitalOcean – Die Entwickler-Cloud, die Millionen von Entwicklern hilft, Anwendungen jeder Größe einfach und schneller zu erstellen, zu testen, zu verwalten und zu skalieren als jemals zuvor.

Optional unser Reverse-Proxy-Setup: Wenn Sie es hinter einen Reverse-Proxy stellen möchten, damit Sie mehrere Webdienste auf demselben Server bereitstellen können. Wenn Jitsi die einzige Anwendung ist, die auf dem Server ausgeführt wird, benötigen Sie den Reverse-Proxy nicht.

DNS-Einträge ändern

Einen Domainnamen zu haben ist nicht genug. Sie müssen sicherstellen, dass auch die DNS-Einträge vorhanden sind. Für dieses Tutorial werde ich eine Domain openexperiment.in verwenden, die ich schon eine ganze Weile herumliegen habe.

Stellen Sie sicher, dass Sie alle Instanzen der Domäne aus den Beispielen in Ihre Domäne ändern.

Sobald Sie eine Domäne haben und einen Server bereitgestellt haben (nicht mit Jitsi, nur den Server), sammeln Sie die IP-Adressen des Servers (beide IPv4 und IPv6) und fügen Sie jeweils A- und AAAA-Einträge hinzu. Danach müssen Sie auch einen CNAME-Eintrag hinzufügen. Sie können eine bestimmte Subdomain hinzufügen oder wie ich einen Platzhaltereintrag hinzufügen (wenn Sie sie auf der Hauptdomain hosten).

Sehen Sie sich den Screenshot unten an, wenn Sie immer noch verwirrt sind. Ich habe die tatsächlichen IP-Adressen unkenntlich gemacht (ich bin sehr verschwiegen ... shhh).

Möglicherweise müssen Sie einige Zeit warten, bis die DNS-Änderungen wirksam werden. Sie können dies mit dem Ping-Befehl überprüfen.

ping die Domäne, bis Sie die IP-Adresse Ihres Servers wie folgt sehen -

❯ 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

Sie können auch den Befehl dig verwenden, um die DNS-Einträge zu überprüfen.

dig openexperiment.in +nocmd +nocomments

Sie sollten etwa Folgendes sehen

❯ 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

Die Jitsi Meet-Komponenten verstehen

Bevor Sie fortfahren, ist es meiner Meinung nach hilfreich zu wissen, was diese Komponenten sind und warum sie wichtig sind, zusammen mit den Komponenten, die Sie für diese Bereitstellung verwenden werden.

Wenn Sie sich nicht darum kümmern, springen Sie natürlich zum Bereitstellungsabschnitt dieses Artikels.

jitsi/web:neueste: Die Web-Benutzeroberfläche von Jitsi Meet, die Sie in Ihrem Browser sehen, befindet sich in diesem Bild. Zusammen mit Nginx für den Webserver.

jitsi/prosody:neueste: Dies ist der XMPP-Server, der für die Audio-/Videoanrufe oder die Text-Chats verantwortlich ist. Dies kann als das Herzstück von Jitsi betrachtet werden.

jitsi/jicofo:neueste: Die Fokuskomponente des XMPP-Servers, die für die Verwaltung der Videositzungen zwischen den Teilnehmern und der Videobrücke zuständig ist, dh die Konferenzen verwaltet. Dies ist eine weitere obligatorische Komponente von Jitsi.

jitsi/jvb:neueste: Die Jitsi Videobridge ist für die Weiterleitung der eingehenden Videokanäle an alle Teilnehmer verantwortlich.

Dies sind die obligatorischen Teile einer operativen Jitsi-Bereitstellung, und ich werde sie nur für diesen Leitfaden verwenden. Es gibt andere Komponenten wie Jibri, Jigasi, aber da sie optional sind, werde ich sie vorerst weglassen.

Genug gelesen, es ist Zeit für praktische Arbeit.

Wenn Sie dies zusammen mit einem Reverse-Proxy bereitstellen möchten, stellen Sie sicher, dass Sie dies eingerichtet haben, bevor Sie sich diesem nähern. So verwenden Sie Nginx Reverse Proxy mit mehreren Docker-AppsErfahren Sie, wie Sie mit Nginx Reverse-Proxy mehrere Webdienste auf demselben Server bereitstellen können und Docker-Container. Linux-Handbuch Debdut Chakraborty

Klonen Sie das Docker-jitsi-meet-Repository

Dieses Repository enthält alle Dateien, die wir für diese Bereitstellung benötigen (mit offensichtlich einigen Änderungen).

Klonen Sie das Repository und ändern Sie Ihre PWD in das geklonte Verzeichnis.

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

Beginnen Sie mit der Änderung der Umgebungsvariablen

Da Sie Docker verwenden, müssen Sie einige Umgebungsvariablen ändern. Kopieren Sie zunächst die Beispielkonfigurationsdatei.

cp env.example .env

Öffnen Sie nun die .env Datei und sehen Sie sich die ersten 6 Umgebungsvariablen an.

Da es sich bei all diesen Komponenten im Grunde um eine Art Server handelt, die in Containern ausgeführt werden, müssen Sie sicherstellen, dass die Server wirklich die sind, für die sie sich ausgeben. Diese Geheimnisse sind aus diesem Grund da. Die Clients müssen sich zuerst authentifizieren, bevor sie eine Verbindung aufbauen.

Sie müssen diese Geheimnisse nicht selbst festlegen. Es gibt bereits ein Skript, das Ihnen das Leben erleichtert. Führen Sie den folgenden Befehl aus, während Sie sich im Repository-Verzeichnis befinden

./gen-passwords.sh

Nach der Ausführung können Sie .env erneut öffnen Datei, und die Geheimnisse sollten ausgefüllt werden.

Sie werden all diese Geheimnisse für diese Bereitstellung nicht benötigen, aber lassen Sie sie in Ruhe, Sie müssen sie nicht entfernen oder auskommentieren.

Hier wird es jetzt drei Unterabschnitte geben, einen für die gemeinsamen Variablenzuweisungen (Reverse-Proxy oder kein Reverse-Proxy), einen weiteren für den Reverse-Proxy und den letzten für keinen Reverse-Proxy. Alle gehen in die .env-Datei.

Gemeinsame Variablen (sowohl für die Reverse-Proxy- als auch für die Nicht-Reverse-Proxy-Methode)

Hier sind die Variablen, die beiden Bereitstellungsmethoden gemeinsam sind, und Sie fügen sie der .env-Datei hinzu.

KONFIG: Sie können ändern Sie den Wert von diesem, aber es ist nicht notwendig. Der Wert dieser Variablen ist ein Verzeichnis in Ihrem Host, das in den Containern per Bind gemountet wird, um persistente Daten zu speichern. Es liegt also ganz bei Ihnen, dies zu ändern.

PUBLIC_URL: Die Domäne Jitsi wird gehostet (mit dem Protokoll). In meinem Fall ist der Wert https://meet.openexperiment.in

ENABLE_AUTH: Möchten Sie eine Authentifizierung? Bei der Authentifizierung muss der Benutzer einen Benutzernamen und ein Passwort eingeben, bevor er einem Meeting beitreten oder ein Meeting erstellen kann. Wenn ja, kommentieren Sie diese Zeile aus und stellen Sie sicher, dass sie auf 1 gesetzt ist.

AUTH_TYPE: Wenn Sie ENABLE_AUTH auf 1 setzen würden, dann setzen Sie diesen auf "internal". Ich werde in diesem Artikel nicht auf die LDAP- oder JWT-Authentifizierung eingehen.

RESTART_POLICY: Neustartrichtlinie der Container. Der Standardwert ist unless-stopped . Ich bevorzuge always oder on-failure .

TZ: Stellen Sie dies auf die Zeitzone Ihres Systems ein. Da meine Server in der UTC-Zeitzone laufen, muss ich sie nicht ändern.

Variablen für die Nicht-Reverse-Proxy-Methode

Wenn Sie keinen Reverse-Proxy verwenden, sollten Sie diese Variablen zur .env-Datei hinzufügen:

HTTP_PORT , HTTPS_PORT: Ändern Sie diese auf 80 bzw. 443. Dies sind die Ports, an die sich Ihr Container binden wird.

ENABLE_LETSENCRYPT: Setzen Sie dies auf 1, Sie benötigen HTTPS.

LETSENCRYPT_DOMAIN &LETSENCRYPT_EMAIL: Die Domäne, auf der Ihre Instanz gehostet wird, und Ihre E-Mail-ID für Ihre zertifikatsbezogenen Benachrichtigungen.

ENABLE_HTTP_REDIRECT: Setzen Sie dies auf 1, HTTP-Datenverkehr muss an HTTPS weitergeleitet werden.

ENABLE_HSTS: Dadurch werden die Browser in gewisser Weise gezwungen, eine vertrauenswürdige Verbindung zu verwenden. Setzen Sie diese auf 1.

Für Reverse-Proxy erforderliche Variablen

Wenn Sie sich für den Reverse-Proxy entschieden haben, sollten Sie diese Variablen zur .env-Datei hinzufügen:

DISABLE_HTTPS: Da HTTPS vom Webserver Ihres Reverse-Proxys verarbeitet wird, müssen Sie HTTPS nicht von Jitsi selbst aktivieren lassen.

ENABLE_HTTP_REDIRECT: Nicht erforderlich, setzen Sie dies auf 0. HTTP/HTTPS wird von unserem Reverse-Proxy verarbeitet.

VIRTUAL_HOST &LETSENCRYPT_HOST: Diese Variablen sind standardmäßig nicht vorhanden. Fügen Sie diese hinzu und verwenden Sie für die Werte den Domänennamen, unter dem Ihre Instanz gehostet werden soll. Weitere Informationen finden Sie in meinem Revere-Proxy-Artikel.

[NUR BEI VERWENDUNG VON REVERSE PROXY] Ändern Sie die Compose-Datei

Öffnen Sie die Datei docker-compose.yml in Ihrem bevorzugten Texteditor.

Die einzige Dienstdefinition, die bearbeitet werden muss, ist der Webdienst. Ändern Sie es gemäß der folgenden Liste

  • Entfernen Sie den Ports-Abschnitt. Sie müssen keinen Port mehr von Ihrem Container an den Host binden.
  • Fügen Sie ein weiteres Netzwerk hinzu, dasselbe Netzwerk, das in Ihrer Reverse-Proxy-Konfiguration verwendet wird.
  • Definieren Sie das Netzwerk am Ende der Compose-Datei wie folgt
networks:
  net:
    external: true

Angenommen, der Netzwerkname ist net , ändern Sie es auf das, was Sie bei Ihrem eingestellt haben.

  • Fügen Sie die Umgebungsvariablen VIRTUAL_HOST hinzu &LETSENCRYPT_HOST wie so
- VIRTUAL_HOST
- LETSENCRYPT_HOST

Bereitstellen der Container

Sobald die Bearbeitung abgeschlossen ist, können Sie Jitsi mit docker-compose up -d bereitstellen Befehl.

Stellen Sie sicher, dass Ihre Reverse-Proxy-Container ausgeführt werden, WENN Sie sich für die Reverse-Proxy-Methode entschieden haben.

Sie sind mit der Bereitstellung von Jitsi Meet fast fertig, mit Ausnahme des letzten Schritts, der darin besteht, authentifizierte Benutzer für Ihren Jitsi-Server zu erstellen.

Authentifizierte Benutzer erstellen

Wenn Sie die Authentifizierung aktiviert haben (mit ENABLE_AUTH ), müssen Sie die Benutzer registrieren, bevor Sie Jitsi verwenden können.

Das ist ganz einfach. Gehen Sie zum geklonten Repository-Verzeichnis und führen Sie einen Befehl ähnlich dem folgenden aus

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

Sie können einen Benutzer auch mit unregister entfernen Befehl, wie ich ihn hier gezeigt habe:

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

Schließlich können Sie das Frontend von Jitsi Meet auf der angegebenen URL in einem Webbrowser überprüfen:

Haben Sie noch Fragen oder Anregungen? Bitte hinterlassen Sie einen Kommentar.

Wenn Ihnen dieses Tutorial gefällt und Sie möchten, dass wir weitere hilfreiche Inhalte produzieren, ziehen Sie bitte in Betracht, sich für die Pro-Mitgliedschaft zu entscheiden oder eine einmalige Spende zu leisten, um uns zu unterstützen :)


Docker
  1. So installieren und hosten Sie einen OpenVPN-Server mit Docker

  2. So installieren Sie Jenkins mit Docker

  3. So stellen Sie Microservices mit Docker bereit

  4. So stellen Sie Apps mit Rancher bereit

  5. Wie man ein Host-Verzeichnis in einen Docker-Container einbindet

So installieren Sie Jitsi Meet unter Debian 10

So hosten Sie Ihre eigene Platform-as-a-Service (PaaS) mit Dokku

So stellen Sie eine Verbindung zu Localhost in einem Docker-Container her

So kopieren Sie Dateien mit Docker cp in Ihren Docker-Container

So erstellen Sie ein benutzerdefiniertes Docker-Image mit Dockerfile

So stellen Sie den Jitsi Meet-Konferenzserver mit Ubuntu 22.04 bereit