Zálohování a obnova dat (Backup & Restore)

Pravidelné zálohování chrání vaši instanci před výpadky hardware, chybami disku nebo nechtěným smazáním. Správná strategie zálohování LockMyCal se skládá ze tří součástí:

  1. Databáze PostgreSQL (uživatelé, typy schůzek, vytvořené rezervace, záznamy v kalendáři).
  2. Datový svazek aplikace /app/data (nahrané profilové fotky a pozadí v uploads/, soukromé přílohy rezervujících v private_uploads/ a případně soubor .env).
  3. Konfigurační klíče a .env soubor (SECRET_KEY_BASE, DATA_ENCRYPTION_KEY).

1. Zálohování PostgreSQL databáze

Manuální dump pomocí pg_dump

Pokud běží databáze v Docker kontejneru lockmycal-db:

docker exec -t lockmycal-db pg_dump -U lockmycal -d lockmycal_prod -F c -b -v -f /tmp/lockmycal_backup.dump
docker cp lockmycal-db:/tmp/lockmycal_backup.dump ./lockmycal_backup_$(date +%Y%m%d_%H%M%S).dump

Automatický denní Cron skript

Vytvořte skript /opt/lockmycal/backup.sh:

#!/bin/bash
BACKUP_DIR="/opt/lockmycal/backups"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
mkdir -p "$BACKUP_DIR"

# Záloha DB
docker exec -t lockmycal-db pg_dump -U lockmycal -d lockmycal_prod -F c | gzip > "$BACKUP_DIR/db_$TIMESTAMP.sql.gz"

# Záloha datového svazku aplikace (uploads, private_uploads, případně .env) a konfigurace
docker compose cp app:/app/data "$BACKUP_DIR/data_$TIMESTAMP"
tar -czf "$BACKUP_DIR/files_$TIMESTAMP.tar.gz" -C "$BACKUP_DIR" "data_$TIMESTAMP" -C /opt/lockmycal .env
rm -rf "$BACKUP_DIR/data_$TIMESTAMP"

# Smazat zálohy starší než 14 dní
find "$BACKUP_DIR" -type f -mtime +14 -delete

Přidejte do crontab -e:

0 3 * * * /opt/lockmycal/backup.sh > /dev/null 2>&1

2. Kritická záloha šifrovacích klíčů (.env)

Caution

LockMyCal šifruje OAuth tokeny a citlivé údaje pomocí klíče DATA_ENCRYPTION_KEY. Pokud tento klíč ztratíte, nebudete moci dešifrovat propojení s kalendáři ani po obnově databáze ze zálohy! Mějte soubor .env bezpečně zálohován na odděleném místě.


3. Postup obnovy (Disaster Recovery)

Při obnově dat na nový server postupujte následovně:

  1. Nainstalujte Docker a Docker Compose na nový server.
  2. Nahrajte zálohovaný soubor .env a obsah datového svazku /app/data (např. docker compose cp ./data/. app:/app/data).
  3. Spusťte databázový kontejner:
    docker compose up -d db
  4. Obnovte databázi z dumpu:
    docker cp lockmycal_backup.dump lockmycal-db:/tmp/restore.dump
    docker exec -i lockmycal-db pg_restore -U lockmycal -d lockmycal_prod -v -c /tmp/restore.dump
  5. Spusťte hlavní kontejner LockMyCal:
    docker compose up -d app
  6. Zkontrolujte logy pomocí docker compose logs -f app a ověřte přístup přes webový prohlížeč.