Onlyoffice. Размер файла превышает ограничение, установленное для вашего сервера.
У меня уже имеется настроенная мною связка серверов Nextcloud и Onlyoffice docs. О настройке и обновлении всей этой эпопеи писал ранее в статье:
https://typical-admin.ru/item/99-nextcloud-update-18-to-30
Всё нормально работает, но недавно столкнулся с жалобой сотрудника, что не получается открыть для редактирования большой xlsx-файл размером 111Мб. Onlyoffice выдавал ошибку о том, что размер файла превышает значение, установленное для сервера:
Чтобы решить эту проблему, нужно увеличить значение нескольких параметров на сервере Onlyoffice docs. И первый параметр можно найти в файле /etc/onlyoffice/documentserver/nginx/includes/ds-common.conf. Также, на этот файл ведёт символическая ссылка /etc/nginx/includes/ds-common.conf. В нём есть параметр:
client_max_body_size 100m;
Его надо увеличить до 200m. Затем применение параметров nginx:
nginx -t && nginx -s reload
Далее меня интересует параметр "maxDownloadBytes", находящийся в разделе "FileConverter", а также параметр "uncompressed": "300MB" для типа "xlsx;xltx;xlsm;xltm", находящийся в массиве "inputLimits". И всё это изобилие находится в одном большом конфигурационном файле /etc/onlyoffice/documentserver/default.json. Но! В документации сказано:
Если вы хотите изменить параметры, воспользуйтесь local.json файлом, в котором должны быть сохранены все отредактированные параметры. Этот файл находится в том же каталоге, что и default.json файл, и вся структура объекта для необходимого параметра должна быть сохранена. Не редактируйте содержимое файла default.json напрямую. Значения по умолчанию будут восстановлены при каждом перезапуске Docker-контейнера или обновлении ONLYOFFICE Docs до новой версии, и все ваши изменения будут потеряны.Поэтому открываю файл /etc/onlyoffice/documentserver/local.json и в самом конце нахожу вот такие строки:
"exponent": 65537, "exponentOld": 65537 }, "storage": { "fs": { "secretString": "wirKgwerdsghfgfs8QwH" } } }
И между нижними двумя скобками надо вставить вот такую конструкцию:
"exponent": 65537,
"exponentOld": 65537
},
"storage": {
"fs": {
"secretString": "wirKgwerdsghfgfs8QwH"
}
},
"FileConverter": {
"converter": {
"maxDownloadBytes": 209715200,
"inputLimits": [
{
"type": "xlsx;xltx;xlsm;xltm",
"zip": {
"uncompressed": "1100MB",
"template": "*.xml"
}
}
]
}
}
}
Выделил зелёным цветом то, что нужно добавить. Т.е. здесь увеличен параметр "maxDownloadBytes" до 209715200 байт (200Мб) и увеличен параметр "uncompressed" до 1100MB. Первый отвечает за максимальный размер файла, который можно передать конвертеру, а второй отвечает за максимальный размер декомпрессированного xlsx-файла. Ведь известно, что файл XLSX — это сжатый архив (ZIP), содержащий несколько XML-документов и служебных файлов, которые в распакованном состоянии занимают гораздо больше места, чем в упакованном. Теперь нужно применить конфигурацию, перезапустив сервисы Onlyoffice docs. Это делается командой:
systemctl restart ds-*
Потом, чтобы убедиться, что сервисы стартовали, надо ввести команду:
systemctl list-units --type=service --state=running
Эта команда покажет все запущенные сервисы, и среди них должно быть трое:
ds-converter.service loaded active running Docs Converter
ds-docservice.service loaded active running Docs Docservice
ds-metrics.service loaded active running Docs Metrics
Если их нет, или они не все, значит в конфиге допущена ошибка. Поэтому рекомендуется делать бэкапы конфигов перед их изменением.
Собственно всё, после этого большой xlsx-файл будет открываться для редактирования в Onlyoffice docs.
Донаты принимаются на кошельки:
Yoomoney:
4100118091867315
Карта Т-Банк (бывший Тиньков):
2200 7017 2612 2077
Карта Альфа-Банк:
2200 1539 1357 2013