190
Bearbeitungen
Geierb (Diskussion | Beiträge) |
Geierb (Diskussion | Beiträge) |
||
(32 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
* [[Benutzer:sqozz|sqozz]]
* [[Benutzer:Cfr34x|cfr34k]]
* [[Benutzer:
==Benutzerzugänge==
Informationen für Anwender finden sich hier: [https://xmpp.bytewerk.org/ https://xmpp.bytewerk.org/]
Accounts werden auf Zuruf erstellt (siehe oben "Verantwortlich").▼
Das Passwort kann direkt im XMPP-Client geändert werden.▼
[https://xmpp.bytewerk.org/conversejs-bytewerk XMPP-Webclient]▼
=== <Bingo-Benutzername>@bingo-ev.de ===
Jedes Bingo-Mitglied hat automatisch einen Account.
Die JID ist identisch zur Bingo-E-Mail-Adresse, das Passwort ist das Bingo-E-Mail-Passwort.
Das Passwort kann nicht im XMPP-Client geändert werden, da zur Authentifizierung der Bingo-Mailserver benutzt wird.
▲Accounts werden auf Zuruf erstellt (siehe oben "Verantwortlich").
▲Das Passwort kann direkt im XMPP-Client geändert werden.
==
=== Empfehlenswerte native Clients ===
* Android: Conversations.im, Quicksy.im
* iOS: Monal.im
* macOS: PSI
In '''Thunderbird''' ist ein sehr einfacher Client (nur Text) ("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.
▲In '''Thunderbird''' ist ein sehr einfacher Client (nur Text) integriert ("Konten" -> "Chat-Konto" hinzufügen).
Für '''Nextcloud''' gibt es mit der [https://apps.nextcloud.com/apps/ojsxc ojsxc-App] einen sehr gut ausgestatteten webbasierten Client.
* Audio- und Videotelefonie
* Ende-zu-Ende-Verschlüsselung
* Dateiup- und Download (wird auch für Fotos, 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
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 gerade online
== 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:
;2021-02: Bingo-Domäne mit IMAP-Authentifizierung hinzugefügt, Conversejs aktualisiert
== Implementierung ==
Auf der VM '''xmpp.bytewerk.org''' läuft:
* [https://prosody.im/ Prosody]: XMPP-Server
* [https://www.postgresql.org PostgreSQL]: Datenbank für Benutzer, Kontakte, Gruppen und Chats
* [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]: XMPP-Webclient
* [https://httpd.apache.org/ Apache2] mit mod_php: HTTPS-Reverse-Proxy für File-Up- und -Downloads, ''.well-known''-URLs, BOSH und Websocket, Bereitstellung von ConverseJS. PHP wird für das "share_v2.php"-Skript benötigt, das sich um Datei-Up- und Downloads kümmert.
* [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 um täglich das Fileupload-Verzeichnis aufzuräumen
* [http://etckeeper.branchable.com etckeeper]: Zum Nachverfolgen von Konfigurationsänderungen (git im ''/etc''-Verzeichnis)
=== DNS ===
XMPP-Server und -Clients nutzen
▲XMPP-Clients nutzen die SRV-Records, um anhand der JID-Domäne eines Nutzer den Server, die Components und deren Ports zu herauszufinden.
Die A/AAAA-Einträge werden
==== Auszug aus dem Zonefile von bytewerk.org ====
Für Feinheiten lohnt sich ein Blick in "/var/log/prosody/prosody.err", besonders mit eingeschaltetem "debug"-Loglevel.
'''''Coturn''''' benötigt nur das Zertifikat von "xmpp.bytewerk.org"
'''''Apache2''''' braucht grundsätzlich nur Zertifikate für "xmpp.bytewerk.org", "upload.bytewerk.org" und "upload.bingo-ev.de".
Um die Zertifikate, die von Prosody benötigt werden, mit Certbot zu erstellen, gibt's diese vHosts:
* 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
==== TLS-
Danach muss Prosody mit "prosodyctl reload" neu geladen werden.
** ''/etc/prosody/certs/bytewerk.org/privkey.pem''
** ''/etc/prosody/certs/bytewerk.org/fullchain.pem''
** ''/etc/prosody/certs/bingo-ev.de/privkey.pem''
** ''/etc/prosody/certs/bingo-ev.de/fullchain.pem''
==== Alle anderen Zertifikate ====
* 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-
* ''apache2.sh'': Lädt Apache2 neu
* ''coturn.sh'': Kopiert die Zertifikate nach ''/etc/coturn/certs/''
* ''prosody.sh'': Kopiert die Zertifikate nach ''/etc/prosody/certs/''
=== Konfiguration Prosody ===
▲=== 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 ===▼
▲=== Prosody ===
Kommentierte Konfigurationsdatei "/etc/prosody/prosody.cfg.lua"
Zum Aktualisieren einfach "/usr/local/sbin/update-prosody-modules.sh" ausführen und Prosody mit "prosodyctl reload" neu laden.
=== Konfiguration Apache2 ===
▲=== Apache2 ===
▲vHosts in "/etc/apache2/vhosts.d/" angelegt, sonst keine Änderungen.
* proxy.bytewerk.org.conf, proxy65.bingo-ev.de.conf: Nur Platzhalter Certbot
▲* 01-set-servername.conf: Hostname auf xmpp.bytewerk.org setzen
*
*
▲* pubsub.bytewerk.org.conf: Nur Platzhalter Certbot
* 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.
=== Konfiguration Coturn ===▼
▲=== Coturn ===
Kommentierte Konfigurationsdatei "/etc/coturn/turnserver.conf"
=== 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.
Um XEP-0156 ("Discovering Alternative XMPP Connection Methods") zu erfüllen, müssen die Webserver von bytewerk.org und bingo-ev.de per Reverse Proxy folgende URL vom XMPP-Server durchreichen. Es reicht wenn die URLs über HTTPS erreichbar sind:
* ''xmpp.bytewerk.org/.well-known/host-meta'':
** https://bytewerk.org/.well-known/host-meta
** https://bingo-ev.de/.well-known/host-meta
* ''xmpp.bytewerk.org/.well-known/host-meta.json'':
** https://bytewerk.org/.well-known/host-meta.json
** https://bingo-ev.de/.well-known/host-meta.json
Ein einfacher Redirect reicht nicht, da die CORS-Header in Prosody konfiguriert und gesetzt werden.
==Probleme==
* 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
* <del>Backup</del>
* <del>Monitoring</del>
==Files==
Alle Konfigurationsdateien befinden sich hier: https://git.bingo-ev.de/geierb/bytewerk-xmpp-server
[[Category:Projekt]]
|
Bearbeitungen