Zum Inhalt springen

Installation und Inbetriebnahme

Dieses Kapitel richtet sich an die Person, die das System auf einem Server einrichtet. Du brauchst dafür Zugang zum Webspace (FTP oder Dateimanager) und zu einer leeren Datenbank. Die Installation dauert etwa zehn Minuten.

Was du brauchst

VoraussetzungHinweis
Webspace mit PHP 8.1 oder neuerGetestet mit PHP 8.2 und 8.3. Erforderliche Erweiterungen: pdo_mysql, mbstring, fileinfo, zip, json. Für das Webmail (Roundcube) zusätzlich intl, pdo_sqlite und openssl.
Eine MariaDB-Datenbank (ab Version 10.4)Reines MySQL wird nicht unterstützt: Die Datenbank-Änderungen nutzen MariaDB-Schreibweisen wie ADD COLUMN IF NOT EXISTS. Die Datenbank sollte leer sein und den Zeichensatz utf8mb4 haben.
HTTPS (Zertifikat)Pflicht für die Handy-App, Push-Nachrichten, QR-Anmeldung per Kamera und sichere Anmeldung. Die meisten Hoster bieten das kostenlos an.
Zugang zu den Zugangsdaten der DatenbankHost (oft localhost), Datenbankname, Benutzer, Passwort. Du bekommst sie vom Hoster.

Schritt 1: Dateien hochladen

Entpacke das Komplettpaket und lade die Ordner auf den Server. Die Ordnerstruktur muss erhalten bleiben:

verwaltung/            ← Hauptordner auf dem Server
├── app/               ← Programmcode (nicht öffentlich)
├── config/            ← Zugangsdaten (nicht öffentlich, beschreibbar)
├── installation/      ← Datenbank-Gesamtschema (nur zur Hilfe)
├── migrationen/       ← Datenbank-Änderungen, werden vom Setup ausgeführt
├── storage/           ← Uploads und Update-Sicherungen (nicht öffentlich, beschreibbar)
└── public/            ← Das ist der Webordner, den die Domain ausliefert
Wichtig: Stelle die Domain (bzw. Subdomain) so ein, dass sie auf den Ordner public zeigt, nicht auf den Hauptordner. Nur dann sind config, app und storage aus dem Internet nicht erreichbar. Wenn dein Hoster das nicht erlaubt, schützen die mitgelieferten .htaccess-Dateien in config und storage die Ordner, das ist aber nur die zweite Wahl.

Die Ordner config und storage müssen für den Webserver beschreibbar sein (meist Rechte 755 oder 775; beim Hoster steht, welche Rechte der Webserver braucht).

Schritt 2: Der Setup-Assistent

Rufe im Browser https://deine-domain.de/setup.php auf. Der Assistent führt in fünf Schritten durch die Einrichtung.

Schritt 1 von 5: Systemvoraussetzungen

Der Assistent prüft PHP-Version, Erweiterungen und ob der config-Ordner beschreibbar ist.
Der Assistent prüft PHP-Version, Erweiterungen und ob der config-Ordner beschreibbar ist.

Alle Punkte müssen grün sein. Ein roter Punkt nennt den Grund, zum Beispiel „config/-Ordner beschreibbar“. Beheben, dann die Seite neu laden.

Schritt 2 von 5: Datenbank

Die Zugangsdaten der Datenbank eintragen.
Die Zugangsdaten der Datenbank eintragen.

Trage Host, Datenbankname, Benutzer und Passwort ein. Der Assistent testet die Verbindung. Schlägt sie fehl, steht die Fehlermeldung des Datenbankservers da (meist „Access denied“ bei falschem Passwort oder „Unknown database“ bei falschem Namen).

Schritt 3 von 5: Datenbank einrichten

Ein Klick legt alle Tabellen an.
Ein Klick legt alle Tabellen an.

Mit „Datenbank einrichten“ führt das System alle Migrationen aus und legt dadurch alle Tabellen und die Berechtigungen an. Das dauert wenige Sekunden. Danach steht jede Migration mit „ausgeführt“ in der Liste. Wiederholst du den Schritt, steht dort „übersprungen (bereits ausgeführt)“. Das ist ungefährlich.

Schritt 4 von 5: Verein und Super-Admin

Vereinsname und die erste Administrationsperson.
Vereinsname und die erste Administrationsperson.

Gib den Vereinsnamen und die Daten der ersten Person ein. Sie wird Super-Admin. Das Passwort muss mindestens 10 Zeichen haben. Der Benutzername ist optional, die Anmeldung geht auch mit der E-Mail-Adresse.

Schritt 5 von 5: Fertig

Die Installation ist abgeschlossen.
Die Installation ist abgeschlossen.

