XMPP-Server: Unterschied zwischen den Versionen

keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(113 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
==Ziel==
Konkurrenzfähiger, zuverlässiger, selbst betriebener, erweiterbarer Instant MessangerMessenger 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==
* [[Benutzer:sqozz|sqozz]]
* [[Benutzer:Cfr34x|cfr34k]]
* [[Benutzer:citronalcoGeierb|citronalcoGeierb]]
 
== Benutzerzugänge ==
==Ansatz==
XMPP (früher: Jabber) als Protokoll: Weit verbreitet, gute Clients verfügbar, Server ist Freie Software.
 
Jedes Bingo-MitgliederMitglied sollenhat automatisch einen Zugang erhaltenAccount.
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.
 
Die JID ist identisch zur Bingo-E-Mail-Adresse, das Passwort ist das Bingo-E-Mail-Passwort.
 
E-Mail-Aliase der Domains @bingo-ev.de und @bytewerk.org können ebenfalls als JIDs verwendet werden.
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.
 
Informationen für Anwender finden sich hier: https://xmpp.bytewerk.org/
== Implementierung ==
Auf der VM '''xmpp.bytewerk.org''' laufen folgende Dienste:
 
== Chaträume ==
* Prosody als XMPP-Server
=== Grunsätzlich ===
* PostgreSQL als Datenbank
Jeder kann nach Belieben Chaträume anlegen.
* Coturn für TURN und STUN (für Jingle/WebRTC, d.h. Audio-/Videotelefonie und Dateiübertragung von Client zu Client)
 
=== Automatisch angelegte Chaträume ===
==Benutzerzugänge==
Folgende Chaträume werden automatisch angelegt:
=== <wunschname>@bytewerk.org ===
* [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 ===
Accounts werden auf Zuruf erstellt.
Badges für Chaträume können über https://conference.<DOMAIN>/muc_badge/<MUC-JID> abgerufen werden.
 
Beispiele:
Das Passwort kann direkt im XMPP-Client geändert werden.
* Das Badge für [xmpp:bytewerk@conference.bytewerk.org bytewerk@conference.bytewerk.org] kann über die URL https://conference.bytewerk.org/muc_badge/bytewerk@conference.bytewerk.org abgerufen werden und sieht so aus: [[Datei:MUC badge bytewerk.png|frameless|caption]]
* Das Badge für [xmpp:bingo-users@conference.bingo-ev.de bingo-users@conference.bingo-ev.de] kann über die URL https://conference.bingo-ev.de/muc_badge/bingo-users@conference.bingo-ev.de abgerufen werden und sieht so aus: [[Datei:MUC badge bingo-users.png|frameless|caption]]
 
=== <BingoIRC-Benutzername>@bingo-ev.deChat ===
Zum Betreten von IRC-Chats einfach einen neuen Chat mit dem Muster '''#CHANNEL%SERVER@biboumi.bytewerk.org''' anlegen.
 
Beispiel:
Jedes Bingo-Mitglied hat automatisch einen Account.
 
Um den Channel '''#pypy''' auf '''irc.libera.chat''' zu besuchen, einen neuen Chat mit der Adresse '''#pypy%irc.libera.chat@biboumi.bytewerk.org''' starten.
Passwort ist das Bingo-E-Mail-Passwort, die JID ist identisch zur E-Mail-Adresse.
 
Im XMPP-Client werden dann automatisch der Channel und der IRC-Server als Gesprächspartner hinzugefügt.
Da zur Authentifizierung der Bingo-Mailserver benutzt wird, kann das Passwort nicht im XMPP-Client geändert werden.
Sollten die Nachrichten des IRC-Servers stören: Diesen einfach als Gesprächspartner blockieren.
 
== Empfehlenswerte 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.
* Android: Conversations.im, Quicksy.im
* iOS: Monal.im
* Windows/Linux/BSD: Gajim
* macOS: PSI
 
=== Webclients ===
Ein sehr einfacher Client (nur Text, keine Gruppenchats) ist in '''Thunderbird''' eingebaut ("Chat-Konto").
Auf xmpp.bytewerk.org ist Converse.js installiert:
* [https://xmpp.bytewerk.org/conversejs-bingo XMPP-Webclient für @bingo-ev.de-Nutzer]
* [https://xmpp.bytewerk.org/conversejs-bytewerk XMPP-Webclient für @bytewerk.org-Nutzer]
 
Grundsätzlich kann sich jeder XMPP-Nutzer an jedem XMPP-Webclient anmelden. Je nach URL werden nur ein paar Voreinstellungen passend zur Domain gesetzt um die Benutzung von Converse.js zu erleichtern.
Für '''Nextcloud''' gibt es mit der ojsxc-App (https://apps.nextcloud.com/apps/ojsxc) einen sehr gut ausgestatteten webbasierten Client.
 
=== Sonstige ===
In '''Thunderbird''' ist ein sehr einfacher Client (nur Text) integriert ("Konten" -> "Chat-Konto" hinzufügen).
 
Für '''Nextcloud''' gibt es mit der ojsxc-App ([https://apps.nextcloud.com/apps/ojsxc) ojsxc-App] einen sehr gut ausgestatteten webbasierten Client.
 
== Unterstützte Funktionen ==
=== Übersicht ===
* Gruppen
* 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 20100 MByte.
* Gleichzeitiges Verwenden mehrerer Clients
* Push
* IRC
 
[https://compliance.conversations.im/live/bytewerk.org/ 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 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 oben genannten Funktionen stehen nicht immer zur Verfügung, weil sich 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. ergeben :)
 
Beispiel: Ist mein Gesprächspartner ein Shellskript, das mir eine Nachricht schickt wenn die Waschmaschine fertig ist, dann werde ich kein Videotelefonat mit demdiesem Skriptkein Videotelefonat führen können, auchselbst wenn es mein XMPP-Client und 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.
 
ObachtWichtig bei der '''gleichzeitigen 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 gerade online warist. NichtZwar alleprüfen die meisten XMPP-Clients prüfen beim Wieder-Online-Gehen, ob in der Zwischenzeit Nachrichten für den Benutzer eingetroffen sind, dieaber bereitseben annicht einem anderen Client zugestellt wurden. Threema, Whatsapp usw. umgehen das, indem sie keine parallele Nutzung zulassenalle.
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: BeiStatt 52% jetzt 100% "XMPP Specifications compliance" beim [https://compliance.conversations.im/server/bytewerk.org/ compliance.conversationsConversations.im-Compliance-Test], stattA-Scores 52%beim jetztIM 100%Observatory "XMPP[https://www.xmpp.net/result.php?domain=bytewerk.org&type=client SpecificationsClient-] compliance"und [https://www.xmpp.net/result.php?domain=bytewerk.org&type=server 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
==Probleme==
;2022-09: IRC-Transport
* 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.
 
==ToDo==
* Testen!
* 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
 
==Verwandte Artikel==
 
 
==Files==
Das Ansible-Playbook samt Inventory befinden sich hier: https://git.bingo-ev.de/infrastructure/xmpp
 
 
[[Category:Projekt]]
16

Bearbeitungen