Matrix und Moodle (haben geheiratet)

Hallo,
das klingt bei Dir so leicht umsetzbar :stuck_out_tongue_winking_eye:. Würdest Du Deine Anleitungen für die Eltern zur Verfügung stellen? Dann müsste ich nicht bei 0 anfangen.

Vielleicht ist Euer Weg wirklich am effektivsten :man_shrugging:t2::thinking::interrobang:

Viele Grüße,
Michael

1 „Gefällt mir“

Hallo Michael,

zunächst mal: wir haben grundsätzlich 2 Wege probiert und diskutiert:

Variante 1:

  • die Eltern registrieren sich in Moodle (inkl. E-Mail-Bestätigung)
  • die Eltern finden in Moodle ihren Elternkurs und beantragen die Mitgliedschaft
  • die Klassenlehrkräfte werden per E-Mail informiert und schalten die Eltern (ggf. nach kurzer Prüfung) frei
  • fehlende Eltern werden von den Klassenlehrkräften und/oder ElternverterterInnen bei der Anmeldung unterstütz

Variante 2:

  • die Eltern registrieren sich in Moodle (inkl. E-Mail-Bestätigung)
  • mit einem per Brief oder am Elternabend ausgeteilten Code schreiben sich die Eltern in den entsprechenden Kurs ein
  • die KL oder Elternvertreter prüfen auf Vollständigkeit und unterstützen ggf. Eltern bei der Anmeldung

Ein großer Unterschied besteht nicht zwischen den beiden Wegen. In Variante 1 hat man anfangs weniger Arbeit, muss aber nachher dran bleiben, wenn die E-Mails eintrudeln. Bei vielen Klassen gibt es da immer mal Lehrkräfte, die da nicht mitkommen. Bei Variante 2 hat man vorher etwas mehr Aufwand, um die Codes zu erzeugen ODER die Lehrkräfte zu instruieren, wie sie das selbst tun können (nachhaltiger, aber eben auch etwas unzuverlässiger). Wenn man - wie wir - auch Klausuren über Moodle schreibt, lohnt sich evtl., die Lehrkräfte in Sachen Kurseinschreibemethoden fortzubilden…

Hier die beiden Elterninfos - zur An- und Abmeldung. Auf die schnelle bin ich nur an die PDFs gelant, irgendwo liegen aber auch die ODTs bei Bedarf.

Elternbrief_Registrierung_2023_Elternsprechtag.pdf (126,3 KB)
Elterninfo_Moodle4_Abmeldung.pdf (82,1 KB)

Viele Grüße
Thomas

2 „Gefällt mir“

Vielen Dank! Das schaue ich mir alles genauer an.

Nochmal eine Frage aus Admin-Sicht: wie kannst Du denn gewährleisten, dass das System nicht nach und nach mit zig veralteten Zugängen voll läuft?

Wenn Du gar nicht weißt, welcher Elternzugang zu welchem Schüler gehört, kannst Du ja auch niemanden löschen, der es nicht selbst gemacht hast, oder? Ich nehme daher an, dass Du solche Logins einfach weiterlaufen lässt und ignorierst??

Viele Grüße,
Michael

Hallo Michael,

Die Zugehörigkeit zu SchülerInnen regeln wir lose über ein Profilfeld „Name Kind(er)“, dass die Eltern bei der Registrierung ausfüllen sollen.

Tatsächlich sind wir relativ entspannt mit alten Profilen, aber wenn Zeit ist, gibt es drei Dinge, die wir ab und zu über die Bulk-User-Verwaltung machen, um eine „Überprüfungsliste“ zu generieren:

  • leeres Profil-Feld „Name Kind(er)“
  • letzte Anmeldung > 1 Jahr her
  • Profile, die in keinem Kurs mehr angemeldet sind (und damit eh nichts bekommen)

