Bengelsystem/setupWizard.json

82 lines
10 KiB
JSON

{
"header": "<!DOCTYPE html>\n<html xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<meta charset=\"utf-8\"\/>\n<meta name=\"generator\" content=\"Docutils 0.16: http:\/\/docutils.sourceforge.net\/\" \/>\n<title>Bengelsystem Setup Wizard<\/title>\n<head><\/head>\n<body><h1>Bengelsystem Setup Wizard<\/h1><p>Diese Seite führt durch die Einrichtung der Helferdatenbank.<\/p>",
"firststep": "basedata",
"steps": [
{
"id": "basedata",
"page": "<h2>Basisinformationen für die Convention<\/h2><p>Zunächst brauchen wir ein paar allgemeine Angaben für die Convention:<\/p><form action=\"Setup.php\" method=\"post\"><fieldset><legend>Eventinformationen<\/legend><input type=\"hidden\" name=\"stepfrom\" value=\"basedata\" \/><input type=\"hidden\" name=\"step\" value=\"selectdatabase\" \/><label for=\"eventname\">Eventname (\"Meine tolle Jonglierconvention\") <\/label><input type=\"text\" id=\"eventname\" name=\"eventname\" \/><br \/><label for=\"startdate\">Beginn der Convention: <\/label><input type=\"date\" id=\"startdate\" name=\"startdate\" \/><br \/><label for=\"duration\">Dauer (Tage): <\/label><input type=\"number\" min=\"1\" value=\"3\" id=\"duration\" name=\"duration\" \/><br \/><label for=\"timezone\">Zeitzone <\/label><input type=\"text\" id=\"timezone\" name=\"timezone\" value=\"Europe\/Berlin\" \/><br \/><label for=\"locale\">Lokalisierung <\/label><input type=\"text\" id=\"locale\" name=\"locale\" value=\"de_DE.UTF-8\" \/><\/fieldset><fieldset><legend>Technische Details</legend><label for=\"logfile\">Logfile <\/label><input type=\"text\" id=\"logfile\" name=\"logfile\" value=\"..\/convention.log\" \/><br \/><label for=\"infourl\">Informations URL <\/label><input type=\"text\" id=\"infourl\" name=\"infourl\" value=\"https://convention.example.org\" \/><br \/><label for=\"urlprefix\">URL Prefix<\/label><input type=\"text\" id=\"urlprefix\" name=\"urlprefix\" value=\"https://convention.example.org/Bengelsystem\" \/><br \/><label for=\"secretkey\">Geheimer Schlüssel <\/label><input type=\"password\" id=\"secretkey\" name=\"secretkey\" \/><br \/><label for=\"secretverification\">Geheimer Schlüssel für Verifikation<\/label><input type=\"password\" id=\"secretverification\" name=\"secretverification\" \/></fieldset><input type=\"submit\" value=\"Weiter\" \/><\/form>"
},
{
"id": "selectdatabase",
"page": "<h2>Datenbanktyp auswählen<\/h2><p>Für die meisten Conventions sollte eine SQLite Datenbank ausreichen. In diesem Fall ist die Datenbank in einer einzelnen Datei und es ist nicht nötig eine separate Datenbank aufzusetzen.<\/p><form action=\"Setup.php\" method=\"post\"><fieldset><legend>Datenbank auswählen<\/legend><input type=\"hidden\" name=\"stepfrom\" value=\"selectdatabase\" \/><input type=\"radio\" id=\"sqlite\" name=\"databasetype\" value=\"SQLite\" checked \/><label for=\"sqlite\">SQLite<\/label><br \/><input type=\"radio\" id=\"mariadb\" name=\"databasetype\" value=\"MariaDB\" \/><label for=\"mariadb\">MariaDB<\/label><br \/><input type=\"submit\" value=\"Weiter\" \/><\/fieldset><\/form>",
"redirects": [
{
"==": {"databasetype": "SQLite"},
"id": "setupsqlite"
},
{
"!=": {"databasetype": "SQLite"},
"id": "enterlogindata"
}
]
},
{
"id": "setupsqlite",
"page": "<h2>Datenbanksoftware installieren<\/h2><p>Hier müssen ein paar Sachen per Hand in einem Terminal gemacht werden, die der Setupwizard vernünftigerweise nicht selbst machen sollte da sie Adminrechte (root) erfordern.\r\n<\/p><p>Wir müssen das sqlite Modul für PHP installieren, bitte dazu folgendes in der Shell (z.b. bash) eingeben:<\/p>\r\n<pre><code>sudo apt-get install php-sqlite3<\/code><\/pre><p>Wenn eine Fehlermeldung kommt, dass man nicht in der sudoers Datei ist (oder so ähnlich), vorher folgendes eingeben um zum Adminbenutzer zu wechseln (wenn man zum Adminbenutzer gewechselt ist kann man das vorausgestellte sudo bei allen Kommandos weglassen, es schadet aber auch nicht):<\/p><pre><code>su -<\/code><\/pre><form action=\"Setup.php\" method=\"post\"><input type=\"submit\" value=\"Datenbanksoftware ist installiert\" \/><input type=\"hidden\" name=\"step\" value=\"createdatabase\"\/><input type=\"hidden\" name=\"stepfrom\" value=\"setupsqlite\"\/><\/form>"
},
{
"id": "enterlogindata",
"page": "<h2>Logindaten für die Datenbank eingeben<\/h2>\r\n<p>Bitte hier zunächst die Logindaten für die Datenbank eingeben. Es muss in der Regel nur ein Passwort vergeben werden (möglichst Sonderzeichen wie \" oder ; vermeiden oder escapen - da die Datenbankverbindung ohnehin nur lokal sein sollte und durch die Firewall geblockt sollte die Sicherheit von diesem Passwort nicht kritisch sein) und die anderen Werte können unverändert bleiben.<\/p>\r\n<form action=\"Setup.php\" method=\"post\">\r\n <fieldset>\r\n <legend>Logindaten eingeben<\/legend>\r\n <input type=\"hidden\" name=\"step\" value=\"setupmariadb\" \/>\r\n <input type=\"hidden\" name=\"stepfrom\" value=\"enterlogindata\" \/>\r\n <label for=\"host\">Hostname<\/label><br \/>\r\n <input type=\"text\" id=\"host\" name=\"host\" value=\"localhost\" \/><br \/>\r\n <label for=\"user\">Benutzername<\/label><br \/>\r\n <input type=\"text\" id=\"user\" name=\"user\" value=\"helferdb\" \/><br \/>\r\n <label for=\"password\">Passwort<\/label><br \/>\r\n <input type=\"password\" id=\"password\" name=\"password\" \/><br \/>\r\n <label for=\"dbname\">Datenbankname<\/label><br \/>\r\n <input type=\"text\" id=\"dbname\" name=\"dbname\" value=\"helferdb\" \/><br \/>\r\n <input type=\"submit\" value=\"Datenbank einrichten\" \/>\r\n<\/fieldset>\r\n<\/form>\r\n",
"redirects": [
{
"==": {"password": ""},
"id": "enterlogindata",
"warning": "<p style=\"color:red\"><i>Bitte Passwort eingeben!<\/i><\/p>"
},
{
"==": {
"host":"",
"user":"",
"dbname":""
},
"id": "enterlogindata",
"warning": "<p style=\"color:red\"><i>Bitte alle Felder eingeben!<\/i><\/p>"
}
]
},
{
"id": "setupmariadb",
"page": [
{"text": "<h2>Datenbanksoftware installieren und starten<\/h2><p>Hier müssen ein paar Sachen per Hand in einem Terminal gemacht werden, die der Setupwizard vernünftigerweise nicht selbst machen sollte da sie Adminrechte (root) erfordern.\r\n<\/p><p>Bitte zunächst mariadb einrichten (oder mysql) und dazu folgendes in der Shell (z.b. bash) eingeben:<\/p>\r\n<pre><code>sudo apt-get install mariadb-server<\/code><\/pre><p>Wenn eine Fehlermeldung kommt, dass man nicht in der sudoers Datei ist (oder so ähnlich), vorher folgendes eingeben um zum Adminbenutzer zu wechseln (wenn man zum Adminbenutzer gewechselt ist kann man das vorausgestellte sudo bei allen Kommandos weglassen, es schadet aber auch nicht):<\/p><pre><code>su -<\/code><\/pre><p>Zum Starten der Datenbank sollte jetzt folgendes Kommando ausgeführt werden:<\/p><pre><code>sudo systemctl start mariadb<\/code><\/pre><p>Wenn die Datenbank automatisch bei Start des Computers gestartet werden soll, bitte folgendes eingeben<\/p><pre><code>sudo systemctl enable mariadb<\/pre><\/code><h2>In der Datenbank anmelden und den Benutzer anlegen</h2><p>Jetzt sollte der Datenbankbenutzer und die Datenbank angelegt werden. Dazu müssen wir uns einmal als <i>root</i> Benutzer von der Datenbank selbst (nicht zu verwechseln mit dem root Benutzer vom System) anmelden:<\/p><pre><code>sudo mysql -u root -p<\/code><\/pre><p>Es wird hier nach dem Datenbankpasswort gefragt, aber wenn es nicht gesetzt ist kann man es auch einfach leer lassen.<\/p><p>Um die Datenbank anzulegen bitte in den Datenbankprompt folgendes Kommando eingeben:<\/p><pre><code>CREATE DATABASE "},
{"variable": "enterlogindata\/dbname"},
{"text": " CHARACTER SET = 'utf8mb4' COLLATE = 'utf8mb4_german2_ci';<\/code><\/pre><p>Wir können jetzt den Datenbankbenutzer anlegen:<\/p><pre><code>CREATE USER '"},
{"variable": "enterlogindata\/user"},
{"text": "'@'"},
{"variable": "enterlogindata\/host"},
{"text":"' IDENTIFIED BY \""},
{"variable": "enterlogindata\/password"},
{"text":"\";<\/code><\/pre><p>und ihm alle Rechte auf der Datenbank geben:<\/p><pre><code>GRANT ALL PRIVILEGES ON "},
{"variable": "enterlogindata\/dbname"},
{"text":".* TO '"},
{"variable": "enterlogindata\/user"},
{"text": "'@'"},
{"variable": "enterlogindata\/host"},
{"text": "';<\/code><\/pre><p>Wir müssen außerdem die Änderung anwenden:<\/p><pre><code>FLUSH PRIVILEGES;<\/code><\/pre><pre><code>QUIT;<\/code><\/pre><form action=\"Setup.php\" method=\"post\"><input type=\"submit\" value=\"Datenbank ist angelegt\" \/><input type=\"hidden\" name=\"step\" value=\"createdatabase\"\/><input type=\"hidden\" name=\"stepfrom\" value=\"setupmariadb\"\/><\/form>"}
]
},
{
"id": "createdatabase",
"page": "<h2>Datenbank einrichten<\/h2><p>Wir haben jetzt alle Informationen um die Datenbankeinstellungen zu speichern. Dazu wird die Konfiguration geschrieben und anschließend ein Verbindungsversuch unternommen.<\/p><form action=\"Setup.php\" method=\"post\"><input type=\"submit\" value=\"Datenbankkonfiguration schreiben\" \/><input type=\"hidden\" name=\"step\" value=\"createdatabasetables\"\/><input type=\"hidden\" name=\"stepfrom\" value=\"createdatabase\"\/><\/form>"
},
{
"id": "createdatabasetables",
"page": "<h2>Tabellen für Datenbank einrichten<\/h2><p>Wir können jetzt alle Tabellen in der Datenbank anlegen.<\/p><form action=\"Setup.php\" method=\"post\"><input type=\"submit\" value=\"Datenbanktabellen anlegen\" \/><input type=\"hidden\" name=\"step\" value=\"createservices\"\/><input type=\"hidden\" name=\"stepfrom\" value=\"createdatabasetables\"\/><\/form>"
},
{
"id": "createservices",
"page": "<h2>Dienste in Datenbank anlegen<\/h2>"
}
],
"footer": "</body></html>"
}