Wiki-Quellcode von Installation von Moodle 3.11 am Server
Zuletzt geändert von Tom Altenbrunn am 2024/03/19 09:37
Zeige letzte Bearbeiter
author | version | line-number | content |
---|---|---|---|
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}} |