Diese Namen kann das Sekretariat dann überprüfen. Sind das dann offenbar obsolete Profile, löschen wir sie irgendwann. Es kann ja nicht viel passieren - notfalls legen die ihren Account erneut an.

Viele Grüße
Thomas

Hallo Thomas,
:ok: – das klingt alles so, als würde es auf diesem Weg gut funktionieren. :+1:

Da ihr ja scheinbar nicht mit Zugangsschlüsseln arbeitet, könnten sich bei Euch aber alle anmelden, oder? Also auch Spammer oder anderer Mist :thinking: ?
Die E-Mail-basierte Selbstregistrierung hatten wir daaaamals aus genaus diesem Grund deaktiviert. Ist das ein Problem?

Hinzu kommt, dass es vielleicht Schüler gibt, die ihr Passwort vergessen haben und sich dann auch über diesen Weg selbst neu selbst registrieren wollen – gibt’s damit Probleme?

Viele Grüße,
Michael

Hallo Michael,

Bisher überhaupt nicht. Es führt ja auch zu nichts, da man dann zwar einen Account erstellt hat, aber nichts spannendes sehen kann. Dafür lohnt der Aufwand offenbar nicht. Sollte sich das irgendwann ändern, werden wir das ggf. neu bewerten.

Das wird denen ja nichts bringen. Dann haben sie einen zusätzlichen Moodle-Zugang, mit dem sie nichts anfangen können, da sie nicht in die Kurse kommen. Also bisher auch damit keine Probleme.

Was man zumindest im Hinterkopf haben sollte: ganz theoretisch können sich in Variante 1 Menschen (andere Eltern/SchülerInnen) als andere Personen ausgeben, um sich Zugriff zu einem Elternkurs zu „erschleichen“. Aber:

  • die KL sind ja angehalten, diese Liste aktiv zu überprüfen und bei unpassenden/dopppelten Profilen eben mal nachzufragen
  • auch hier: es gibt ja nichts zu holen. Langweilige Infos z.B. über den Elternsprechtag, „schlimmstenfalls“ mal Adressdaten anderer Eltern. Also sollten die Lehrkräfte schon einen Blick darauf haben. Aber wir machen ja auch bei Elternabenden keine Ausweiskontrolle, weil einfach die Unterwanderungsgefahr doch sehr überschaubar ist :wink:

Viele Grüße
Thomas

PS: Ich gehe bei keinem Verfahren (!) davon aus, dass es nicht noch weiterentwickelt werden kann bzw. es noch gute Alternativen gibt. Das ist halt unser „Stand der Dinge“ und der hat durchaus hier und da Lücken. Darum sind auch die kritischen Rückfragen immer hilfreich :slight_smile:

Hallo zusammen,

ich finde das Zusammenspiel Moodle/Matrix auch total spannend. Ich hab jetzt mal unser Moodle auf die 4.3 hochgezogen und an unser Matrix gehängt. Aber so ganz klappt es noch nicht.
Manchmal werden Nutzer in Matrix vom MoodleBot angelegt, meistens nicht. Wenn ich dann noch mehr Teilnehmer zum Kurs hinzufüge, dann landen diese nicht im entsprechenden Matrix-Raum (bzw. diese User werden auf Matrix erst gar nicht erzeugt).

Läuft das Zusammenspiel bei euch rund?

Eigentlich kann man ja nicht viel falsch machen - denkt man.

  • Matrix-Admin-User erzeugen und Token in Moodle eintragen.
  • Homeserver-URL in Moodle eintragen.

Bei der Homeserver-URL hatte ch wohl zunächst Probleme, weil ich den kompletten fqdn verwendet hatte - meine User aber nicht den Server-Namen in ihrer Matrix-Adresse haben. Ich hab dann nur den in Matrix verwendeten Domainpart angegeben. Dafür musste ich dann allerdings noch einen Eintrag in der /etc/hosts machen, damit Moodle den Matrix-Server dann auch findet.

