Moodle: Collabora-Anbindung -- Plugin-Ankündigung

Hallo.
Im Nachbarforum kam gerade ein Beitrag, der auch hier für einige interessant sein dürfte. Ich zitiere:

von Michael Wuttke - Mo, 13. April 2020, 11:08
Hallo,
ich wollte nur kurz mitteilen, das David Mudrak hat das assignsubmission_collabora in der Moodle-Plugin-Datenbank freigegeben. Es ist zu finden unter:
Moodle plugins directory: Collaborative submissions | Moodle.org
Es gibt noch ein paar Auflagen und Hinweise von ihm:
Loading...
denen wir aber auch noch nachgehen werden, oder hat jemand Zeit kann evtl. helfen?
Danke & Gruß,
Michael

Schöne Grüße,
Michael

Ich finde das sehr interessant! Ich versuche gerade die Umgebung (Moodle und Collabora in Docker) in einer VM einzurichten. Leider habe ich noch arge Probleme.

Hat jemand Collabora schon über Moodle in Betrieb?

Hi, ich war auch dabei, es zu machen, scheinbar ist das plugin auch schon in Belwue in den erwachsenen Instanzen und soll nächste Woche auch in die Lite-Instanzen wandern. Dann kann ich mehr berichten, wie und wie gut das geht, siehe (wer zugang dort hat):
https://lehrerfortbildung-bw.de/moodle2/mod/forum/discuss.php?d=576

Einer für alle?

dort wird auch gefragt, ob man das nicht skalieren kann wie bei BBB. Ich habe auf die Schnelle die drei Links gefunden, bei denen es um „Libreoffice Online“ geht, was aber auf der Komplexitätsebene dasselbe ist:

2018: https://conference.libreoffice.org/assets/Conference/Tirana/LargeScaleLOLMMurakami.pdf
2019: Experiment for large-scale operation of LibreOffice Online, 2019 Edition | PPT
und: Understanding LibreOffice Online - The Document Foundation Wiki

The task [hosted service] is therefore left to large deployers, ISPs and providers of open source cloud solutions, and several options are already available on the market.

und noch interessant für zukünftige Überlegungen: Microsoft | TechRepublic

VG, Tobias

Hi Tobias,
bei unserer Jitsi-Konferenz vorhin haben wir doch den Hinweis gesehen, dass man (eventuell) ab NC 19 gar kein eigenes Collabora mehr braucht?
OK, für Moodle noch…
LG
Max

Hi Max,

ja, das könnte ja so stimmen. Schauen wir mal, wenn NC 19 draußen ist.
WEnn man dann die Zugangsdaten dieses Collaboras rausbekommt, kann man das evtl. auch für moodle verwenden - aber alle spezialitäten wie SSL-ZErtifikat, Port, und die zu konfigurierende Erlaubnis, dass der moodle-host auch zugreifen darf — ich bezweifle, dass das einfach sein wird, das zu konfigurieren - wenn die Pluginerbauer nicht daran gedacht haben.
Vg, Tobias

Hallo Tobias,

hm… schon klar das Open Source nicht gleichbedeutend mit kostenlos ist, aber wenn LO anfängt Geld zu kosten (fällt Schule unter „Enteprise“ :thinking: ), dann gibt’s einfach noch wenig er Argumente was anderes als M$ zu nutzen. Datenschutz, Vorteile von offenem Quelltext etc. interessiert wie wir wissen am Ende keinen (KuK, Entscheidungsträger, …) wirklich bzw. es kapiert keiner.

OT: Bin auch gespannt, was aus dem Plan am Ende entsteht, dass unser Schulträger alle städtischen Schulen mit einem gemeinsamen System ausstatten will. Ob da (auch wenn mein SL mich wenn es konkret wird im Boot haben will) LMN eine Chance bekommt, so was wie NC, Moodle, BBB Berücksichtigung findet… ich habe so meine Zweifel.
Wenn mehrere Schulen mit unterschiedlichen bisherigen Erfahrungen, Gewohnheiten und bislang zumeist mit den „marktüblichen“ Standardanwendungen und Konzepten zusammen mit dem Schulträger um das neue Konzept ringen, kommt wahrscheinlich am ehesten das dabei raus, was die größte Schnittmenge hat (oder den Schulträger am Ende über Marketinggewäsch überzeugt).

