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

Zeige letzte Bearbeiter
1 In folgender Anleitung erfahren Sie, wie Sie einen moodle Container mit der Version 3.11 auf einem logoDIDACT Server aufsetzen.
2
3 {{toc depth="5" start="3"/}}
4
5 ----
6
7 === __**Installation des LXCs moodle311**__ ===
8
9
10 ==== __**Aktivierung des Container moodle311**__ ====
11
12 **1.** Wechseln Sie in den Container Puppeteer:
13
14 {{code language="bash"}}
15 root@ldhost:~ # lxc-ssh -n puppeteer
16 {{/code}}
17
18
19 **2.** Bearbeiten Sie die Datei "**/etc/logodidact/hosts/ldhost/guest.conf" **und fügen Sie folgenden Eintrag hinzu:
20
21 {{code language="bash"}}
22 root@puppeteer:~ # vim /etc/logodidact/hosts/ldhost/guest.conf
23 {{/code}}
24
25 {{code language="bash"}}
26 [Guest moodle311]
27 Ensure running
28 {{/code}}
29
30
31 **3.** Übernehmen Sie die neuen Dateien bzw. die Änderungen ins Git:
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
40 ==== __**Fehlerlösung - moodle nicht aufrufbar**__ ====
41
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!):
43
44 [[image:image-20220610113903-1.png]]
45
46 Um diesen Fehler zu korrigieren, muss der Container pgsql13 aktiviert werden. Im nächsten Schritt wird erklärt wie Sie dies durchführen.
47
48
49 ==== __**Aktivierung des Container pgsql13 für die Datenbank**__ ====
50
51 (% style="color:#e74c3c" %)//**__Führen Sie diesen Schritt nur durch wenn auf ihrem Server der pgsql13 Container nicht aktiviert ist!__**//
52
53 **1.** Wechseln Sie in den puppeteer:
54
55 {{code language="bash"}}
56 root@ldhost:~ # lxc-ssh -n puppeteer
57 {{/code}}
58
59
60 **2.** Bearbeiten Sie die Datei "**/etc/logodidact/hosts/ldhost/guest.conf" **und fügen Sie folgenden Eintrag hinzu:
61
62 {{code language="bash"}}
63 root@puppeteer:~ # vim /etc/logodidact/hosts/ldhost/guest.conf
64 {{/code}}
65
66 {{code language="bash"}}
67 [Guest pgsql13]
68 Ensure running
69 {{/code}}
70
71
72 **3.** Übernehmen Sie die neuen Dateien bzw. die Änderungen ins Git:
73
74 {{code language="bash"}}
75 root@puppeteer:~ # cd /etc/logodidact/
76 root@puppeteer:/etc/logodidact # git add .
77 root@puppeteer:/etc/logodidact # git commit -am "pgsql13 Container in der guest.conf aktiviert."
78 {{/code}}
79
80
81 === __**Freischaltung von moodle im Internet**__ ===
82
83
84 ==== __**Freigabe von moodle über rev-proxy**__ ====
85
86 Stellen Sie zunächst sicher, dass der rev-proxy Container am Server aktiviert ist, falls Sie moodle im Internet freischalten möchten.
87
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.
89
90 {{code language="bash"}}
91 root@puppeteer:~ # vim /etc/logodidact/hiera/custom.d/rev-proxy.yaml
92 {{/code}}
93
94 {{code language="bash"}}
95 ld_rproxy::hosts:
96 "moodle.sbe-technik-ring2.logoip.de":
97 proxy_url: https://moodle311.schule.local
98 template: moodle
99 ensure: present
100 listen_as_default: false
101 {{/code}}
102
103
104 **2.** Übernehmen Sie die neuen Dateien bzw. die Änderungen ins Git:
105
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}}
111
112 ===== =====
113
114 ===== =====
115
116 ===== __Split-DNS__ =====
117
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.
119
120 Führen Sie folgende Schritte für die Einrichtung durch, falls noch nicht erfolgt.
121
122 **1.** Öffnen Sie die Datei **"named.conf.local"** im logosrv:
123
124 {{code language="bash"}}
125 root@logosrv:~ # vim /etc/bind/named.conf.local
126 {{/code}}
127
128
129 **2.** Bearbeiten Sie die Datei wie folgt (Ersetzen Sie "musterstadt" durch den Schul-Shortname):
130
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}}
139
140
141 **3.** Öffnen Sie die referenzierte Datei **db.dynip** im logosrv:
142
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
166
167 **4.** Starten Sie nach den Anpassungen den DNS-Server im logosrv neu:
168
169 {{code language="bash"}}
170 root@logosrv:~ # /etc/init.d/bind9 restart
171 {{/code}}
172
173
174 ==== __SSL-Zertifikat über Tool acmetool oder acme.sh anfordern__ ====
175
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:
177
178 ===== =====
179
180 ===== __acmetool__ =====
181
182 Wechseln Sie in den puppeteer Container:
183
184 {{code language="bash"}}
185 root@ldhost:~ # lxc-ssh -n puppeteer
186 {{/code}}
187
188 Fordern Sie das Zertifikat mit folgendem Befehl an (Ersetzen Sie "SCHULKUERZEL" mit dem jeweiligen Shortname):
189
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}}