Die User sind in Matrix via LDAP und Keycloak angebunden. Angelegt hab ich die User in Matrix nicht explizit. Meine Hoffnung war ja, dass dies von Moodle mit erledigt wird. Auf einen Identity-Server (ma1sd) hab ich verzichtet, da dieser wohl nicht mehr wirklich weiter gepflegt wird (wenn die User sowieso alle von Moodle angelegt werden, dann benötigt man ja auch keinen Identity-Server mehr).

Würde mich über einen konstruktiven Austausch freuen.

Lieben Gruß

Raphael

1 „Gefällt mir“

Hallo Raphael,

ich hab mich eben erst im Matrix-Chat von Moodle angemeldet, um da auch mal nachfragen zu können. Schön, wenn es auch hier einen Austausch gibt.

Also bei uns ist das eingerichtet und funktioniert. Ich habe nur den Admin-Account eingerichtet, alle weiteren Nutzer werden von Moodle angelegt. Das erledigt der Cron-Job.

Was allerdings (noch) ein Problem ist: der Admin-Token ändert sich und Moodle kann wohl im Moment keine Refresh-Tokens. Ich bin aber noch nicht sicher, wie man das löst bzw. ob da die Entwickler nochmal ran müssen. Derzeit muss ich immer nochmal nachschauen, ob der Token stimmt, bevor wieder Leute einen Kurs anlegen. Denn sonst wird der nicht angelegt, landet aber in der Datenbank und das ist dann doof.
Es könnte auch bei Dir ja evtl. helfen, die Einträge in der Datenbank zu löschen - dann werden die Räume neu angelegt. Gerade, wenn Du anfangs experimentiert hast.

Und: die Nutzer haben natürlich keine Zugangsdaten - zumindest keine bekannten. Sie werden zwar auf dem Matrix-Server angelegt, aber die Moodle-Zugangsdaten funktionieren nicht.

Was ich dann gemacht habe: LDAP/AD in Matrix anlegen und das geht tatsächlich. Da die Benutzernamen in Moodle und im LDAP zueinander passen, funktioniert für alle Domänenbenutzer der Login in Matrix.
Wir haben auch Elternaccounts in Moodle - die müssen sich das Passwort einmal per Mail zurücksetzen, das geht aber auch problemlos.

Und was jetzt noch fehlt, wäre eine Einrichtung über die REST-Api. Ich würde Matrix gerne automatisch für all unsere Kurse einrichten - das ist im Moment halt noch Handarbeit.

Aber die Richtung, die das nimmt, finde ich sehr gut. Und alle, die das derzeit (testweise) benutzen, sind ziemlich überzeugt davon.

Viele Grüße
Thomas

Ich hole den Thread nochmal nach oben … hier wird’s mal ganz anschaulich gezeigt:

Seit gestern läuft bei uns nun auch endlich moodle 4.3.2 – endlich geschafft!

1 „Gefällt mir“

Danke.

kleiner SEitenhieb: geht auch ohne Google/YT:

Und eine Frage dann doch noch für einen, der das noch nie gesehen hat:

  • ist die Matrix dann eingebettet in Moodle? Das konnte man nicht sehen.
  • Oder wird ein externes Werkzeug aufgerufen (element-desktop auf PC, element.io auf Android/iOS) ?
  • ist der LInk ein matrix.to/… link? D.h. wird das nur mit federation funktionieren?

VG, Tobias

Hallo.
Ich schiebe das hier auch nochmal nach oben … wäre doch schade, wenn das Thema nicht weiterverfolgt wird :slight_smile:

@tobias: Hast Du Dein Erst-Setup einfach so gemacht, wie das hier steht:
https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/master/docs/installing.md#installing-a-brand-new-server-without-importing-data

– oder muss man vorher alles mögliche konfigurieren? In die Doku kann man sich ja beliebig vertiefen…

