XMPP-Clients
Dieses Chatmodul basiert auf dem XMPP-Protokoll, das auch als Jabber bekannt ist. Es ist daher möglich, sich mit Hilfe von XMPP-Client-Software mit den Chats zu verbinden. Dies kann zum Beispiel nützlich sein, um Moderationsvorgänge zu erleichtern.
Die Benutzerdokumentation zu diesen Funktionen finden Sie auf der Seite Benutzerdokumentation.
Die Aktivierung dieser Funktionen erfordert Konfigurationsänderungen auf dem Server und in den DNS-Einträgen. Es ist nicht möglich, dies nur über die Peertube-Schnittstelle zu konfigurieren, und es erfordert einige grundlegende Systemadministrationskenntnisse.
Melden Sie sich bei Ihrem Peertube-Konto an
Diese Funktion ist noch nicht verfügbar und wird in einer zukünftigen Version des Plugins enthalten sein.
Verbindung über ein externes XMPP-Konto
Um diese Funktion zu aktivieren, müssen Sie Ihren Server und Ihre DNS-Einträge so einrichten, dass XMPP-Clients den Prosody-Server finden und erreichen können, den dieses Plugin intern verwendet.
Plugin Einstellungen
Beginne mit den Einstellungen des Livechat-Plugins deiner Instanz und aktiviere die Einstellung “Verbindung zum Raum über externe XMPP-Konten aktivieren”. Wenn Sie diese Einstellung aktivieren, erscheinen unterhalb neue Einstellungen.
Zunächst einmal das Feld “Prosody-Server-zu-Server-Port”. Dieses Feld ist standardmäßig auf 5269 voreingestellt, dem Standardport für diesen Dienst. Sie können jedoch einen anderen Port wählen, wenn dieser bereits auf Ihrem Server verwendet wird.
Anschließend können Sie im Feld “Netzwerkschnittstellen zwischen Server und Server” angeben, welche Netzwerkschnittstellen der Server abhören soll. Der Standardwert “*, ::” bedeutet, dass alle IP-Adressen abgehört werden sollen. Sie können diese Werte ändern, wenn Sie nur bestimmte IP-Adressen abhören möchten. Die Syntax wird neben der Einstellung erklärt.
Die Einstellung “Zertifikatsordner” können Sie leer lassen. In diesem Fall wird das Plugin automatisch selbstsignierte Zertifikate erzeugen. Einige XMPP-Server verweigern je nach ihrer Konfiguration möglicherweise die Verbindung. In diesem Fall können Sie hier einen Pfad auf dem Server angeben, in dem Sie die vom Modul zu verwendenden Zertifikate ablegen müssen. Es liegt an Ihnen, diese zu erzeugen und zu erneuern. Für weitere Informationen siehe unten.
Firewall
Sie müssen den konfigurierten Port (standardmäßig 5269) in Ihrer Firewall öffnen.
Wenn Sie Docker für Ihren Peertube verwenden, müssen Sie die Datei
docker-compose.yml
ändern, um Port 5269 des Peertube
-Containers zu
öffnen, damit sich die Außenwelt mit ihm verbinden kann.
DNS
Sie müssen DNS-Einträge hinzufügen, die es entfernten Servern ermöglicht, die Komponenten “room.your_instance.tld” und “external.your_instance.tld” zu finden.
Am einfachsten ist es, SRV-Einträge für die Subdomänen “room” und “external” hinzuzufügen:
record name: _xmpp-server._tcp.room.ihre_instanz.tld. (ersetzen Sie «ihre_instanz.tld» mit ihrer Instanz Uri)
TTL: 3600
class: IN
SRV: 0
priority: 0
weight: 5
Port: 5269 (anpassen, wenn Sie den Standardport geändert haben)
Ziel: ihre_instanz.tld. (durch Ihre Instanz-URI ersetzen)
record name: _xmpp-server._tcp.external.ihre_instanz.tld. (ersetzen Sie «ihre_instanz.tld» mit ihrer Instanz Uri)
TTL: 3600
class: IN
SRV: 0
priority: 0
weight: 5
Port: 5269 (anpassen, wenn Sie den Standardport geändert haben)
Ziel: ihre_instanz.tld. (durch Ihre Instanz-URI ersetzen)
Achten Sie darauf, dass der Punkt nach “ihre_instanz.tld” erhalten bleibt.
Wenn Sie den Befehl dig
verwenden, um Ihren Datensätze zu überprüfen,
sollten Sie ein ähnliches Ergebnis wie dieses erhalten:
$ dig +short _xmpp-server._tcp.room.videos.john-livingston.fr. SRV
0 5 5269 videos.john-livingston.fr.
$ dig +short _xmpp-server._tcp.external.videos.john-livingston.fr. SRV
0 5 5269 videos.john-livingston.fr.
Wenn Sie nicht den Standardport 5269
verwenden, müssen Sie auch einen
SRV-Eintrag für _xmpp-server._tcp.ihre_instanz.tld.
hinzufügen (wie oben,
nur ohne das Präfix room.
). Natürlich können Sie diesen Eintrag auch
hinzufügen, wenn Sie den Standard-Port verwenden. Das wird auch
funktionieren.
Verwendung vertrauenswürdiger Zertifikate
Die selbstsignierten Zertifikate, die dieses Plugin standardmäßig verwendet, können von einigen XMPP-Servern aus Sicherheitsgründen abgelehnt werden.
Es ist möglich, von einer Zertifizierungsstelle validierte Zertifikate zu verwenden. Dies erfordert jedoch fortgeschrittene Kenntnisse in der Systemverwaltung. Aufgrund der Vielzahl möglicher Anwendungsfälle ist es in der Tat unmöglich, hier alle Situationen zu dokumentieren. Diese Dokumentation wird daher nur das zu erreichende Ziel erläutern und ein Beispiel geben, das nur für eine “einfache” Situation geeignet ist (manuelle Installation von Peertube unter Verwendung von letsencrypt). Wenn Sie sich in einer anderen Situation befinden (Docker-Installation, von einer anderen Autorität signierte Zertifikate, etc…), müssen Sie diesen Ansatz selbst anpassen.
Grundlegendes Prinzip
Es liegt an Ihnen, gültige Zertifikate für die Domänen ihre_instanz.tld
und room.ihre_instanz.tld
zu erzeugen. Sie können jede von Prosody
unterstützte Methode verwenden.
Sie müssen diese Zertifikate dann in einem Ordner ablegen, auf den der
peertube
-Benutzer zugreifen kann, und diesen Ordner in der Plugin
Einstellung “Certificate folder” angeben.
Wenn Sie das Programm ProsodyCtl verwenden möchten, um Zertifikate zu
importieren, ist es (sobald Peertube gestartet ist) mit folgendem Befehl
verfügbar (passen Sie den Pfad zu Ihrem Peertube-Datenordner an und ersetzen
Sie “xxx” durch die Argumente, die Sie an prosodyctl übergeben wollen):
sudo -u peertube /var/www/peertube/storage/plugins/data/peertube-plugin-livechat/prosodyAppImage/squashfs-root/AppRun prosodyctl --config /var/www/peertube/storage/plugins/data/peertube-plugin-livechat/prosody/prosody.cfg.lua xxx
Das Plugin prüft einmal am Tag, ob Dateien in diesem Ordner geändert wurden, und lädt Prosody gegebenenfalls neu.
Methode für den einfachen Fall
Wir gehen hier davon aus, dass Ihre Peertube Installation “klassisch” ist (keine Verwendung von Docker) und dass die Zertifikate von letsencrypt mit dem Werkzeug certbot erzeugt werden.
Als erstes müssen wir ein Zertifikat für die Subdomain
room.ihre_instanz.tld
erstellen: dies ist die Uri der MUC (XMPP chat
rooms) Komponente. Auch wenn die Verbindungen über ihre_instanz.tld
hergestellt werden, benötigen wir ein gültiges Zertifikat für diese
Subdomain.
Beginnen Sie also damit, einen DNS-Eintrag für room.ihre_instanz.tld
einzurichten, der auf Ihren Server verweist. Sie können einen CNAME-Eintrag
verwenden (oder einen A-Eintrag und einen AAAA-Eintrag).
Als Nächstes verwenden wir nginx (bereits für Ihr Peertube installiert), um
das certbot-Zertifikat zu erzeugen. Wir werden eine neue Website
erstellen. In der Datei /etc/nginx/site-available/room.peertube
fügen Sie
hinzu:
server {
listen 80;
listen [::]:80;
server_name room.ihre_instanz.tld;
location /.well-known/acme-challenge/ {
default_type "text/plain";
root /var/www/certbot;
}
location / { return 301 https://ihre_instanz.tld; }
}
Aktivieren Sie dann die Website:
ln -s /etc/nginx/sites-available/room.peertube /etc/nginx/sites-enabled/
systemc reload nginx
Dann bereiten wir den Ordner vor, in den wir später die Zertifikate
importieren werden. Wir gehen hier davon aus, dass Sie das Plugin bereits
aktiv haben. Wir erstellen den folgenden Ordner (falls er noch nicht
existiert), mit dem Benutzer peertube
, um sicherzustellen, dass es keine
Probleme mit den Berechtigungen gibt:
sudo -u peertube mkdir /var/www/peertube/storage/plugins/data/peertube-plugin-livechat/prosody/certs
Nun müssen Sie diesen Ordner in den Plugin-Einstellungen für den Parameter “Zertifikatsordner” konfigurieren. Es ist wichtig, dies jetzt zu tun, da sonst das Skript für den Zertifikatsimport die Zertifikate in den falschen Ordner legt.
Wir werden certbot so konfigurieren, dass die generierten Zertifikate in den Prosody Ordner importiert werden. Wir können das Programm ProsodyCtl verwenden, das im Plugin enthalten ist.
Hinweis: Damit es verfügbar ist, muss das Plugin mindestens einmal gestartet worden sein.
Wir werden eine Datei /etc/letsencrypt/renewal-hooks/deploy/prosody.sh
erstellen, die Folgendes enthält:
#!/bin/sh
/var/www/peertube/storage/plugins/data/peertube-plugin-livechat/prosodyAppImage/squashfs-root/AppRun prosodyctl \
--root \
--config /var/www/peertube/storage/plugins/data/peertube-plugin-livechat/prosody/prosody.cfg.lua \
cert import \
room.your_instance.tld your_instance.tld /etc/letsencrypt/live
Dann bitten wir um die Erstellung des Zertifikats:
certbot -d room.videos.john-livingston.fr
Wenn certbot Ihnen mehrere Methoden zur Erstellung des Zertifikats anbietet, wählen Sie “nginx”.
Normalerweise sollten Sie die Zertifikate nun in dem konfigurierten Ordner finden.
Hinweis: Wenn Sie dies zum ersten Mal tun, müssen Sie Prosody neu laden. Der einfachste Weg, dies zu tun, ist, Peertube neu zu starten.
Methode für das Docker-Verfahren
Diese Methode funktioniert mit dem offiziell unterstützten Docker Guide von PeerTube.
Stellen Sie zunächst sicher, dass Sie einen DNS-Eintrag für “room.ihre_instanz.tld” erstellen, der auf Ihren Server verweist. Sie können einen CNAME-Eintrag (oder einen A-Eintrag und einen AAAA-Eintrag) verwenden. Dies ist erforderlich, damit Let’s Encrypt die Domäne für die Zertifikatserstellung validieren kann.
Geben Sie das Verzeichnis an, in dem sich Ihre Datei docker-compose.yml
befindet.
Öffnen Sie eine Befehlszeile im certbot Container:
docker exec -it certbot /bin/sh
Starten Sie certbot:
certbot
Es wird eine Reihe von Eingabeaufforderungen angezeigt. Geben Sie 2
für
den Authentifizierungstyp ein:
How would you like to authenticate with the ACME CA?
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Geben Sie den Domänennamen “room.ihre_instanz.tld” ein:
Please enter the domain name(s) you would like on your certificate (comma and/or space separated) (Enter 'c' to cancel): room.your_instance.tld
Geben Sie das Verzeichnis an, in dem der PeerTube-Webserver Anfragen für
Let’s Encrypt bedient, /var/www/certbot
:
Input the webroot for <room.your_instance.tld>: (Enter 'c' to cancel): /var/www/certbot
Sie sollten eine Ausgabe wie die folgende sehen:
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/room.your_instance.tld/fullchain.pem
Key is saved at: /etc/letsencrypt/live/room.your_instance.tld/privkey.pem
Führen Sie den folgenden Befehl innerhalb des certbot-Containers aus, um der peertube-Gruppe Lesezugriff auf die neuen Zertifikate und privaten Schlüssel zu geben. Hinweis: Dadurch werden die Dateien auch für die Gruppe mit der ID 999 auf dem Host-System lesbar. Überprüfen Sie die Gruppen auf Ihrem System, um dieses Risiko einzuschätzen, bevor Sie diesen Befehl ausführen.
chown -R root:999 /etc/letsencrypt/live; \
chmod 750 /etc/letsencrypt/live; \
chown -R root:999 /etc/letsencrypt/archive; \
chmod 750 /etc/letsencrypt/archive; \
find /etc/letsencrypt/ -name 'privkey*' -exec chmod 0640 {} \;
Verlassen Sie den certbot-Container:
exit
Ändern Sie Ihre Datei docker-compose.yml
, indem Sie die Zeile entrypoint
unter dem Dienst certbot
wie folgt ändern. Dies ist das Gleiche wie oben,
soll aber automatisch nach jeder Zertifikatserneuerung ausgeführt werden.
entrypoint: /bin/sh -c "trap exit TERM; while :; do certbot renew --webroot -w /var/www/certbot; chown -R root:999 /etc/letsencrypt/live; chmod 750 /etc/letsencrypt/live; chown -R root:999 /etc/letsencrypt/archive; chmod 750 /etc/letsencrypt/archive; find /etc/letsencrypt/ -name 'privkey*' -exec chmod 0640 {} +; sleep 12h & wait $${!}; done;"
Fahren Sie mit der Änderung der Datei docker-compose.yml
fort und fügen
Sie das certbot-Zertifikatsvolumen in den Peertube-Container ein. Es sollte
in etwa so aussehen:
volumes:
- ./docker-volume/certbot/conf:/etc/letsencrypt
Den Dienst neustarten:
docker-compose down; docker-comopse up -d
Setzen Sie in den Livechat-Plugin-Einstellungen in den PeerTube-Administrationseinstellungen den Zertifikatsordner auf den folgenden Wert:
/etc/letsencrypt/live
Speichern Sie die Plugin Einstellungen und überprüfen Sie, ob Prosody die Zertifikate erkennen kann:
docker-compose exec -u peertube \
peertube \
/data/plugins/data/peertube-plugin-livechat/prosodyAppImage/squashfs-root/AppRun \
prosodyctl \
--config /data/plugins/data/peertube-plugin-livechat/prosody/prosody.cfg.lua \
check certs
Fehlerbehebung
Wenn Sie es nicht hinbekommen, können Sie das Diagnosetool verwenden (es gibt eine Schaltfläche oben auf der Seite mit den Plugin-Einstellungen) und sich den Abschnitt «Prosody check» genau ansehen.