Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
doku:technische_dokumentation [2021/06/24 05:01] – alte Version wiederhergestellt (2021/02/22 01:07) A User Not Logged indoku:technische_dokumentation [2022/10/07 11:35] – [Tabelle] frederike_lmz
Zeile 1: Zeile 1:
 ====== Technische Dokumentation ====== ====== Technische Dokumentation ======
 +
 +===== WIP/outdated =====
  
 ===== Backups ===== ===== Backups =====
Zeile 49: Zeile 51:
 Wichtig ist, dass wenn etwas verändert oder etwas hinzugefügt wird, man diese Änderung erst noch bestätigen muss, bevor die Änderung vom System durchgeführt wird. Wichtig ist, dass wenn etwas verändert oder etwas hinzugefügt wird, man diese Änderung erst noch bestätigen muss, bevor die Änderung vom System durchgeführt wird.
  
-User:+User:innen:
  
-Man kann alle User im Wato-Menü unter dem Punkt User einsehen. In diesem Menü können sowohl neue User angelegt, als auch aktuelle User bearbeitet werden. Aktuell sind die User cmkadmin und aufseher eingerichtet. Beide User haben volle Administrationsrechte und für beide ist auch eine Mail-Adresse eingetragen. Man findet die Login-Daten für beide User in der Passwort-Datenbank.+Man kann alle User:innen im Wato-Menü unter dem Punkt User einsehen. In diesem Menü können sowohl neue User:innen angelegt, als auch aktuelle User:innen bearbeitet werden. Aktuell sind die User cmkadmin und aufseher eingerichtet. Beide User haben volle Administrationsrechte und für beide ist auch eine Mail-Adresse eingetragen. Man findet die Login-Daten für beide User in der Passwort-Datenbank.
  
 Benachrichtigung: Benachrichtigung:
Zeile 61: Zeile 63:
 Die unterschiedlichen Logs werden von omd gespeichert. Sie sind in dem Ordner ///omd/sites/monitoring/var/log// / zu finden. Die unterschiedlichen Logs werden von omd gespeichert. Sie sind in dem Ordner ///omd/sites/monitoring/var/log// / zu finden.
  