Hallo Tobias,

stimmt, allerdings muss man da eine Collabora-URL angeben. Also wenn man nicht irgendwo ein eigenes Collabora hat, scheint das nicht nutzbar zu sein. Oder gibt’s offizielle Collabora-Instanzen wie bei BBB, die man eintragen kann :thinking:

Viele Grüße
Steffen

Hi Steffen,

nein, dieselbe Frage kam im Moodle-Forum auf. Jemand nannte das, er warte auf ein zweites BBB-Wunder.
Ich glaube nicht daran, es gibt meiner kurzen Recherche nach momentan keinen fertig konfigurierten Proxy, der ein loadbalancing von Libreoffice Online beherrscht, so dass „irgendjemand“ „mal schnell“ eine offizielle Lösung zaubern könnte.
Die Bandbreitenanforderungen könnten höher sein als beim BBB-Zauber, vor allem der lokale Speicher wird begrenzend sein. Das erstere torpediert eine zentrale Lösung wie bei BBB und das letztere killt die Idee, dass sich jeder „mal schnell“ einen Boliden dezentral in die Schule stellt, der den Office-Server darstellt.
Ich habe sicher übertrieben in beide Richtungen, am Ende würde das schon irgendwie klappen. MS kriegt es (die meiste Zeit) ja auch hin, also kanns keine Rocketscience sein.
VG, Tobias

Hallo,
ich habe da mal unseren Collabora-Docker, den ich auch in der Nextcloud verwende reingeschrieben, ich hatte dann zu erst die Meldung: „Ungültiger WOPI-Host“. Das lies sich durch Eintrag der moodle-domain unter
domain=cloud\\.meine-domain\\.de|moodle\\.meine-domain\\.de
lösen. Die Punkte müssen immer noch doppelt escaped werden und als Trenner muss man das pipe-Symbol | verwenden.
Leider bekomme ich jetzt eine neue Fehlermeldung, bei der ich nicht weiß, wie ich sie lösen soll:

Lesen des Dokuments vom Speicher fehlgeschlagen. Bitte kontaktieren Sie den Administrator Ihres Speicherservers (moodle.***.schule-bw.de).

Hat da einer eine Idee?

HI,

hab das auch jetzt einrichten können.
Auch bei mir logisch: ich muss den Moodle-Server zulassen beim collabora-server.
Und dann tuts.

Ich habe als URL „https://office.meine-domaene.de:443“ angegeben, also inkl. port, weil ich das über 443 laufen lasse…
Vllt. hast du kein gültiges SSL-Zertifikat für deinen office-host?

Vg, Tobias

1 „Gefällt mir“

Hallo Tobias,
muss ich das angeben? Ich war davon ausgegangen, dass das selbstverständlich ist, das das über 443 läuft. Ich habe ein Let’sEncrypt-Zertifikat. Aber das Problem scheint ja zu sein, dass collabora die Dateien nicht auf dem moodle-Server speichern kann. Ich habe aber leider keine Einstellungen gefunden, wo die Abgaben landen sollen.
Vielleicht liegt es daran, dass unser moodle unter moodle.***.schule-bw.de/moodle zu erreichen ist.
Das kann ich aber nicht unter domain in der docker-compose.yml angeben.

Ich habe es jetzt auch nochmal mit Port probiert, das ist es nicht. Es erscheint auch die office-oberfläche, aber alles ist ausgegraut und als overlay she ich diese Fehlermeldung.

Gruß
Angelika

Hallo Angelika,

da du docker-compose verwendest:

  • starte mal docker ohne das -d, also docker-compose up nach docker-compose down
  • dann kommt ja der ganze output von collabora (und potentiell anderen docker-containern…)
  • dann schau mal, was als Fehlermeldung kommt, wenn du in moodle ein dokument öffnen willst.
  • dann noch: bei mir sind die nicht mit \ escaped, hier meine docker-compose.yml:
  office:
    container_name: office
