mirror of
https://gitverse.ru/kpa39l/xmpp-server-prosody.git
synced 2026-09-29 09:45:02 +00:00
36 lines
3.0 KiB
Markdown
36 lines
3.0 KiB
Markdown
# Backup do Яндекс.Диска (ICQ project + reusable pattern)
|
|
|
|
Установлено 2026-08-29. Компактный self-hosted проект бэкапится одним tar по образцу соседних проектов (netbox, gitea) на той же машине.
|
|
|
|
## Файлы и cron
|
|
- Скрипт: `/opt/icq/backup.sh` (chmod 755, закоммичен в git проекта).
|
|
- Cron (root crontab, добавлен рядом с соседями, чтобы не конфликтовать по ЯД/нагрузке):
|
|
- `0 2 * * *` netbox
|
|
- `30 2 * * *` gitea
|
|
- `45 2 * * * /opt/icq/backup.sh >> /var/log/icq-backup.log 2>&1`
|
|
- Лог: `/var/log/icq-backup.log` (появляется при первом срабатывании cron).
|
|
|
|
## Что бэкапится (INCLUDE в скрипте)
|
|
`data config certs modules webchat docker-compose.yml .env README.md STATUS.md PRD.md MIGRATION.md WALKTHROUGH.md`
|
|
- `data/` — самое ценное: аккаунты (`accounts/admin.dat`), PEP/OMEMO-бандлы (`pep_*`, `pep_*omemo*devicelist`), MUC, `http_upload`. Хранится URL-encoded: `data/nixg%2eru/...`.
|
|
- tar по живому `data/` безопасен — Prosody хранит всё файлами, останавливать контейнер не нужно.
|
|
- Сертификаты (`certs/`) кладутся в архив, но в git НЕ идут (`.gitignore: certs/, data/, backups/, *.crt, *.key`).
|
|
|
|
## Логика скрипта (по образцу /opt/netbox/backup.sh)
|
|
1. `mkdir -p BACKUP_DIR` (`/opt/icq/backups`).
|
|
2. `mountpoint -q /mnt/yandex-disk` — если не примонтирован → `exit 1` (ЯД монтируется @reboot через davfs).
|
|
3. `mkdir -p /mnt/yandex-disk/backup/icq-backups`.
|
|
4. `tar czf icq_$(date +%Y%m%d_%H%M%S).tar.gz -C /opt/icq $INCLUDE`.
|
|
5. `cp` архива на ЯД.
|
|
6. Ротация: локально 7 дней (`find ... -mtime +7 -delete`), на ЯД 30 дней (`-mtime +30`).
|
|
|
|
## Проверка
|
|
- Размер рабочего бэкапа ~5.5MB (вся data крошечная, ~200K; основной вес — webchat/dist 26MB до gitignore).
|
|
- Состав проверить: `tar tzf backups/icq_*.tar.gz | grep -E 'data/nixg%2eru/(accounts|pep)'`.
|
|
- curl/TXT не нужен; сразу после создания бэкапа файл лежит и локально, и в `/mnt/yandex-disk/backup/icq-backups/`.
|
|
|
|
## Git-дисциплина проекта
|
|
- Remote: `git@gitverse.ru:kpa39l/icq.git` (master).
|
|
- Итог каждой сессии коммитить + пушить сразу (`git push origin master`). Секреты не коммитить: `.env` отсутствует в репо (пароль в защищённом хранилище) — это правильно.
|
|
- Тестовые/временные артефакты (например, `backups/icq_test_*.tar.gz`) удалять после проверки — они не должны оставаться.
|