Datensicherung und Wiederherstellung
Eine Datensicherung (Backup) enthält die vollständige Datenbank und alle Dateien von heinzelhaus: Dokumente, Logos und die für die Datenübernahme hochgeladenen Sicherungen aus Karthago oder PowerHaus. Mit ihr nehmen Sie nach einem Defekt, einem Fehler oder einem Serverwechsel Ihre Arbeit wieder auf. Eine Platte, die mit dem Server stirbt, ist kein Backup. Diese Seite zeigt, wie Sie sichern, wohin Sie die Sicherungen bringen und wie Sie sie zurückspielen.
Alle Schritte in den Einstellungen brauchen die Rolle „Administrator“ und eine starke Anmeldung, siehe Anmeldesicherheit und Zwei-Faktor-Pflicht. Sie finden sie unter Seitenleiste → Verwaltung → „Einstellungen“ → Reiter „Backup“.
Was gesichert wird
Abschnitt betitelt „Was gesichert wird“| In der Sicherung | Nicht in der Sicherung |
|---|---|
| Die vollständige Datenbank mit Konten, Rechten, Passkeys, Einstellungen und allen Buchungen | Die Datei .env mit den Kennwörtern und dem Schlüssel BETTER_AUTH_SECRET |
| Alle Dateien im Datenverzeichnis: Dokumente, Anhänge, Logos, hochgeladene Sicherungen aus der Datenübernahme | Die Datei docker-compose.override.yml |
Pro Sicherung eine Anleitung LIESMICH.txt |
Die Programmdateien. Die holt der Updater beim Update. |
Die Ordner backups, tmp und update im Datenverzeichnis |
Vollständig oder inkrementell
Abschnitt betitelt „Vollständig oder inkrementell“| Art | Was sie enthält |
|---|---|
| Vollständiges Backup | Die ganze Datenbank und alle Dateien |
| Inkrementelles Backup | Die ganze Datenbank, aber nur die Dateien, die sich seit dem letzten vollständigen Backup geändert haben |
Das ist eine bewusste Entscheidung. Eine echte inkrementelle Sicherung der Datenbank brauchte eine lückenlose Kette von Protokolldateien. Reißt die Kette, ist alles danach unbrauchbar. Ein eigener, vollständiger Dump je Lauf ist bei der üblichen Datenmenge (wenige hundert Megabyte, komprimiert) günstig und robust: Jeder Stand lässt sich einzeln wiederherstellen. „Inkrementell“ bezieht sich auf die Dateiablage, die den Großteil des Speicherplatzes ausmacht.
Das erste Backup muss ein vollständiges sein. Davor ist „Inkrementelles Backup“ gesperrt, und der Hinweis „Zuerst ein vollständiges Backup“ erscheint.
Eine Sicherung von Hand erstellen
Abschnitt betitelt „Eine Sicherung von Hand erstellen“Damit Sie vor einem Update, vor einer Datenübernahme oder zwischendurch einen Stand sichern.
- Öffnen Sie die Karte „Datensicherung“.
- Wollen Sie die Sicherung verschlüsseln, schalten Sie „Dieses Backup mit einem Passwort verschlüsseln“ ein. Tragen Sie ein „Passwort“ mit mindestens 12 Zeichen ein, wiederholen Sie es unter „Passwort wiederholen“ und setzen Sie das Häkchen „Ich habe das Passwort sicher notiert und weiß, dass diese Sicherung ohne es nicht wiederherstellbar ist.“
- Klicken Sie auf „Vollständiges Backup“ oder auf „Inkrementelles Backup“.
- Warten Sie, bis „Vollständiges Backup erstellt.“ oder „Inkrementelles Backup erstellt.“ erscheint. Schlägt es fehl, steht dort „Backup fehlgeschlagen“ mit dem Grund.
- Die Sicherung steht in der Karte „Vorhandene Sicherungen“. Die Tabelle zeigt „Zeitpunkt“, „Art“ (vollständig oder inkrementell, bei verschlüsselten mit dem Zusatz „Verschlüsselt“), die Größe von „Datenbank“ und „Dateien“ und den „Status“: „Fertig“, „Läuft“ oder „Fehler“. Neben den Knöpfen der Karte „Datensicherung“ steht, wie viele Sicherungen es gibt und wie viel Platz sie belegen.
Alle Benutzer erhalten eine Benachrichtigung: „Vollständiges Backup erstellt“ mit den Größen von Datenbank und Dateien oder „Backup fehlgeschlagen“ mit dem Grund.
Verschlüsselte Sicherungen
Abschnitt betitelt „Verschlüsselte Sicherungen“Eine verschlüsselte Sicherung schützt Ihre Daten dort, wo die Datei hinkommt: auf USB-Platten, in Cloud-Ablagen und bei einem Dienstleister. Gegen jemanden, der Zugriff auf den laufenden Server hat, schützt sie nicht, denn dort liegen die Daten ohnehin offen. Das Verfahren heißt scrypt für die Schlüsselableitung und AES-256-GCM für die Daten. Verschlüsselte Dateien tragen die Endung .enc. Auch das Verzeichnis der Dateien (manifest.json) wird mitverschlüsselt, weil Dokumentnamen personenbezogen sein können.
Die Anleitung LIESMICH.txt jeder Sicherung bleibt immer unverschlüsselt.
Automatisch sichern
Abschnitt betitelt „Automatisch sichern“Damit täglich gesichert wird, ohne dass jemand daran denken muss.
- Öffnen Sie die Karte „Zeitplan“.
- Schalten Sie „Automatische Backups aktivieren“ ein.
- Wählen Sie die „Uhrzeit“ (Vorgabe 02:30), den Wochentag bei „Vollständig am“ (Vorgabe Sonntag) und bei „Vollständige Backups aufbewahren“ eine Zahl von 1 bis 52 (Vorgabe 4).
- Klicken Sie auf „Zeitplan speichern“. Es erscheint „Backup-Zeitplan gespeichert.“
Am gewählten Wochentag läuft ein vollständiges, an allen anderen Tagen ein inkrementelles Backup. Fehlt ein vollständiges Backup als Basis, sichert der Hintergrunddienst ersatzweise vollständig.
Wohin die Sicherungen kommen
Abschnitt betitelt „Wohin die Sicherungen kommen“Standardmäßig liegen sie im Ordner backups des Datenverzeichnisses, auf demselben Server wie die Daten. Das schützt vor einem Bedienfehler, nicht vor einem Plattenausfall oder Diebstahl. Bringen Sie die Sicherungen deshalb auf ein anderes Gerät, auf eine der zwei Arten.
Sicherungen herunterladen
Abschnitt betitelt „Sicherungen herunterladen“- Suchen Sie die Sicherung in der Karte „Vorhandene Sicherungen“. Der Download ist nur bei Status „Fertig“ möglich.
- Klicken Sie in der Zeile auf das Download-Symbol. Es erscheint ein Menü mit „Datenbank-Dump“, „Dateien-Archiv“, „Anleitung“ und „Löschen“.
- Laden Sie für eine vollständige Sicherung außer Haus alle drei Dateien herunter: „Datenbank-Dump“, „Dateien-Archiv“ und „Anleitung“. Die Dateien heißen zum Beispiel
heinzelhaus-2026-10-08T03-00-00-voll-datenbank.dump. Bei verschlüsselten Sicherungen endet der Name auf.enc. - Speichern Sie die Dateien auf einer USB-Platte, einem NAS oder in einer anderen Ablage.
Einen anderen Speicherort einstellen
Abschnitt betitelt „Einen anderen Speicherort einstellen“Damit neue Sicherungen automatisch auf einer anderen Platte oder einem NAS landen.
- Binden Sie das Laufwerk zuerst in den Server ein. Es erscheint in der Oberfläche nur, was dem Container zur Verfügung steht. Wie das geht, steht unter Installation im Abschnitt „Eigene Anpassungen“. Das Laufwerk muss in den Diensten
appundworkereingebunden sein, denn der Hintergrunddienst schreibt die geplanten Sicherungen. - Öffnen Sie die Karte „Speicherort“. Unter „Eingebundene Volumes“ stehen die Laufwerke, die der Anwendung zur Verfügung stehen, mit freiem Platz. Gekennzeichnet sind „nicht dauerhaft“ und „schreibgeschützt“. Klicken Sie ein Laufwerk an, oder tragen Sie unter „Zielverzeichnis“ einen absoluten Pfad ein, der mit
/beginnt. Leer heißt: Standard/data/backups. - Klicken Sie auf „Ziel prüfen“. Die Antwort lautet „Ziel ist beschreibbar“, „Bitte beachten“ (mit Warnungen) oder „Ziel nicht nutzbar“.
- Übernommen wird der Speicherort mit dem Knopf „Zeitplan speichern“ in der Karte „Zeitplan“. Die Karte „Speicherort“ hat keinen eigenen Speichern-Knopf.
Eine Sicherung löschen
Abschnitt betitelt „Eine Sicherung löschen“- Klicken Sie in der Zeile der Sicherung auf das Download-Symbol und wählen Sie „Löschen“.
- Es fragt „Backup löschen?“ und erklärt: „Die Sicherung wird endgültig vom Server entfernt. Laden Sie sie vorher herunter, falls Sie sie behalten möchten.“
- Klicken Sie auf „Endgültig löschen“. Es erscheint „Backup gelöscht.“
Ein vollständiges Backup, auf dem inkrementelle aufbauen, lässt sich nicht löschen: „Dieses Voll-Backup ist Basis für … inkrementelle Backup(s) und kann nicht gelöscht werden.“ Löschen Sie zuerst die inkrementellen.
Wiederherstellen
Abschnitt betitelt „Wiederherstellen“Eine Sicherung stellen Sie auf zwei Wegen zurück. Welcher passt, hängt davon ab, ob schon jemand in der Installation arbeitet.
| Situation | Weg |
|---|---|
| Neuer, frisch installierter Server, noch kein Benutzer angelegt | In der Oberfläche: Ersteinrichtung → „Sicherung einspielen“ |
| Laufende Installation, Rückkehr zu einem früheren Stand | Von Hand auf dem Server nach der Anleitung LIESMICH.txt |
Auf einem neuen Server
Abschnitt betitelt „Auf einem neuen Server“Das ist der Weg für den Serverwechsel und für den Totalausfall. Er läuft in der Oberfläche der Ersteinrichtung und ist unter Erste Einrichtung im Abschnitt „Sicherung einspielen“ beschrieben. Nehmen Sie dafür eine vollständige Sicherung. Konten, Einstellungen und Daten kommen zurück, die Einrichtung entfällt.
Sicherungen aus CasaTastic, wie die Software vor Version 1.0 hieß, lassen sich einspielen. Das Dateiformat ist unverändert.
Von Hand auf dem laufenden Server
Abschnitt betitelt „Von Hand auf dem laufenden Server“Damit Ihre IT eine Installation auf einen früheren Stand zurücksetzt.
Sie brauchen: root-Zugang zum Server, die Sicherung (Datenbank-Dump und Dateien-Archiv, bei Verschlüsselung vorher entschlüsselt) und den Projektordner. Die Befehle löschen den aktuellen Stand der Datenbank. Legen Sie vorher noch eine Sicherung des aktuellen Stands an, falls möglich.
-
Halten Sie Anwendung und Hintergrunddienst an. Beide halten Verbindungen zur Datenbank, sonst scheitert das Löschen:
Terminal-Fenster cd /opt/heinzelhaus # Ihr Projektordnerdocker compose stop app worker -
Spielen Sie die Datenbank zurück. Die Datei heißt
datenbank.dump, beim Herunterladenheinzelhaus-…-datenbank.dump:Terminal-Fenster docker compose exec -T db dropdb -U heinzelhaus --if-exists heinzelhausdocker compose exec -T db createdb -U heinzelhaus heinzelhauscat datenbank.dump | docker compose exec -T db pg_restore -U heinzelhaus -d heinzelhaus --no-owner --no-privilegesDie Optionen
--no-ownerund--no-privilegeslassen die Rollen der Quelle außen vor. So lassen sich auch Sicherungen aus der Zeit vor Version 1.0 einspielen, deren Datenbank und Rolle nochcasatastichießen. -
Spielen Sie die Dateien zurück. Bei einer inkrementellen Sicherung zuerst das zugehörige vollständige Backup, danach die inkrementellen in zeitlicher Reihenfolge, jeweils in dasselbe Verzeichnis. Das Datenverzeichnis liegt im Docker-Volume
heinzelhaus_app-data(der Anfang des Namens ist IhrHH_PROJEKT). Heißt Ihre Datei anders, etwa wie beim Herunterladen vergeben, passen Sie den Namen im Befehl an. Mit einem kurzen Hilfscontainer entpacken Sie das Archiv hinein und stellen die Rechte der Anwendung (Nummer 100, Gruppe 101) wieder her:Terminal-Fenster docker run --rm -v heinzelhaus_app-data:/data -v "$PWD":/sicherung:ro alpine:3 \sh -c 'tar xzf /sicherung/dateien.tar.gz -C /data && chown -R 100:101 /data'Liegt das Datenverzeichnis nach Ihrer
docker-compose.override.ymlin einem Verzeichnis des Servers, entpacken Sie das Archiv mittar xzf dateien.tar.gz -C /pfad/zum/datenverzeichnisdorthin. -
Starten Sie alles wieder:
Terminal-Fenster docker compose up -dDas ist sicherer als nur
docker compose start app worker: Es lässt die Einmal-Diensteinit-daten(setzt die Rechte im Datenverzeichnis) undmigrate(spielt Änderungen an der Datenbankstruktur ein, falls die Sicherung von einer älteren Version stammt) noch einmal laufen. Bei Betrieb mit Domain nennen Sie alle Compose-Dateien, siehe Installation. -
Melden Sie sich an und prüfen Sie einige Kennzahlen. Der Datenbank-Dump ist in jeder Sicherung vollständig. Für die Datenbank genügt daher immer die zuletzt gesicherte Datei.
Eine verschlüsselte Sicherung ohne heinzelhaus entschlüsseln
Abschnitt betitelt „Eine verschlüsselte Sicherung ohne heinzelhaus entschlüsseln“Damit Sie an die Daten kommen, auch wenn keine Installation mehr läuft. Eine Verschlüsselung, die man nur mit der Anwendung wieder aufbekommt, wäre eine Falle.
Sie brauchen: einen beliebigen Rechner mit Node.js, das Skript backup-entschluesseln.mjs und das Passwort.
-
Legen Sie das Skript und die
.enc-Dateien in einen Ordner. -
Entschlüsseln Sie jede Datei, zum Beispiel:
Terminal-Fenster node backup-entschluesseln.mjs datenbank.dump.enc datenbank.dumpEbenso verfahren Sie mit
dateien.tar.gz.encundmanifest.json.enc. -
Das Skript fragt „Passwort der Sicherung:“. Die Eingabe wird nicht angezeigt. Danach meldet es „Entschlüsselt: …“.
-
Weiter geht es mit den Schritten der
LIESMICH.txt, mit den Dateinamen ohne.enc.
Für Skripte können Sie das Passwort über die Umgebungsvariable HH_BACKUP_PASSWORT übergeben, nicht als Argument, denn Argumente stehen in der Prozessliste und in der Shell-Historie. Der alte Name CASATASTIC_BACKUP_PASSWORT wird weiter gelesen. Beim Einspielen über die Ersteinrichtung ist dieser Schritt nicht nötig, dort fragt heinzelhaus das Passwort selbst ab.
Fachdaten in eine andere Installation übertragen
Abschnitt betitelt „Fachdaten in eine andere Installation übertragen“Damit Sie Fachdaten (Objekte, Kontakte, Buchungen und alles Weitere) von einer heinzelhaus-Installation in eine andere übernehmen, ohne die Konten und Einstellungen der Zielinstallation zu überschreiben, zum Beispiel von einer Testinstallation in die Produktivinstallation.
-
Legen Sie in der Zielinstallation zuerst ein Backup an (Einstellungen → Reiter „Backup“).
-
Schreiben Sie auf der Quelle die Fachdaten in eine Datei, im Projektordner:
Terminal-Fenster ./scripts/datenuebernahme.sh export daten.dumpEs meldet „Fachdaten nach daten.dump geschrieben.“ und „Nicht enthalten: …“.
-
Bringen Sie die Datei auf den Zielserver.
-
Spielen Sie sie dort ein:
Terminal-Fenster ./scripts/datenuebernahme.sh import daten.dumpDas Skript warnt: „Diese Übernahme ersetzt die Fachdaten der Zielinstallation. Konten, Einstellungen und Briefköpfe bleiben unberührt.“ Es fragt „Vorher ein Backup angelegt? [ja/nein]“. Mit
jaspielt es ein und meldet „Übernahme abgeschlossen.“
Nicht übertragen werden Benutzer samt Passwörtern, Sitzungen, Anmeldeverfahren, Passkeys, der zweite Faktor, offene Einladungen, die Einstellungen (Mail, Domain, Lexware, Update, Backup) und die Briefköpfe. Auch die Dateien aus dem Datenverzeichnis (Dokumente, Belege, Logos, Uploads) werden nicht übertragen, nur die Inhalte der Datenbank. Die Fachdaten der Zielinstallation werden ersetzt, nicht ergänzt.
So bleiben Ihre Daten sicher
Abschnitt betitelt „So bleiben Ihre Daten sicher“- Aktivieren Sie den Zeitplan unter „Zeitplan“. Am besten täglich, mit einem vollständigen Backup pro Woche.
- Bringen Sie die Sicherungen regelmäßig auf ein anderes Gerät, entweder durch den Download oder durch einen eigenen Speicherort.
- Verschlüsseln Sie Sicherungen, die den Server verlassen, und bewahren Sie das Passwort getrennt auf.
- Bewahren Sie die
.envgetrennt vom Server auf. - Prüfen Sie ab und zu auf dem Dashboard in der Kachel „Systemstatus“ (nur für Administratoren sichtbar), wann zuletzt gesichert wurde. Sie wird rot, wenn es noch kein Backup gibt oder das letzte mehr als sieben Tage zurückliegt. Die Vorabprüfung vor einem Update warnt bei sieben Tagen und mehr.
- Probieren Sie die Wiederherstellung einmal auf einem Testserver aus, bevor Sie sie im Ernstfall brauchen.
Häufige Fehler
Abschnitt betitelt „Häufige Fehler“| Meldung | Ursache | Lösung |
|---|---|---|
| „Backup fehlgeschlagen“ | Zum Beispiel zu wenig Platz oder kein Zugriff auf das Ziel. Der Grund steht daneben. | Prüfen Sie Platz und Speicherort. |
| „Das Passwort muss mindestens 12 Zeichen haben.“ | Das Passwort der Sicherung ist zu kurz. | Wählen Sie ein längeres. |
| „Bitte bestätigen Sie den Hinweis zum Passwort.“ | Das Häkchen fehlt. | Setzen Sie es. |
| „Der Pfad muss absolut sein, also mit „/“ beginnen.“ | Das Zielverzeichnis ist relativ angegeben. | Tragen Sie einen absoluten Pfad ein. |
| „Ziel nicht nutzbar“ | Das Verzeichnis existiert nicht oder ist schreibgeschützt. | Binden Sie das Laufwerk ein und prüfen Sie die Rechte. |
| „Diese Installation wird bereits benutzt. Eine Wiederherstellung ist hier nicht möglich.“ | Das Einspielen über die Oberfläche geht nur ohne Benutzer. | Nutzen Sie den Weg „Von Hand auf dem laufenden Server“. |
| „Das Passwort ist falsch …“ | Das Passwort der verschlüsselten Sicherung stimmt nicht. | Prüfen Sie es. Ohne das richtige Passwort ist die Sicherung verloren. |
| „Die Sicherung ist beschädigt oder wurde nachträglich verändert. Bitte spielen Sie eine andere Kopie ein.“ | Die Datei ist unvollständig oder verändert. | Nehmen Sie eine andere Kopie. |
Noch nicht möglich
Abschnitt betitelt „Noch nicht möglich“- Wiederherstellen im laufenden Betrieb über die Oberfläche. Die Oberfläche spielt Sicherungen nur in der Ersteinrichtung ein.
- Ein externes Sicherungsziel, etwa Cloud oder SFTP. Sie stellen einen Speicherort auf einer eingebundenen Platte ein oder laden die Dateien herunter.
- Die ganze Sicherung als eine Datei herunterladen. Sie laden Datenbank-Dump, Dateien-Archiv und Anleitung einzeln. Für die Ersteinrichtung packen Sie sie zu einer
.tar.gz-Datei zusammen. - Automatisch verschlüsselte Sicherungen. Der Zeitplan sichert immer unverschlüsselt.
- Eine E-Mail bei fehlgeschlagener automatischer Sicherung. Es gibt nur die Benachrichtigung in der Anwendung.
- Die
.envmitsichern. Sie liegt außerhalb des Datenverzeichnisses.
Weiter geht es hier
Abschnitt betitelt „Weiter geht es hier“- Erste Einrichtung: Die Sicherung auf einem neuen Server einspielen.
- Updates: Vor jedem Update sichern.
- Installation: Eigene Laufwerke einbinden.
heinzelhaus ist ein Produkt und eine Marke der IT Systeme Flores UG (haftungsbeschränkt), Bergisch Gladbach.
© 2026 IT Systeme Flores UG