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
| Voraussetzung | Hinweis |
|---|---|
| Webspace mit PHP 8.1 oder neuer | Getestet 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 Datenbank | Host (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
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

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

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

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

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

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“).
public/setup.php vom Server. Das ist nicht zwingend, aber sauber.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
- Melde dich an (
https://deine-domain.de/→ „Anmelden“). - Folge der Checkliste im nächsten Kapitel „Erste Schritte nach der Installation“.
- Richte unter System › E-Mail-Versand den Mailzugang ein (Benachrichtigungen, Passwort-Mails).
- Lege beim Hoster zwei Cronjobs an, siehe unten.
- 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.
| Zweck | Adresse | Takt |
|---|---|---|
| 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.phpfü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.
- 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.phpauf, Schritt 1 zeigt es. - „config/-Ordner beschreibbar“ ist rot: Dem Ordner
configdie 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.phpfehlt. 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.