Moodle auf einem Docker-Host

Hallo zusammen,

letzte Woche bekam ich von einer Mitarbeiterrin von BelWue eine E-Mail, in der sie fragte, ob sie wirklich die E-Mails unserer Schule und den Moodle-Auftritt löschen sollte.
Zum Glück hat sie nachgefragt, denn von meiner Schule hat niemand die Löschung beauftragt. Von wem der Auftrag kam habe ich noch nicht herausbekommen…

Naja, jetzt experimentiere ich mit einem eigenen Moodle in einem Docker-Container:

  1. Auf einer Linuxmaschine mit aktuellem docker (siehe hier) das Verzeichnis /srv/docker/moodle anlegen.
  2. In /srv/docker/moodle die Datei docker-compose.yml mit dem Inhalt von hier anlegen.
  3. Im Verzeichnis /srv/docker/moodle den Befehl docker compose up -d absetzen.

Das war’s jetzt ist unter http://dockerhost/ der neue Moodle-Auftritt erreichbar. Und zwar im Augenblick in der Version 4.2 mit PHP 8.1.
Wenn ich versuche eine Externe Authentifizierung über LDAP, wie hier bschrieben, zu machen, erhalte ich das:
grafik
Im Internet scheint das ein Problem von PHP8.1 zu sein. hat da schon jemand eine Lösung?
Vielen Dank schon mal für’s Mitdenken.
Gruß,
Mathias

ich würde das nicht im Docker-Container machen. Ohne ist eine Instandhaltung deutlich einfacher, ich habe ein Script, das mir bei Aufruf alles neu von Github holt und die Update-Scripte durchführt. Bei Bedarf poste ich das hier gerne. Man kann damit dann von Hand auf den nächsten Branch (für ein Upgrade zwischen den Versionen) machen und dann über git pull weiter aktuell halten. Ich mache das mittlerweile seit mehr als sechs oder acht Jahren und es gab nur einmal ein Problem und das lag nicht an Moodle sondern an einem veralteten Plugin (seitdem nutze ich nur noch die mitgelieferten).

Hallo HMT,
das ist natrürlich auch eine interessante Variante. Welche PHP-Version läuft bei dir? Die 8.1?
Gruß,
Mathias

Hallo Mathias,
Moodle über Docker habe ich noch nicht gemacht.
Bei der Umstellung auf Ubuntu 20.04 LTS und PHP 8 erhielt ich Fehler 500 im Browser, ein aktivieren von „disk_free_space“ half erst einmal. Aber der Fehler kam immer wieder, eine Lösung (auch noch nicht gekümmert) habe ich bisher nicht.
Hast Du den moodle_data-Pfad per open_base_dir freigegeben?
Ein Auszug von info.php Abschnitt „disable_functions“ wäre auch interessant.
VG Andreas

ich habe 8.1.18, ldap geht bei mir

Hallo Andreas,
meinst du das?


Gruß,
Mathias

Ok, dann scheint es wohl auch mit PHP8.1 zu gehen…

ja, seit der aktuellen Version. Vorher nur auf dem Master, der ebenso stabil läuft. Das Moodle Team leistet unglabliches, was die Stabilität angeht.

so, hab ich das übrigens mit git gemacht: How To Install Moodle via git with Postgres, Nginx and PHP on an Ubuntu 16.04 VPS · GitHub

Die Anleitung ist veraltet, aber mit den neuen Ubuntu-Versionen funktioniert es identisch. Ich habe seitdem lediglich die Postgres und PHP-Versionen aktualisiert. Wenn irgendetwas nicht funktionieren sollte, kann ich das nachbessern.

Genau das meinte ich, daran kann es schon mal nicht liegen, da keine php-Funktionen deaktiviert sind.

Das würde mich noch interessieren bei/von dir.
bzw. „open_basedir“, steht dein Moodle-Data-Ordner da drin?
VG Andreas

Hallo Andreas,

Der Ordner moodle_data ist im Docker-Container unter /bitnami/moodle zu finden und auf dem Dockerhost als volume in /srv/docker/moodle/moodle_data.

root@dockerhost:/srv/docker/moodle# ll
total 20
drwxr-xr-x 4 root root 4096 Jun 4 10:39 ./
drwxr-xr-x 3 root root 4096 Jun 1 18:45 …/
-rw-r–r-- 1 root root 1058 Jun 4 10:39 docker-compose.yml
drwxrwxr-x 60 daemon root 4096 Jun 1 18:49 moodle_data/
drwxrwxr-x 12 daemon root 4096 Jun 4 09:32 moodledata_data/

Meintest du das?
Gruß,
Mathias

Hallo Mathias,
nein.
Moodle: /Administration/Server/PHP Info/ und da nach „open_basedir“
Vielleicht schreibe ich auch nur wirres Zeug, da ich keine Ahnung von Docker habe :wink:
VG Andreas

Hallo Andreas,

