> ## Documentation Index
> Fetch the complete documentation index at: https://docs.varios-ai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Backup und Wiederherstellung

> Welche Daten einer On-Premise-Installation gesichert werden müssen und wie Sie sie wieder einspielen

Alle Daten einer On-Premise-Installation liegen im Installationsverzeichnis, also dort, wo `docker-compose.yml` und `.env` liegen. Docker-Images müssen nicht gesichert werden, sie werden bei der Installation erneut geladen.

## Was gesichert werden muss

| Verzeichnis oder Datei       | Inhalt                                                                                  |
| ---------------------------- | --------------------------------------------------------------------------------------- |
| `.env`, `docker-compose.yml` | Konfiguration, Zugangsdaten, Version                                                    |
| `Data/Data/Persistent`       | Hochgeladene Dateien, Bilder, verschlüsselte Inhalte und der Schlüssel der Installation |
| `PostgresBackups`            | Tägliche Datenbank-Sicherungen                                                          |
| `traefik`                    | TLS-Zertifikate und Proxy-Konfiguration                                                 |
| `Web/_Resources`             | Veröffentlichte Dateien                                                                 |
| `Data/Logs`                  | Audit-, Anmelde- und DLP-Protokolle für Compliance-Nachweise                            |

Die Verzeichnisse `Postgres` und `Redis` müssen nicht gesichert werden. Die laufende Datenbank in `Postgres` ist nur im gestoppten Zustand konsistent, sichern Sie stattdessen `PostgresBackups`.

<Warning>
  Datenbank und `Data/Data/Persistent` gehören zusammen. Die Datenbank verweist auf Dateien in diesem Verzeichnis, und der dort abgelegte Schlüssel wird zum Entschlüsseln gespeicherter Inhalte benötigt. Sichern Sie beides immer gemeinsam und zeitnah.
</Warning>

## Disaster Recovery

Für die Wiederherstellung nach einem Ausfall empfehlen wir **tägliche Snapshots der gesamten virtuellen Maschine** auf Ihrer Virtualisierungsplattform. Ein Snapshot sichert Datenbank, Dateien und Konfiguration in einem konsistenten Stand und lässt sich innerhalb von Minuten zurückspielen. Bewahren Sie die Snapshots auf einem anderen Speichersystem als die laufende Maschine auf. Erstellen Sie außerdem vor jedem Update von VARIOS AI einen Snapshot, damit Sie bei Problemen auf den vorherigen Stand zurückkehren können.

Die Datenbank-Sicherung im nächsten Abschnitt ergänzt die Snapshots: Sie erlaubt, einzelne Tage gezielt wiederherzustellen oder eine Installation auf ein anderes System zu übertragen.

## Datenbank-Sicherung

VARIOS AI erstellt täglich um 3:00 Uhr eine vollständige Datenbank-Sicherung im Verzeichnis `PostgresBackups` und behält die Sicherungen der letzten sieben Tage. Den Zeitpunkt legt `BACKUP_TIME` beim Dienst `postgres-backup` in der `docker-compose.yml` fest.

Eine Sicherung von Hand starten Sie mit:

```bash theme={null}
docker compose exec postgres-backup /usr/local/bin/backup.sh
```

<Tip>
  Kopieren Sie das Installationsverzeichnis ohne `Postgres` und `Redis` nach jeder Datenbank-Sicherung auf ein anderes System, etwa mit rsync oder Ihrer Backup-Software.
</Tip>

## Wiederherstellung

<Steps>
  <Step title="VARIOS AI installieren">
    Installieren Sie VARIOS AI auf dem Zielsystem in derselben Version wie zum Zeitpunkt der Sicherung. Die Version steht in der gesicherten `.env` unter `VERSION`. Starten Sie die Dienste noch nicht.
  </Step>

  <Step title="Dateien zurückspielen">
    Kopieren Sie `.env`, `docker-compose.yml`, `traefik`, `Data/Data/Persistent` und `Web/_Resources` aus der Sicherung in das Installationsverzeichnis. Das Verzeichnis `Postgres` muss leer sein oder fehlen.
  </Step>

  <Step title="Datenbank wiederherstellen">
    Starten Sie nur die Datenbank und spielen Sie die gewünschte Sicherung ein:

    ```bash theme={null}
    docker compose up -d postgres
    sleep 15
    gunzip -c PostgresBackups/backup_JJJJMMTT_HHMMSS.sql.gz | docker compose exec -T postgres psql -U <Datenbankbenutzer> -d postgres
    ```

    Setzen Sie für `<Datenbankbenutzer>` den Wert von `POSTGRES_USER` aus Ihrer `.env` ein. Zwei Meldungen, dass die Rolle und die Datenbank bereits existieren, sind erwartet und können ignoriert werden.
  </Step>

  <Step title="Alle Dienste starten und prüfen">
    ```bash theme={null}
    docker compose up -d
    ```

    <Check>
      Melden Sie sich an, öffnen Sie einen älteren Chat mit einer hochgeladenen Datei und prüfen Sie, ob die Datei angezeigt wird.
    </Check>
  </Step>
</Steps>

<Note>
  Testen Sie die Wiederherstellung regelmäßig auf einem separaten System. Erst eine erfolgreich eingespielte Sicherung ist ein Backup.
</Note>
