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

7.5 KiB
Raw Blame History

Исправление проблемы с сохранением в 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

{
  "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. Создан конфиг файл

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

docker restart onlyoffice-standalone

3. Проверка статуса

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 запущен:

docker ps | grep onlyoffice-standalone
# Должен быть Up несколько минут

2. Проверь конфиг файл:

docker exec onlyoffice-standalone cat /etc/onlyoffice/documentserver/local-production-linux.json
# Должен содержать rejectUnauthorized: false

3. Проверь логи OnlyOffice:

docker logs --tail 50 onlyoffice-standalone 2>&1 | grep -i "error\|callback"

4. Проверь callback из контейнера:

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:

docker restart onlyoffice-standalone
sleep 20  # Подожди полного запуска

⚠️ Альтернативное решение (если всё ещё не работает)

Использовать HTTP вместо HTTPS для callback

Изменить в open_file_v2.php:

Было:

"callbackUrl": "https://crm.clientright.ru/crm_extensions/file_storage/api/onlyoffice_callback.php?s3Path=<?php echo urlencode($s3Path); ?>",

Стало:

"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!