Jetzt schreibt das System die Datei config/config.php mit den Datenbank-Zugangsdaten und einem zufälligen App-Geheimnis. Danach kann der Assistent nicht mehr erneut ausgeführt werden (der Aufruf von setup.php meldet „Diese Installation ist bereits abgeschlossen“).

Nach der Installation: Lösche public/setup.php vom Server. Das ist nicht zwingend, aber sauber.
Hintergrund: Das App-Geheimnis verschlüsselt sensible Daten in der Datenbank und erzeugt die Schlüssel für Push-Nachrichten. Sichere config/config.php getrennt und gib sie nie weiter. Geht sie verloren oder ändert sich das Geheimnis, können verschlüsselte Daten nicht mehr gelesen werden, und Mitglieder müssen Push auf ihren Geräten neu einschalten.

Nach dem Setup: gleich einrichten

  1. Melde dich an (https://deine-domain.de/ → „Anmelden“).
  2. Folge der Checkliste im nächsten Kapitel „Erste Schritte nach der Installation“.
  3. Richte unter System › E-Mail-Versand den Mailzugang ein (Benachrichtigungen, Passwort-Mails).
  4. Lege beim Hoster zwei Cronjobs an, siehe unten.
  5. Aktiviere im Hosting-Panel ein tägliches Backup von Datenbank und Webspace.

Cronjobs (zeitgesteuerte Aufgaben)

Zwei Adressen müssen regelmäßig aufgerufen werden. Die genauen Adressen mit geheimem Token zeigt System › E-Mail-Versand an.

ZweckAdresseTakt
E-Mail-Warteschlange abarbeiten, Push-Erinnerungen (Schicht, Aufgaben, Material) auslösen…/mail_versand.php?token=…alle 5 Minuten
Zahl neuer Mails im Postfach aktualisieren (nur wenn das Postfach genutzt wird)…/postfach_abruf.php?token=…alle 5 bis 10 Minuten

Beim Hoster heißt das meist „Cronjobs“ oder „Zeitgesteuerte Aufgaben“. Als Befehl genügt ein Aufruf der Adresse, zum Beispiel curl -s "https://…".

Upload-Grenzen für Dateien

Der Dateibrowser erlaubt bis zu 25 MB je Datei, aber nie mehr, als der Server annimmt. Die mitgelieferte Datei public/.user.ini setzt upload_max_filesize = 26M und post_max_size = 28M. Das wirkt bei PHP-FPM- und CGI-Hosting (zum Beispiel webgo). Änderungen greifen je nach Hoster erst nach einigen Minuten. Ob die Grenzen angekommen sind, zeigt System › System-Check › Umgebung.

Hinweise für den Hoster webgo

  • Wähle für die Domain PHP 8.3 (die Variante „Advanced Security“ funktioniert).
  • Setze das Dokumentenverzeichnis der (Sub-)Domain auf …/public.
  • .htaccess-Einstellungen für PHP-Werte greifen dort nicht, nutze die .user.ini.
  • Sicherheitsheader wie HSTS stellst du im Hosting-Panel ein, nicht im Programmcode. Eine Änderung in app/bootstrap.php führte dort einmal zu einem HTTP-500-Fehler.
  • Cronjobs legst du im Panel unter „Cronjobs“ an.

Sicherung (Backup)

Gesichert werden müssen drei Dinge: die Datenbank, der Ordner storage/uploads (hochgeladene Dateien) und die Datei config/config.php. Der Programmcode lässt sich jederzeit aus dem Komplettpaket neu aufspielen. Mache vor jedem Update ein Datenbank-Backup, das System fragt danach.

Typische Fehler bei der Installation
  • Weißer Bildschirm oder „HTTP 500“ beim Aufruf: Meist eine zu alte PHP-Version oder fehlende Erweiterung. Prüfe die PHP-Version der Domain und rufe setup.php auf, Schritt 1 zeigt es.
  • „config/-Ordner beschreibbar“ ist rot: Dem Ordner config die Schreibrechte für den Webserver geben.
  • „Unknown database“ oder „Access denied“ in Schritt 2: Datenbankname, Benutzer und Passwort genau so eintragen, wie sie der Hoster vergibt (oft mit Präfix wie u12345_).
  • Fehler bei den Migrationen: Die Datenbank ist nicht leer oder nicht MariaDB. Leere Datenbank verwenden.
  • Meldung „Noch nicht installiert. Bitte zuerst setup.php aufrufen.“ (HTTP 500): config/config.php fehlt. Setup aufrufen. Ist die Datei da, aber falsch, kommt stattdessen eine Datenbank-Fehlermeldung.
  • Bilder und Stile fehlen (alles ungestaltet): Die Domain zeigt nicht auf den Ordner public.