#    image: collabora/code:4.0.9.4 ## Problem: Tabellenblätter verschwinden unten, keine Sidebar
    image: collabora/code:4.2.3.1 ## Problem: Innenabstand wird fehlinterpretiert
    user: root
    command: bash /root-start-libreoffice.sh
    restart: always
    ports:
      - 9980:9980
    cap_add:
      - MKNOD
    volumes:
      - /srv/docker/nginx/office/root-start-libreoffice.sh:/root-start-libreoffice.sh
      #- /srv/docker/nginx/office/start-libreoffice.sh:/start-libreoffice.sh
      #- /srv/docker/nginx/office/loolwsd:/etc/loolwsd
    environment:
      - "domain=cloud.meine-schule.de|moodle.meine-schule.de"
      - "dictionaries=de_DE en_GB es_ES fr_FR"
      - "username=xxxx"
      - "password=yyyyy"
      - "VIRTUAL_HOST=office.meine-schule.de"
      - "VIRTUAL_PORT=9980"
      - "VIRTUAL_PROTO=https"
      - "LETSENCRYPT_HOST=office.meine-schule.de"
      - "LETSENCRYPT_EMAIL=t.kuechel@humboldt-ka.de"
#      - "LETSENCRYPT_TEST=true"
    dns: 10.16.1.1

Also, ich habe die mir wichtigen, aber vermutlich bei dir unwichtigen Dinge drin gelassen, wie DNS, virtual_host, Letsencrypt, dass ich user:root mache, und dass ich mit einem eigenen befehl starte. Ich habe mich auf ein Image festgelegt, damit keine updates kommen, während meine Kollegen wichtige dinge eintragen müssen.

VG, Tobias

Hallo Tobias,
vielen Dank, dass man die environment-Variablen auch in Anführungszeichen setzen und dann die escape-Zeichen weglassen kann wusste ich nicht, hat aber nichts geändert.
Die anderen Sachen sind bei mit identisch, nur ohne dictionaries und credentials, ich kann mir aber nicht vorstellen, dass da der Fehler liegt, werde das aber auch nochmal testen, jetzt wurde das office aber gerade in nextcloud gebraucht. Ich habe aber einen Test mit moodle machen können und mir die logs angesehen:

