Дата: 2025-12-01
Приоритет: CRITICAL
Статус: RESOLVED
Закрыт: 2026-02-19
Причина закрытия: Git remote настроен, backup.sh работает, credentials в .credentials.md
Компонент: infra/backup, system/credentials
| Параметр | Значение | Проблема |
|---|---|---|
| Remote | НЕТ | Нет offsite копии кода |
| Бэкап | Только Вс 04:00 | Потеря до 7 дней работы |
| Uncommitted | Накапливаются | Могут потеряться при сбое |
| Тип | Расписание | Проблема |
|---|---|---|
| Git bundle → S3 | Вс 04:00 | Только раз в неделю |
| DEV-PRO full | Вс 03:00 | Только раз в неделю |
| Marketplace DB | Ежедневно (если настроено) | OK |
| Файл | Git | Бэкап | Статус |
|---|---|---|---|
infra/@mail.service/.env |
gitignored | НЕТ | ОПАСНО |
pirotehnika/@market.app/.env |
gitignored | НЕТ | ОПАСНО |
| Другие .env | gitignored | НЕТ | ОПАСНО |
Симптом: git remote -v возвращает пустоту
Риск:
- Весь код только на одном сервере
- При сбое диска — потеря всего
Решение: Настроить GitHub/GitLab remote
Симптом: Git bundle создаётся только по воскресеньям
Риск:
- Потеря до 7 дней работы
- Последний бэкап: Nov 30 03:53 (2 дня назад)
Решение: Ежедневные git бэкапы
Симптом: .env файлы в .gitignore
Риск:
- При пересоздании контейнера — пароли потеряны
- Нет версионирования credentials
- Пример: пароль lideravto потерян
Решение: Централизованное хранение secrets
Симптом: git status показывает изменённые файлы
Текущие uncommitted:
modified: architect/standards/CREDENTIALS.md
modified: infra/@mail.service/README.md
modified: lider/@lideravto.ru/CLAUDE.md
+ новые файлы (architect/knowledge/, themes/)
Риск: При сбое — изменения потеряны
Решение: Регулярные автокоммиты или напоминания
Симптом: Beget серверы (kondurov, lideravto) не бэкапятся
Риск:
- Потеря файлов сайтов
- Потеря баз данных
- Потеря конфигураций
Решение: Настроить бэкап через SSH/rsync
Симптом: platform/.claude/session-*.md в gitignore
Риск:
- Контекст работы теряется
- Пароли из разговоров не фиксируются
Решение: Обязательное сохранение credentials при получении
# Создать приватный репо на GitHub
# Добавить remote
git remote add origin git@github.com:USER/claude-workspace.git
# Первый push
git push -u origin master
Создать файл infra/SECRETS.md (или зашифрованный vault):
# SECRETS (НЕ КОММИТИТЬ В ПУБЛИЧНЫЙ РЕПО!)
## SSH Доступы
| Сервер | User | Password |
|--------|------|----------|
| kondurov.beget.tech | kondurov | см. .credentials.md |
| lideravto.beget.tech | lideravto | ??? |
## API Keys
...
Важно: Этот файл либо:
- В приватном репо (GitHub private)
- Либо зашифрован (git-crypt, sops)
- Либо хранится отдельно в S3 Hub
git add .
git commit -m "chore: sync current state before backup improvements"
Обновить cron:
# Git backup to S3 ЕЖЕДНЕВНО в 04:00
0 4 * * * /opt/.../git-backup-s3.sh
Добавить в backup.sh:
#!/bin/bash
cd $WORKSPACE
git add -A
git commit -m "auto: daily backup $(date +%Y-%m-%d)" || true
git bundle create ...
Создать скрипт backup-beget.sh:
#!/bin/bash
# Бэкап kondurov
sshpass -p 'PASS' rsync -avz kondurov@kondurov.beget.tech:~/ $DATASPACE/projects/kondurov-backup/
# Бэкап lideravto (когда будет пароль)
# sshpass -p 'PASS' rsync -avz lideravto@lideravto.beget.tech:~/ $DATASPACE/projects/lider-backup/
git-crypt init
git-crypt add-gpg-user KEY_ID
echo "infra/SECRETS.md filter=git-crypt diff=git-crypt" >> .gitattributes
При получении ЛЮБОГО пароля/ключа:
1. Сразу записать в infra/SECRETS.md или architect/standards/CREDENTIALS.md
2. Git commit с пометкой chore: add credentials for X
Создать скрипт проверки:
#!/bin/bash
# Проверить что последний бэкап < 24 часов
LAST_BACKUP=$(stat -c %Y $DATASPACE/_backup/workspace-*.bundle | sort -n | tail -1)
NOW=$(date +%s)
AGE=$(( (NOW - LAST_BACKUP) / 3600 ))
if [ $AGE -gt 48 ]; then
echo "WARNING: Last backup is $AGE hours old!"
# Отправить уведомление
fi
┌─────────────────────────────────────────────────────────────────────┐
│ СИСТЕМА БЭКАПОВ (TO-BE) │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ЕЖЕДНЕВНО (04:00): │
│ ├── Auto-commit uncommitted changes │
│ ├── Git bundle → S3 Hub │
│ ├── Git push → GitHub (private) │
│ └── Beget servers backup → S3 Hub │
│ │
│ ЕЖЕНЕДЕЛЬНО (Вс 03:00): │
│ ├── Full DEV-PRO backup → Яндекс.Диск │
│ └── Retention cleanup (>30 дней) │
│ │
│ CREDENTIALS: │
│ ├── Хранятся в SECRETS.md (зашифрован git-crypt) │
│ ├── Версионируются в git │
│ └── При получении — сразу записать + commit │
│ │
└─────────────────────────────────────────────────────────────────────┘
Автор: Claude Code
Создано: 2025-12-01