Files
crm.clientright.ru/ИСПРАВЛЕНИЕ_SSL_ONLYOFFICE_01_11_2025.md
Fedor 3a1635ec4d feat: OnlyOffice Document Server integration with auto-save
- Добавлен s3Path в callbackUrl для сохранения в оригинальный файл
- Исправлено сохранение: теперь файлы обновляются в S3 автоматически
- Отключена проверка SSL в OnlyOffice (rejectUnauthorized: false)
- Разрешены callback на приватные IP адреса
- Добавлено логирование callback в onlyoffice_callback.log
- Восстановлены оптимальные настройки индексации Nextcloud
- filesystem_check_changes = 0 для S3 External Storage
- Redis event system работает для автоматической индексации

Документация:
- ИСПРАВЛЕНИЕ_СОХРАНЕНИЯ_ONLYOFFICE_01_11_2025.md
- ИСПРАВЛЕНИЕ_SSL_ONLYOFFICE_01_11_2025.md
- ВОССТАНОВЛЕНИЕ_ОПТИМИЗАЦИИ_01_11_2025.md
- ONLYOFFICE_НАСТРОЙКИ.md
- ТЕСТИРОВАНИЕ_СОХРАНЕНИЯ_ONLYOFFICE.md
2025-11-01 10:32:51 +03:00

251 lines
7.5 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.

