Eigenes Moodle leicht und schnell installiert

Hallo zusammen,

wer keine Lust mehr auf den Umzug des Belwue-Moodle nach TSystems hat, für den ist vielleicht das eigene Moodle auf dem eigenen Server eine Alternative. Und es ist wirklich ncht schwer :wink:

Dank der Mithilfe vieler Leute hier in Ask ist eine Moodle-Lösung auf dockerbasis entstanden. Wer’s ausprobieren möchte, hier ist der Download.

Das ist drin:

-rw-r--r-- 1 fobi fobi  755 Jun 14 20:03 config.php
-rw-r--r-- 1 fobi fobi  836 Dez  2 07:38 docker-compose.yml
-rw-r--r-- 1 fobi fobi 2,4K Nov 23 20:18 Dockerfile
-rwxrwxr-x 1 fobi fobi  772 Jun 21 16:41 docker-php-entrypoint
-rw-r--r-- 1 fobi fobi 1,4K Dez  2 07:39 nginx.conf

Anpassen müsst ihr nur docker-compose.yml und nginx.conf.
Über all wo #### Bitte ändern #### steht müsst ihr die URL eurer Schule eintragen.
Beispiel:

#### Bitte ändern ####
      - "MY_WWWROOT=https://moodle.meineschule.de"

Das sind genau 6 Stellen.

Vorraussetzung ist:

  1. Ein Dockerhost, auf dem das laufen kann. Das ist hier beschrieben. Bei der Installation von Docker würde ich dann aber so, wie es auf der offiziellen Dockerseite steht vorgehen. So erhält man die aktuellste Version. Um dann dehydrated und nginx zu installieren führt man dann apt-get install nginx dehydrated aus (als root).
  2. Dass eure Firewall die Anfragen auf Port 80 (HTTP) und Port 443 (HTTPS) an den Dockerhost weiterleitet. Das ist hier beschrieben.
  3. Ein CNAME oder A - Eintrag sollte auf euren Server (Firewall) zeigen.

Nachdem ihr die Änderungen in den zwei Dateien vorgenommen habt, gebt iht in dem Verzeichnis, in dem die Dateien liegen einfach docker compose up -d --build ein und Docker installiert euch eine komplette Moodlesite unter https://moodle.meineschule.de.
Jetzt müsst ihr nur noch auf eure neue Moodleseite gehen und euer neues Moodle einrichten…
Das Ganze ist hier für die Nextcloud beschrieben.
Viel Spaß beim Ausprobieren.
Gruß,
Mathias

1 „Gefällt mir“

Hallo Mathias,
wir hosten unser moodle auch selbst … allerdings nicht im docker-Container sondern direkt auf dem Blech. Kannst Du etwas dazu sagen, ob oder inwieweit ein Docker-Container das System ausbremst – oder eben nicht? Ich wüsste gerne, ob es einen spürbaren Unterschied gibt, ob das System im Container läuft oder direkt? Zu Corona-Zeiten hatten wir täglich seeeehr viele gleichzeitige Zugriffe auf unser moodle. Auch das wäre interessant zu wissen, ob das eine Rolle spielt, wenn es sich im Container abspielt?

Unser moodle wird in Kürze auch auf die 4.3er Version angehoben. Ich hatte das schon mal in einer Parallelinstallation vorbereitet und ausprobiert. Es war am Ende etwas mühsam, da unsere Installation per git läuft und in der Zwischenzeit zig Dateien dabei waren, die git pull dann angemeckert hat.

Viele Grüße,
Michael

Hallo Michael,

Naja, auf unserem Dockerhost laufen zur Zeit 8 Dontainer gleichzeitig (moodle, nextcloud, OpenSchulportfolio, MRBS, Klassearbeitsplaner(anderes MRBS), NWT-Webauftritt (typo3), Schülerzeitung-Webauftritt (Wordpress), Test-Webauftritt (Wordpress), Collabora ).


Letzte Woche hat sich der Dockerhost eher gelangweilt. Und ich hab im AK-Linux am Mittwoch 29.11. diesen zweiten Moodle-Auftritt aufgebaut. Da ist die CPU-Last beim Erzeugen des Dockerimages kurzzeitig auf grade mal 30% gehuscht…

Was Updates angeht:
Das Image legt die Unterverzeichnisse
db (Datenbank), moodle-data (Datenverzeichnis) und moodle-www (Moodle-html-Verzeichnis) an.
Bei einem Update gehe ich wie folgt vor:

  1. Stoppe den Moodle-Container mit docker compose down.
  2. Verschiebe moodle-www nach moodle-www-sik mit mv moodle-www moodle-www-sik.
  3. Lade die aktuelle Moodle-Version von der Moodle-Seite herunter mit wget https://download.moodle.org/download.php/direct/stable403/moodle-latest-403.tgz.
  4. Entpacke sie mit tar xfv moodle-latest-403.tgz. Moodle4.3 wird in den Unterordner moodle entpackt.
  5. Verschiebe moodle nach moodle-www mit mv moodle moodle-www.
  6. Setze www-data als Besitzer von moodle-www mit chown -R www-data. moodle-www/.
  7. Copiere die alte config.php ins neue Moodle-Verzeichnis cp moodle-www-sik/config.php moodle-www/.
  8. Starte den Container mit docker compose up -d.

Wenn du dich jetzt als admin anmeldest, wird dich Moodel über den Update informieren und die nötigen Änderrungen der DB durchführen.

Ach ja, da alles (bei mir) im Verzeichnis /srv/docker/moodle ist, muss man für eine Datensicherung nur das Verzeichnis /srv/docker/moodle sichern. Coiert man dieses Verzeichnis auf einen anderen Dockerhost, statet man den Container mit docker compose up -d --build und alles Läuft so, wie es vorher war weiter…

Gruß,
Mathias

Hallo Mathias,
danke für die Infos – klingt gut.
Was sagt Deine Installation denn bei einem Upgrade, wenn Du zusätzliche Plugins / Berichte / eigene Änderungen am System vorgenommen hat? Genau das ist das o.g. Problem mit git

Hallo Michael,

Die Plugins sind in /srv/docker/moodle/moodle-www/mod und in /srv/docker/moodle/moodle-www/local installiert. Ursprünglich dachte ich, dass ich die Verzeichnisse aus der Sicherungskopie in die entsprechenden Verzeichnisse in moodle-www reincopieren müsste. Witzigerweise hat Moodle die entsprechneden Plugis selbst nachinstalliert. Pludins, die für die Version 4.3 noch nicht verfügbar sind, werden angezeigt :thinking:

Beispielsweise ist das Collabora-Plugin für Moodle 4.3 nicht verfügbar. Ich hab dann einfach das „alte“ Plugin wieder installiert. Das hat Moodle anstandslos gemacht.

Das Plugin für das Kachelformat muss ich bei jedem Update nachinstallieren. Warum weiß ich auch nicht…

Gruß,
Mathias

Hallo Mathias,

Das Plugin für das Kachelformat muss ich bei jedem Update nachinstallieren. Warum weiß ich auch nicht…

Vielleicht, weil es nicht in mod und auch nicht in local liegt, sondern in course/format/tiles?

Ähnliche Sonderfälle sind bei mir blocks/checklist und report/coursesize.

Beste Grüße

Jörg

Hallo Jörg,

Guter Tip. Das schau ich mir beim nächsten Update an.
Gruß,
Mathias