Есть такое понятие Self-hosted photo and video management — по сути использование своего сервера для управления своими фото и видео. Хоть для NAS это не ново, но последние достижения в нейросетях и прочие проекты открывают новые возможности по управлению своими фото. Ну и последнее время показывает как «партнеры» или поставщики легко отключают от своих сервисов по надуманным причинам. Короче пора хранить у себя все фото и не зависеть от Гугла или яблока.
По старинке- надо было ждать когда разработчик выпустит приложения как для самого NAS так и мобильную версию, что и долго и не качественно и вечно будет отставать. А сейчас есть возможность использование контейнеров в Docker, что позволяет расширить функциональные возможности и попробовать разные варианты. Чем я и займусь.
Вдохновился я через прочтения этих источников:
- https://mariushosting.com/how-to-install-immich-on-your-synology-nas/
- https://bafista.ru/immich-dlya-prosmotra-i-hraneniya-lichnyh-foto-i-video/
- https://tonfotos.com/ru/articles/self-hosted-photo-gallery/
- https://meichthys.github.io/foss_photo_libraries/
Для проверки работы я выбрал 3 решения : Photoprism, Librephotos, Immich. Перечислил я именно в той последовательности как я их у себя «в голове» оценивал после знакомства в интернете. Именно возможности , «мощь» закладываемая в продукт мне казалось будет соответствовать. Но на деле и по удобству их надо расположить в обратном порядке.
На моем NAS Terramaster F4-424 4 CPU (Intel N95) и 8 Гб DDR5. что вполне по силам потянуть и проверить несколько вариантов. Заодно набью руку на docker.
В качестве источника фото и видео я скачал с Google Drive все свои фото в архиве и поместил в отдельную папку общего доступа на NAS. получилось 32Гб -13400 файлов (для примера на NAS моя папка photo 410Гб -67000 файлов)
Вкратце мои действия были такими:
- Смотрел о продукте инфу и пробовал их демо режим на сайте
- в Docker создавал одноименную папку по имени решения, например immich
- через Portainer создавал проекты, где в качестве источников конфигурации давал файлы YAML
- после успешного разворачивания. делал первичную настройку — указывал в качестве источника данных папку Google Photo( вначале подкладывал несколько папок с небольшим числом файлов, чтобы оценить скорость обработки)
- вносил изменения в конфигурации и в качестве библиотеки уже отдавал всю папку Google Photo
Поставил я сразу три решения и на одном материале смотрел насколько удобно и отвечает моим ожиданиям. Как отображается лента как быстро по ней (учитываем что данных не много) перемещаться, что можно поправить, как искать. Сразу отмечу- ресурсы сервера хоть и были размазаны , но не влияли друг на друга, что я смотрел по мониторингу загрузки и процессора и памяти
Очень навороченное решение, с установкой проблем не возникло. Файлы появились после сканирования. По ресурсам — всего два контейнера , есть память По удобству мне сразу не понравился, причем настолько, что я даже его первым в итоге прибил. Перемещения по ленте по сути и нет, управлять людьми не понятно, информация по фото избыточна, хотя что то можно править. Поиск только по ключевым словам, которые система нашла. Представляю, сколько там будет слов если скормить сотню тысяч фото.
До мобильного приложения я даже не дошел.
По описанию и по удобству взаимодействия на их демо сайте меня устроил. Но бился я с установкой и настройкой дня 1,5-2. Вот решилось все переназначением прав linux на определенных папках. Но зато именно этот опыт установок и конфигурации я получил именно на этом продукте. По скорости работы не подкачал, но лента отображалась довольно крупными привью да еще и с большими разрывами- выглядело не очень и оттого просмотр по ней был дольше (тем более в сравнении с другими). Из внешних источников я смог подключить только один, и моя идея подключения разных библиотек не подошла. Хотя там в интерфейсе структура папок видна, но в отображении это не учитывается. Пару раз подвисали процессы, что хорошо, что это видно и есть прогресс бар. Но ряд инструментов не понятны. поиск по словам не отрабатывал (английский или русский) Возможно не донастроил. По ресурсам адекватно грузит, как и все при обработке по полной а в простое с десяток %. Что побудило удалить? Именно возится утомило, ну и третий конкурент просто заворожил и тем более в сравнении моих трудодней.
Вот наконец и до него дошло. Хотя он и вынесен в заголовок. По совокупности вышесказанного могу только констатировать- immich очень крутой продукт. Но почему последним я его ставил? Везде если открыть поиском его ставят как альтернативу Google Photo, а именно это выгрузка фото и синхронизация с мобильным, отображение фото и их масштабирование при просмотре, скорость работы. ЧТо я не ставил как основу, поскольку у меня итак есть где отображать мои фото. Но как начал использовать- во первых простота установки- поставил и все не надо танцев с бубном. Можно подключить несколько внешних источников библиотек , например мои Фото, или разные папки из него.
Удобное мобильное приложение, все просто и лаконично.
Но чего я не ожидал- это использование нейросетей — моделей для обработки изображений- поиск лиц а также smart поиск- когда можно в свободной форме в строке поиска написать «закат на море» или «дрон в небе» «вид на землю с воздуха» «документы», «плохие картинки» и в ответ получаешь вполне адекватный результат,ну не все картинки 100% но точно 100% там будет то, что спрашивал. (см ниже по тексту пример) По ресурсам легкий, но я настроил модели мультиязычные (XLM-Roberta-Large-Vit-B-16Plus) и они потяжелее, однако все работает шустро и даже при том что ресурсы загружены на обработку. Есть регулировка потоков обработки, что в некоторых операциях можно ускорить работу.
UPD: Рискнул подключить свою библиотеку Photo, по прошествии нескольких часов сбойнул NAS, не пускает. может с диском что? —> точно. Рейд глюканул пошел процесс синхронизации, что существенно снизило производительность.
UPD2: как только рейд восстановился, я добавил две внешние библиотеки и уже запустил процессы. что займет продолжительное время
Обработка привью прошла, начался самый долгий процесс это опознавание лиц и их группировка, а также Умный поиск. Число потоков увеличить не имеет смысла, поскольку процессор и так нагружен, а очередной сбой мне не нужен.
обработав уже более половины изображений поиск по контексту уже выдает адекватные результаты. Например я точно знаю, что у меня есть фото игрушки на фоне моря в Греции. Ранее я бы открыл или альбом поездки и там пролистал фото или же поиск по дате, если дат не помним, то по месту и далее так же просмотром фото найти нужную фото. Например через поиск по карте.
Но сейчас я это делаю так — примерно помню что там должно быть и ввожу в строку поиска, без уточнения остальных параметров
и вот результат — искомая фото на первом месте.
т.е собственной библиотекой фото можно пользоваться даже как источником данных для составления запроса далее в нейросеть для модификаций.