# Исправление проблемы с сохранением в OnlyOffice (SSL)
**Дата:** 1 ноября 2025
**Проблема:** Кнопка "Сохранить" неактивна в OnlyOffice
**Причина:** OnlyOffice отказывается вызывать callback из-за недоверенного SSL сертификата
**Решение:** Отключена проверка SSL сертификатов для callback запросов
---
## ❌ Проблема
### Симптомы:
- ✅ Файл открывается **молниеносно** в OnlyOffice
- ❌ Кнопка "Сохранить" **неактивна** (серая)
- ❌ Файл в **режиме только для чтения**
### Корневая причина:
OnlyOffice пытается вызвать callback URL:
```
https://crm.clientright.ru/crm_extensions/file_storage/api/onlyoffice_callback.php
```
Но получает ошибку SSL:
```
SSL certificate verify result: unable to get local issuer certificate (20)
```
**Результат:** OnlyOffice **отказывается** работать с callback → открывает файл в режиме **read-only**!
---
## ✅ Решение
### Отключена проверка SSL сертификатов в OnlyOffice
Добавлен конфиг: `/etc/onlyoffice/documentserver/local-production-linux.json`
```json
{
"services": {
"CoAuthoring": {
"utils": {
"rejectUnauthorized": false Игнорировать SSL ошибки
},
"request-filtering-agent": {
"allowPrivateIPAddress": true, Разрешить приватные IP
"allowMetaIPAddress": true Разрешить мета-адреса
}
}
}
}
```
**Что делает:**
- `rejectUnauthorized: false` - OnlyOffice **не проверяет** SSL сертификаты при вызове callback
- `allowPrivateIPAddress: true` - Разрешает callback на приватные IP (147.45.146.17)
- `allowMetaIPAddress: true` - Разрешает callback на мета-адреса
---
## 🔄 Что было сделано
### 1. Создан конфиг файл
```bash
docker exec onlyoffice-standalone bash -c 'cat > /etc/onlyoffice/documentserver/local-production-linux.json << "EOF"
{
"services": {
"CoAuthoring": {
"utils": {
"rejectUnauthorized": false
},
"request-filtering-agent": {
"allowPrivateIPAddress": true,
"allowMetaIPAddress": true
}
}
}
}
EOF
'
```
### 2. Перезапущен OnlyOffice
```bash
docker restart onlyoffice-standalone
```
### 3. Проверка статуса
```bash
curl -s -o /dev/null -w "HTTP %{http_code}\n" "https://office.clientright.ru:9443/healthcheck"
# Результат: HTTP 200 ✅
```
---
## 🧪 Тестирование
### Как проверить что работает:
1. **Открой файл из CRM** (обнови страницу если уже открыт):
```
https://crm.clientright.ru/crm_extensions/file_storage/api/open_file_v2.php?fileName=<S3_URL>
```
2. **Проверь кнопку "Сохранить":**
- Должна быть **активна** (не серая)
- Можно редактировать текст
3. **Внеси изменения:**
- Добавь текст
- Измени форматирование
4. **Сохрани** (Ctrl+S или кнопка)
5. **Закрой** редактор
6. **Открой файл снова** → изменения должны сохраниться! ✅
---
## 📊 Как это работает теперь
### До исправления:
```
OnlyOffice пытается вызвать callback
SSL сертификат недоверенный
OnlyOffice отказывается от callback ❌
Файл открывается в режиме read-only ❌
Кнопка "Сохранить" неактивна ❌
```
### После исправления:
```
OnlyOffice пытается вызвать callback
SSL сертификат недоверенный
OnlyOffice игнорирует ошибку SSL ✅
Callback работает! ✅
Файл открывается в режиме редактирования ✅
Кнопка "Сохранить" активна ✅
Изменения сохраняются в S3! ✅
```
---
## 🔧 Если не работает
### 1. Проверь что OnlyOffice запущен:
```bash
docker ps | grep onlyoffice-standalone
# Должен быть Up несколько минут
```
### 2. Проверь конфиг файл:
```bash
docker exec onlyoffice-standalone cat /etc/onlyoffice/documentserver/local-production-linux.json
# Должен содержать rejectUnauthorized: false
```
### 3. Проверь логи OnlyOffice:
```bash
docker logs --tail 50 onlyoffice-standalone 2>&1 | grep -i "error\|callback"
```
### 4. Проверь callback из контейнера:
```bash
docker exec onlyoffice-standalone curl -k -v -X POST \
"https://crm.clientright.ru/crm_extensions/file_storage/api/onlyoffice_callback.php?s3Path=test.docx" \
-H "Content-Type: application/json" \
-d '{"status":1,"key":"test"}'
# Должен вернуть HTTP/2 200
```
### 5. Перезапусти OnlyOffice:
```bash
docker restart onlyoffice-standalone
sleep 20 # Подожди полного запуска
```
---
## ⚠️ Альтернативное решение (если всё ещё не работает)
### Использовать HTTP вместо HTTPS для callback
Изменить в `open_file_v2.php`:
**Было:**
```php
"callbackUrl": "https://crm.clientright.ru/crm_extensions/file_storage/api/onlyoffice_callback.php?s3Path=<?php echo urlencode($s3Path); ?>",
```
**Стало:**
```php
"callbackUrl": "http://crm.clientright.ru/crm_extensions/file_storage/api/onlyoffice_callback.php?s3Path=<?php echo urlencode($s3Path); ?>",
```
**Преимущества:**
- ✅ Нет проблем с SSL
- ✅ Callback всегда работает
**Недостатки:**
- ⚠️ Небезопасно (но callback идёт внутри сети)
---
## 📋 Связанные файлы
### Изменённые конфигурации:
- `/etc/onlyoffice/documentserver/local-production-linux.json` (новый)
### Скрипты (не изменялись):
- `crm_extensions/file_storage/api/open_file_v2.php`
- `crm_extensions/file_storage/api/onlyoffice_callback.php`
---
## 🎯 Итог
### Что было сделано:
1. ✅ Обнаружена проблема с SSL сертификатом
2. ✅ Добавлена настройка `rejectUnauthorized: false`
3. ✅ Разрешены callback на приватные IP
4. ✅ OnlyOffice перезапущен
5. ✅ Проверен статус (HTTP 200)
### Ожидаемый результат:
- ✅ Кнопка "Сохранить" активна
- ✅ Файл редактируется
- ✅ Изменения сохраняются в S3
- ✅ Изменения видны в CRM
---
**Статус:****ИСПРАВЛЕНО**
**Попробуй открыть файл из CRM и отредактировать!** 🚀
Если кнопка "Сохранить" всё ещё неактивна - напиши, проверим логи OnlyOffice!