XMPP-Server

Aus bytewerk-Wiki
Wechseln zu: Navigation, Suche

Ziel

Konkurrenzfähiger, zuverlässiger, selbst betriebener, erweiterbarer Instant Messanger mit allen derzeitig üblichen Funktionen.

Bingo-Mitglieder sollen automatisch einen Zugang erhalten. Für Bytwerk-Mitglieder soll es Accounts mit Wunschnamen geben. Bestehende Bytewerk-Zugänge sollen erhalten bleiben.

Verantwortlich

Ansatz

XMPP (früher: Jabber) als Protokoll: Weit verbreitet, gute Clients verfügbar, Server ist Freie Software.

Auf der VM "xmpp.bytewerk.org" läuft bereits Prosody. Dessen Konfiguration wird korrigiert und fehlende Funktionen eingetragen. DNS-Einträge werden geprüft und ergänzt. Für Jingle wird ein TURN-Server installiert.


XMPP wird wie bisher auf der Domain "bytewerk.org" angeboten und zusätzlich auf "bingo-ev.de":

  • Accounts für die bytewerk.org-Domain werden, wie bisher auch, lokal angelegt und verwaltet.
  • Benutzer der bingo-ev.de-Domain sollen gegen den IMAP-Server "mail.bingo-ev.de" authentifiziert werden: Werden Benutzername und Passwort vom Mailserver bestätigt, so soll der Nutzer auch den XMPP-Server benutzen dürfen. Um es möglichst einfach zu halten soll auch die JID identisch zur E-Mail-Adresse sein.

Implementierung

Auf der VM xmpp.bytewerk.org laufen folgende Dienste:

  • Prosody als XMPP-Server
  • PostgreSQL als Datenbank
  • Coturn für TURN und STUN (für Jingle/WebRTC, d.h. Audio-/Videotelefonie und Dateiübertragung von Client zu Client)
  • ConverseJS als Webclient

Benutzerzugänge

<wunschname>@bytewerk.org

Accounts werden auf Zuruf erstellt.

Das Passwort kann direkt im XMPP-Client geändert werden.

Webclient: https://xmpp.bytewerk.org/conversejs-bytewerk


<Bingo-Benutzername>@bingo-ev.de

Jedes Bingo-Mitglied hat automatisch einen Account.

Passwort ist das Bingo-E-Mail-Passwort, die JID ist identisch zur E-Mail-Adresse.

Da zur Authentifizierung der Bingo-Mailserver benutzt wird, kann das Passwort nicht im XMPP-Client geändert werden.

Webclient: https://xmpp.bytewerk.org/conversejs-bingo

Empfehlenswerte Clients

  • Android: Conversations.im, Quicksy.im
  • iOS: Monal.im
  • Windows/Linux/BSD: Gajim
  • macOS: PSI

Ein sehr einfacher Client (nur Text, keine Gruppenchats) ist in Thunderbird eingebaut ("Chat-Konto").

Für Nextcloud gibt es mit der ojsxc-App (https://apps.nextcloud.com/apps/ojsxc) einen sehr gut ausgestatteten webbasierten Client.

Unterstützte Funktionen

  • Gruppen
  • Audio- und Videotelefonie
  • Ende-zu-Ende-Verschlüsselung
  • Dateiup- und Download (wird auch für Sprach- und Videonachrichten verwendet) - Dateigröße derzeit limitiert auf 20 MByte.
  • Gleichzeitiges Verwenden mehrerer Clients


Die bei der Kommunikation mit einem bestimmten Gesprächspartner zur Verfügung stehenden Funktionen ergeben sich aus der Schnittmenge des Funktionsumfangs der beteiligten XMPP-Server und der XMPP-Clients.

Beispiel: Ist mein Gesprächspartner ein Shellskript, das mir eine Nachricht schickt wenn die Waschmaschine fertig ist, werde ich kein Videotelefonat mit dem Skript führen können auch wenn es der Server unterstützt.

Obacht bei der Verwendung von mehreren Clients gleichzeitig: Eine Nachricht gilt als zugestellt, wenn sie an EINEM Client des Empfängers angekommen ist. Das kann bei wackeliger Internetverbindung dazu führen, dass Nachrichten scheinbar nicht zugestellt wurden - sie landen dann nur bei dem Gerät, dass online war. Nicht alle Clients prüfen beim Wieder-Online-Gehen, ob in der Zwischenzeit Nachrichten für den Benutzer eingetroffen sind, die bereits an einem anderen Client zugestellt wurden. Threema, Whatsapp usw. umgehen das, indem sie keine parallele Nutzung zulassen.

Fortschritt

2021-01
Neukonfiguration des bestehenden XMPP-Servers mit Korrektur der DNS-Einträge und Installation zusätzlicher benötigter Dienste
2021-02
Implementierung abgeschlossen: Bei compliance.conversations.im statt 52% jetzt 100% "XMPP Specifications compliance".
2021-02
Bingo-Domäne mit IMAP-Authentifizierung hinzugefügt, Conversejs aktualisiert

Probleme

  • Plattenplatz sehr gering
  • keine IPv6-Unterstützung: Die Prosody-VM hat zwar eine IPv6-Adresse, diese ist aber nicht öffentlich erreichbar
  • Wenn Coturn als TURN-Server statt "nur" als STUN-Server durch Prosody benutzt wird, funktioniert Audio- und Videotelefonie nur noch mit bytewerk.org-Usern und nicht mehr mit Externen.
  • XMPP-Webclient unter https://jabber.bytewerk.org funktioniert nicht mehr.
  • Verbindung mit Websocket funktioniert nicht (und ist darum deaktiviert): Verbindung wird aufgebaut, dann gibt's einen Timeout.
  • Conversejs ist stellenweise etwas umständlich zu bedienen. So muss z.B. zum Anlegen eines MUC die komplette Domain des eigenen XMPP-Servers eingegeben werden. Um das zu umgehen gibt es jeweils eine Conversejs-URL für @bingo-ev.de und @bytewerk.org, bei der durch entsprechende Vorkonfiguration das Anlegen von MUCs auch ohne Eintippen des Domainnamens funktioniert. Mittelfristig kann Conversejs eventuell durch Movim ersetzt werden. Movim ist allerdings noch zu buggy (siehe Issues [1], [2], [3]).

ToDo

  • Testen! Insbesondere: Funktioniert alle XMPP. Funktionen auch mit Nutzern aus anderen Domänen? Verhalten sich Mobilgeräte wie erwartet? (iOS Pushnachrichten, Stromsparmodus, Verzögerungen,...)
  • Mehr Plattenplatz
  • Backup
  • Monitoring

Verwandte Artikel

Files