-Weiter Dokumentation:+Weitere Dokumentation:
  
 Eine ausführliche Dokumentation zu allen Features von Checkmk ist hier zu finden: [[https://docs.checkmk.com/latest/de/index.html|https://docs.checkmk.com/latest/de/index.html]] Eine ausführliche Dokumentation zu allen Features von Checkmk ist hier zu finden: [[https://docs.checkmk.com/latest/de/index.html|https://docs.checkmk.com/latest/de/index.html]]
Zeile 127: Zeile 129:
   - //npx tsc →//  Kompilierung mithilfe des TypeScript-Compilers   - //npx tsc →//  Kompilierung mithilfe des TypeScript-Compilers
   - //systemctl –user start prod_backend →//  Neustart des Linux-Service   - //systemctl –user start prod_backend →//  Neustart des Linux-Service
-Außerdem wurde mit //[[https://www.npmjs.com/package/husky|Husky]]//ein //pre-commit Hook//  eingerichtet, der vor jedem versuchten Commit das Command //npm run lint:ci//  ausführt. Damit soll verhindert werden, dass Code mit unzureichender Code-Qualität im Repository landet.+Außerdem wurde mit //[[https://www.npmjs.com/package/husky|Husky]]// ein //pre-commit Hook//  eingerichtet, der vor jedem versuchten Commit das Command //npm run lint:ci//  ausführt. Damit soll verhindert werden, dass Code mit unzureichender Code-Qualität im Repository landet.
  
 ==== Authentifizierung ==== ==== Authentifizierung ====
Zeile 158: Zeile 160:
 ===== Dokumentation Website ===== ===== Dokumentation Website =====
  
-Das Frontend von Blockalot ist der Teil der Anwendung, den die Endnutzer bedienen, um ihre Klassenzimmer zu verwalten.+Das Frontend von BLOCKALOT ist der Teil der Anwendung, den die Endnutzer bedienen, um ihre Lernräume zu verwalten.
  
 ==== Design ==== ==== Design ====
  
-Das Design der Website orientiert sich am Corporate Design des LMZ: Die Farben, insbesondere Orange und Olivgrün, der Homepage des LMZ wurden übernommen. Auch das Logo sowie einige Grafiken wurden übernommen beziehungsweise abgewandelt. Für einige Elemente, zum Beispiel die "Karten" der Klassenzimmer auf dem Dashboard, wurde //Neomorphismus//  verwendet. Dieser sorgt zwar für ein modernes Aussehen, dessen Tauglichkeit, insbesondere im Bezug auf Kontrast, sollte weiter überprüft werden.+Das Design der Website orientiert sich am Corporate Design des LMZ: Die Farben, insbesondere Orange und Olivgrün, der Homepage des LMZ wurden übernommen. Auch das Logo sowie einige Grafiken wurden übernommen beziehungsweise abgewandelt. Für einige Elemente, zum Beispiel die "Karten" der Lernräume auf dem Dashboard, wurde //Neomorphismus//  verwendet. Dieser sorgt zwar für ein modernes Aussehen, dessen Tauglichkeit, insbesondere im Bezug auf Kontrast, sollte weiter überprüft werden.
  
 Ein Mockup für die Website wurde mit //Figma//  erstellt. Über [[https://www.figma.com/file/hDVSUEyJKd6Oij7IlE01A1/Mockup?node-id=0%3A1|diesen Link]] kann es eingesehen werden. Falls Änderungen vorgenommen werden müssen, wenden Sie sich bitte an //rech1033@hs-karlsruhe.de//, um Zugriff zu erhalten. Ein Mockup für die Website wurde mit //Figma//  erstellt. Über [[https://www.figma.com/file/hDVSUEyJKd6Oij7IlE01A1/Mockup?node-id=0%3A1|diesen Link]] kann es eingesehen werden. Falls Änderungen vorgenommen werden müssen, wenden Sie sich bitte an //rech1033@hs-karlsruhe.de//, um Zugriff zu erhalten.
Zeile 178: Zeile 180:
 ==== Aufbau ==== ==== Aufbau ====
  
-Die Root-Datei ist //src/App.vue.//  Hier werden die //Navbar//, der //Footer//  und die aktuelle //View//  eingebunden. Die aktuelle View wird über //Vue-Router//  bestimmt, die entsprechende Datei ist //src/router/index.js//. Die Views liegen unter //src/views//  und entsprechen den unterschiedlichen Seiten der Anwendung (Home, Dashboard, FAQ, Klassenzimmer, Impressum und Datenschutz).+Die Root-Datei ist //src/App.vue.//  Hier werden die //Navbar//, der //Footer//  und die aktuelle //View//  eingebunden. Die aktuelle View wird über //Vue-Router//  bestimmt, die entsprechende Datei ist //src/router/index.js//. Die Views liegen unter //src/views//  und entsprechen den unterschiedlichen Seiten der Anwendung (Home, Dashboard, FAQ, Lernräume, Impressum und Datenschutz).
  
 Die Views binden unterschiedliche Komponenten ein, welche unter //src/components//  gespeichert werden. Einige dieser Komponenten, zum Beispiel der Button, können innerhalb des gesamten Frontends wiederverwendet werden. Mit //Vuese//  können mehr Informationen über die einzelnen Komponenten generiert werden. //Vuese//  erstellt automatisch eine Dokumentation der Komponenten. Die generierten Dateien sind in //Markdown//  geschrieben und liegen unter //website/components//. Es kann eine Website lokal gehostet werden, die alle //Markdown//-Dateien der Komponenten-Dokumentation aufbereitet darstellt. Hierfür muss global //Vuese//  installiert und anschließend //vuese serve –open//  ausgeführt werden (siehe [[https://vuese.org/cli|Vuese-Dokumentation]]). Die Views binden unterschiedliche Komponenten ein, welche unter //src/components//  gespeichert werden. Einige dieser Komponenten, zum Beispiel der Button, können innerhalb des gesamten Frontends wiederverwendet werden. Mit //Vuese//  können mehr Informationen über die einzelnen Komponenten generiert werden. //Vuese//  erstellt automatisch eine Dokumentation der Komponenten. Die generierten Dateien sind in //Markdown//  geschrieben und liegen unter //website/components//. Es kann eine Website lokal gehostet werden, die alle //Markdown//-Dateien der Komponenten-Dokumentation aufbereitet darstellt. Hierfür muss global //Vuese//  installiert und anschließend //vuese serve –open//  ausgeführt werden (siehe [[https://vuese.org/cli|Vuese-Dokumentation]]).
Zeile 188: Zeile 190:
 ===== Dokumentation Keycloak ===== ===== Dokumentation Keycloak =====
  
-Der Keycloak-Server wird zur //Benutzerverwaltung//  für die User der Webseite verwendet. Der Name des Service auf der Linux-Maschine heißt //keycloak. // \\ Die //Logs//  sind unter dem folgenden Pfad zu finden: ///keycloak-12.0.2/standalone/log/server.log// \\ Die Keycloak-Installation befindet sich im Ordner keycloak-//akt. Versionsnummer//. Keycloak wird im Modus //Standalone//  ausgeführt (in diesem Ordner befindet sich auch die entsprechende Konfiguration). \\ Es gibt einen //Realm//  (=Sammlung aller Einstellungen und Konfigurationen) zum Testen (//lmz_dev//) und einen, der live ist (//lmz_prod//). Die Konfiguration ist größtenteils auch über ein User Interface möglich (z.B. Anlegen neuer User): \\ [[https://minetest.lmz-bw.de:8443/auth/admin/lmz_prod/console/|https://minetest.lmz-bw.de:8443/auth/admin/lmz_prod/console/]] (Konfiguration aller Realms möglich) \\ +Der Keycloak-Server wird zur //Benutzerverwaltung//  für die User:innen der Webseite verwendet. Der Name des Service auf der Linux-Maschine heißt //keycloak. // \\ Die //Logs//  sind unter dem folgenden Pfad zu finden: ///keycloak-12.0.2/standalone/log/server.log// \\ Die Keycloak-Installation befindet sich im Ordner keycloak-//akt. Versionsnummer//. Keycloak wird im Modus //Standalone//  ausgeführt (in diesem Ordner befindet sich auch die entsprechende Konfiguration). \\ Es gibt einen //Realm//  (=Sammlung aller Einstellungen und Konfigurationen) zum Testen (//lmz_dev//) und einen, der live ist (//lmz_prod//). Die Konfiguration ist größtenteils auch über ein User Interface möglich (z.B. Anlegen neuer User:innen): \\ [[https://minetest.lmz-bw.de:8443/auth/admin/lmz_prod/console/|https://minetest.lmz-bw.de:8443/auth/admin/lmz_prod/console/]] (Konfiguration aller Realms möglich) \\ 
-[[https://minetest.lmz-bw.de:8443/auth/admin/lmz_prod/console/|https://minetest.lmz-bw.de:8443/auth/admin/lmz_prod/console/]]Die Zugangsdaten dazu findet man im //Keepass//. Das Aussehen der Login Pagesowie der Userprofile muss über Keycloak und nicht über das Frontend angepasst werden (Ordner Themes).+[[https://minetest.lmz-bw.de:8443/auth/admin/lmz_prod/console/|https://minetest.lmz-bw.de:8443/auth/admin/lmz_prod/console/]] Die Zugangsdaten dazu findet man im //Keepass//. Das Aussehen der Login Page sowie der Userprofile muss über Keycloak und nicht über das Frontend angepasst werden (Ordner Themes).
  
 ===== Dokumentation Postgres ===== ===== Dokumentation Postgres =====
  
-Postgres ist das //DBMS//, das wir sowohl für unser Backend als auch für die Minetest-Server nutzen. Es hat keinen eigenen Servicenamen wie z.B. Keycloak. Die Verwaltung geschieht mittels folgendem command: \\ //''<nowiki>sudo pg_ctlcluster 13 main (reload|start|restart)</nowiki>''  //Die Logs liegen unter ''<nowiki>_/var/log/postgresql/postgresql-13-main.log_</nowiki>''In Postgres hat jede Welt ihre eigene Datenbank, welche 7 Tabellen enthält. Außerdem gibt es noch eine Datenbank, auf der unser Backend seine Daten zu angelegten Klassenzimmern verwaltet.+Postgres ist das //DBMS//, das wir sowohl für unser Backend als auch für die Minetest-Server nutzen. Es hat keinen eigenen Servicenamen wie z.B. Keycloak. Die Verwaltung geschieht mittels folgendem command: \\ //''<nowiki>sudo pg_ctlcluster 13 main (reload|start|restart)</nowiki>''  //Die Logs liegen unter ''<nowiki>_/var/log/postgresql/postgresql-13-main.log_</nowiki>''In Postgres hat jede Welt ihre eigene Datenbank, welche 7 Tabellen enthält. Außerdem gibt es noch eine Datenbank, auf der unser Backend seine Daten zu angelegten Lernräumen verwaltet.
  
 Der Zugriff auf die Postgres-Datenbank geschieht über SSH. Mittels //''<nowiki>sudo -u postgres psql</nowiki>''  //  kann auf die Datenbank zugegriffen werden. Mit //\l//  werden alle Datenbanken angezeigt. Mit //\c datenbankName//  kann eine Verbindung zu einer bestimmten Datenbank hergestellt werden. Mit //\d//  können die enthaltenen Tabellen angezeigt werden. Der Zugriff auf die Postgres-Datenbank geschieht über SSH. Mittels //''<nowiki>sudo -u postgres psql</nowiki>''  //  kann auf die Datenbank zugegriffen werden. Mit //\l//  werden alle Datenbanken angezeigt. Mit //\c datenbankName//  kann eine Verbindung zu einer bestimmten Datenbank hergestellt werden. Mit //\d//  können die enthaltenen Tabellen angezeigt werden.
Zeile 203: Zeile 205:
 SELECT * FROM (SELECT d.datacl, d.datname, w.* FROM pg_database AS d FULL JOIN worlds AS w ON "w"."worldId" = substring(d.datname, 2)::INTEGER \\ WHERE datistemplate = false AND datname LIKE 'k%') AS all_databases WHERE port IS NULL OR datname IS NULL ORDER BY datname; SELECT * FROM (SELECT d.datacl, d.datname, w.* FROM pg_database AS d FULL JOIN worlds AS w ON "w"."worldId" = substring(d.datname, 2)::INTEGER \\ WHERE datistemplate = false AND datname LIKE 'k%') AS all_databases WHERE port IS NULL OR datname IS NULL ORDER BY datname;
  
-Das Command gleicht die Datenbanken der Klassenzimmer mit den Einträgen in unserer Backenddata-Datenbank ab und gibt die Deltas aus.+Das Command gleicht die Datenbanken der Lernräume mit den Einträgen in unserer Backenddata-Datenbank ab und gibt die Deltas aus.
  
-===== Minetest=====+===== Minetest =====
  
-Der Name der Services der einzelnen Klassenzimmer ergibt sich nach dem folgenden Service: ''<nowiki>_k_<</nowiki>''  //klassenzimmerID>// \\ Die Logs liegen In der Datei //''<nowiki>debug.txt</nowiki>''  //  im jeweiligen Klassenzimmerordner unter ///home/awp/minetest-live/worlds/<html><userID></html>/<html><klassenzimmerID></html>//. Dabei ist die userID die ID des Accounts aus Keycloak. Im Ordner des Klassenzimmers befinden sich außerdem alle zugehörigen Konfigurationsdateien.+Der Name der Services der einzelnen Lernräume ergibt sich nach dem folgenden Service: ''<nowiki>_k_<</nowiki>''  //klassenzimmerID>// \\ Die Logs liegen In der Datei //''<nowiki>debug.txt</nowiki>''  //  im jeweiligen Lernraumordner unter ///home/awp/minetest-live/worlds/<html><userID></html>/<html><klassenzimmerID></html>//. Dabei ist die userID die ID des Accounts aus Keycloak. Im Ordner der Lernraum befinden sich außerdem alle zugehörigen Konfigurationsdateien.
  
 Im Home Verzeichnis AWP (//''<nowiki>/home/awp</nowiki>''  //) befindet sich im Ordner //minetest-live//  die aktuelle verwendete Minetest-Installation, dort befinden sich im Ordner ///mods//  die aktuell global installierten Mods. Eine Dokumentation über die installierten Mods ist [[:mod_uebersicht|]] verfügbar. Im Home Verzeichnis AWP (//''<nowiki>/home/awp</nowiki>''  //) befindet sich im Ordner //minetest-live//  die aktuelle verwendete Minetest-Installation, dort befinden sich im Ordner ///mods//  die aktuell global installierten Mods. Eine Dokumentation über die installierten Mods ist [[:mod_uebersicht|]] verfügbar.
  
-Jede Welt hat eine eigene //Postgres-Datenbank//  in der die Ingame Daten (Spielerinventar, Zugangsdaten, Blöcke der Welt, etc.) gespeichert werden (die Zugangsdaten sind in der jeweiligen world.mt zu finden (oder in der Passwortdatenbank siehePostgres).+Jede Welt hat eine eigene //Postgres-Datenbank//  in der die Ingame Daten (Spielerinventar, Zugangsdaten, Blöcke der Welt, etc.) gespeichert werden (die Zugangsdaten sind in der jeweiligen world.mt zu finden (oder in der Passwortdatenbank siehe Postgres).
  
 Jede Welt hat in Systemd einen eigenen Service. Jede Welt hat in Systemd einen eigenen Service.
Zeile 219: Zeile 221:
 ++++Die Installation ist folgendermaßen erfolgt: | ++++Die Installation ist folgendermaßen erfolgt: |
  
-Navigiere in den gewünschten Ordner  +Navigiere in den gewünschten Ordner 
-  export branch=$(printf "Enter Minetest version: " >&2;read r;echo "$r")+<code> 
 + 
 +export branch=$(printf "Enter Minetest version: ">&2;read r;echo "$r") 
 + 
 +</code> 
 Aktuelle Version: **stable-5** Aktuelle Version: **stable-5**
-  (sudo apt-get install -y unzip g{it,cc,++} {c,}make {zlib1g,lib{sqlite3,curl4-openssl,luajit-5.1,leveldb,pq}}-dev&&+ 
-  cd $(mktemp -dp /var/tmp)&&wget downloads.sourceforge.net/irrlicht/irrlicht-1.8.4.zip -O irr.zip&&+<code> 
-  unzip -q irr.zip&&git clone -b $branch https://github.com/minetest/minetest&&cd minetest&&+(sudo apt-get install -y unzip g{it,cc,++} {c,}make {zlib1g,lib{sqlite3,curl4-openssl,luajit-5.1,leveldb,pq}}-dev&&
-  git clone -b $branch {https://github.com/minetest,games}/minetest_game&&+cd $(mktemp -dp /var/tmp)&&wget downloads.sourceforge.net/irrlicht/irrlicht-1.8.4.zip -O irr.zip&&
-  cmake . -D{BUILD_CLIENT=0,{BUILD_SERVER,RUN_IN_PLACE,ENABLE_POSTGRESQL,ENABLE_CURSES}=1,+unzip -q irr.zip&&git clone -b $branch https://github.com/minetest/minetest&&cd minetest&&
-  IRRLICHT_INCLUDE_DIR=$PWD/../irrlicht-1.8.4/include,POSTGRESQL_INCLUDE_DIR=/usr/include/postgresql/,+git clone -b $branch {https://github.com/minetest,games}/minetest_game&&
-  POSTGRESQL_LIBRARY=/usr/lib/x86_64-linux-gnu/libpq.so.5.13,PostgreSQL_TYPE_INCLUDE_DIR=/usr/include/postgresql/}&&+cmake . -D{BUILD_CLIENT=0,{BUILD_SERVER,RUN_IN_PLACE,ENABLE_POSTGRESQL,ENABLE_CURSES}=1,
-  make -j$(nproc) package&&p=$(echo minetest-*.tar.gz)&&cp "$p" ~&& \ +IRRLICHT_INCLUDE_DIR=$PWD/../irrlicht-1.8.4/include,POSTGRESQL_INCLUDE_DIR=/usr/include/postgresql/,
-  printf '\n\n\e[1;32mBuild successful, an archive called "%s" was placed in your home folder.\nTo run the server, extract the archive\ +POSTGRESQL_LIBRARY=/usr/lib/x86_64-linux-gnu/libpq.so.5.13,PostgreSQL_TYPE_INCLUDE_DIR=/usr/include/postgresql/}&&
-  and run the executable inside the 'bin/' folder\e[0m\n' "$p")||printf '\n\n\e[1;31mBuild failed, review log output above to identify and fix the issue.\e[0m\n+make -j$(nproc) package&&p=$(echo minetest-*.tar.gz)&&cp "$p" ~&& \ 
 +printf '\n\n\e[1;32mBuild successful, an archive called "%s" was placed in your home folder.\nTo run the server, extract the archive\ 
 +and run the executable inside the 'bin/' folder\e[0m\n' "$p")||printf '\n\n\e[1;31mBuild failed, review log output above to identify and fix the issue.\e[0m\n 
 + 
 +</code> 
 ++++ ++++
  
-===== Zertifikate=====+===== Zertifikate =====
  
 Die Zertifikate für das Backend wurden mit folgendem Kommando erstellt: Die Zertifikate für das Backend wurden mit folgendem Kommando erstellt:
Zeile 244: Zeile 256:
 Saving debug log to /var/log/letsencrypt/letsencrypt.log Saving debug log to /var/log/letsencrypt/letsencrypt.log
  
-Renewing an existing certificate \\ Created an SSL vhost at /etc/apache2/sites-available/000-default-le-ssl.conf \\ Enabled Apache socache_shmcb module \\ Enabled Apache ssl module \\ Deploying Certificate to VirtualHost /etc/apache2/sites-available/000-default-le-ssl.conf \\ Enabling available site: /etc/apache2/sites-available/000-default-le-ssl.conf+Renewing an existing certificate  Created an SSL vhost at /etc/apache2/sites-available/000-default-le-ssl.conf  Enabled Apache socache_shmcb module  Enabled Apache ssl module  Deploying Certificate to VirtualHost /etc/apache2/sites-available/000-default-le-ssl.conf  Enabling available site: /etc/apache2/sites-available/000-default-le-ssl.conf
  
-Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. \\ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \\ 1: No redirect - Make no further changes to the webserver configuration. \\ 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for \\ new sites, or if you're confident your site works on HTTPS. You can undo this \\ change by editing your web server's configuration. \\ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \\ Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2 \\ Redirecting vhost in /etc/apache2/sites-enabled/000-default.conf to ssl vhost in /etc/apache2/sites-available/000-default-le-ssl.conf+Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  1: No redirect - Make no further changes to the webserver configuration.  2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for  new sites, or if you're confident your site works on HTTPS. You can undo this  change by editing your web server's configuration.  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2  Redirecting vhost in /etc/apache2/sites-enabled/000-default.conf to ssl vhost in /etc/apache2/sites-available/000-default-le-ssl.conf
  
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \\ Your existing certificate has been successfully renewed, and the new certificate \\ has been installed.+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  Your existing certificate has been successfully renewed, and the new certificate  has been installed.
  
 The new certificate covers the following domains: minetest.lmz-bw.de The new certificate covers the following domains: minetest.lmz-bw.de
  
-You should test your configuration at: \\ [[https://www.ssllabs.com/ssltest/analyze.html?d=minetest.lmz-bw.de|https://www.ssllabs.com/ssltest/analyze.html?d=minetest.lmz-bw.de]] \\+You should test your configuration at:  [[https://www.ssllabs.com/ssltest/analyze.html?d=minetest.lmz-bw.de|https://www.ssllabs.com/ssltest/analyze.html?d=minetest.lmz-bw.de]] 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  
-IMPORTANT NOTES: \\ - Congratulations! Your certificate and chain have been saved at: \\ /etc/letsencrypt/live/minetest.lmz-bw.de/fullchain.pem \\ Your key file has been saved at: \\ /etc/letsencrypt/live/minetest.lmz-bw.de/privkey.pem \\ Your cert will expire on 2021-04-07. To obtain a new or tweaked \\ version of this certificate in the future, simply run certbot again \\ with the "certonly" option. To non-interactively renew *all* of \\ your certificates, run "certbot renew" \\ - If you like Certbot, please consider supporting our work by:+IMPORTANT NOTES:  - Congratulations! Your certificate and chain have been saved at:  /etc/letsencrypt/live/minetest.lmz-bw.de/fullchain.pem  Your key file has been saved at:  /etc/letsencrypt/live/minetest.lmz-bw.de/privkey.pem  Your cert will expire on 2021-04-07. To obtain a new or tweaked  version of this certificate in the future, simply run certbot again  with the "certonly" option. To non-interactively renew *all* of  your certificates, run "certbot renew"  - If you like Certbot, please consider supporting our work by:
  
-Donating to ISRG / Let's Encrypt: [[https://letsencrypt.org/donate|https://letsencrypt.org/donate]] \\+Donating to ISRG / Let's Encrypt: [[https://letsencrypt.org/donate|https://letsencrypt.org/donate]] 
 Donating to EFF: [[https://eff.org/donate-le|https://eff.org/donate-le]] Donating to EFF: [[https://eff.org/donate-le|https://eff.org/donate-le]]
  
Zeile 266: Zeile 278:
 [[https://www.keycloak.org/docs/11.0/server_installation/index.html#_start_cli|https://www.keycloak.org/docs/11.0/server_installation/index.html#_start_cli]] [[https://www.keycloak.org/docs/11.0/server_installation/index.html#_start_cli|https://www.keycloak.org/docs/11.0/server_installation/index.html#_start_cli]]
  
-openssl pkcs12 -export \ \\ -in /etc/letsencrypt/live/minetest.lmz-bw.de/fullchain.pem \ \\ -inkey /etc/letsencrypt/live/minetest.lmz-bw.de/privkey.pem \ \\ -out /tmp/minetest.lmz-bw.de_2.p12 \ \\ -name <nowiki>http://minetest.lmz-bw.de/</nowiki> \ \\ -CAfile /etc/letsencrypt/live/minetest.lmz-bw.de/fullchain.pem \ \\ -caname "Let's Encrypt Authority X3" \ \\ -password pass:changeit+openssl pkcs12 -export   -in /etc/letsencrypt/live/minetest.lmz-bw.de/fullchain.pem   -inkey /etc/letsencrypt/live/minetest.lmz-bw.de/privkey.pem   -out /tmp/minetest.lmz-bw.de_2.p12   -name <nowiki>http://minetest.lmz-bw.de/</nowiki>   -CAfile /etc/letsencrypt/live/minetest.lmz-bw.de/fullchain.pem   -caname "Let's Encrypt Authority X3"   -password pass:changeit
  
-keytool -importkeystore \ \\ -deststorepass changeit \ \\ -destkeypass changeit \ \\ -deststoretype pkcs12 \ \\ -srckeystore /tmp/minetest.lmz-bw.de_2.p12 \ \\ -srcstoretype PKCS12 \ \\ -srcstorepass changeit \ \\ -destkeystore /tmp/minetest.lmz-bw.de_2.keystore \ \\ -alias minetest.lmz-bw.de/%%+keytool -importkeystore   -deststorepass changeit   -destkeypass changeit   -deststoretype pkcs12   -srckeystore /tmp/minetest.lmz-bw.de_2.p12   -srcstoretype PKCS12   -srcstorepass changeit   -destkeystore /tmp/minetest.lmz-bw.de_2.keystore   -alias minetest.lmz-bw.de/%%
  
 ===== Datenmodell ===== ===== Datenmodell =====
Zeile 274: Zeile 286:
 Die Anwendung greift auf Daten aus vier Quellen zu. Die Anwendung greift auf Daten aus vier Quellen zu.
  
-^Quellenname  ^Beschreibung  | +^ Quellenname                       ^ Beschreibung                                                                                                                                 ^ 
-|Keycloakdaten  |Hier werden alle Daten des Benutzers gespeichert (Name, Schule, Passwort), diese werden im Normalfall nicht durch die Anwendung verändert +| Keycloakdaten                     | Hier werden alle Daten der Benutzenden gespeichert (Name, Schule, Passwort), diese werden im Normalfall nicht durch die Anwendung verändert 
-|Datenbank "Backendata"  |Hier werden die zur (Klassenzimmer)verwaltung benötigten Informationen gespeichert  +| Datenbank "Backendata"            | Hier werden die zur (Lernraum)verwaltung benötigten Informationen gespeichert                                                                
-|Datenbanken "k**"  |Jede Welt besitzt eine eigene Datenbank auf der spielrelevanten Informationen gespeichert werden (z.B. Spielpasswörter, Inventar)  +| Datenbanken "k**"                 | Jede Welt besitzt eine eigene Datenbank auf der spielrelevanten Informationen gespeichert werden (z.B. Spielpasswörter, Inventar)            
-|Verzeichnis minetest-live/worlds  |Hier werden die nötigen Konfigurationsinformationen zu den Klassenzimmer gespeichert (Mods, Spawnpoint, etc.)  |+| Verzeichnis minetest-live/worlds  | Hier werden die nötigen Konfigurationsinformationen zu den Lernräumen gespeichert (Mods, Spawnpoint, etc.)                                   |
  
 Die Template Datenbank wird als Template markiert und Connections werden verboten, da die Datenbank bei bestehenden Verbindung nicht als Template verwendet werden kann. \\ Dies haben wir mit den folgenden Commands eingerichtet: Die Template Datenbank wird als Template markiert und Connections werden verboten, da die Datenbank bei bestehenden Verbindung nicht als Template verwendet werden kann. \\ Dies haben wir mit den folgenden Commands eingerichtet: