# Back-up

### 1. Gegevenspersistentie-instelling

CheckCle gebruikt **PocketBase** als ingebedde database. Standaard slaat PocketBase alle applicatiegegevens op in de `pb_data` map binnen de container. Om gegevensverlies te voorkomen bij het herstarten of opnieuw aanmaken van de container, moet u deze map op de hostmachine persistent maken.

#### Voorbeeld: Host-volume mount

In uw containerconfiguratie:

* **Hostpad**: `/mnt/db/pb_data`
* **Containerpad**: `/mnt/pb_data`
* **Modus**: `RW` (Lezen/Schrijven)

Dit zorgt ervoor dat alle PocketBase-gegevens (SQLite-database, geüploade bestanden, migraties, logs) op de host worden opgeslagen op:

```
/mnt/db/pb_data
```

Met deze opzet blijven de CheckCle-gegevens behouden, zelfs als de container wordt verwijderd of opnieuw aangemaakt.

<figure><img src="https://1359133187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkGNii3LLQCh3Lj3WL2Xg%2Fuploads%2FzspfptrJhSFPBohZKHOA%2Fimage.png?alt=media&#x26;token=1c254e86-f2e7-4397-b522-9fbf54a2c178" alt=""><figcaption></figcaption></figure>

### 2. Back-upstrategie voor `pb_data`

Aangezien `pb_data` de SQLite-database en bestandsopslag bevat, is regelmatig back-uppen ervan cruciaal. Hier zijn aanbevolen strategieën:

#### A. Eenvoudige bestandscopie-back-up

Gebruik `rsync` of `cp` om de `pb_data` map naar een back-uplocatie te kopiëren:

```bash
# Voorbeeld: back-up naar /backups/checkcle met tijdstempel
rsync -avz /mnt/db/pb_data /backups/checkcle/pb_data_$(date +%F_%H-%M-%S)
```

#### B. Gearchiveerde gecomprimeerde back-up

Maak een gecomprimeerd `.tar.gz` archief voor draagbaarheid:

```bash
tar -czvf /backups/checkcle/pb_data_$(date +%F).tar.gz /mnt/db/pb_data
```

#### C. Geautomatiseerde cron-taak

Automatiseer dagelijkse back-ups met `cron`:

```bash
0 2 * * * rsync -avz /mnt/db/pb_data /backups/checkcle/pb_data_$(date +\%F) >> /var/log/checkcle_backup.log 2>&1
```

Dit wordt uitgevoerd om **02:00 uur dagelijks**.

#### D. Externe back-up (optioneel)

Push back-ups naar een externe server of cloud (S3, MinIO, rsync naar een andere server):

```bash
rsync -avz /mnt/db/pb_data user@remote-server:/remote/backups/checkcle/
```

***

### 3. Herstelstrategie

Om een back-up te herstellen:

1. Stop de CheckCle (PocketBase) container:

   ```bash
   docker stop checkcle
   ```
2. Vervang de `pb_data` map door uw back-up:

   ```bash
   rm -rf /mnt/db/pb_data
   cp -r /backups/checkcle/pb_data_2025-09-15 /mnt/db/pb_data
   ```
3. Start de container weer:

   ```bash
   docker start checkcle
   ```

### 4. Best practices

* **Maak altijd een back-up vóór upgrades** van CheckCle of PocketBase.
* **Test herstelprocedures** regelmatig om te verifiëren dat back-ups geldig zijn.
* **Gebruik off-site opslag** (S3, Minio of een andere server) voor disaster recovery.
* **Controleer schijfruimte** op de host om back-upfouten te voorkomen.
