Files
crm.clientright.ru/ОПАСНЫЕ_НАСТРОЙКИ_NEXTCLOUD.md
Fedor cd90b0d58a feat: Добавлен инструмент генерации документов для AI Ассистента
- Создан API create_document_with_text.php для создания DOCX/XLSX/PPTX с текстом от AI
- Поддержка Markdown форматирования (заголовки, жирный, курсив, списки, код)
- Установлен PHPWord для красивого форматирования документов
- Исправлены пути сохранения (crm2/CRM_Active_Files/... без /crm/ в начале)
- Замена пробелов на подчеркивания в именах папок
- Создана документация для AI и разработчиков
- Добавлены API для работы с шаблонами Nextcloud
2025-11-12 19:46:06 +03:00

283 lines
9.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ⚠️ ОПАСНЫЕ НАСТРОЙКИ NEXTCLOUD
## 📅 ДАТА ПРОВЕРКИ: 3 ноября 2025
---
## 🚨 ОБНАРУЖЕННЫЕ ОПАСНЫЕ АВТОМАТИЧЕСКИЕ ЗАДАЧИ:
### 1. 🗑️ **ExpireTrash** - Автоочистка корзины
```
Job ID: 6
Class: OCA\Files_Trashbin\BackgroundJob\ExpireTrash
Last Run: 2025-11-01T20:25:04+00:00
```
**ЧТО ДЕЛАЕТ:**
- Автоматически удаляет файлы из корзины через определённый период
- По умолчанию: **30 дней**
**ОПАСНОСТЬ:**
- ⚠️ Файлы из корзины **безвозвратно удаляются**
- ⚠️ **БЕЗ предупреждения** администратора
- ⚠️ Может удалить важные данные
**ТЕКУЩИЙ СТАТУС:**
- ✅ Включено (enabled)
- ⏰ Последний запуск: 1 ноября
- 📅 Следующий: ~1 декабря 2025
**РИСК:**
```
🔴 КРИТИЧЕСКИЙ
Удалённые 30 октября файлы будут безвозвратно удалены ~30 ноября!
```
---
### 2. 🧹 **DeleteOrphanedItems** - Удаление "сиротских" файлов
```
Job ID: 31
Class: OCA\Files\BackgroundJob\DeleteOrphanedItems
Last Run: 2025-11-03T06:48:13+00:00
```
**ЧТО ДЕЛАЕТ:**
- Удаляет файлы, которые **не связаны** с записями в БД Nextcloud
- Ищет "потерянные" файлы в файловой системе
**ОПАСНОСТЬ:**
- ⚠️ Может удалить файлы, которые **не проиндексированы**
- ⚠️ При проблемах с External Storage может удалить **ВСЁ**
- ⚠️ **ВЕРОЯТНАЯ ПРИЧИНА** нашего факапа!
**ТЕКУЩИЙ СТАТУС:**
- ✅ Включено (enabled)
- ⏰ Запускается **ЕЖЕДНЕВНО**
- 📅 Последний запуск: **сегодня утром**
**РИСК:**
```
🔴 КРИТИЧЕСКИЙ
Это скорее всего и удалило наши 1,003 проекта!
```
**ЛОГИКА:**
1. 22 октября - миграция на S3
2. Файлы на S3, но **не проиндексированы** в Nextcloud
3. 30 октября - `DeleteOrphanedItems` запустился
4. Увидел 1,003 папки без записей в БД
5. Решил: "это мусор" → удалил в корзину
---
### 3. 📦 **ExpireVersions** - Удаление старых версий
```
Job ID: 25
Class: OCA\Files_Versions\BackgroundJob\ExpireVersions
Last Run: 2025-11-02T15:48:50+00:00
```
**ЧТО ДЕЛАЕТ:**
- Удаляет старые версии файлов
**ОПАСНОСТЬ:**
- ⚠️ Может удалить все версии файла
- ⚠️ Без возможности восстановления
**ТЕКУЩИЙ СТАТУС:**
- ✅ Включено
- ⏰ Запускается регулярно
**РИСК:**
```
🟡 СРЕДНИЙ
Влияет только на версии, не на основные файлы
```
---
### 4. 🔄 **ExpireShares** - Удаление истёкших расшариваний
```
Job ID: 3
Class: OCA\Files_Sharing\ExpireSharesJob
Last Run: 2025-10-31T16:47:07+00:00
```
**ЧТО ДЕЛАЕТ:**
- Удаляет истёкшие публичные ссылки
**ОПАСНОСТЬ:**
- ⚠️ Низкая (удаляет только ссылки, не файлы)
**РИСК:**
```
🟢 НИЗКИЙ
```
---
## 🔧 НАСТРОЙКИ EXTERNAL STORAGE:
```json
{
"mount_point": "/crm",
"storage": "Amazon S3",
"configuration": {
"bucket": "f9825c87-4e3558f6-f9b6-405c-ad3d-d1535c49b61c",
"hostname": "s3.twcstorage.ru",
"filesystem_check_changes": "1" ОПАСНО!
},
"options": {
"readonly": false, Nextcloud может удалять файлы!
"filesystem_check_changes": 0
}
}
```
**ОПАСНОСТЬ:**
- ⚠️ `filesystem_check_changes: 1` - Nextcloud **сверяет** файлы на S3
- ⚠️ `readonly: false` - Nextcloud может **удалять** файлы на S3
- ⚠️ Если файлы не проиндексированы → Nextcloud думает их нет → удаляет
---
## 🎯 ЧТО ВЫЗВАЛО ФАКАП (ВЕРОЯТНОСТЬ):
### 🔴 99% - DeleteOrphanedItems
**Сценарий:**
1. 22 октября - загрузили файлы на S3
2. НЕ проиндексировали в Nextcloud (`occ files:scan`)
3. 30 октября - `DeleteOrphanedItems` запустился
4. Не нашёл записи в БД Nextcloud для файлов
5. Решил: "orphaned items" → удалил в корзину
### 🟡 10% - Ручное удаление через Web UI
- Маловероятно (1,003 папки одновременно)
### 🟢 1% - Другая причина
- Баг Nextcloud
- Проблема с External Storage
---
## 🛡️ РЕКОМЕНДАЦИИ ПО ЗАЩИТЕ:
### 🔴 КРИТИЧНО - СДЕЛАТЬ СЕЙЧАС:
#### 1. Отключить DeleteOrphanedItems (самое опасное!)
```bash
# НЕ ЗАПУСКАЙ! Только для информации:
docker exec -u www-data nextcloud-fresh php occ background-job:delete 31
```
**ЗАЧЕМ:** Это job удаляет "сиротские" файлы. При проблемах с индексацией может удалить ВСЁ!
---
#### 2. Настроить retention для корзины
```bash
# Увеличить период хранения корзины с 30 до 365 дней
docker exec -u www-data nextcloud-fresh php occ config:app:set files trashbin_retention_obligation --value="auto, 365"
```
**ЗАЧЕМ:** Даёт больше времени на восстановление при проблемах
---
#### 3. Включить readonly для External Storage
```bash
# Запретить Nextcloud удалять файлы на S3
docker exec -u www-data nextcloud-fresh php occ files_external:option 1 readonly true
```
**ЗАЧЕМ:** Nextcloud сможет только ЧИТАТЬ с S3, не удалять
---
### 🟡 ВАЖНО - СДЕЛАТЬ В БЛИЖАЙШЕЕ ВРЕМЯ:
#### 4. Настроить регулярный бэкап
```bash
# Добавить в crontab
0 2 * * * tar -czf /backup/nextcloud_$(date +\%Y\%m\%d).tar.gz /var/lib/docker/volumes/*nextcloud*
```
#### 5. Мониторинг корзины
```bash
# Проверять размер корзины раз в день
0 9 * * * du -sh /var/lib/docker/volumes/*/files_trashbin/ | mail -s "Nextcloud Trash" admin@domain.com
```
---
## 📊 ИТОГОВАЯ ТАБЛИЦА РИСКОВ:
| Job | Опасность | Действие | Рекомендация |
|-----|-----------|----------|--------------|
| **DeleteOrphanedItems** | 🔴 КРИТИЧЕСКАЯ | Удаляет неиндексированные файлы | **ОТКЛЮЧИТЬ** |
| **ExpireTrash** | 🔴 ВЫСОКАЯ | Очищает корзину через 30 дней | Увеличить до 365 дней |
| **ExpireVersions** | 🟡 СРЕДНЯЯ | Удаляет старые версии | Настроить retention |
| **External Storage RW** | 🟡 СРЕДНЯЯ | Может удалять на S3 | Включить readonly |
---
## 🔍 ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:
### Когда запускаются Jobs:
- **Каждый час:** DeleteOrphanedItems, CleanupFileLocks
- **Каждый день:** ExpireTrash, ExpireVersions
- **Зависит от настроек:** ExpireShares
### Как работает DeleteOrphanedItems:
1. Сканирует файловую систему Nextcloud
2. Проверяет есть ли запись в `oc_filecache`
3. Если **НЕТ** → помечает как "orphaned"
4. Перемещает в корзину
### Почему не сработала защита:
- External Storage не был проиндексирован
- `filesystem_check_changes: 1` не помог (проверка была, но индекса нет)
- Job решил что файлы = мусор
---
## ✅ ЧТО СЕЙЧАС ЗАЩИЩАЕТ:
1. **Redis индексатор** - каждую минуту обновляет индекс
2. **Файлы на S3** - восстановлены и проиндексированы
3. **Бэкап корзины** - на случай проблем
---
## ⚠️ ЧТО НУЖНО СДЕЛАТЬ (ТВОЙ ВЫБОР):
### Вариант 1: БЕЗОПАСНЫЙ (рекомендую)
```bash
# 1. Отключить DeleteOrphanedItems
docker exec -u www-data nextcloud-fresh php occ background-job:delete 31
# 2. Увеличить retention корзины до года
docker exec -u www-data nextcloud-fresh php occ config:app:set files trashbin_retention_obligation --value="auto, 365"
# 3. Включить readonly для S3
docker exec -u www-data nextcloud-fresh php occ files_external:option 1 readonly true
```
### Вариант 2: ПАРАНОИДАЛЬНЫЙ
```bash
# Отключить все cleanup jobs
docker exec -u www-data nextcloud-fresh php occ background-job:delete 31 # DeleteOrphanedItems
docker exec -u www-data nextcloud-fresh php occ background-job:delete 6 # ExpireTrash
docker exec -u www-data nextcloud-fresh php occ background-job:delete 25 # ExpireVersions
```
### Вариант 3: ОСТАВИТЬ КАК ЕСТЬ
- Риск: может повториться при проблемах с индексацией
- Защита: Redis индексатор работает автоматически
---
**Какой вариант выбираешь?** Я рекомендую **Вариант 1** (безопасный).