wsd-00006-00033 2020-07-26 14:27:55.556590 [ prisoner_poll ] WRN  Prisoner connection disconnected but without valid socket.| wsd/LOOLWSD.cpp:1970
wsd-00006-00095 2020-07-26 14:35:23.622251 [ docbroker_008 ] ERR  WOPI::CheckFileInfo failed with 404 Not Found| wsd/Storage.cpp:588
wsd-00006-00095 2020-07-26 14:35:23.622969 [ docbroker_008 ] ERR  loading document exception: WOPI::CheckFileInfo failed| wsd/DocumentBroker.cpp:1361
wsd-00006-00095 2020-07-26 14:35:23.623044 [ docbroker_008 ] ERR  Failed to add session to [/moodle/mod/collabora/callback.php/wopi/files/46671_269] with URI [https://moodle.****.schule-bw.de/moodle/mod/collabora/callback.php/wopi/files/46671_269?access_token=***********&access_token_ttl=0]: WOPI::CheckFileInfo failed| wsd/DocumentBroker.cpp:1323
wsd-00006-00095 2020-07-26 14:35:23.623208 [ docbroker_008 ] ERR  No DocBroker found, or DocBroker marked to be destroyed. Terminating session ToClient-174| wsd/ClientSession.cpp:330
wsd-00006-00095 2020-07-26 14:35:23.623255 [ docbroker_008 ] ERR  No DocBroker found, or DocBroker marked to be destroyed. Terminating session ToClient-174| wsd/ClientSession.cpp:330
wsd-00006-00095 2020-07-26 14:35:24.752791 [ docbroker_008 ] ERR  Invalid or unknown session [174] to remove.| wsd/DocumentBroker.cpp:1399
wsd-00006-00033 2020-07-26 14:35:25.623879 [ prisoner_poll ] WRN  Prisoner connection disconnected but without valid socket.| wsd/LOOLWSD.cpp:1970

Leider kann ich damit nichts anfangen.

Liebe Grüße,
Angelika

Hallo Angelika,

sehe ich richtig, dass der docker für collabora in eurer Schule steht, die Nextcloud auch in eurer Schule steht aber moodle „draußen“ bei Belwue?

Dann kann ich mir noch vorstellen, dass die Firewall oder eher ein reverse proxy von außen keine Websockets zulässt, während die Verbindung von nextcloud zu office irgendwie direkter stattfindet.
Das ist eigentlich keine Firewall / port-frage, sondern eine Frage eines proxies, der die anfragen von außen an euren office-container weiterreicht. Weißt du, was alles hier netzwerktechnisch „im Weg liegt“?
VG, Tobias

Hallo Tobias,
vielen Dank für‘s nachsehen ich war dann erst mal in den Ferien und hab das Problem durch deaktivieren der Funktion in Moodle „gelöst“ und dann vergessen. Bei uns an der Schule gab es gegen Ende des letzten SJ noch ein paar „lustige“ IT-Entscheidungen, die verschiedene Leute viel Zeit gekostet haben(sorry ot).
Netzwerktechnisch dazwischen ist der nginx-reverse-proxy auf docker und der belwue-router. Dann muss ich wohl da ansetzen.
Gruß
Angelika

Hallo miteinander,

an unserer Schule setze ich seit mehrern Jahren die Nextcloud erfolgreich im Kollegium ein. Diese ist auf Belwü-Servern gehostet. Nun besteht immer wieder der Wunsch gemeinsam an Dokumenten zu editieren. Deswegen habe ich bei Hetzner ein CX11-Cloud Server mit Ubuntu gemietet. Damit konnte ich ohne Probleme OnlyOffice als Docker laufen lassen. Bei der Installation habe ich mich an den Video von ApfelCast auf YouTube orientiert und auch einen ProxyServer installiert und letsencrypt verwendet. Das funktioniert problemlos.
Nun unterstützt die Community Edition von OnlyOffice nur 20 parallele Zugriffe. Für die Kollegiumsnextcloud okay, doch nicht, wenn ich OnlyOffice in Moodle einsetzen möchte.
Von daher würde ich gerne in Moodle auf Collabora setzen. Vielleicht kann mir jemand bei folgenden Fragen weiterhelfen:

  1. Die kostenlose Collabora Version unterstützt auch 20 parallele Verbindung und zeigt eine Meldung, sobald diese überschritten werden. Kann mann dann Collabora für ein Moodle einer Schule mit ca. 800 Schülern überhaupt einsetzen? Oder mit welchen Kosten muss man bei einer kostenpflichtigen Version mit mehr parallelen Zugriffen rechnen?
  2. Ich habe versucht Collabora auf dem gleichen Hetzner Cloud Server als Docker laufen zu lassen. So ganz hat es nicht funktioniert. Von daher folgende Frage:
    Für den Reverse Proxy habe ich eine zweite Datei /etc/apache2/sites-enabled/server2.conf angelegt. So wie in der server1.conf Datei für OnlyOffice habe ich für ProxyPass und ProxyPassReverse http://127.0.0.1:80/ eingetragen.
    Nach dem certbot --apache Befehl habe ich die server2-le-ssl.conf wie im Video modifiziert und
    ProxyPassMatch (.*)(/websocket)$ "ws://127.0.0.1:9980/$1$2"
    ProxyPass / „http://127.0.0.1:9980/

ProxyPassReverse / „http://127.0.0.1:9980/"
eingetragen.
Kann ich problemlos den OnlyOffice Docker und den Collabora Docker parallel auf einem Server laufen lassen?
Was muss man dabei beachten? Gibt es evtl. eine Anleitung/Tipps dazu?
Eine Möglichkeit des gemeinsamen Bearbeiten einer Datei in Moodle wäre extrem hilfreich.

Viele Grüße
Felix

Hallo Felix,

  1. Die kostenlose Collabora Version unterstützt auch 20 parallele
    Verbindung und zeigt eine Meldung, sobald diese überschritten
    werden. Kann mann dann Collabora für ein Moodle einer Schule mit ca.
    800 Schülern überhaupt einsetzen? Oder mit welchen Kosten muss man
    bei einer kostenpflichtigen Version mit mehr parallelen Zugriffen
    rechnen?

… möglicherweise findest du ja hier im Forum einen Hinweis, wie man
diese Begrenzung außer Kraft setzt …

  1. Ich habe versucht Collabora auf dem gleichen Hetzner Cloud Server
    als Docker laufen zu lassen. So ganz hat es nicht funktioniert. Von
    daher folgende Frage:
    Für den Reverse Proxy habe ich eine zweite Datei
    /etc/apache2/sites-enabled/server2.conf angelegt. So wie in der
    server1.conf Datei für OnlyOffice habe ich für ProxyPass und
    ProxyPassReverse |http://127.0.0.1:80/| eingetragen.
    Nach dem certbot --apache Befehl habe ich die server2-le-ssl.conf
    wie im Video modifiziert und
    ProxyPassMatch (.*)(/websocket)$ „|ws://127.0.0.1:9980/$1$2“|
    ProxyPass / „http://127.0.0.1:9980/“

ProxyPassReverse / „http://127.0.0.1:9980/"
eingetragen.
Kann ich problemlos den OnlyOffice Docker und den Collabora Docker
parallel auf einem Server laufen lassen?

klar: wenn du fließend „reverse Proxy“ sprichst …
Ich nicht: deswegen kann ich dir da leider wohl eher wenig helfen.
Erstmal brauchst du mehrere Domains, die auf deinen Hetznerserver
zeigen: oder halt eine wildcard Domain, damit
onlyoffice.deine.domain.de
und
colabora.deine.domain.de
auf deinen hetzner zeigen.
Wenn du das hast, dann mußt du im nginx eine zweite site anlegen für
colabora und die muss in das richtige Dock zeigen… und dann natürlich
nicht das letzencrypt vergessen.

Viele Grüße

Holger

Hallo Holger,
vielen Dank für die schnelle Antwort. Ich habe bereits zwei Subdomains. Eine für OnlyOffice und eine für Collabora. Das steht dann auch oben in der server1.conf und server2.conf Datei.
Beim Aufruf der Collabora-URL wird auch der Collabora Docker angesprochen. Leider zeigen die Docker Logs dann immer folgende Fehlermeldung:

wsd-00006-00042 2020-11-21 16:45:19.784872 [ websrv_poll ] ERR Socket #25 SSL BIO error: error:1408F09C:SSL routines:ssl3_get_record:http request (0: Success)| ./net/SslSocket.hpp:289
wsd-00006-00042 2020-11-21 16:45:19.784963 [ websrv_poll ] ERR Error while handling poll for socket #25 in websrv_poll: error:1408F09C:SSL routines:ssl3_get_record:http request| net/Socket.cpp:312

Ich vermute, dass etwas in meiner Reverse Proxy Konfiguration noch nicht stimmt.
Meine /etc/apache2/sites-enabled/server2-le-ssl.conf sieht wie folgt aus:

//===============================================================

<VirtualHost *:443>
ServerName collabora.moerike-gymnasium.de

SSLProxyEngine on
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:D$
SSLProtocol All -SSLv2 -SSLv3
SSLCompression off
SSLHonorCipherOrder on

SetEnvIf Host „^(.*)$“ THE_HOST=$1
RequestHeader setifempty X-Forwarded-Proto https
RequestHeader setifempty X-Forwarded-Host %{THE_HOST}e
ProxyAddHeaders Off

ProxyPassMatch (.*)(/websocket)$ „ws://127.0.0.1:9980/$1$2“
ProxyPass / „http://127.0.0.1:9980/
ProxyPassReverse / „http://127.0.0.1:9980/"

SSLCertificateFile /etc/letsencrypt/live/collabora.moerike-gymnasium.de/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/collabora.moerike-gymnasium.de/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf

//===============================================================

Soweit ich den reverse Proxy verstehe, hört bei mir die verschlüsselte Verbindung beim Reverse Proxy auf. Anschließend geht es auf dem Localhost unverschlüsselt zum Docker über Port 9980. Kann es sein, dass der Collabora Docker nur Verbindungen über SSL akzeptiert?
Oder ist es sinnvoll den Collabora Docker mit der Option -e “extra_params=–o:ssl.enable=false” zu starten?

Vielleicht hat jemand das Problem ja bereits gelöst.

Viele Grüße
Felix

Hallo Felix,

Soweit ich den reverse Proxy verstehe, hört bei mir die verschlüsselte
Verbindung beim Reverse Proxy auf.

ja.

Anschließend geht es auf dem
Localhost unverschlüsselt zum Docker über Port 9980. Kann es sein, dass
der Collabora Docker nur Verbindungen über SSL akzeptiert?

… nicht wenn er für den Betrieb hinter einem Reverse Proxy vorgesehen
ist würde ich schätzen.

Oder ist es sinnvoll den Collabora Docker mit der Option -e
“extra_params=–o:ssl.enable=false” zu starten?

versuch macht kluch …

LG

Holger