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í:
- Databáze PostgreSQL (uživatelé, typy schůzek, vytvořené rezervace, záznamy v kalendáři).
- Datový svazek aplikace
/app/data(nahrané profilové fotky a pozadí vuploads/, soukromé přílohy rezervujících vprivate_uploads/a případně soubor.env). - Konfigurační klíče a
.envsoubor (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ě:
- Nainstalujte Docker a Docker Compose na nový server.
- Nahrajte zálohovaný soubor
.enva obsah datového svazku/app/data(např.docker compose cp ./data/. app:/app/data). - Spusťte databázový kontejner:
docker compose up -d db - 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 - Spusťte hlavní kontejner LockMyCal:
docker compose up -d app - Zkontrolujte logy pomocí
docker compose logs -f appa ověřte přístup přes webový prohlížeč.