Ich überlege außerdem gerade, ob ich unseren BBB-Server, der im Moment ein ziemlich einsames Dasein fristet, dazu überreden kann/sollte, auch als Matrix-Server zu dienen. Kann das jemand abschätzen? Sinnvoll/machbar oder lieber die Finger davon lassen (evtl Probleme wegen doppelt belegter Ports??)

Viele Grüße,
Michael

Hi Michael,

sorry, für die Verzögerung:
Ja, so habe ich es gemacht: auf dem MAtrix-Server (der VM) läuft dann nix anderes.
Man muss „nur“ vorher die DNS-Einträge klar gemacht haben, zumindest für die Dienste, die man in Anspruch nehmen will. Last but noch least greift nur die „well-known“ WebURL noch in den sonstigen Ablauf ein.

  1. Nimm an, dir gehört „super.schule“, dann hast du sicher bisher: cloud.super.schule, bbb.super.schule usw. oder verwendest unterverzeichnisse: super.schule/cloud, super.schule/bbb usw.
  2. Ebenso zeigt „https://super.schule“ auch sicher auf irgendetwas und wenn es nur eine Weiterleitung nach „https://www.super.schule“ ist.
  3. Wenn das so ist, dann kann/sollte/muss man dort, so „super.schule“ einen Webservice bedient auch die Well-known-Einträge für matrix hinterlegen.

Das ist das einzige, was mir einfällt. Andere hier im Forum haben scheinbar nicht spantaleev verwendet, sondern matrix in Eigenregie (nach welcher Anleitung auch immer) installiert.

Am Ende muss Matrix nicht auf der VM alleinig laufen, es könnte also BBB noch nebenher laufen. Ich weiß aber nicht, wie gut das geht, denn

  • man konfiguriert den Matrix-Server über ansible, idealerweise von einem Admin-Rechner aus, der nicht der Matrix-Server ist
  • deine BBB-Konfig kommt ja „händisch“ dazu.
  • Je nachdem, wer dein SSL-Endpunkt darstellt muss du BBB irgendwie zur Matrix konfigurieren (MAtrix-Server der SSL-Endpunkt) oder sie werden unabhängig voneinander konfiguriert (externer Reverse-Proxy)

Hier, wie ich es probiert habe: Beides hat funktioniert:

  • der Matrix-Server hat eine eigene IP und SSL macht er sich selbst (konfiguriert in der ansible-konfigurationsdatei vars.yml)
  • der Matrix-Server hat eine IP wie viele andere services auch, ein nginx übernimmt den Reverse proxy und die SSL-Geschichte für jeden service (getrennt nach subdomains: [matrix|element|…].super.schule / cloud.super.schule / bbb.super.schule)

Guten Morgen liebe Freunde,

ich habe in der Kombination „Moodle“ & „Matrix-Synapse“ & „Element“ ein seltsames Phänomen! In Moodle habe ich brav die URLs von meinem Homeserver und meiner Element-Instanz eingetragen.

Leider kann ich die von Moodle angelegten Räume nicht bei meinem „Element“ sehen, sondern nur auf der öffentlichen Seite „https://app.element.io/“. Offensichtlich habe ich das Zusammenspiel der Systeme noch nicht völlig begriffen. Habt ihr einen Ansatzpunkt, damit ich die Ursache finde?

Hallo Heiko,

könntest du noch spezifischer sein?
wenn du app.element.io aufrufst ist das zunächst nur ein Webclient (element-web) im Gegenzug zu deinem „Element“, was vermutlich die Desktop-App ist.

Was gibst du in app.element.io an? Deinen Homeserver ? oder matrix.org? (was seltsam wäre).

VG, Tobias

Ich muss mich berichtigen und mein Problem präzisieren!

Also bei Moodle und Matrix nutze ich „samaccountname“ des LDAP Dienstes von LM71 zur Authentifizerung. Der Login bei Moodle und Element/Matrix funktioniert damit schonmal gut.

