После очередного обновления Nextcloud до 27 версии возникла проблема с шифрованием. При открытии файлов с помощью Collabora Office возникало сообщение: Cannot decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you Сразу скажу, в данной статье не будет пошаговой инструкции что делать, но будет дано направление и описаны все плюсы и минусы и будет немного исследований. Статья немного сумбурная, поскольку писалась через какое‑то время после всех событий. Всё что вы делаете — вы делаете на свой страх и риск! Перед тем, как что‑то делать — остановите все клиенты Nextcloud, сделайте по возможности бекап данных у клиентов, закройте доступы к серверу Nextcloud, сделайте всё, чтоб клиенты не ходили в Nextcloud. Maintenance — не выход. Так же сделайте бекап данных с которыми собираетесь работать, бекап app и базы данных и бекапы всех бекапов, которые у вас остались, поскольку они могут ротироваться. После вышеприведённого сообщения, файл больше не открывался, даже если скачать из web‑версии поскольку перезаписывались ключи шифрования для данного файлаЕсли забекапить их заранее и после этого не пытаться открыть с помощью collabora, а просто скачать, файл можно было прочитать, иначе доступ к файлу терялся наглухо. Сами ключи лежат в files_encryption у каждого пользователя. Усиленное гугление, ничего не дало, проблема на момент написания статьи не решаема.  Откатить Nextcloud можно только если есть бекап app и базы данных, файлы при обновлении как правило не трогаются, но если уже было обновление и сломало пару файлов, которые попытались открыть — то всё, с этими файлами ничего не сделать, если нет бекапов ключей. Ну если это пару файлов — то можно и вручную восстановить из локальной копии, если они не успели синхронизироваться. В общем очень много ЕСЛИ. При этом, новые файлы в новой версии создаются нормально. Казалось бы, какая‑то проблемы со старыми ключами шифрования, о которой есть информация в интернете, но это касалось совсем старой версии. Команды типа: Не помогали. Отчасти проблема еще в том, что при изменении файлов, меняется некая глубина, из-за чего в таблице в колонке encrypted в таблице oc_filecache в постгресе, значение может быть не только 0 или 1, но выше 1, вроде как согласно версии файла, но до конца не ясно как это работает. Единственным решением становится полный отказ от шифрования Nextcloud и расшифровка файлов или загрузка файлов из локальных nextcloud на клиентских pc или из стороннего бекапа. Варианты такие: php occ encryption:decrypt-all загрузка файлов из локальных nextcloud на клиентских pc загрузка из стороннего бекапа всего nextcloud сервера загрузка файлов из бекапа клиента Использование decrypt-all-files.php ( https://github.com/syseleven/nextcloud-tools/blob/master/rescue/decrypt-all-files.php ) Преимущества и недостатки: Очень коряво работает, часть файлов почему-то не дешифруются можно в этом убедиться с помощью команды:  Так же есть проблемы с файлами в корзине и с версиями файлов. Долго, клиентов может быть много, не всегда синхронизированы все папки, есть вопросы с shared папками. Бекап может быть недостаточно свежий или не полный (крайне желателен бекап базы и app). Почти то же самое, что и с пунктом 2, плюс встречалась проблема, что в бекапе не бекапилось время создания файлов - а это очень важно. Да клиентов может быть много. В итоге это почти идеальный вариант. По 5 варианту поподробней: Из минусов - не создаются пустые папки, но это не проблема - можно пройтись по папке с исходными данными и создать такие же папки. Можно даже попробовать не забыть сохранить дату создания папок. Так же теряются связи shared папок. Нужно делать truncate таблицы oc_filecache и некоторых других, связанных с кешированием (проще всего сделать запрос на размер таблиц в postgres и отсортировать по размеру. самые тяжелые и будут те, что нужны - на всякий случай обязательно свериться с содержимым и сделать бекап). Очищать желательно остановив nextcloud. Так же нужно будет на всякий случай сделать сверку с списком папок и файлов, находящихся у клиента и даже можно сравнить md5, но это не обязательно. Например это можно сделать так: Под виндой собрать md5 можно установив linux в wsl, на маке и в линуксе эти инструменты должны быть из коробки. После воссоздания структуры папок у каждого пользователя, необходимо убедиться в её корректности. Обязательно должна быть папка files, иначе nextcloud будет ругаться. Опциональны папкиfiles_trashbinfiles_versions В целом из nextcloud.log можно понять, что не так. После запуска nextcloud нужно сделатьphp occ files:scan --all Далее могут быть проблемы с расшаренными папками, если их много — можно попробовать разобраться в этом на основе имеющегося бекапа сломанной версии nextcloud. В целом то она работает, просто collabora ломает файлы. После сканирования и восстановления расшаренных папок — можно аккуратно выпускать Nextcloud в мир. Есть минус, о котором я не упомянул — все клиенты будут синхронизировать данные заново. Это может занять значительное время. Так же после отключения шифрования, хочется удалить мастер‑ключи, которые лежат в корне папки с данными. Если это сделать, то начинает возникать надоедливое сообщение: Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files Или что-то типа того Чтоб вычистить нечисть окончательно, нужно удалить из таблицы oc_appconfig строки с appid=encryption Возможно можно просто отключить модуль encryption, но я решил убрать следы шифрования совсем. После чего, nextcloud забудет об этом как о страшном сне. А как же шифрование? Да очень просто — создаём шифрованный раздел luks (cryptsetup) и радуемся гораздо более гибкому, более быстрому и проверенному временем решению. Инструкций полно. Но забывать про бекапы нельзя. На последок хочу сказать, что архитектура этого шифрования на мой взгляд очень кривая, создаёт тонну дополнительных файлов и легко ломается.При количестве реальных файлов 120 тысяч, реально файлов было свыше 600 тысяч. В качестве бонуса — небольшой лайфхак, чтоб отключить для определённой папки версии файлов. У меня например в Nextcloud хранятся логи всех сессий SecureCRT. Версии логов мне не нужны. Сразу скажу, отключить версии файлов совсем не выйдет — они всё равно будут создаваться, но можно создать специального пользователя у которого будет единственная папка SecureCRT/Logs и расшарить эту папку основному пользователю. Далее в кроне просто создаём задание: Которая просто чистит все версии файлов, у специального пользователя (не путать с основным юзером). За очистку корзины отвечает параметр trashbin_retention_obligation в конфиге. Он легко гуглится, но основной смысл в том, что корзина чистится, только когда лимит заканчивается. Мне это не нужно - достаточно, чтоб она чистилась раз в 7 дней, поэтому: Так же я дополнительно настроил поверхностный бекап, в который входит md5, дата модификации и создания файла, размер, файловая структура,база данных и папка конфигурации. Запускаю раз в сутки. Эти данные мне бы сильно пригодились при восстановлении, а места занимают не много. Правда если у вас всё зашифрованные данные, этот бекап поможет лишь отчасти. Делать индекс лучше всё таки для расшифрованных данных.