Aktuell gibt es bei weclappOn keine eingebaute Backupfunktion. Somit muss/sollte sich der Administrator der weclappOn Installation selber um regelmäßige Backups kümmern.
Alle Daten der weclappOn Installation liegen in den drei Verzeichnissen /opt/weclapp-data/db, /opt/weclapp-data/blobs und /opt/weclapp-data/solr (dies sind die Standardpfade, falls bei der Installation andere verwendet wurden, dann müssen diese gesichert werden).
/opt/weclapp-data/db
/opt/weclapp-data/db ist die Datenbank. Im laufenden Betrieb sollte dieses Verzeichnis nicht einfach irgendwohin kopiert oder in ein Archiv gepackt werden, da dann ein inkonsistentes Backup entstehen kann, das dann nicht funktioniert. Wenn man vor dem Backup weclappOn und die Datenbank komplett stoppt (z.B. durch “docker-compose stop”), dann ist es möglich, das Verzeichnis einfach komplett zu sichern. So ist der Stand auch konsistent. Der empfohlene Weg, Backups zu machen, ist aber ein Dump der Datenbank mittels pg_dump, was auch im laufenden Betrieb funktioniert (die Datenbank muss dafür sogar gestartet sein). Dies geht mit folgendem Befehl (der Pfad zur Dump Datei muss entsprechend angepasst werden):
docker exec weclapp_db su -c "pg_dump --clean --if-exists postgres" postgres | gzip > /path/to/backup/backup-name.gz
/opt/weclapp-data/blobs
/opt/weclapp-data/blobs enthält die Blobs (Dokumente, Bilder etc.). Dieser Ordner kann problemlos gesichert werden (auch im laufenden Betrieb, Details zur Konsistenz weiter unten), z.B. durch einfaches Kopieren oder Erzeugen eines tar Archivs. Um zu vermeiden, dass immer alles kopiert wird, ist es auch möglich, diesen Ordner regelmäßig per rsync (oder ähnlich) in ein Backupverzeichnis zu “synchronisieren”. Damit kann man eine komplette Kopie der Blobs immer aktuell halten, ohne jedes Mal alles kopieren zu müssen.
/opt/weclapp-data/solr
/opt/weclapp-data/solr enthält die Daten für die Volltextsuche. Dieses Verzeichnis muss nicht gesichert werden: falls es leer ist, wird der Volltextindex beim nächsten Start von weclappOn automatisch aus den Daten in der Datenbank neu erzeugt.
Backup Empfehlung
Es sollten also regelmäßig Backups von /opt/weclapp-data/db und /opt/weclapp-data/blobs gemacht werden (z.B. mittels eines Cron Jobs). Dabei sollte /opt/weclapp-data/db mittels pg_dump gesichert werden (siehe oben) und /opt/weclapp-data/blobs einfach kopiert oder archiviert werden (oder auch per rsync). Wichtig für die Konsistenz des Backups ist, dass /opt/weclapp-data/db immer zuerst gesichert wird und danach dann /opt/weclapp-data/blobs, da es ansonsten passieren kann, dass Blob Dateien fehlen.
Wiederherstellen
Zum Wiederherstellen sollte man idealerweise mit einer neuen Installation beginnen. Falls die Datenverzeichnisse der alten Installation noch vorhanden sind, dann kann man diese vorher an eine andere Stelle verschieben (falls man sie später doch nochmal benötigt). Also folgt man zunächst der Installationsanleitung bis inklusive Schritt 4 (alles vor dem ersten “docker-compose up -d”). Danach folgende Schritte ausführen:
/opt/weclapp-data/blobs aus dem Backup wiederherstellen (Dateien aus dem Backup zurückkopieren oder Archiv entpacken)
Dann folgende Befehle ausführen:
cd /opt/weclapp docker-compose up -d && docker kill weclapp_app
Dies startet weclappOn, aber beendet die Anwendung direkt wieder, so dass nur die Datenbank läuft. Jetzt kann der Datenbankdump eingespielt werden:
zcat /path/to/backup/backup-name.gz | docker exec -i weclapp_db su -c "psql postgres" postgres
Und schließlich kann die Anwendung wieder gestartet werden:
docker-compose up -d