Вероятно, картина покажется вам знакомой, если я скажу, что мой семейный фотоархив представляет собой хаотичное месиво фоток и видео, разбросанных по телефону, облаку (куда они льются сами) и домашним дискам/флешкам. И вряд ли стоит пояснять, что в таком виде эти (в общем-то весьма дорогие мне) воспоминания легко потерять, неудобно пересматривать и весьма трудоёмко искать 🙁
Конечно, я давно осознавал, что надо навести здесь порядок. И ещё долго бы продолжал просто осознавать, если бы накануне Нового Года случайное невысокое падение внешнего HDD с огромной кучей фоток не превратило его в тыкву и не обошлось в несколько десятков килорублей на восстановление. И вот тогда "надо" внезапно превратилось в "пора"... ⏰
Под "навести порядок" я принял для себя следующее:
1. Организовать надёжное хранение в едином месте, но с резервированием локально и в облаке
2. Обеспечить автоматическое добавление снимков и видео с телефонов с попутной фильтрацией дубликатов и каталогизацией
3. Предоставить быстрый поиск по людям, датам, местам и объектам с любого авторизованного устройства (для родственников) 🎯
Раньше почти все эти цели достигались использованием Google Photos, но в новых реалиях от него пришлось отказаться, а достойных альтернатив на российском рынке я не нашёл (хотя и попробовал платный Яндекс.Диск). К тому же захотелось получить больше контроля и возможностей, поэтому я решил попробовать self-hosted решение и выбрал Immich — opensource'ный аналог Google Photos, который мне когда-то порекомендовал Артём @artipop Шабуров. Этот сервис превосходит конкурентов не только по числу звёзд на GitHub, но и по зрелости фич, а это для меня очень важно 🔝
Я развернул его c помощью Docker Compose на российском VPS с 2 ядрами CPU, 4 ГБ памяти и 1,5 ТБ места на HDD. Такой сервер обошёлся в 1400 руб/мес на первые три месяца (новогодняя акция), потом будет порядка 1900 руб/мес (хостинг FirstVDS). В целом, основное взаимодействие с сервисом при такой его скромной мощи пока что полностью устраивает: лента скроллится, видосики грузятся, поиск ищёт и находит. Основной дискомфорт вызывает только извлечение метаданных из загружаемых медиа файлов — для мощного поиска под капотом у Immich работает целая банда моделей машинного обучения, а оно на голом CPU работает, мягко говоря, не быстро — чуть ли не бОльшую часть каникул VPS лопатил круглые сутки на полную мощность, чтобы отсмотреть все мои фото/видео и правильно их проиндексировать (векторизовать картинки, извлечь тексты, распознать людей и т.д.) Мне даже пришлось увеличить ему размер SWAP-файла, чтобы во время распознавания Python-процесс не прибивался OOM Killer'ом. Впрочем, такой объём данных требуется обработать лишь раз; дальше медиа файлы будут добавляться поштучно, и минутная задержка на их индексацию кажется вполне приемлемой 👌
Зато теперь у меня наконец-то появилось более-менее целостное, управляемое и удобное хранилище, в котором на сегодня:
• 42К фотографий (уже без дубликатов и почти без "мусора")
• 3,5К видеозаписей
• 20 лет воспоминаний (плюс несколько сотен оцифрованных бумажных снимков более старшего возраста) 📷
Следующими шагами будет настройка резервирования на домашнее сетевое хранилище (заказано, едет) и постепенное наведение смыслового порядка: разметка людей (имена, даты рождения), уточнение дат съёмки, удаление лишних снимков и т.п. Наверняка на этом пути ещё выяснятся какие-нибудь неприятные моменты, но пока впечатление об Immich как сервисе очень даже позитивное. Особо порадовали:
• удобное мобильное приложение (наряду с сайтом)
• мощное распознавание людей (в том числе в полоборота, в том числе детей, в том числе в очках/масках и в воде)
• клёвый контекстный поиск (запросы типа "закат на пляже", "пятнистый кот на руках у мальчика", "девушка на мотоцикле" исполняются на ура) 🪄
Намерен продолжать осваивать и рассказывать вам по мере появления новых любопытных наблюдений. А если у вас уже есть свой опыт в решении подобных задач, поделитесь — нам наверняка есть, чему поучиться друг у друга 🙂
Post #333
462
Верхняя полка📝 Расскажу о нём отдельно в другой раз
- 👍 13
- 🔥 3
- 🤔 1