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

Hallo Zusammen,

hat zufällig jemand Moodle als Appliance installiert? Das dürfte im Prinzip der einfachste Weg sein, aber ist das Moodle dann zum Einspielen der Belwue Daten geeignet und welches ist wohl das geeignetste?

Es gibt drei Versionen:

  1. TurnKey Moodle, free Ubuntu-based open source appliance.
  2. rPath Moodle, based on rPath Linux.
  3. BitNami Moodle, Ubuntu and OpenSUSE appliances

https://docs.moodle.org/404/en/Moodle_appliance

Gruß
Michael

Hallo Michael,
ursprünglich wollte ich auch BitNami Moodle installieren. Das gibt’s ja auch als Docker-Image. Aber Irgendetwas hat da nicht so funktioniert, wie ich es wollte. Daher habe ich ein eigenes Dockerfile erstellt.
Das ist eigentlich nichts anderes als ein apache-Webserver in den eine Moodle-Installation von der Offiziellen Moodle-Site downgeloaded und in das http-Verzeichnis gelegt wird.

Mir ist eben aufgefallen, dass mein Link vom Anfang nicht mehr stimmt. Den hab ich wohl versehentlich gelöscht. Hier ist er nochmal.
Allerdings ist das Moodle in der Version 4.2.2. , da ich in meinem nächsten AK-Linux zeige, wie man den eigenen Moodle-Server updatet. Falls du meinen Weg mit einer aktuelle Version testen möchtest, kann ich die aktuelle Version eintragen.
Gruß,
Mathias

Hallo Matthias,

sollte man nicht zunächst die Version 4.1.10 nehmen? Die läuft ja auch bei Belwue und außerdem ist es die LTS Version. Ich habe allerdings keine Erfahrung, wie sich die Migration in eine neuere Version verhält.

LG Michael

Hallo Michael,

Klar, kein Problem. Falls gewünscht, kann ich auch die Version 4.1.10 im Dockerfile vorgeben.
Gruß,
Mathias

Ich glaube nicht dass es sich viel schenkt ob du jetzt zur Docker Lösung greifst oder direkt aufm Server installierst… Eine Appliance musst du auch updaten…
Du brauchst immer eine Backuplösung falls beim updaten was schief geht, musst nach den Plugins schauen ob die nach nem Upgrade noch tun, oder auf ein anderes Plugin wechseln usw.
Und diese Dinge hast du egal ob Docker, appliance, oder direkt auf ner Ubuntu vm.
Auch der Unterbau (php, apache, sql) muss (alle 1-2 Jahre mal) geupdated werden. Das betrifft auch alle 3 Varianten. Wenn du Docker schon gut kannst mag das einfacher sein. Trotzdem sollte man immer ein bissle wissen was da im Hintergrund alles passiert.

In allen Varianten musst du moodledata und die Datenbank in das Moodle importieren. Da würde ich darauf vielleicht achten, dass das selbe Datenbanksystem verwendet wird wie im belwue moodle(mariadb).

Im Vergleich zu Selbstkosten einer Nextcloud find ich da Moodle etwas schwieriger in der Handhabung, aber das ist alles eine Frage des Willens, Ausprobieren und Erfahrung sammeln. Und wenn man das ein paar mal gemacht hat, dann flutscht das auch…

Ich würde auf jeden Fall nicht Migration und update gleichzeitig machen, weil du sonst eben schlechter nachvollziehen kannst wo die Probleme liegen wenn was nicht läuft. Das steht auch so irgendwo im Anleitungsbereich auf moodle.org :slight_smile: Wenn du auf 4.1.10 gehst hast du die Garantie dass alle plugins vom belwue moodle weiterhin tun, sofern sie nicht an belwue Dienste dranhängen. Wenn du dann auf höhere Versionen updates, können einzelne Plugins inkompatibel werden oder sich die Optik von Moodle bissle verändern. Ich mach sowas dann lieber zum Schuljahreswechsel.
Im Herbst kommt dann das neue Moodle LTS raus, Moodle 4.1 kann man noch bis ca Ende 25 verwenden (nur Sicherheitsupdates)

Hallo Michael, hallo sucher,

ich hab jetzt mal die Version 4.1.10 und mariadb eingepflegt. Wer mit einer aktuelleren Version starten möchte muss das im Dockerfile tun:

wget -O download.tgz https://download.moodle.org/download.php/direct/stable401/moodle-4.1.10.tgz && \
    echo "786261e15a0ca1eb228a060c03797ce86d81f95a5a37954b04e8540156b2d348 download.tgz" > download.tgz.sum && \

In diesen beiden Zeilen muss man halt den Download-Link und die zugehörige Prüfsumme eintragen.

Kleine Randbemerkung:
Das Dockerfile updaten reicht bei einem bestehendem System nicht. Ein bestehendes Moodle wird vom Dockerimage nicht überschrieben!
Da hat sucher ganz recht. Updaten muss man ein Docker-Moodle wie jedes andere Moodle auch. Wobei auch das kein Hexenwerk ist :slight_smile:

Viel Spaß beim Ausprobieren.

Gruß,
Mathias

Hallo Zusammen,

ich habe eine Belwuekopie auf Grundlage der Bitnami-VM auf einem esxi-hypervisor inzwischen hinbekommen. Es gibt ein paar Klippen zu meistern, ist dann aber gut machbar.
Bei Interesse kann ich noch eine detailliertere Anleitung schreiben.

LG Michael

Hallo Mathias,
In unserem als Dockercontainer installierten und auf Version 4.4.1 upgedateten Moodle
ist der Pfad zu ghostscript mit: /usr/bin/gs nicht richtig.
Ist auch keine Wunder, die Datei gibts ja auch nicht.
Nach Installation von ghostscript direkt auf dem Dockerhost gibt es zwar die Datei, aber Moodle kann sie immer noch nicht finden.
Muss ich eventuell Ghostscript direkt im Container installieren?
Grüße Frank

Hallo Frank,

Ja.
Du kannst dich mit docker exec -it containername /bin/bash testweise als root im Container anmelden und dann ghostscript installieren oder die Datei Dockerfilebearbeiten:

# Installationen

    apt-get update && apt-get -y dist-upgrade && \
    apt-get install -y --no-install-recommends \
    wget \
    cron \
    rsync \
    ghostscript \

und dann mit docker compose down und dann docker compose up -d --build den Container neu erstellen.
Gruß,
Mathias

1 „Gefällt mir“

Hallo Mathias,
vielen Dank für die schnelle Hilfe. Die Variante mit dem Dockerfile war ja sehr einfach genial.
Der Pfad zu Ghostscript wird jetzt gefunden.
Grüße Frank

Hallo Mathias,
gibt es für PHP CLI eine ähnlich einfache Lösung? Der Standardpfad funktioniert nicht.

Grüße Frank

Pfad zu PHP CLI pathtophp
Standard: Leer

Pfad für PHP CLI. Meistens /usr/bin/php. Wenn Sie dies eingeben können Cron-Skripte über die Admin-Oberfläche ausgeführt werden.

Hallo Frank,

wenn ich mich als www-data mit docker exec -it -u 33 moodle-moodle-1 /bin/bash im moodle-Container anmelde, finde ich den Pfad zu php mit whereis php.


www-data@5400207fe24a:~/html$ whereis php
php: /usr/local/bin/php /usr/local/etc/php /usr/local/lib/php /usr/local/php

Installiert werden muss da nichts…
Gruß,
Mathias

Und nochmals Danke,
es funktioniert
Grüße Frank