Da steh’ ich ein bisschen auf dem Schlauch?!? Mit
http://dockerhost/moodle/Administration/Server/PHP Info/
oder
http://dockerhost/Administration/Server/PHP Info/
bekomme ich
grafik
Gruß,
Mathias

Du hattest mir doch schon einen Auszug aus deiner php-Konfiguration gezeigt, da müsstest Du den Eintrag finden:
https://ask.linuxmuster.net/uploads/default/original/2X/8/8e134974c853bc677e41fa78aff7a9d9d796029b.png
Versuche mal bitte folgende URL:
http://dockerhost/moodle/admin/phpinfo.php
VG Andreas
PS: Wie gesagt, eventuell schreibe ich nur Mist, da ich von Docker Null-Plan habe.

Hallo Andreas,
Jetzt verstehe ich’s:


Gruß,
Mathias

Hallo Mathias,
:smiley:
OK …, bei einer normalen Moodle-Installation muss das Moodle-Data-Verzeichnis ausserhalb vom Webserver-Verzeichnis liegen und damit Moodle Zugriff erhält per php-Direktive [openbase_dir] „freigeschaltet“ werden.
Aber wie gesagt, Docker ist speziell, vielleicht kann jemand aus der Liste mit Ahnung zu Docker/Moodle sich diesbezüglich mal dazu äussern.
Weshalb setzt Du Moodle nicht direkt auf, ohne Docker? Siehe

Da könnte ich Dir definitiv besser helfen :wink:
Dein Problem scheint auch eher ein LDAP-Problem zu sein, wo ich noch weniger Ahnung als von Docker habe :wink:
VG Andreas
PS: Ich würde auch mal das „memory_limit“ auf 512MB setzen, schaden tut es sicherlich nicht.

Wenn Du eine Sub-Domain anlegen kannst, ist eine Installation von Moodle ohne Docker eine recht schnelle Angelegenheit.

Hallo Andreas,
vielen Dank fürs Mitdenken.

Naja, docker hat schon einige Vorteile.

  • Auf meinem Dockerhost in der Schule muss ich nur das Verzeichnis /srv/docker/moodle anlegen, dort die Datei docker-compose.yml reinkopieren und mit docker compose up -d starten. Dann läuft’s…

  • Für ein update mach ich aus
    image:docker.io/bitnami/moodle:4.2
    einfach
    image:docker.io/bitnami/moodle:4.3
    , stoppe moodle mit docker compose down und starte es neu mit docker compose up -d. Das war’s.

  • Die Container laufen alle auf einem Dockerhost. Bei uns sind das die Nextcloud, zwei Web-Sites, das MRBS, das Openschulportfolio und der Collabore-Service.

Das ist schon toll, wenns tut!?!
Gruß,
Mathias

Hallo Mathias,

was machst du, wenn du nach dem Update feststellst, dass eine Erweiterung nicht mit der neuen Moodle-Version funktioniert o.ä.?
Ein Rollback ist i.d.R. nicht möglich, es sei denn du spielst ein Backup der Datenbank ein.

Git bietet mir den Vorteil, dass ich in einem lokalen Repository alles (inklusive der Erweiterungen als Submodule) up to date halten kann und diesen dann erst in eine staging-Umgebung pushe. Wenn dort alles funktioniert, pushe ich die Änderungen auf unsere Produktiv-Umgebung. Beim Push werden auch alle Submodule (Erweiterungen) auf den aktuellen stand gebracht.
Erweiterungen verwalte ich (Version, bzw. aktuellester tag einstellbar) in einer einfachen csv-Datei. Ein einfaches python-Skript zieht mir dann die Erweiterungen aus deren jeweiligem Git-Repo.

Bisher habe ich das ganze aber auf einem Server von Hetzner und nicht auf dem Schulserver.

Das Einrichten ist aufwendiger als mit Docker, aber der Betrieb erscheint mir einfacher und flexibler. Und Tut bei mir :slight_smile:

LG,
Simon

Hallo Simon,

Naja, mit Moodle habe ich noch keine Erfarungen, da wir bisher das BelWue-Moodle nutzen. Ich setzte Docker unter Anderem für unsere Nextcloud ein. Und da gebe ich im Docker-Compose-File einfach die nächste Versionssnummer ein beende den Container und starte ihn mit der Option --build neu. Das wars. Vorher mach ich da einen Snapshot. Und wenn irgendwelche unvorhergesehene Probleme auftauchen, kehre ich halt wieder zurück. Allerdings sollte man sich da nicht zu viel Zeit lassen, da sonst beispielsweise Kalendereinträge von Kollegen verlohren gehen. Ein einfaches Zurück geht da nicht. Das stimmt…
Ich hätte das mit Moodle genau so gemacht…

Das ist der springende Punkt. Es tut und die Version von bitnami (von VMWare) halt nicht. Insofern schau ich mir das (Webserver- und Datenbank aufsetzen,… ) auch mal an.
Hast du da eine gute Anleitung?
Gruß,
Mathias