Медленная загрузка фото в Nextcloud
11 января 2024 г. linux self-hosted
Я уже несколько лет использую Nextcloud в качестве основного места хранения фотографий. Сначала я страдал от ооочень медленной загрузки фото в веб-интерфейсе и мобильном приложении. Решение этой проблемы очень простое.
Первичная генерация
В разделе Приложения своего Nextcloud-а я нашел дополнение Preview Generator. Это официальный плагин, который генерирует превью для всех фото в облаке. Потом, когда в веб-интерфейсе или в приложении на смартфоне вы будете просматривать фото, он не будет грузить многомегабайтный оригинал, а покажет это превью. Если скачать фото на диск, то скачается уже полный оригинал.
Я установил плагин из веб-интерфейса, и, перед запуском процедуры генерации, обновил Nextcloud до последней версии. По субъективным ощущениям последняя версия работает шустрее.
Сначала надо запустить генерацию превьюшек для уже существующих фото. Я зашел в докер-контнейнер с nextcloud-ом и выполнил:
$./occ preview:generate-all --path="/admin/files/Фото"
Указал, что хочу превьюшки только из папки Фото.
У меня 132 ГБ фотографий, и на одном ядре Intel Celeron J1900 весь процесс занял несколько дней, поэтому я запускал команду внутри screen-а.
Сгенерированные файлы лежат в <nextcloud_корень>/data/appdata_...
. У меня получилось 60 ГБ превьюшек.
Регулярная задача
Для генерации превью новых фотографий, нужно добавить примерно такую cron-джобу:
*/20 * * * root docker exec -u www-data -t nextcloud_app_1 ./occ preview:pre-generate
Чтобы это всё работало, внутри nextcloud-а должен корректно работать крон. Для этого я тоже использую планировщик на сервере, и делаю обычный exec внутрь контейнера:
*/5 * * * * root docker exec -u www-data -t nextcloud_app_1 php -f cron.php
Итог
Теперь раздел Фото в приложении и веб-интерфейсе по скорости работы сопоставим с Google Фото или Яндекс.Диском.
Из минусов:
- пока не смог сделать превью для видео. Вероятно, не хватает какого-то ffmpeg или еще чего-то. В интернете пишут, что должно работать.
- пришлось заплатить шестьюдесятью гигами свободного места для превьюшек. И эта цена будет расти со временем