So sicherst Du Deine Daten und spielst neue ETB-Versionen ein.
Was Du sichern musst
Drei Sachen, alle drei zusammen — sonst sind die Daten nicht wiederherstellbar:
- Datenbank — alle Einsätze, Schwerpunkte, User, Konfiguration.
storage/uploads/— Anhänge in Kommentaren (Bilder, PDFs, Sprachnachrichten).public/branding/— Dein hochgeladenes Logo und Favicon.
config/.env mit den DB-/Mail-/Telegram-Zugangsdaten ist
sicherheitskritisch. Sichere die separat und verschlüsselt — am besten in
Deinem Passwort-Manager, nicht im selben Backup wie der DB-Dump.
DB-Dump
mysqldump --single-transaction \
--quick \
--routines \
-u etb_user -p etb_db \
| gzip > etb-$(date +%Y%m%d-%H%M).sql.gz
--single-transaction sorgt dafür, dass das Backup einen konsistenten
Snapshot kriegt, ohne die Tabellen zu locken — der Live-Betrieb läuft weiter.
Storage-Backup
tar czf etb-uploads-$(date +%Y%m%d-%H%M).tar.gz \
/var/www/etb/storage/uploads \
/var/www/etb/public/branding
Backup-Frequenz
Empfehlung:
- DB-Dump: täglich nachts, 7 Tage rotieren
- Storage-Backup: täglich oder wöchentlich, je nach Anhang-Volumen
.env: einmal nach jedem Setting-Change in den Passwort-Manager
Für Profis: ein wöchentlicher Vollbackup + tägliche inkrementelle Backups via
rsnapshot o. ä.
Restore — der Ernstfall
- Frische DB anlegen, dann:
zcat etb-20260524-0300.sql.gz | mysql -u etb_user -p etb_neu storage/-Backup zurückspielen:tar xzf etb-uploads-20260524-0300.tar.gz -C /config/.envaus dem Passwort-Manager wiederherstellen, ggf. DB-Name anpassen.- Webserver konfigurieren, Cron neu setzen.
- Test-Login, Test-Mail, alles okay.
⚠️ Achtung: Nach dem Restore unbedingt einmal als Admin einloggen und
/admin/system-status.phpchecken. Wenn etwas nicht passt, siehst Du es dort sofort.
Updates einspielen
Updates kommen über git pull auf das Repo. Vor jedem Update:
- Backup machen (DB + Storage).
- Release-Notes lesen auf der CHANGELOG / Releases auf GitLab — gibt es Änderungen, die Handarbeit verlangen? Manuelle Migrationen?
- Update einspielen:
cd /var/www/etb git fetch --tags git checkout v4.9.5 # gewünschter Release-Tag - Schema-Migration: Beim nächsten Browser-Aufruf einer beliebigen
Admin-Seite zeigt das ETB einen Schema-Banner, wenn neue Tabellen anzulegen
sind. Klick auf „→ Jetzt anlegen" — fertig. Oder gehe direkt auf
/admin/schema-check.php. - System-Status prüfen:
/admin/system-status.php— alles grün? - Test-Lauf: Test-Mail schicken, prüfen ob ein Einsatz daraus wird.
⚠️ Ein Update kann alle Nutzer einmalig abmelden. Mit der Umstellung auf einen einheitlichen Namen wurde der interne Sitzungs-Cookie umbenannt (
FFWAC_SID→FFETB_SID). Beim ersten Update über diesen Stand hinweg werden deshalb alle laufenden Sitzungen ungültig — jeder muss sich danach einmal neu anmelden. Das ist gewollt und kein Defekt; passwortlos wird niemand ausgesperrt, nur einmal neu eingeloggt. Plane das Update entsprechend (nicht mitten in einer Lage).ℹ️ Schema-Check nach jedem Update ausführen. Updates bringen oft neue Tabellen und Spalten mit, die der Schema-Check anlegt. Dieses Release z. B. bringt u. a. den Stichwort-Katalog, temporäre Einsatz-Rollen, die manuelle Alarm-Auslösung und den Alarm-Knopf mit — der Schema-Check legt die zugehörigen Tabellen (
stichwort_katalog,alarm_einsatz_trigger,alarm_trigger_throttle,alarm_role_offer) und Spalten (aneinsaetzez. B.erledigt_by/erledigt_at/stichwort_katalog_id, anusersdietemp_role…-Spalten, analarm_rulemanual_address_mode/manual_strasse/manual_ortsowietemp_role_offer/temp_role_offer_hours) an und rüstet die neuen Default-Rechte nach (user.assign_temp_role,alarm.trigger_manual). Bis das migriert ist, läuft die App grundsätzlich weiter — die neuen Funktionen greifen aber erst danach, und der Schema-Banner bleibt sichtbar, bis Du auf „Reparieren" geklickt hast.ℹ️ Update auf den Meldungs-Bus: Hier legt der Schema-Check acht neue Tabellen an — sechs für den Bus (
user_loeschgruppe,meldung_arten,meldung_regeln,meldungen,meldung_zustellungen,meldung_kanal_ziele) und zwei für Web Push (push_abos,push_einladungen). Dazu spielt er den Meldungskatalog samt Startvorlagen ein, ergänzt die Rolle Einsatzkraft und trägt das neue Recht „Nachricht verschicken" (mitteilung.durchsage) für alle Rollen nach, die schon „Alarm manuell auslösen" haben.An der Alarmierung ändert sich dabei nichts: Die Chat-IDs aus der
.envgelten als Rückfall weiter, es geht dieselbe Nachricht in denselben Chat. Erst danach kannst Du unter Meldungen in Ruhe auf eigene Zuordnungen umstellen.Vor dem Schema-Check protokolliert der Bus nichts und die Seite das Postfach bleibt leer — der laufende Betrieb ist davon nicht betroffen.
⚠️ Web Push kommt nicht von selbst. Der Zustellweg bleibt nach dem Update auf Telegram stehen; die neuen Tabellen sind nur die Voraussetzung. Umgestellt wird bewusst von Hand — und erst, wenn genug Geräte eingerichtet sind. Der Weg dahin steht unter Web Push. Voraussetzung dafür ist eine Instanz unter HTTPS; ohne Zertifikat sperrt jeder Browser die Benachrichtigungen.
ℹ️ Update auf den Rückkanal: Hier legt der Schema-Check keine neue Tabelle an, sondern acht Spalten (Antwort-Ausweis und Zusatztext an den Zustellungen, vier für die Sammelmeldung, der Meldungsbezug der Telegram-Antworten und der Besitznachweis der Geräte) sowie zwei Indizes. Außerdem trägt er die beiden neuen Meldungsarten Sammelmeldung und Freie Nachricht samt Startvorlagen nach.
Vor dem Lauf lassen sich Rückmeldungen aus der App und vom Sperrbildschirm nicht speichern, es gibt keine Sammelmeldung und die Seite Nachricht verschickt nichts. Alarmierung und Rückmeldungen aus dem Telegram-Chat laufen unverändert weiter.
Danach zwei Dinge prüfen:
- Wer die Seite Rückmeldungen braucht, hat jetzt
admin.accessnötig — vorher genügte eine Anmeldung.- Wer eine Nachricht verschicken darf, steht in Rollen & Rechte (
mitteilung.durchsage).ℹ️ Update auf Postfach und Profil: Der Schema-Check ergänzt zwei Spalten an den Geräten (
push_abos.freigegeben_atfür die Freigabe,push_abos.letzter_empfangfür den Empfangsnachweis), trägt das Recht „Rückmeldungen anderer sehen" (mitteilung.rueckmeldungen) für alle Rollen nach, die schon „Nachricht verschicken" haben, ergänzt die Meldungsart „Neues Gerät angemeldet" und markiert einmalig alle bereits angemeldeten Geräte als freigegeben.Vor dem Lauf stellt das ETB weiter an alle Geräte zu (ausdrücklicher Rückfall — eine unalarmierte Wehr wäre schlimmer), aber die Geräte-Freigabe wirkt nicht und die Bereitschaftsanzeige bleibt leer. Danach prüfen: die Verteilung des neuen Rechts im Rollen-Editor, falls „Nachricht verschicken" bei Euch abweichend vom Standard vergeben ist.
ℹ️ Tipp: Spiele Updates immer außerhalb der Stoßzeiten ein — sonntags morgens ist meist ruhig. Bei einer aktiven Lage nicht upgraden.
Rolling Back
Falls ein Update Probleme macht:
cd /var/www/etb
git checkout v4.9.0 # vorheriger Release-Tag
Bei DB-Schema-Änderungen (selten, aber möglich): DB-Dump von vor dem Upgrade einspielen. Deshalb der nachdrückliche Hinweis oben: Backup vor Upgrade.
Sicherheits-Updates
PHP, MySQL, OS-Updates: ganz normal regelmäßig einspielen. Das ETB hat keine harten Versions-Anforderungen außer „PHP 8.1+" — wenn Dein PHP zu alt wird, kriegst Du beim Browser-Aufruf eine entsprechende Fehlermeldung.
Was als nächstes?
- Cron & Mail-Verarbeitung — was im Hintergrund läuft
- Diagnose — Werkzeuge zum Prüfen