# Настройка бекапов на сервере ## Что бекапится - **PostgreSQL** → дамп каждую ночь → Backblaze B2 - **S3-файлы** (Hetzner Object Storage) → синхронизация → Backblaze B2 - Хранение: последние 7 дневных дампов БД + все файлы (sync зеркало) --- ## Шаг 1 — Backblaze B2: создать bucket и ключи 1. Зарегистрироваться на https://www.backblaze.com/b2/ 2. **Buckets → Create a Bucket**: - Name: `lms-backups-second-brain` - Files in Bucket are: `Private` 3. **App Keys → Add a New Application Key**: - Name: `lms-server` - Access: `Read and Write` - Bucket: `lms-backups-second-brain` - Сохранить `keyID` и `applicationKey` — показываются один раз --- ## Шаг 2 — Установить rclone на сервере ```bash curl https://rclone.org/install.sh | sudo bash ``` --- ## Шаг 3 — Настроить rclone: Backblaze B2 ```bash rclone config ``` Ответы: ``` n (новый remote) name: b2lms type: b2 account: key: q (quit) ``` --- ## Шаг 4 — Настроить rclone: Hetzner S3 Значения берём из `.env` на сервере. ```bash rclone config ``` Ответы: ``` n name: hetzner type: s3 provider: Other env_auth: false access_key_id: secret_access_key: region: <пусто — Enter> endpoint: q ``` Проверить: ```bash rclone ls hetzner:lms-uploads ``` --- ## Шаг 5 — Установить скрипт ```bash sudo mkdir -p /opt/lms-backup sudo cp scripts/backup.sh /opt/lms-backup/backup.sh sudo chmod +x /opt/lms-backup/backup.sh ``` --- ## Шаг 6 — Настроить cron ```bash sudo crontab -e ``` Добавить строку (запуск каждую ночь в 3:00): ``` 0 3 * * * /opt/lms-backup/backup.sh >> /var/log/lms-backup.log 2>&1 ``` --- ## Шаг 7 — Проверить вручную ```bash sudo /opt/lms-backup/backup.sh tail -50 /var/log/lms-backup.log ``` --- ## Восстановление из бекапа ### База данных ```bash # Скачать нужный дамп с B2 rclone copy b2lms:lms-backups-second-brain/db/db_20260408_0300.sql.gz /tmp/ # Восстановить в контейнер gunzip -c /tmp/db_20260408_0300.sql.gz \ | docker exec -i lms-system-db-1 psql -U lms_user lms_db ``` ### Файлы ```bash # Синхронизировать файлы обратно на Hetzner S3 rclone sync b2lms:lms-backups-second-brain/files hetzner:lms-uploads ```