GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So richten Sie den Prosody XMPP-Server unter Ubuntu 20.04 ein

Prosody ist ein kostenloser Open-Source-XMPP-Server, der in Lua geschrieben ist. Es ist schnell und leicht. XMPP ist ein großartiges Protokoll für Instant Messaging. Dieses Tutorial zeigt Ihnen, wie Sie den Prosody XMPP-Server unter Ubuntu 20.04 installieren und konfigurieren. Sobald Sie dieses Tutorial abgeschlossen haben, haben Sie Ihren eigenen Chat-Server.

Schritt 1:Installieren Sie Prosody auf Ubuntu 20.04

Prosody ist im Standard-Ubuntu-Repository enthalten. Das Prosody-Team verwaltet auch ein Paket-Repository. Wenn Sie die neueste Version erhalten möchten, müssen Sie das Prosody-Repository mit dem folgenden Befehl hinzufügen.

echo 'deb https://packages.prosody.im/debian focal main' | sudo tee /etc/apt/sources.list.d/prosody.list

Führen Sie dann den folgenden Befehl aus, um den öffentlichen Schlüssel von Prosody herunterzuladen und zu importieren, wodurch der APT-Paketmanager die Integrität von Paketen überprüfen kann, die aus diesem Repository heruntergeladen wurden.

wget https://prosody.im/files/prosody-debian-packages.key -O- | sudo apt-key add -

Aktualisieren Sie als Nächstes den lokalen Paketindex und installieren Sie die neueste Version von Prosody.

sudo apt update

sudo apt install prosody

Nach der Installation wird Prosody automatisch gestartet. Sie können den Status überprüfen mit:

systemctl status prosody

Ausgabe:

