Zuletzt geändert von Tom Altenbrunn am 2024/03/19 09:37

Verstecke letzte Bearbeiter
Jens Gruber 17.1 1 In folgender Anleitung erfahren Sie, wie Sie einen moodle Container mit der Version 3.11 auf einem logoDIDACT Server aufsetzen.
Jens Gruber 1.3 2
Jens Gruber 2.4 3 {{toc depth="5" start="3"/}}
Jens Gruber 1.3 4
Jens Gruber 2.2 5 ----
6
7 === __**Installation des LXCs moodle311**__ ===
8
9
Jens Gruber 2.5 10 ==== __**Aktivierung des Container moodle311**__ ====
Jens Gruber 2.2 11
Jens Gruber 3.2 12 **1.** Wechseln Sie in den Container Puppeteer:
Jens Gruber 2.2 13
Jens Gruber 1.3 14 {{code language="bash"}}
15 root@ldhost:~ # lxc-ssh -n puppeteer
16 {{/code}}
17
18
Jens Gruber 11.1 19 **2.** Bearbeiten Sie die Datei "**/etc/logodidact/hosts/ldhost/guest.conf" **und fügen Sie folgenden Eintrag hinzu:
Jens Gruber 2.2 20
Jens Gruber 1.3 21 {{code language="bash"}}
22 root@puppeteer:~ # vim /etc/logodidact/hosts/ldhost/guest.conf
23 {{/code}}
24
25 {{code language="bash"}}
Jens Gruber 11.1 26 [Guest moodle311]
Jens Gruber 1.3 27 Ensure running
28 {{/code}}
29
30
Jens Gruber 5.1 31 **3.** Übernehmen Sie die neuen Dateien bzw. die Änderungen ins Git:
Jens Gruber 3.2 32
33 {{code language="bash"}}
34 root@puppeteer:~ # cd /etc/logodidact/
35 root@puppeteer:/etc/logodidact # git add .
36 root@puppeteer:/etc/logodidact # git commit -am "moodle311 Container in der guest.conf aktiviert."
37 {{/code}}
38
39
Jens Gruber 17.1 40 ==== __**Fehlerlösung - moodle nicht aufrufbar**__ ====
Jens Gruber 2.2 41
Jens Gruber 17.1 42 Sollte die moodle Seite trotz korrekt aufgebautem moodle Container nicht erreichbar sein, kann es sein dass der Datenbank Container fehlt. Erkennbar wird dieser Fehler über folgende Meldung während eines pruns (dieser ist nicht rot markiert und wird daher leicht übersehen!):
Jens Gruber 2.2 43
44 [[image:image-20220610113903-1.png]]
45
Jens Gruber 2.3 46 Um diesen Fehler zu korrigieren, muss der Container pgsql13 aktiviert werden. Im nächsten Schritt wird erklärt wie Sie dies durchführen.
Jens Gruber 2.2 47
48
Jens Gruber 2.5 49 ==== __**Aktivierung des Container pgsql13 für die Datenbank**__ ====
Jens Gruber 2.2 50
Jens Gruber 2.3 51 (% style="color:#e74c3c" %)//**__Führen Sie diesen Schritt nur durch wenn auf ihrem Server der pgsql13 Container nicht aktiviert ist!__**//
Jens Gruber 2.2 52
Jens Gruber 3.2 53 **1.** Wechseln Sie in den puppeteer:
Jens Gruber 2.2 54
Jens Gruber 1.6 55 {{code language="bash"}}
Jens Gruber 2.2 56 root@ldhost:~ # lxc-ssh -n puppeteer
Jens Gruber 1.6 57 {{/code}}
Jens Gruber 1.3 58
Jens Gruber 1.4 59
Jens Gruber 11.1 60 **2.** Bearbeiten Sie die Datei "**/etc/logodidact/hosts/ldhost/guest.conf" **und fügen Sie folgenden Eintrag hinzu:
Jens Gruber 1.6 61
Jens Gruber 2.2 62 {{code language="bash"}}
63 root@puppeteer:~ # vim /etc/logodidact/hosts/ldhost/guest.conf
64 {{/code}}
Jens Gruber 1.4 65
66 {{code language="bash"}}
Jens Gruber 2.2 67 [Guest pgsql13]
68 Ensure running
Jens Gruber 1.4 69 {{/code}}
70
71
Jens Gruber 5.1 72 **3.** Übernehmen Sie die neuen Dateien bzw. die Änderungen ins Git:
Jens Gruber 1.6 73
74 {{code language="bash"}}
75 root@puppeteer:~ # cd /etc/logodidact/
76 root@puppeteer:/etc/logodidact # git add .
Jens Gruber 3.2 77 root@puppeteer:/etc/logodidact # git commit -am "pgsql13 Container in der guest.conf aktiviert."
Jens Gruber 1.6 78 {{/code}}
Jens Gruber 1.5 79
Jens Gruber 1.3 80
Jens Gruber 17.1 81 === __**Freischaltung von moodle im Internet**__ ===
Jens Gruber 1.3 82
83
Jens Gruber 3.2 84 ==== __**Freigabe von moodle über rev-proxy**__ ====
Jens Gruber 1.3 85
Jens Gruber 3.2 86 Stellen Sie zunächst sicher, dass der rev-proxy Container am Server aktiviert ist, falls Sie moodle im Internet freischalten möchten.
87
Jens Gruber 17.1 88 **1.** Erweitern Sie die Datei **"/etc/logodidact/hiera/custom.d/rev-proxy.yaml"** im Puppeteer-LXC um folgende Zeilen, um moodle im rev-proxy freizugeben. Achten Sie hierbei auf Angabe des richtigen Templates.
Jens Gruber 3.2 89
Jens Gruber 5.1 90 {{code language="bash"}}
Jens Gruber 6.2 91 root@puppeteer:~ # vim /etc/logodidact/hiera/custom.d/rev-proxy.yaml
92 {{/code}}
93
94 {{code language="bash"}}
Tom Altenbrunn 20.1 95 ld_rproxy::hosts:
superadmin 10.1 96 "moodle.sbe-technik-ring2.logoip.de":
97 proxy_url: https://moodle311.schule.local
98 template: moodle
Jens Gruber 6.3 99 ensure: present
100 listen_as_default: false
Jens Gruber 5.1 101 {{/code}}
Jens Gruber 3.2 102
Jens Gruber 5.2 103
Jens Gruber 6.1 104 **2.** Übernehmen Sie die neuen Dateien bzw. die Änderungen ins Git:
Jens Gruber 3.2 105
Jens Gruber 5.1 106 {{code language="bash"}}
107 root@puppeteer:~ # cd /etc/logodidact/
108 root@puppeteer:/etc/logodidact # git add .
109 root@puppeteer:/etc/logodidact # git commit -am "Moodle über Rev-Proxy freigegeben."
110 {{/code}}
Jens Gruber 3.2 111
Jens Gruber 6.2 112 ===== =====
113
Jens Gruber 11.1 114 ===== =====
115
Jens Gruber 5.1 116 ===== __Split-DNS__ =====
Jens Gruber 3.2 117
Alexander Kruck 14.1 118 Hintergrund für Split-DNS ist ein oftmals fehlerhaftes NAT-Loopback am Router. Dies stellt sicher, dass externe Adressen wie z.b. moodle.shortname.logoip.de nicht zum Router geschickt werden, sondern zum internen rev-proxy weitergeleitet werden. Dadurch wird der Router als Fehlerquelle ausgeschlossen und alle Benutzer können im Schulnetz wie auch Zuhause die gleiche URL für den Zugriff verwenden.
Jens Gruber 3.2 119
Jens Gruber 5.1 120 Führen Sie folgende Schritte für die Einrichtung durch, falls noch nicht erfolgt.
Jens Gruber 3.2 121
Jens Gruber 5.2 122 **1.** Öffnen Sie die Datei **"named.conf.local"** im logosrv:
Jens Gruber 3.2 123
Jens Gruber 5.1 124 {{code language="bash"}}
125 root@logosrv:~ # vim /etc/bind/named.conf.local
126 {{/code}}
Jens Gruber 3.2 127
Jens Gruber 6.2 128
Jens Gruber 5.2 129 **2.** Bearbeiten Sie die Datei wie folgt (Ersetzen Sie "musterstadt" durch den Schul-Shortname):
Jens Gruber 3.2 130
Jens Gruber 5.1 131 {{code language="bash"}}
132 ## Externe dynamische IP intern auflösen
133 zone "musterstadt.logoip.de" {
134   type master;
135   file "/etc/bind/db.dynip";
136   check-names ignore;
137 };
138 {{/code}}
Jens Gruber 3.2 139
Jens Gruber 6.2 140
Jens Gruber 5.2 141 **3.** Öffnen Sie die referenzierte Datei **db.dynip** im logosrv:
Jens Gruber 3.2 142
Jens Gruber 5.1 143 {{code language="bash"}}
144 root@logosrv:~ # vim /etc/bind/db.dynip
145 {{/code}}
146
147 Passen Sie gegebenenfalls die IP-Adresse in den letzten beiden Zeilen an, als Ziel muss auf den Rev-Proxy Container verwiesen werden. Im Standard lautet dessen IP-Adresse "172.28.28.27":
148
149 {{code language="bash"}}
150 $TTL 1h
151 @                IN     SOA   ns1.schule.local. postmaster.schule.local. (
152                                 2009010101 ; serial
153                                 86400      ; refresh (1 day)
154                                 900        ; retry (15 minutes)
155                                 604800     ; expire (1 week)
156                                 900        ; minimum (15 minutes)
157                                 )
158
159                  NS      ns1.schule.local.
160                  NS      ns2.schule.local.
161
162 @                A       172.28.28.27
163 *                A       172.28.28.27
164 {{/code}}
165
Jens Gruber 6.2 166
Jens Gruber 6.1 167 **4.** Starten Sie nach den Anpassungen den DNS-Server im logosrv neu:
Jens Gruber 5.1 168
169 {{code language="bash"}}
170 root@logosrv:~ # /etc/init.d/bind9 restart
171 {{/code}}
172
173
Jens Gruber 5.2 174 ==== __SSL-Zertifikat über Tool acmetool oder acme.sh anfordern__ ====
Jens Gruber 5.1 175
Jens Gruber 5.2 176 Nach Schaffung der technischen Voraussetzungen können Sie das Let's Encrypt-Zertifikat anfordern. Je nach verwendeter Software/Serverstand können Sie die folgenden 2 Wege nutzen:
Jens Gruber 5.1 177
Jens Gruber 6.2 178 ===== =====
Jens Gruber 5.1 179
Jens Gruber 5.2 180 ===== __acmetool__ =====
Jens Gruber 5.1 181
Jens Gruber 5.2 182 Wechseln Sie in den puppeteer Container:
Jens Gruber 5.1 183
Jens Gruber 5.2 184 {{code language="bash"}}
185 root@ldhost:~ # lxc-ssh -n puppeteer
186 {{/code}}
Jens Gruber 5.1 187
Jens Gruber 5.2 188 Fordern Sie das Zertifikat mit folgendem Befehl an (Ersetzen Sie "SCHULKUERZEL" mit dem jeweiligen Shortname):
Jens Gruber 5.1 189
Jens Gruber 5.2 190 {{code language="bash"}}
191 root@puppeteer:~ # acmetool want moodle.SCHULKUERZEL.logoip.de
192 {{/code}}
193
194
195 ===== __acme.sh__ =====
196
197 Wechseln Sie in den puppeteer Container:
198
199 {{code language="bash"}}
200 root@ldhost:~ # lxc-ssh -n puppeteer
201 {{/code}}
202
203 Wechseln Sie im puppeteer Container in die Umgebung des Benutzers le-acme zur Verwaltung der Let's Encrypt Zertifikate:
204
205 {{code language="bash"}}
206 root@puppeteer:~ # sle
207 {{/code}}
208
209 Beantragen Sie ein neues Zertifikat mit folgendem Befehl (ersetzen Sie "SCHULKUERZEL" mit dem jeweiligen Shortname):
210
211 {{code language="bash"}}
212 le-acme@puppeteer:~ $ issue moodle.SCHULKUERZEL.logoip.de
213 {{/code}}
214
215 Um das Verteilen der Zertifikate zu beschleunigen, können Sie nacheinander einen prun im puppeteer und rev-proxy Container durchführen:
216
217 {{code language="bash"}}
218 root@puppeteer:~ # prun
219 root@rev-proxy:~ # prun
220 {{/code}}