Backup und Wiederherstellung
PlantPulse Studio verwaltet den gesamten Zustand mit einem Backup-Skript und einem Wiederherstellungsskript.
Alle Befehle werden im Installationsverzeichnis (/opt/kopens/plantpulse-studio-docker) ausgeführt.
Was wird gesichert
Eine einzelne Backup-Datei (dist/backup-<date>.tar.gz) enthält alles Folgende.
| Ziel | Inhalt |
|---|---|
| Vollständiger PostgreSQL-Dump | Benutzerkonten · Chat-Verläufe · Watcher · Gelesen-Status von Benachrichtigungen · Skills · Bereitstellungsverlauf · Audit-Logs |
Workspace(workspaces/) | Projektspezifischer Quellcode · Chat-Anhänge |
Build-Artefakte(builds/) | Jede Version der bereitgestellten Apps (für Rollback erforderlich) |
Statusverzeichnis(state/) | settings.json(Konfiguration) · Audit-/Nutzungslogs · Benutzerdefinierte Vorlagen · Branding-Logos |
Das Datenverzeichnis von PostgreSQL selbst ist vom Archiv ausgeschlossen — es wird durch den SQL-Dump ersetzt.
Das Archiv enthält die Workspaces aller Benutzer vollständig, und wenn es von einer älteren Installation stammt,
können in settings.json API-Schlüssel verbleiben.
- Das Skript erstellt die Backup-Datei mit
600(nur für den Eigentümer lesbar) und setzt das Verzeichnisdist/auf700. - Beibehalten dieser Berechtigungen auch beim Übertragen auf externe Medien oder andere Server.
(Optionen zur Berechtigungserhaltung verwenden, z. B.
scp -p,rsync -a,tar -p) - Bei einer Übertragung nach außerhalb wird eine separate Verschlüsselung empfohlen.
Backup ausführen
cd /opt/kopens/plantpulse-studio-docker
bash bin/backup.sh
▶ PostgreSQL 덤프
▶ 파일 상태 아카이브(postgres 데이터 제외 — 덤프로 대체)
-rw------- 1 root root 78M ... dist/backup-20260728-031501.tar.gz
✅ 백업 완료 (보존 14개)
- Ergebnis:
dist/backup-<YYYYMMDD-HHMMSS>.tar.gz - Aufbewahrungsrichtlinie: Es werden nur die neuesten 14 Dateien behalten, ältere werden automatisch gelöscht (einstellbar über
BACKUP_KEEP). - Auf das externe PostgreSQL muss zugegriffen werden können, damit der Dump erstellt werden kann.
BACKUP_KEEP=30 bash bin/backup.sh # 이번 실행부터 30개 보존
Vor einem Image-Upgrade oder einer größeren Konfigurationsänderung bash bin/backup.sh einmal ausführen.
Automatisches Backup einrichten (empfohlen)
Ein Cron wird installiert, der täglich um 03:30 Uhr ein Backup ausführt. Root-Rechte sind erforderlich.
sudo bash bin/install-backup-cron.sh
[backup-cron] 설치 완료 — 스케줄: '30 3 * * *', 보존 14개, 로그: dist/backup.log
Um Zeit und Aufbewahrungsanzahl zu ändern:
sudo BACKUP_CRON="0 4 * * *" BACKUP_KEEP=30 bash bin/install-backup-cron.sh
Entfernen:
sudo bash bin/install-backup-cron.sh remove
Die Funktion wird über das Log überprüft.
tail -50 /opt/kopens/plantpulse-studio-docker/dist/backup.log
ls -lh /opt/kopens/plantpulse-studio-docker/dist/backup-*.tar.gz
Empfohlener Betriebszyklus
| Zyklus | Aufgabe |
|---|---|
| Täglich | Automatisches Backup (cron) — 14 Tage Aufbewahrung |
| Wöchentlich | Neuestes Backup 1x auf anderen Server / anderes Medium kopieren(Berechtigungen beibehalten) |
| Monatlich | dist/-Kapazität und freien Festplattenplatz prüfen |
| Quartalsweise | DRYRUN=1 Wiederherstellungsprobe — siehe unten |
| Vor Updates | 1 manuelles Backup |
Selbst wenn Backup-Dateien täglich anfallen, weiß man nicht, ob sie tatsächlich wiederherstellbar sind, bevor man es ausprobiert. Führen Sie die Probe quartalsweise durch. Sie ist nicht destruktiv und kann gefahrlos im laufenden Betrieb ausgeführt werden.
Wiederherstellungsprobe (nicht destruktiv)
Es werden nur die Archivstruktur und die Erreichbarkeit der Datenbank geprüft, nichts wird geändert.
DRYRUN=1 bash bin/restore.sh # 최신 백업 대상
DRYRUN=1 bash bin/restore.sh dist/backup-20260712-191858.tar.gz
▶ 아카이브 검증
ppstudio.sql 12M · files.tar.gz 66M
▶ DRYRUN — DB 도달성만 확인
✅ DB 도달 OK
✅ DRYRUN 통과 — 실제 복구는 DRYRUN 없이 실행
Wiederherstellung ausführen
Der aktuelle Datenbankinhalt und das gesamte Datenverzeichnis werden mit dem Stand des Backups überschrieben. Projekte, Chats und Bereitstellungen, die nach dem Backup erstellt wurden, gehen verloren.
cd /opt/kopens/plantpulse-studio-docker
bash bin/restore.sh # 최신 백업으로 복구
bash bin/restore.sh dist/backup-20260712-191858.tar.gz # 특정 시점으로 복구
Zur Bestätigungsaufforderung muss restore eingegeben werden, um fortzufahren.
⚠ 현재 DB 와 /var/lib/pp-studio 파일 상태를 이 백업으로 덮어씁니다: dist/backup-...
계속하려면 'restore' 를 입력하세요:
Die Reihenfolge der Skript-Ausführung:
- Validierung der Archivstruktur (Prüfung, dass Dump und Dateiarchiv vorhanden sind)
- Automatische Sicherung des aktuellen Dateizustands nach
dist/pre-restore-<date>.tar.gz - Stack stoppen
- Datenverzeichnis wiederherstellen → Datenbank wiederherstellen
- Stack starten → Health-Check
Für die Ausführung ohne Eingabeaufforderung innerhalb eines Automatisierungsskripts:
FORCE=1 bash bin/restore.sh dist/backup-20260712-191858.tar.gz
Wenn der Health-Check nach der Wiederherstellung nicht anspringt
bash bin/logs.sh # 서버 로그 확인
bash bin/status.sh
Zum Zurücksetzen die in Schritt 2 erstellte Sicherung erneut wiederherstellen. Beachten Sie: Die Sicherung enthält nur den Dateizustand (die Datenbank ist nicht enthalten).
bash bin/restore.sh dist/pre-restore-20260728-104233.tar.gz
Migration auf einen anderen Server
- Installieren Sie den Stack auf dem neuen Server mit derselben Version (Installation oder Air-Gap-Installation).
- Kopieren Sie die
.envvom alten Server auf den neuen (Berechtigungen600beibehalten). - Kopieren Sie das Backup-Archiv in das
dist/des neuen Servers (Berechtigungen600beibehalten). - Führen Sie die Wiederherstellung durch.
cd /opt/kopens/plantpulse-studio-docker
DRYRUN=1 bash bin/restore.sh dist/backup-20260728-031501.tar.gz # 먼저 리허설
bash bin/restore.sh dist/backup-20260728-031501.tar.gz
Wenn sich die Zugriffsadresse nach der Migration ändert, müssen sich alle Benutzer einmal ab- und wieder anmelden — Login-Cookies sind hostgebunden zum Zeitpunkt der Ausstellung; wenn sie unverändert bleiben, führen Datenanfragen zu 401-Fehlern. Details finden Sie unter Domain und Reverse-Proxy.
Festplattenverwaltung
Da das Backup den Workspace und die Build-Artefakte vollständig enthält, wächst es mit zunehmender Projektzahl.
du -sh /opt/kopens/plantpulse-studio-docker/dist
du -sh /var/lib/pp-studio/*
df -h /var/lib/pp-studio
- Um die Aufbewahrungsanzahl zu reduzieren, installieren Sie den Cron erneut mit dem Wert
BACKUP_KEEP. - Frühere Versionen von bereitgestellten Apps werden pro Projekt standardmäßig auf maximal 10 Stück begrenzt; darüber hinausgehende werden automatisch bereinigt (die aktuell laufende Version wird immer aufbewahrt).
Verwandte Dokumente
- Installation · Air-Gap-Installation
- Geheimnisverwaltung — Prinzipien, um Schlüssel vom Backup fernzuhalten
- Fehlerbehebung