Zum Inhalt springen

XMPP: Unterschied zwischen den Versionen

Aus bytewerk-Wiki
Inhalt gelöscht Inhalt hinzugefügt
Geierb (Diskussion | Beiträge)
KKeine Bearbeitungszusammenfassung
 
(115 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
== Kurzbeschreibung ==
==Ziel==
Konkurrenzfähiger, zuverlässiger, selbst betriebener, erweiterbarer Instant Messanger mit allen derzeitig üblichen Funktionen.
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==
==Benutzerzugänge==
=== <wunschname>@bytewerk.org ===
=== 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.
Accounts werden auf Zuruf erstellt.


E-Mail-Aliase der Domains @bingo-ev.de und @bytewerk.org können ebenfalls als JIDs verwendet werden.
Das Passwort kann direkt im XMPP-Client geändert werden.


=== Nicht-bingo-Mitglieder ===
Webclient: https://xmpp.bytewerk.org/conversejs-bytewerk
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.


Nicht benutzte Zugänge werden nach einem Jahr gelöscht.


== XMPP-Clients ==
=== <Bingo-Benutzername>@bingo-ev.de ===
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.
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) 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.


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]
== Unterstützte Funktionen ==
== Unterstützte Funktionen ==
* Gruppen (öffentlich/privat/mit Einladung, moderiert/unmoderiert)
* Gruppen
* Audio- und Videotelefonie
* Audio- und Videotelefonie
* Sprach- und Videonachrichten
* Ende-zu-Ende-Verschlüsselung
* Ende-zu-Ende-Verschlüsselung
* Dateiup- und Download (wird auch für Sprach- und Videonachrichten verwendet) - Dateigröße derzeit limitiert auf 20 MByte.
* 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
* 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


Dateien und Chatverläufe werden nach einem Monat vom Server gelöscht.
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.


== Chaträume ==
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.
Jeder kann nach Belieben Chaträume anlegen.


=== Automatisch angelegte Chaträume ===
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.
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]


== Fortschritt ==
=== Badges ===
Badges für öffentliche Chaträume können über <nowiki>https://xmpp.bytewerk.org/muc_badge/</nowiki><MUC-JID> abgerufen werden.
;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, Conversejs aktualisiert