Hier die homeserver.yaml meines matrix-synapse


pid_file: "/var/run/matrix-synapse.pid"


listeners:
  - port: 8008
    tls: false
    type: http
    x_forwarded: true
    bind_addresses: ['::1', '127.0.0.1']
    resources:
      - names: [client, federation]
        compress: false

#database:
#  name: sqlite3
#  args:
#    database: /var/lib/matrix-synapse/homeserver.db

log_config: "/etc/matrix-synapse/log.yaml"
media_store_path: "/var/lib/matrix-synapse/media"
signing_key_path: "/etc/matrix-synapse/homeserver.signing.key"
trusted_key_servers:
  - server_name: "matrix.org"


enable_room_list_search: true

federation_enabled: false

turn_uris: ["turn:turn.meineschule.de:5349?transport=udp", "turn:turn.meineschule.de:5349?transport=tcp"]
turn_shared_secret: "abc123"

web_client_location: "https://element.meineschule.de"
#public_baseurl: "https://matrix.meineschule.de"

user_directory:
    enabled: false
    search_all_users: true
    prefer_local_users: true
    show_locked_users: true


database:
  name: psycopg2
  args:
    user: synapse
    password: 'abc123'
    database: synapsedb
    host: localhost
    cp_min: 5
    cp_max: 10
modules:
 - module: "ldap_auth_provider.LdapAuthProviderModule"
   config:
     enabled: true
     uri: "ldaps://ldap.meineschule.de:636"
     start_tls: true
     base: "OU=default-school,OU=SCHOOLS,DC=schule,DC=meineschule,DC=de"
     attributes:
        uid: "sAMAccountname"
       # mail: "sophomorixCustom1"
        name: "sAMAccountname"
        mail: "mail"
        #name: "givenName"

     bind_dn: "CN=chat-binduser,OU=Management,OU=default-school,OU=SCHOOLS,DC=schule,DC=meineschule,DC=de"
     bind_password: abc123
     #filter: "(&(objectClass=person)(|(sophomorixRole=teacher)(sophomorixRole=student)))"
     # Additional options for TLS, can be any key from https://ldap3.readthedocs
     .io/en/latest/ssltls.html#the-tls-object
     tls_options:
       validate: false
     #  local_certificate_file: foo.crt
     #  local_private_key_file: bar.pem
     #  local_private_key_password: secret

presence:
  enabled: true

registration_shared_secret: "abcd123"

# This file is autogenerated, and will be recreated on upgrade if it is deleted.
# Any changes you make will be preserved.

# Whether to report homeserver usage statistics.
report_stats: false
# This file is autogenerated, and will be recreated on upgrade if it is deleted.
# Any changes you make will be preserved.

# The domain name of the server, with optional explicit port.
# This is used by remote servers to connect to this server,
# e.g. matrix.org, localhost:8080, etc.
# This is also the last part of your UserID.
#
server_name: matrix.meineschule.de

Gemäß der Anleitung habe ich mit dem Befehl

 curl -XPOST -d '{"type":"m.login.password", "user":"@adminuser:matrix.meineschule.de", "password":"123abc"}' "https://127.0.0.1:8008/_matrix/client/r0/login"

ein Zugriffstoken für Moodle erzeugt. Das habe ich in den Plugin-Einstellungen zusammen mit meinen beiden Diensten: element.meineschule.de und matrix.meineschule.de eingetragen.

Wenn Moodle über einen Kurs einen Matrix-Raum erzeugt, dann sieht den nur der lokale Adminuser von matrix-synaose über den ich das Token erzeugt habe. Ich ging davon aus, dass die LDAP-Accounts, die Teilnehmer des Moodle-Kurses sind, automatisch in den korrespondierenden Matrix-Raum eingeschrieben werden oder mindestens eine Einladung zum Raum erhalten. Das ist leider nicht der Fall.

Ich komme hier nicht weiter.

