hack-hro wiki:
Auf Gerät

ditto

Port
8448
LXC

quassel

Hostname

https://quassel.hack-hro.de

Was ist das?

Matrix ist eine Kommunikationswerkzeug mit Unterstützung für Federation und Ende-zu-Ende-Verschlüsselung.

Matrix

Wir betreiben einen eigenen https://matrix.org-Homeserver.

Zudem bieten wir den web-basierten Client element (ehemals 'riot') für lokale Nutzer an.

Die Anmeldung am matrix-Homeserver ist nur mit den persönlichen LDAP-Zugangsdaten möglich. Eine offene Registrierung anderer Nutzer bieten wir nicht an. Die hackspace-Nutzer können aber natürlich trotzdem uneingeschränkt mit den Nutzern anderer matrix-Homeserver kommunizieren. Nutzer anderer Homeserver können auch "unseren" Räumen beitreten, sofern dies beim Anlegen des Raums nicht verboten wurde.

Matrix-Domain
hack-hro.de
URL unseres Web-Clients

https://quassel.hack-hro.de/

VM für Matrix (synapse)

quassel.ditto

VM für Element-Web-Client

hosting.ditto

Schnittstellen nach außen

Web-Client

https://quassel.hack-hro.de/

Matrix-API

https://hack-hro.de:8448/

Installation

Matrix-Synapse

DNS / Zertifikat / apache2

element

LDAP-Anmeldung

Leider braucht das Python-Modul zur LDAP-Authentifikation (matrix-synapse-ldap3) ein paar kleine Anpassungen:

--- ldap_auth_provider.py.orig.0.1.4    2021-12-12 02:05:42.777230320 +0100
+++ ldap_auth_provider.py       2021-12-12 02:53:22.928401477 +0100
@@ -55,8 +55,8 @@
 
 
 class LDAPMode(object):
-    SIMPLE = "simple",
-    SEARCH = "search",
+    SIMPLE = "simple"
+    SEARCH = "search"
 
     LIST = (SIMPLE, SEARCH)
 
@@ -367,7 +367,7 @@
 
         ldap_config.enabled = config.get("enabled", False)
 
-        ldap_config.mode = LDAPMode.SIMPLE
+        ldap_config.mode = config.get("mode", LDAPMode.SIMPLE)
 
         # verify config sanity
         _require_keys(config, [
@@ -381,15 +381,9 @@
         ldap_config.base = config["base"]
         ldap_config.attributes = config["attributes"]
 
-        if "bind_dn" in config:
-            ldap_config.mode = LDAPMode.SEARCH
-            _require_keys(config, [
-                "bind_dn",
-                "bind_password",
-            ])
-
-            ldap_config.bind_dn = config["bind_dn"]
-            ldap_config.bind_password = config["bind_password"]
+        if ldap_config.mode == LDAPMode.SEARCH:
+            ldap_config.bind_dn = config.get("bind_dn", None)
+            ldap_config.bind_password = config.get("bind_password", None)
             ldap_config.filter = config.get("filter", None)
 
         # verify attribute lookup
@@ -487,12 +481,13 @@
                 if an error occured
         """
 
+        authentication = ldap3.ANONYMOUS if bind_dn is None else LDAP_AUTH_SIMPLE
         try:
             # bind with the the local user's ldap credentials
             conn = await threads.deferToThread(
                 ldap3.Connection,
                 server, bind_dn, password,
-                authentication=LDAP_AUTH_SIMPLE,
+                authentication=authentication,
                 read_only=True,
             )
             logger.debug(

Übliche Aufgaben

Raum / Community erstellen

Alle matrix-Accounts, die zu unserem Homeserver gehören, können Räume und Communities anlegen. Externen Accounts ist dies nicht gestattet.

In den Raumeinstellungen (beim Anlegen oder später anzupassen) bezieht sich das Wort Gäste auf Nutzer, deren Account zu einem externen Homeserver gehört (z.B. @foo:systemausfall.org). Typischerweise sollten Gäste in Räumen erlaubt sein, da manche hackspace-Mitglieder separate matrix-Accounts nutzen. Die Offenheit eines Raums (nur auf Einladung) ist davon unabhängig.

Jede Ressource (Räume, Communities) sollte mindestens zwei aktive Admins (eher mehr) haben, damit wir die Kontrolle über die Ressource nicht irgendwann verlieren.

Weitere Admins zu einer Community hinzufügen

Leider ist die Ernennung weiterer Admins für Communities derzeit (2020) nicht via element möglich (siehe #5240).

Daher verwenden wir unser eigenes kleines Admin-Skript auf *quassel*:

/root/bin/matrix-helpers community admin add --community COMMUNITY --username USERNAME

Web-Client (element) aktualisieren

Wir aktualisieren den Web-Client gelegentlich manuell.

Auf hosting.ditto folgendes ausführen:

# element-Version pruefen
make -C /var/www/element
# element aktualisieren
make -C /var/www/element upgrade

Ein Wechsel zurück auf eine ältere Version kann durch Änderung des Symlinks latest in dem obigen Verzeichnis erfolgen.

Aktualisierungen des Web-Clients sind nicht disruptiv für Nutzer. Sie können also bedenkenlos vorgenommen werden.


KategorieDienste

hack-hro wiki: Dienste/Matrix (zuletzt geändert am 2024-10-30 20:34:48 durch josch)