● prosody.service - Prosody XMPP Server
   Loaded: loaded (/lib/systemd/system/prosody.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2020-04-19 13:58:40 UTC; 16s ago
     Docs: https://prosody.im/doc
 Main PID: 1894 (lua5.2)
    Tasks: 1 (limit: 1108)
   CGroup: /system.slice/prosody.service
           └─1894 lua5.2 /usr/bin/prosody -F

Apr 19 13:58:40 localhost systemd[1]: Started Prosody XMPP Server.

Wenn es nicht läuft, können Sie es mit

starten
sudo systemctl start prosody

Um den automatischen Start beim Systemstart zu aktivieren, führen Sie

aus
sudo systemctl enable prosody

Schritt 2:Ports in der Firewall öffnen

Standardmäßig lauscht es auf den TCP-Ports 5269 und 5222 der öffentlichen IP-Adresse, wie mit dem folgenden Befehl zu sehen ist. (Wenn Ihr Ubuntu nicht über den netstat-Befehl verfügt, können Sie ihn mit sudo apt install net-tools installieren .)

sudo netstat -lnptu | grep lua

  • Port 5222 wird für die Client-zu-Server-Verbindung verwendet.
  • Port 5269 wird für die Server-zu-Serer-Verbindung verwendet.

Wenn Sie die UFW-Firewall auf Ubuntu aktiviert haben, müssen Sie die oben genannten Ports mit dem folgenden Befehl öffnen.

sudo ufw allow 5222,5269/tcp

Schritt 3:Prosody XMPP-Server konfigurieren

Bearbeiten Sie die Hauptkonfigurationsdatei mit einem Befehlszeilen-Texteditor wie Nano.

sudo nano /etc/prosody/prosody.cfg.lua

In module_enabled {...} Abschnitt können Sie eine Zeile auskommentieren, um ein bestimmtes Modul zu aktivieren, oder eine Zeile auskommentieren, um ein bestimmtes Modul zu deaktivieren. Jedes Modul hat eine Beschreibung, die Ihnen sagt, was es tut. Wahrscheinlich möchten Sie das BOSH-Modul aktivieren, das für B steht idirektionale Ströme O ver S synchron H TTP. Es ermöglicht die XMPP-Kommunikation über HTTP.

Scrollen Sie als Nächstes in der Konfigurationsdatei nach unten. Wenn Sie die Kontoregistrierung vom XMPP-Client zulassen möchten, legen Sie allow_registration fest zu wahr. Beachten Sie, dass Sie wissen müssen, wie Sie Missbrauch verhindern können, bevor Sie dies tun. Wenn Sie neu bei XMPP sind, möchten Sie wahrscheinlich nicht zulassen, dass XMPP-Clients selbst Konten registrieren.

allow_registration = true;

Prosody erlaubt nur verschlüsselte Kommunikation, was durch die folgenden zwei Zeilen angezeigt wird.

c2s_require_encryption = true

s2s_require_encryption = true

Wir müssen jedoch einen virtuellen Host erstellen und ein TLS-Zertifikat installieren, damit Verbindungen verschlüsselt werden können. Standardmäßig gibt es in Prosody nur einen virtuellen Host:localhost, wie in der folgenden Zeile angegeben.

VirtualHost "localhost"

Jetzt erstellen wir einen weiteren virtuellen Host wie chat.example.com . Fügen Sie dieser Datei die folgende Zeile hinzu.

VirtualHost "chat.example.com"

Speichern und schließen Sie die Datei. Dann müssen wir ein vertrauenswürdiges TLS-Zertifikat von Let’s Encrypt erhalten und installieren.

Schritt 4:Erhalten Sie ein vertrauenswürdiges TLS-Zertifikat von Let’s Encrypt

Führen Sie den folgenden Befehl aus, um den Let’s Encrypt-Client (certbot) auf dem Ubuntu-Server zu installieren.

sudo apt install certbot

Wenn Sie noch keinen Webserver haben, empfehle ich Ihnen, einen zu installieren (Apache oder Nginx), da es einfacher ist, ein TLS-Zertifikat mit einem Webserver zu erhalten und zu installieren, als mit anderen Methoden.

Wenn Sie den Apache-Webserver verwenden, müssen Sie das Apache-Plugin installieren. (Der folgende Befehl installiert den Apache-Webserver, falls er noch nicht auf Ihrem System installiert ist.)

sudo apt install python3-certbot-apache

Wenn Sie den Nginx-Webserver verwenden, installieren Sie das Nginx-Plugin. (Der folgende Befehl installiert den Nginx-Webserver, falls er noch nicht auf Ihrem System installiert ist.)

sudo apt install python3-certbot-nginx

Erhalten des TLS-Zertifikats mit dem Apache-Webserver

Sie benötigen einen virtuellen Apache-Host für chat.example.com bevor Sie das Let’s Encrypt TLS-Zertifikat erhalten. Erstellen Sie die virtuelle Hostdatei:

sudo nano /etc/apache2/sites-available/prosody.conf

Fügen Sie dann den folgenden Text in die Datei ein. Ersetzen Sie chat.example.com mit Ihrem echten Domainnamen. Vergessen Sie nicht, dafür einen DNS-A-Eintrag festzulegen.

<VirtualHost *:80>        
        ServerName chat.example.com

        DocumentRoot /var/www/prosody
</VirtualHost>

Speichern und schließen Sie die Datei. Erstellen Sie dann das Webroot-Verzeichnis.

sudo mkdir /var/www/prosody

Setzen Sie www-data (Apache-Benutzer) als Eigentümer der Webroot.

sudo chown www-data:www-data /var/www/prosody -R

Aktivieren Sie diesen virtuellen Host.

sudo a2ensite prosody.conf

Laden Sie Apache neu, damit die Änderungen wirksam werden.

sudo systemctl reload apache2

Sobald der virtuelle Host erstellt und aktiviert ist, führen Sie den folgenden Befehl aus, um das TLS-Zertifikat von Let’s Encrypt zu erhalten und zu installieren.

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d chat.example.com

Ersetzen Sie den roten Text durch Ihre tatsächlichen Daten. Sie sollten Folgendes sehen, was bedeutet, dass das Zertifikat erfolgreich erhalten wurde. Sie können auch das Verzeichnis sehen, in dem Ihr Zertifikat gespeichert ist.

Erhalten des TLS-Zertifikats mit dem Nginx-Webserver

Sie benötigen einen virtuellen Nginx-Host für chat.example.com bevor Sie das Let’s Encrypt TLS-Zertifikat erhalten. Erstellen Sie die virtuelle Hostdatei:

sudo nano /etc/nginx/conf.d/prosody.conf

Fügen Sie als Nächstes den folgenden Text in die Datei ein. Ersetzen Sie chat.example.com mit Ihrem echten Domainnamen. Vergessen Sie nicht, dafür einen DNS-A-Eintrag festzulegen.

server {
      listen 80;
      listen [::]:80;
      server_name chat.example.com;

      root /var/www/prosody/;

      location ~ /.well-known/acme-challenge {
         allow all;
      }
}

Speichern und schließen Sie die Datei. Erstellen Sie dann das Web-Root-Verzeichnis.

sudo mkdir /var/www/prosody/

Setzen Sie www-data (Nginx-Benutzer) als Eigentümer des Webstammverzeichnisses.

sudo chown www-data:www-data /var/www/prosody -R

Laden Sie Nginx neu, damit die Änderungen wirksam werden.

sudo systemctl reload nginx

Sobald der virtuelle Host erstellt und aktiviert ist, führen Sie den folgenden Befehl aus, um das Let’s Encrypt-Zertifikat mit dem Nginx-Plugin zu erhalten und zu installieren.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d chat.example.com

Sie sollten Folgendes sehen, was bedeutet, dass das Zertifikat erfolgreich erhalten wurde. Sie können auch das Verzeichnis sehen, in dem Ihr Zertifikat gespeichert ist.

Schritt 5:TLS-Zertifikat in Prosody installieren

Bearbeiten Sie die Hauptkonfigurationsdatei.

sudo nano /etc/prosody/prosody.cfg.lua

Gehen Sie zu Ihrem virtuellen Prosody-Host und fügen Sie das TLS-Zertifikat und die Schlüsseldatei hinzu.

ssl = {
      key = "/etc/letsencrypt/live/chat.example.com/privkey.pem";
     certificate = "/etc/letsencrypt/live/chat.example.com/fullchain.pem";
}

So:

Speichern und schließen Sie die Datei. Da läuft der Prosody XMPP Server als prosody Benutzer müssen wir dem prosody-Benutzer erlauben, das TLS-Zertifikat und die Schlüsseldatei mit den folgenden Befehlen zu lesen.

sudo apt install acl
sudo setfacl -R -m u:prosody:rx /etc/letsencrypt/

Schritt 6:Benutzerkonten erstellen

Ein Benutzerkonto für den Prosody XMPP-Server kann mit dem folgenden Befehl erstellt werden. Sie werden aufgefordert, ein Passwort einzugeben.

sudo prosodyctl adduser [email protected]

Um das Passwort zu ändern, führen Sie

aus
sudo prosodyctl passwd [email protected]

Schritt 7:Starten Sie Prosody neu

Überprüfen Sie die Syntax der Konfigurationsdatei, indem Sie Folgendes ausführen:

sudo prosodyctl check config

Wenn die Syntax korrekt ist, starten Sie Prosody neu, damit die Änderungen wirksam werden.

sudo systemctl restart prosody

Schritt 8:XMPP-Client konfigurieren

Dieses Tutorial verwendet Pidgin Instant Messenger als XMPP-Client. Empathie ist ein weiterer Client, den Sie verwenden können. Sie können auf einem Ubuntu-Desktop installiert werden, indem Sie Folgendes ausführen:

sudo apt install pidgin

sudo apt install empathy

Beim ersten Start müssen Sie ein Konto in Pidgin hinzufügen. Klicken Sie auf Hinzufügen Schaltfläche.

Wählen Sie dann XMPP aus der Liste der Protokolle aus und geben Sie Ihren Benutzernamen, Ihre Domäne und Ihr Passwort ein.

Klicken Sie auf Hinzufügen klicken und Sie werden angemeldet.

BOSH einrichten

Wie wir bereits erklärt haben, ermöglicht Ihnen BOSH die Verwendung von XMPP über HTTP, d. h. in einem Webbrowser. Beispielsweise verwendet die Videokonferenzsoftware Jitsi Meet BOSH, um Prosody in Webseiten zu integrieren, damit Teilnehmer Text-Chats führen können, während sie an einer Online-Videokonferenz teilnehmen.

Wenn Sie das BOSH-Modul aktiviert haben, bearbeiten Sie die Prosody-Konfigurationsdatei (/etc/prosody/prosody.cfg.lua ) und fügen Sie die folgenden zwei Zeilen am Ende der Konfigurationsdatei hinzu.

consider_bosh_secure = true;
cross_domain_bosh = true;
https_ssl = {
        certificate = "/etc/letsencrypt/live/chat.example.com/fullchain.pem";
        key = "/etc/letsencrypt/live/chat.example.com/privkey.pem";
    }

Wo:

  • Die erste Zeile erzwingt eine sichere HTTPS-Verbindung.
  • Die zweite Zeile fügt BOSH-Antworten COR-Header hinzu, damit Anfragen von jeder Domäne kommen können.
  • Der https_ssl-Parameter gibt das TLS-Zertifikat und die Schlüsseldatei für den BOSH-Dienst an.

Speichern und schließen Sie die Datei. Starten Sie dann Prosody neu.

sudo systemctl restart prosody

Wenn Sie die UFW-Firewall auf dem Ubuntu-Server aktiviert haben, müssen Sie Port 5280 und 5281 mit dem folgenden Befehl öffnen.

sudo ufw allow 5280,5281/tcp

Der BOSH-Endpunkt ist nach Abschluss dieses Tutorials unter der folgenden Adresse verfügbar. Port 5280 ist für Klartext-HTTP, Port 5281 für HTTPS.

http://chat.example.com:5280/http-bind

oder

https://chat.example.com:5281/http-bind.

Ein BOSH-Endpunkt ist eine URL, die von einem Client verwendet wird, um sich über HTTP mit dem XMPP-Server zu verbinden.

Mehrbenutzer-Chatraum

Um einen MUC (Multi-User Chat) zu aktivieren, fügen Sie die folgende Zeile in die Prosody-Konfigurationsdatei ein. Ersetzen Sie conference.example.com mit Ihrer bevorzugten Subdomain.

Component "conference.example.com" "muc"
     restrict_room_creation = "admin"

Die zweite Zeile erlaubt nur dem Administrator, Räume zu erstellen. Um den Administrator für den XMPP-Server zu definieren, müssen Sie zuerst ein Konto mit sudo prosodyctl adduser erstellen Befehl wie oben gezeigt. Fügen Sie dann in der Konfigurationsdatei das Konto in admin {...} hinzu Abschnitt wie unten.

admins = { "[email protected]", "[email protected]" }

Überprüfen Sie die Syntax der Konfigurationsdatei, indem Sie Folgendes ausführen:

sudo prosodyctl check config

Wenn die Syntax korrekt ist, starten Sie Prosody neu, damit die Änderungen wirksam werden.

sudo systemctl restart prosody

Fehlerbehebung

Die Hauptprotokolldatei für Prosody ist /var/log/prosody/prosody.log . Es gibt auch ein Fehlerprotokoll /var/log/prosody/prosody.err . Wenn Prosody nicht wie erwartet funktioniert, ist das Fehlerprotokoll ein guter Ort, um es zu überprüfen.

Automatische Verlängerung des TLS-Zertifikats

Sie können einen Cron-Job erstellen, um das TLS-Zertifikat automatisch zu erneuern. Öffnen Sie die Crontab-Datei des Root-Benutzers.

sudo crontab -e

Wenn Sie den Apache-Webserver verwenden, fügen Sie die folgende Zeile am Ende der Datei hinzu.

@daily certbot renew --quiet && systemctl reload postfix dovecot apache2

Wenn Sie den Nginx-Webserver verwenden, fügen Sie die folgende Zeile hinzu.

@daily certbot renew --quiet && systemctl reload postfix dovecot nginx

Das Neuladen von Postfix, Dovecot und dem Webserver ist notwendig, damit diese Programme das neue Zertifikat und den privaten Schlüssel abrufen.


Ubuntu
  1. So richten Sie den Squid-Proxyserver unter Ubuntu 18.04 ein und installieren ihn

  2. So installieren Sie Redis unter Ubuntu 20.04 / 18.04

  3. So installieren Sie MySQL unter Ubuntu 18.04

  4. So richten Sie einen OpenVPN-Server unter Ubuntu 18.04 ein

  5. So installieren Sie Zimbra 8.6 auf einem Ubuntu 14.04-Server

So installieren Sie Zabbix Server auf Ubuntu 20.04

So installieren Sie Ubuntu Server 18.04 LTS

So installieren Sie Ubuntu 20.04 LTS-Server

So installieren Sie Cockpit unter Ubuntu 20.04

So installieren Sie den VNC-Server unter Ubuntu 20.04

So richten Sie den Prosody XMPP-Server unter Ubuntu 18.04 ein