Beispiele:
==Probleme==
* 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]]
* Plattenplatz sehr gering
* 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]]
* 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>
* 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 [https://github.com/movim/movim/ Movim] ersetzt werden. Movim ist allerdings Stand 2/2021 noch zu buggy (siehe Issues [https://github.com/movim/movim/issues/964], [https://github.com/movim/movim/issues/972], [https://github.com/movim/movim/issues/974]).


==ToDo==
=== IRC-Chat ===
Zum Betreten eines IRC-Chats einfach einen Gruppenchat mit dem Muster '''#CHANNEL%SERVER@irc.xmpp.bytewerk.org''' anlegen/beitreten.
* 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


'''Beispiel:'''
== Implementierung ==
Auf der VM '''xmpp.bytewerk.org''' läuft:


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.
* [https://prosody.im/ Prosody]: XMPP-Server
* [https://www.postgresql.org PostgreSQL]: Datenbank
* [https://github.com/coturn/coturn Coturn]: TURN und STUN (für Jingle/WebRTC benötigt, d.h. Audio-/Videotelefonie sowie Dateiübertragung von Client zu Client)
* [https://github.com/conversejs/converse.js ConverseJS]: Webclient
* [https://httpd.apache.org/ Apache2]: HTTPS-Reverse-Proxy für File-Up- und -Downloads, .well-known-URLs, BOSH und Websocket, Bereitstellung von ConverseJS
* [https://github.com/DigitaleGesellschaft/Anonip Anonip]: Wird zum Logging in Apache2 benutzt um in den Access-Logs die letzten Stellen der IP-Adressen auf 0 setzen. Liegt unter ''/usr/local/Anonip.git''
* [https://certbot.eff.org Certbot]: Für TLS-Zertifikatsaktualisierung
* Crond: Um Certbot wöchentlich aufzurufen und täglich das Fileupload-Verzeichnis aufzuräumen
* [http://etckeeper.branchable.com etckeeper]: Zum Nachverfolgen von Konfigurationsänderungen (git im /etc-Verzeichnis)


Im XMPP-Client werden dann automatisch sowohl der Channel als auch der IRC-Server als Gesprächspartner hinzugefügt.
=== DNS ===
XMPP-Clients nutzen die SRV-Records, um anhand der JID-Domäne eines Nutzer den Server, die Components und deren Ports zu herauszufinden.


Sollten die Nachrichten des IRC-Servers stören: Diesen einfach als Gesprächspartner blockieren.
XMPP-Server nutzen die SRV-Records, um den zu einer Component gehörenden Server samt Ports herauszufinden.


=== Die Kosten der Freiheit ===
Die A/AAAA-Einträge werden zum Erstellen der TLS-Zertifikate gebraucht.
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.
==== Auszug aus dem Zonefile von bytewerk.org ====
<pre>
xmpp.bytewerk.org. 300 IN A 94.142.219.72 # Prosody-Server, Coturn-Server, Apache2


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.
conference.bytewerk.org. 300 IN A 94.142.219.72 # MUC-Component, Apache2
proxy.bytewerk.org. 300 IN A 94.142.219.72 # Proxy65-Component, Apache2
upload.bytewerk.org. 300 IN A 94.142.219.72 # HTTP-Fileupload, Apache2
pubsub.bytewerk.org. 300 IN A 94.142.219.72 # PubSub-Component, Apache2


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.
_xmpp-client._tcp.bytewerk.org. 300 IN SRV 0 5 5222 xmpp.bytewerk.org. # VirtualHost XMPP-Server, C2S
_xmpps-client._tcp.bytewerk.org. 300 IN SRV 0 5 5223 xmpp.bytewerk.org. # VirtualHost XMPP-Server, C2S Legacy SSL auf Port 5223
_xmpp-server._tcp.bytewerk.org. 300 IN SRV 0 5 5269 xmpp.bytewerk.org. # VirtualHost XMPP-Server, S2S
_xmpp-server._tcp.conference.bytewerk.org. 300 IN SRV 0 5 5269 xmpp.bytewerk.org. # MUC-Component, S2S
_xmpp-server._tcp.proxy.bytewerk.org. 300 IN SRV 0 5 5269 xmpp.bytewerk.org. # Proxy65-Component, S2S
_xmpp-server._tcp.pubsub.bytewerk.org. 300 IN SRV 0 5 5269 xmpp.bytewerk.org. # PubSub-Component, S2S


Threema, Whatsapp usw. machen es sich einfach: Die verbieten schlicht die parallele Nutzung sowie Fremd-Clients.
_xmppconnect.bytewerk.org. 300 IN TXT "_xmpp-client-xbosh=https://xmpp.bytewerk.org/http-bind" # BOSH
_xmppconnect.bytewerk.org. 300 IN TXT "_xmpp-client-websocket=wss://xmpp.bytewerk.org/xmpp-websocket" # Websocket
</pre>


== Fortschritt ==
==== Auszug aus dem Zonefile von bingo-ev.de ====
2021-01: Neukonfiguration des bestehenden XMPP-Servers mit Korrektur der DNS-Einträge und Installation zusätzlicher benötigter Dienste
<pre>
conference.bingo-ev.de. 300 IN A 94.142.219.72 # MUC-Component, Apache2
proxy65.bingo-ev.de. 300 IN A 94.142.219.72 # Proxy65-Component, Apache2 ("proxy.bingo-ev.de" ist bereits belegt)
upload.bingo-ev.de. 300 IN A 94.142.219.72 # HTTP-Fileupload, Apache2
pubsub.bingo-ev.de. 300 IN A 94.142.219.72 # PubSub-Component, Apache2


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
_xmpp-client._tcp.bingo-ev.de. 300 IN SRV 0 5 5222 xmpp.bytewerk.org. # VirtualHost XMPP-Server, C2S
_xmpps-client._tcp.bingo-ev.de. 300 IN SRV 0 5 5225 xmpp.bytewerk.org. # VirtualHost XMPP-Server, C2S Legacy SSL auf Port 5225
_xmpp-server._tcp.bingo-ev.de. 300 IN SRV 0 5 5269 xmpp.bytewerk.org. # VirtualHost XMPP-Server, S2S
_xmpp-server._tcp.conference.bingo-ev.de. 300 IN SRV 0 5 5269 xmpp.bytewerk.org. # MUC-Component, S2S
_xmpp-server._tcp.proxy65.bingo-ev.de. 300 IN SRV 0 5 5269 xmpp.bytewerk.org. # Proxy65-Component, S2S
_xmpp-server._tcp.pubsub.bingo-ev.de. 300 IN SRV 0 5 5269 xmpp.bytewerk.org. # PubSub-Component, S2S


2021-02: Bingo-Domäne mit IMAP-Authentifizierung hinzugefügt, Conversejs aktualisiert
_xmppconnect.bingo-ev.de. 300 IN TXT "_xmpp-client-xbosh=https://xmpp.bytewerk.org/http-bind" # BOSH
_xmppconnect.bingo-ev.de. 300 IN TXT "_xmpp-client-websocket=wss://xmpp.bytewerk.org/xmpp-websocket" # Websocket
</pre>


2021-08: Serverkonfiguration auf Ansible umgestellt, dabei kleine Fehler behoben, neue Funktionen hinzugefügt, Conversejs aktualisiert.
=== Subdomains und Zertifikate ===
'''''Prosody''''' benötigt Zertifikate für ALLE beteiligten Domains, also auch von bytewerk.org und bingo-ev.de. Components ohne Zertifikat funktionieren nicht mit externen Usern.
Mit "prosodyct check" kann geprüft werden ob alle Zertikate passend zu den DNS-Einträgen und zu den Components vorhanden sind (Ausnahme: Legacy-SSL).
Für Feinheiten lohnt sich ein Blick in "/var/log/prosody/prosody.err", besonders mit eingeschaltetem "debug"-Loglevel.


2022-08: Push-Services für Monal IM aktiviert
'''''Coturn''''' benötigt nur das Zertifikat von xmpp.bytewerk.org


2022-09: IRC-Transport
'''''Apache2''''' betreibt vHosts für folgende Hostnamen und benötigt die entsprechenden Zertifikate:
* xmpp.bytewerk.org
* conference.bytewerk.org, pubsub.bytewerk.org, proxy.bytewerk.org, upload.bytewerk.org
* conference.bingo-ev.de, pubsub.bingo-ev.de, proxy65.bingo-ev.de, upload.bingo-ev.de


2025-04: Umzug von Suse auf Debian, XMPP-Invites
==== Zertifikat für bytewerk.org und bingo-ev.de ====
Das bytewerk.org- und das bino-ev.de-Zertifikat wird nur von Prosody (nicht Apache2, nicht Coturn) benötigt.
Bei Änderungen/Aktualisierungen müssen sie manuell auf den Server kopiert und User "prosody" übereignet werden.
Danach muss Prosody mit "prosodyctl reload" neu geladen werden.


==Verantwortlich==
===== bytewerk.org: =====
* [[Benutzer:Cfr34x|cfr34k]]
* /etc/prosody/certs/bytewerk.org/privkey.pem
* [[Benutzer:Geierb|Geierb]]
* /etc/prosody/certs/bytewerk.org/fullchain.pem

===== bingo-ev.de: =====
* /etc/prosody/certs/bingo-ev.de/privkey.pem
* /etc/prosody/certs/bingo-ev.de/fullchain.pem

===== Alle anderen Zertifikate =====
Alle Zertifikate außer dem von bytewerk.org und bingo-ev.de werden von LetsEncrypt-Certbot erstellt und liegen unter ''/etc/letsencrypt''.
Das Renewal wird per wöchentlichem Cronjob von root mit ''/usr/bin/certbot renew'' durchgeführt.

Zertifikate:
* xmpp.bytewerk.org
* conference.bytewerk.org, pubsub.bytewerk.org, proxy.bytewerk.org, upload.bytewerk.org
* conference.bingo-ev.de, pubsub.bingo-ev.de, proxy65.bingo-ev.de, upload.bingo-ev.de

Nach einem erfolgten Renewal führt Certbot die Post-Renewal-Hooks ''/etc/letsencrypt/renewal-hooks/post/'' aus:
* apache2.sh: Apache2 neu laden
* coturn.sh: Zertifikate nach ''/etc/coturn/certs/'' kopieren, Rechte anpassen und Coturn neu starten
* prosody.sh: Zertifikate nach ''/etc/prosody/certs/'' kopieren, Rechte anpassen und Prosody neu laden


=== Fileupload ===
Der in Prosody eingebaute HTTP-Server unterstützt nur den Upload von Dateien <= 10 MByte und funktioniert nicht mit einigen iOS-Clients (z.B. Monal, Siskin).
Um diese Probleme zu umgehen empfiehlt Prosody, stattdessen das Modul "mod_http_upload_external" zu verwenden.
Bei dem Modul wird dazu das PHP-Skript "share_v2.php" benutzt, das unter dem Apache-vHost "https://upload.bytewerk.org/share_v2.php" (bzw. https://upload.bingo-ev.org/share_v2.php) eingebunden ist und hochgeladene Dateien unter "/srv/var/prosody-upload/<DOMAIN>/" abspeichert.

Dateien, die älter als ein Monat sind, werden per täglichem Cronjob von root gelöscht.

=== XEP-0368: .well-known-URLs ===
Der Webserver bytewerk.org muss per Reverse Proxy für die URL https://bytewerk.org/.well-known/host-meta(.json) auf http://xmpp.bytewerk.org/.well-known/... verweisen. Ein Redirect reicht nicht, da die CORS-Header in Prosody konfiguriert und gesetzt werden. Gleiches gilt für den bingo-ev.de-Webserver.


=== Prosody ===
Kommentierte Konfigurationsdatei "/etc/prosody/prosody.cfg.lua"

Da beim Prosody-Paket von OpenSuse eine Menge benötigter Module fehlen, wurden die Module direkt aus dem Prosody-Mercuriual-Repository nach "/usr/local/lib/prosody-modules/" geklont
Zum Aktualisieren einfach "/usr/local/sbin/update-prosody-modules.sh" ausführen und Prosody mit "prosodyctl reload" neu laden.


=== Apache2 ===
vHosts in "/etc/apache2/vhosts.d/" angelegt, sonst keine Änderungen.
* 01-set-servername.conf: Hostname auf xmpp.bytewerk.org setzen
* conference.bytewerk.org.conf: Nur Platzhalter für Certbot
* proxy.bytewerk.org.conf: Nur Platzhalter Certbot
* pubsub.bytewerk.org.conf: Nur Platzhalter Certbot
* upload.bytewerk.org.conf: Fileupload per mod_http_upload_external + share_v2.php
* xmpp.bytewerk.org.conf: Reverse-Proxy für BOSH, Websocket und für die von mod_http_altconnect erstellte .well-known-URIs

Alle vHosts außer upload.bytewerk.org leiten auf https://jabber.bytwerk.org um.

Für bingo-ev.de gibt es entsprechende vHosts.

=== Coturn ===
Kommentierte Konfigurationsdatei "/etc/coturn/turnserver.conf"



==Verwandte Artikel==


==Files==
TBD


== 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:

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