exisitieren denn die einzuladenden Nutzer in Matrix? Ich glaube moodle übernimmt nur die Einladungen - nicht die Accounterstellung in Matrix oder liege ich da falsch?
Erstell mal einen Nutzer in Matrix der auch im moodlekurs ist und beobachte, ob der dann automatisch dem Raum hinzugefügt wird. viele grüße

Also die Nutzer existieren im LDAP Verzeichnis von LM71. Jeder unserer 800 Nutzer kann sich in Matrix und Moodle mit den gleichen Zugangsdaten anmelden.

User, die sich definitiv schonmal via LDAP bei Matrix angemeldet haben, werden auch nicht in den Raum eingetragen. Ich habe mich vergewissert, dass für diese User ein Eintrag in der Users Tabelle von Matrix existiert

Hallo zusammen,

ich bin nicht sicher, ob hier das Problem liegt, aber: der Token, den man bei Moodle hinterlegen muss, muss der eines Nutzers mit Admin-Rechten sein.
Bei mir ist das der Token, den ich nach der Anmeldung als Admin im Element-Webclient nachschauen kann (und NICHT irgendein genereller Zugangstoken von Matrix).

Bei uns werden Räume samt aller Nutzer angelegt - und existiert ein Nutzer auf dem Matrix-Client noch nicht, wird er angelegt. LDAP (bzw. inzwischen Keycloak) nutzen wir nur zur Authentifizierung der Nutzer.

Viele Grüße
Thomas

PS: Wir haben ja auch Eltern-Accounts, die sich derzeit noch in Moodle authentifizieren. Auch diese Eltern werden von Moodle auf dem Matrix-Server angelegt. Hier wird offenbar ein Zufallspasswort erstellt, das natürlich den Nutzern nicht bekannt ist. Die Eltern können aber die Passwort-Vergessen-Funktion von Matrix/Element nutzen, so dass sie ihr (neues) Passwort setzen können.
Perspektivisch ziehen wir das aber zu Keycloak um (evtl. so ein Einladungs-Dokument mit QR-Code).

Es werden bei mir keine neuen User in der users tabelle von matrix angelegt. Hier sieht man nur die beiden Adminuser und die zwei ldap-user

                      name                      |                        password_hash                         | creation_ts | admin | upgrade_ts | is_guest | appservice_id | consent_version | consent_server_notice_sent | user_type | deactivated | shadow_banned | consent_ts | approved | locked | suspended
------------------------------------------------+--------------------------------------------------------------+-------------+-------+------------+----------+---------------+-----------------+----------------------------+-----------+-------------+---------------+------------+----------+--------+-----------
 @adminuser:matrix.meineschule.de   | abababababababababababababababababababababababababababababab |  1720027305 |     1 |            |        0 |               |                 |                            |           |           0 | f             |            | t        | f      | f
 @user1:matrix.meineschule.de      |                                                              |  1720038960 |     0 |            |        0 |               |                 |                            |           |           0 | f             |            | t        | f      | f
 @user2:matrix.meineschule.de      |                                                              |  1720039424 |     0 |            |        0 |               |                 |                            |           |           0 | f             |            | t        | f      | f
 @moodleadmin:matrix.meineschule.de | avavavavavavavavavavavavavavavavavavavavavavavavavavavavavav |  1720633691 |     1 |            |        0 |               |                 |                            |           |           0 | f             |            | t        | f      | f
(4 rows)

Was hast Du denn für einen Token eingetragen bei Moodle? Hat dieser die Rechte für die Nutzererstellung?

Ist das Erstellen neuer Nutzer überhaupt zugelassen? Klappt das über die CLI direkt auf dem Matrix-Server?

Wenn man sich als der Admin anmeldet, dessen Token man verwendet, kann man die ganzen Aktionen direkt in Element mitverfolgen („Admin legt Raum XYZ an“, „Admin fügt NUtzer ABC zum Raum hinzu“, usw.).