XMPP: Unterschied zwischen den Versionen
Geierb (Diskussion | Beiträge) K →ToDo |
Bg3992 (Diskussion | Beiträge) KKeine Bearbeitungszusammenfassung |
||
| (131 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
== Kurzbeschreibung == |
|||
==Ziel== |
|||
Föderierter, selbst betriebener, erweiterbarer Instant Messenger mit allen derzeitig üblichen Funktionen (Verschlüsselung, private und öffentliche Gruppen, Videotelefonie, Push-Nachrichten,...). |
|||
Außerdem: Multi-Client-Unterstützung mit freier Clientwahl (Apps für iOS/Android, Web, Linux/Windows/Mac, GUI/CLI) |
|||
Bingo-Mitglieder sollen automatisch einen Zugang erhalten. |
|||
Für Bytwerk-Mitglieder soll es Accounts mit Wunschnamen geben. Bestehende Bytewerk-Zugänge sollen erhalten bleiben. |
|||
Informationen für Anwender finden sich hier: https://xmpp.bytewerk.org/ |
|||
==Verantwortlich== |
|||
* [[Benutzer:sqozz|sqozz]] |
|||
* [[Benutzer:Cfr34x|cfr34k]] |
|||
* [[Benutzer:citronalco|citronalco]] |
|||
==Benutzerzugänge== |
|||
==Ansatz== |
|||
=== bingo-Mitglieder === |
|||
XMPP (früher: Jabber) als Protokoll: Weit verbreitet, gute Clients verfügbar, Server ist Freie Software. |
|||
Jedes bingo-Mitglied hat automatisch einen Account. |
|||
Der Benutzername ("JID") ist identisch zur Bingo-E-Mail-Adresse, das Passwort ist das Bingo-Passwort. |
|||
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. |
|||
E-Mail-Aliase der Domains @bingo-ev.de und @bytewerk.org können ebenfalls als JIDs verwendet werden. |
|||
=== Nicht-bingo-Mitglieder === |
|||
XMPP wird wie bisher auf der Domain "bytewerk.org" angeboten und zusätzlich auf "bingo-ev.de": |
|||
Bingo-Mitglieder können im [https://dss.bingo-ev.de DSS] Einladungslinks erstellen und z.B. an Freunde und Bekannte weitergeben. Die Zugänge sind haben die Domain @ext.bingo-ev.de, Benutzername ("JID") und Passwort können frei gewählt werden. Die Zugänge sind völlig unabhängig vom bingo-Mitglied, das eingeladen hat. |
|||
* 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. |
|||
Nicht benutzte Zugänge werden nach einem Jahr gelöscht. |
|||
== Implementierung == |
|||
Auf der VM '''xmpp.bytewerk.org''' laufen folgende Dienste: |
|||
== XMPP-Clients == |
|||
Es kann jeder XMPP-Client verwendet werden. Empfehlenswerte Clients für Android, iOS, Linux, Windows und MacOS sind auf https://xmpp.bytewerk.org/ aufgeführt. |
|||
* PostgreSQL als Datenbank |
|||
* Coturn für TURN und STUN (für Jingle/WebRTC, d.h. Audio-/Videotelefonie und Dateiübertragung von Client zu Client) |
|||
Zusätzlich gibt es auf https://xmpp.org/software/ eine filterbare Übersicht aller relevanten XMPP-Clients. |
|||
==Benutzerzugänge== |
|||
=== <wunschname>@bytewerk.org === |
|||
Auf xmpp.bytewerk.org ist ein Webclient verfügbar: [https://xmpp.bytewerk.org/conversejs-bingo#converse/room?jid=bingo-users@conference.bingo-ev.de https://xmpp.bytewerk.org/conversejs-bingo] |
|||
Accounts werden auf Zuruf erstellt. |
|||
== Unterstützte Funktionen == |
|||
* Gruppen (öffentlich/privat/mit Einladung, moderiert/unmoderiert) |
|||
* Audio- und Videotelefonie |
|||
* Sprach- und Videonachrichten |
|||
* Ende-zu-Ende-Verschlüsselung |
|||
* Dateiup- und Download (wird auch für Fotos, Sprach- und Videonachrichten verwendet) - Dateigröße pro Upload derzeit limitiert auf 100 MByte. |
|||
* Gleichzeitiges Verwenden mehrerer Clients |
|||
* Push |
|||
* IRC |
|||
* Invites (nur Domain ext.bingo-ev.de) |
|||
[https://compliance.conversations.im/live/ext.bingo-ev.de/ 100% Compliance] zu Conversations |
|||
Das Passwort kann direkt im XMPP-Client geändert werden. |
|||
Dateien und Chatverläufe werden nach einem Monat vom Server gelöscht. |
|||
=== <Bingo-Benutzername>@bingo-ev.de === |
|||
== Chaträume == |
|||
Jedes Bingo-Mitglied hat automatisch einen Account. |
|||
Jeder kann nach Belieben Chaträume anlegen. |
|||
=== Automatisch angelegte Chaträume === |
|||
Passwort ist das Bingo-E-Mail-Passwort, die JID ist identisch zur E-Mail-Adresse. |
|||
Folgende Chaträume werden automatisch angelegt: |
|||
* [xmpp:bingo-users@conference.bingo-ev.de bingo-users@conference.bingo-ev.de] [https://conference.bingo-ev.de/muc_badge/bingo-users@conference.bingo-ev.de] |
|||
* [xmpp:bytewerk@conference.bytewerk.org bytewerk@conference.bytewerk.org] [https://conference.bytewerk.org/muc_badge/bytewerk@conference.bytewerk.org] |
|||
=== Badges === |
|||
Da zur Authentifizierung der Bingo-Mailserver benutzt wird, kann das Passwort nicht im XMPP-Client geändert werden. |
|||
Badges für öffentliche Chaträume können über <nowiki>https://xmpp.bytewerk.org/muc_badge/</nowiki><MUC-JID> abgerufen werden. |
|||
Beispiele: |
|||
== Empfehlenswerte Clients == |
|||
* Das Badge für [xmpp:bytewerk@conference.bytewerk.org bytewerk@conference.bytewerk.org] kann über die URL https://xmpp.bytewerk.org/muc_badge/bytewerk@conference.bytewerk.org abgerufen werden und sieht so aus: [[Datei:XMPP-Bytewerk-Badge.png|rahmenlos|caption]] |
|||
* Android: Conversations.im, Quicksy.im |
|||
* Das Badge für [xmpp:bingo-users@conference.bingo-ev.de bingo-users@conference.bingo-ev.de] kann über die URL https://xmpp.bytewerk.org/muc_badge/bingo-users@conference.bingo-ev.de abgerufen werden und sieht so aus: [[Datei:XMPP-Bingo-Badge.png|rahmenlos|caption]] |
|||
* iOS: Monal.im |
|||
* Windows/Linux/BSD: Gajim |
|||
* macOS: PSI |
|||
=== IRC-Chat === |
|||
Ein sehr einfacher Client (nur Text, keine Gruppenchats) ist in '''Thunderbird''' eingebaut ("Chat-Konto"). |
|||
Zum Betreten eines IRC-Chats einfach einen Gruppenchat mit dem Muster '''#CHANNEL%SERVER@irc.xmpp.bytewerk.org''' anlegen/beitreten. |
|||
'''Beispiel:''' |
|||
Für '''Nextcloud''' gibt es mit der ojsxc-App (https://apps.nextcloud.com/apps/ojsxc) einen sehr gut ausgestatteten webbasierten Client. |
|||
Um den Channel '''#pypy''' auf '''irc.libera.chat''' zu besuchen, einen neuen Chat mit der Adresse '''#pypy%irc.libera.chat@irc.xmpp.bytewerk.org''' starten. |
|||
== 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 |
|||
Im XMPP-Client werden dann automatisch sowohl der Channel als auch der IRC-Server als Gesprächspartner hinzugefügt. |
|||
Sollten die Nachrichten des IRC-Servers stören: Diesen einfach als Gesprächspartner blockieren. |
|||
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 XMPP-Clients. |
|||
=== Die Kosten der Freiheit === |
|||
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. |
|||
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 :) |
|||
Konkret: Ist mein Gesprächspartner ein Shellskript, das mir eine Nachricht schickt wenn die Waschmaschine fertig ist, dann werde ich mit diesem kein Videotelefonat führen können. |
|||
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. |
|||
Wichtig bei der '''gleichzeitigen Verwendung von mehreren Clients''': Eine Nachricht gilt als zugestellt, wenn sie an EINEM Client des Empfängers angekommen ist. Bei wackeliger Internetverbindung kann es so aussehen, als ob Nachrichten verschluckt worden wären - sie sind aber nur bei dem Clients gelandet, der gerade online ist.XMPP-Clients prüfen beim Wieder-Online-Gehen, ob in der Zwischenzeit Nachrichten eingetroffen sind. Es geht also nichts verloren. |
|||
Ebenso ist undefiniert, was passiert, wenn ein Videoanruf gestartet werden soll, der Gesprächspartner aber mit mehreren Clients online ist, von denen nicht alle Videotelefonie unterstützen. |
|||
Threema, Whatsapp usw. machen es sich einfach: Die verbieten schlicht die parallele Nutzung sowie Fremd-Clients. |
|||
== Fortschritt == |
== 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 [https://compliance.conversations.im/server/bytewerk.org/ compliance.conversations.im] statt 52% jetzt 100% "XMPP Specifications compliance". |
|||
;2021-02: Bingo-Domäne mit IMAP-Authentifizierung hinzugefügt |
|||
2021-02: Implementierung abgeschlossen: Statt 52% jetzt 100% "XMPP Specifications compliance" beim Conversations.im-Compliance-Test, A-Scores beim IM Observatory Client- und Server-Test |
|||
==Probleme== |
|||
* Plattenplatz sehr gering |
|||
* keine IPv6-Unterstützung: Die Prosody-VM hat zwar eine IPv6-Adresse, diese ist aber nicht öffentlich erreichbar |
|||
* <del>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.</del> |
|||
* XMPP-Webclient unter https://jabber.bytewerk.org funktioniert nicht mehr. |
|||
2021-02: Bingo-Domäne mit IMAP-Authentifizierung hinzugefügt, Conversejs aktualisiert |
|||
==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,...) |
|||
* Vom http[s]://bingo-ev.de/.well-known/host-meta und http[s]://bingo-ev.de/.well-known/host-meta.json per Redirect umleiten zu http://xmpp.bytewerk.org/.well-known/... |
|||
* Mehr Plattenplatz |
|||
* Backup |
|||
* Monitoring |
|||
2021-08: Serverkonfiguration auf Ansible umgestellt, dabei kleine Fehler behoben, neue Funktionen hinzugefügt, Conversejs aktualisiert. |
|||
==Verwandte Artikel== |
|||
2022-08: Push-Services für Monal IM aktiviert |
|||
2022-09: IRC-Transport |
|||
==Files== |
|||
2025-04: Umzug von Suse auf Debian, XMPP-Invites |
|||
==Verantwortlich== |
|||
* [[Benutzer:Cfr34x|cfr34k]] |
|||
* [[Benutzer:Geierb|Geierb]] |
|||
== Files == |
|||
Das Ansible-Playbook samt Inventory befinden sich hier: https://git.bingo-ev.de/infrastructure/xmpp |
|||
[[Category:Projekt]] |
[[Category:Projekt]] |
||
Aktuelle Version vom 30. Juni 2026, 19:18 Uhr
Kurzbeschreibung
Föderierter, selbst betriebener, erweiterbarer Instant Messenger mit allen derzeitig üblichen Funktionen (Verschlüsselung, private und öffentliche Gruppen, Videotelefonie, Push-Nachrichten,...).
Außerdem: Multi-Client-Unterstützung mit freier Clientwahl (Apps für iOS/Android, Web, Linux/Windows/Mac, GUI/CLI)
Informationen für Anwender finden sich hier: https://xmpp.bytewerk.org/
Benutzerzugänge
bingo-Mitglieder
Jedes bingo-Mitglied hat automatisch einen Account.
Der Benutzername ("JID") ist identisch zur Bingo-E-Mail-Adresse, das Passwort ist das Bingo-Passwort.
E-Mail-Aliase der Domains @bingo-ev.de und @bytewerk.org können ebenfalls als JIDs verwendet werden.
Nicht-bingo-Mitglieder
Bingo-Mitglieder können im DSS Einladungslinks erstellen und z.B. an Freunde und Bekannte weitergeben. Die Zugänge sind haben die Domain @ext.bingo-ev.de, Benutzername ("JID") und Passwort können frei gewählt werden. Die Zugänge sind völlig unabhängig vom bingo-Mitglied, das eingeladen hat.
Nicht benutzte Zugänge werden nach einem Jahr gelöscht.
XMPP-Clients
Es kann jeder XMPP-Client verwendet werden. Empfehlenswerte Clients für Android, iOS, Linux, Windows und MacOS sind auf https://xmpp.bytewerk.org/ aufgeführt.
Zusätzlich gibt es auf https://xmpp.org/software/ eine filterbare Übersicht aller relevanten XMPP-Clients.
Auf xmpp.bytewerk.org ist ein Webclient verfügbar: https://xmpp.bytewerk.org/conversejs-bingo
Unterstützte Funktionen
- Gruppen (öffentlich/privat/mit Einladung, moderiert/unmoderiert)
- Audio- und Videotelefonie
- Sprach- und Videonachrichten
- Ende-zu-Ende-Verschlüsselung
- Dateiup- und Download (wird auch für Fotos, Sprach- und Videonachrichten verwendet) - Dateigröße pro Upload derzeit limitiert auf 100 MByte.
- Gleichzeitiges Verwenden mehrerer Clients
- Push
- IRC
- Invites (nur Domain ext.bingo-ev.de)
100% Compliance zu Conversations
Dateien und Chatverläufe werden nach einem Monat vom Server gelöscht.
Chaträume
Jeder kann nach Belieben Chaträume anlegen.
Automatisch angelegte Chaträume
Folgende Chaträume werden automatisch angelegt:
Badges
Badges für öffentliche Chaträume können über https://xmpp.bytewerk.org/muc_badge/<MUC-JID> abgerufen werden.
Beispiele:
- Das Badge für bytewerk@conference.bytewerk.org kann über die URL https://xmpp.bytewerk.org/muc_badge/bytewerk@conference.bytewerk.org abgerufen werden und sieht so aus:

- Das Badge für bingo-users@conference.bingo-ev.de kann über die URL https://xmpp.bytewerk.org/muc_badge/bingo-users@conference.bingo-ev.de abgerufen werden und sieht so aus:

IRC-Chat
Zum Betreten eines IRC-Chats einfach einen Gruppenchat mit dem Muster #CHANNEL%SERVER@irc.xmpp.bytewerk.org anlegen/beitreten.
Beispiel:
Um den Channel #pypy auf irc.libera.chat zu besuchen, einen neuen Chat mit der Adresse #pypy%irc.libera.chat@irc.xmpp.bytewerk.org starten.
Im XMPP-Client werden dann automatisch sowohl der Channel als auch der IRC-Server als Gesprächspartner hinzugefügt.
Sollten die Nachrichten des IRC-Servers stören: Diesen einfach als Gesprächspartner blockieren.
Die Kosten der Freiheit
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 :)
Konkret: Ist mein Gesprächspartner ein Shellskript, das mir eine Nachricht schickt wenn die Waschmaschine fertig ist, dann werde ich mit diesem kein Videotelefonat führen können.
Wichtig bei der gleichzeitigen Verwendung von mehreren Clients: Eine Nachricht gilt als zugestellt, wenn sie an EINEM Client des Empfängers angekommen ist. Bei wackeliger Internetverbindung kann es so aussehen, als ob Nachrichten verschluckt worden wären - sie sind aber nur bei dem Clients gelandet, der gerade online ist.XMPP-Clients prüfen beim Wieder-Online-Gehen, ob in der Zwischenzeit Nachrichten eingetroffen sind. Es geht also nichts verloren.
Ebenso ist undefiniert, was passiert, wenn ein Videoanruf gestartet werden soll, der Gesprächspartner aber mit mehreren Clients online ist, von denen nicht alle Videotelefonie unterstützen.
Threema, Whatsapp usw. machen es sich einfach: Die verbieten schlicht die parallele Nutzung sowie Fremd-Clients.
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: Statt 52% jetzt 100% "XMPP Specifications compliance" beim Conversations.im-Compliance-Test, A-Scores beim IM Observatory Client- und Server-Test
2021-02: Bingo-Domäne mit IMAP-Authentifizierung hinzugefügt, Conversejs aktualisiert
2021-08: Serverkonfiguration auf Ansible umgestellt, dabei kleine Fehler behoben, neue Funktionen hinzugefügt, Conversejs aktualisiert.
2022-08: Push-Services für Monal IM aktiviert
2022-09: IRC-Transport
2025-04: Umzug von Suse auf Debian, XMPP-Invites
Verantwortlich
Files
Das Ansible-Playbook samt Inventory befinden sich hier: https://git.bingo-ev.de/infrastructure/xmpp