Переехал с Nextcloud на Immich для фоток
Несколько лет я хранил фотки в Nextcloud — он у меня и так крутится на домашнем сервере, есть приложение Photos, синхронизация с телефона работает. Казалось бы, зачем что-то менять. А менять пришлось, потому что на коллекции в ~80 тысяч снимков всё это начало откровенно тормозить.
Что бесило в Nextcloud
Главная боль — листание галереи. Превьюшки генерируются лениво, и при заходе в папку с тысячами фоток интерфейс просто задумывался на несколько секунд. Поиск был никакой: только по имени файла и по дате. Найти «фотку с собакой на даче летом» — это руками листать.
Распознавания лиц и объектов из коробки нет, надо ставить отдельное приложение Recognize, которое прожорливое и всё равно работало через раз. В общем, Nextcloud — отличный комбайн для файлов, но как фотохранилище он вторичен по дизайну.
Почему Immich
Immich заточен именно под фотки, и это чувствуется сразу. Что зацепило:
- Скорость. Галерея на десятки тысяч снимков скроллится плавно, превью отдаются мгновенно.
- ML-поиск. Распознаёт лица (можно назвать человека — и вот все его фото), ищет по объектам. Я серьёзно набрал в поиске «cat» и получил всех котов из архива. Работает на CLIP-модели локально, ничего наружу не уходит.
- Мобильное приложение. Реально хорошее. Автобэкап с телефона включил один раз и забыл — новые фотки сами уезжают на сервер.
- Карта и таймлайн по EXIF — приятный бонус.
Как поднял
Стандартный compose-стек в /app/immich/, по официальному примеру. Ключевое — отдельный том под загрузки и Postgres с расширением для векторного поиска:
services:
immich-server:
image: ghcr.io/immich-app/immich-server:release
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro
env_file: .env
ports:
- 2283:2283
depends_on: [redis, database]
restart: always
immich-machine-learning:
image: ghcr.io/immich-app/immich-machine-learning:release
volumes:
- model-cache:/cache
restart: always
ML-контейнер первый раз тянет модели — пара минут, и потом индексация всего архива идёт в фоне. На моём железе без GPU 80 тысяч фоток прожевались за ночь.
Импорт старого архива сделал через immich-cli:
immich upload --recursive /mnt/photos/archive
Осадочек
Immich официально предупреждает, что он ещё развивается и формат может меняться между релизами — поэтому я не выкинул старый архив и держу его отдельной холодной копией. Бэкаплю и базу Postgres, и папку upload. Но за полгода ни одного сюрприза не словил, обновления накатываются чисто.
Nextcloud у меня остался — но теперь чисто под документы и файлопомойку, чем он, собственно, и хорош.