Betrieb & Installation

Installation

So bringst Du das ETB auf Deinen eigenen Server. Der Großteil läuft über den Setup-Wizard — vorher musst Du nur die Voraussetzungen schaffen.

Voraussetzungen

  • PHP 8.1+ (getestet bis 8.4) mit den Extensions:
    • pdo_mysql (Datenbank)
    • imap (Mail-Postfach für Alarm-Mails)
    • mbstring, fileinfo, curl, dom, gd
  • MySQL 5.7+ oder MariaDB 10.3+
  • Webserver mit Document-Root auf public/ und Rewrite-Modul (Apache mod_rewrite oder Nginx)
  • Cron alle 1–5 Minuten, um neue Alarm-Mails abzufragen
  • IMAP-Postfach für die eingehenden Alarm-Mails der Leitstelle
  • Optional: SMTP-Postfach für ausgehende App-Mails (Passwort-vergessen). Getrennt vom IMAP-Postfach oben — siehe den SMTP-Block in Konfiguration. Ohne SMTP bleibt die „Passwort vergessen"-Selbsthilfe inaktiv (Admin setzt Passwörter dann selbst).
  • Optional: Telegram-Bot-Token, falls Du die App-Push-Benachrichtigung nutzen willst

Schritt 1: Code auf den Server bringen

git clone https://github.com/BrunSoftNet/ffw-einsatztagebuch.git /var/www/etb
cd /var/www/etb

ℹ️ Tipp: Lege das Repo so an, dass git pull für spätere Updates funktioniert. Schreibrechte für den Webserver-User braucht nur storage/ — der Rest darf read-only sein.

Schritt 2: Webserver konfigurieren

Document-Root muss auf public/ zeigen, nicht auf das Repo-Root. Sonst wären die src/-Dateien direkt aus dem Web erreichbar.

Apache (/etc/apache2/sites-available/etb.conf):

<VirtualHost *:443>
    ServerName etb.example.de
    DocumentRoot /var/www/etb/public

    <Directory /var/www/etb/public>
        AllowOverride All
        Require all granted
    </Directory>

    # SSL-Konfiguration nach deinem Setup …
</VirtualHost>

Nginx:

server {
    listen 443 ssl http2;
    server_name etb.example.de;
    root /var/www/etb/public;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

Schritt 3: .env anlegen

Das ETB liest Zugangsdaten aus config/.env. Eine Vorlage liegt unter config/.env.example:

cp config/.env.example config/.env

Diese Datei legst Du jetzt nicht selbst mit allen Werten an — der Setup-Wizard tut das gleich für Dich. Wichtig ist nur, dass die Datei existiert und die DB-Zugangsdaten eingetragen sind, damit der Wizard sich überhaupt erst mit der Datenbank verbinden kann:

DB_HOST=localhost
DB_NAME=etb
DB_USER=etb
DB_PASS=geheim
DB_TABLE_PREFIX=etb_

⚠️ Achtung: Den Tabellen-Präfix solltest Du vor dem ersten Setup festlegen. Wer den Präfix nachträglich ändern will, muss in der Datenbank Tabellen umbenennen — der Wizard tut das nicht.

Schritt 4: Im Browser öffnen

Rufe https://etb.example.de/ auf. Bei einer frischen Installation landest Du automatisch auf dem Setup-Wizard. Folge der Anleitung in Setup-Wizard.

Wenn etwas nicht klappt: Schau ins Webserver-Log und in logs/ im Repo. Häufige Fehler sind in der FAQ zusammengefasst.

Was wird auf der Platte gespeichert?

  • config/.env — sensible Zugangsdaten (DB, Mail, Telegram). Niemals ins Repo committen.
  • storage/uploads/ — Bilder und Dokumente, die in Kommentaren hochgeladen werden.
  • public/branding/ — Dein hochgeladenes Logo und Favicon.
  • logs/ — Cron-Logs, Mail-Parser-Logs, Telegram-Webhook-Logs.

Diese drei Verzeichnisse sicherst Du regelmäßig (siehe Backup & Updates).

Was als nächstes?