Immich или PhotoPrism: что выгоднее и когда
Уход из Google Photos или iCloud почти всегда упирается в один и тот же выбор: Immich или PhotoPrism. Оба — self-hosted галереи с автобэкапом с телефона и поиском по содержимому фото, оба открытый код, оба ставятся на свой VPS за пять минут. Но за похожим фасадом стоят разные архитектуры, разный аппетит к памяти и разная философия того, что вообще должна делать фотогалерея. Разберём по-честному, где каждый выигрывает и в каком сценарии выбор становится очевидным.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Что делает каждый и в чём разница подхода
Immich с самого начала проектировался как замена мобильному приложению Google Photos: главный сценарий — открыл телефон, снял фото, оно тут же появилось на сервере через фоновую синхронизацию. Вокруг этого выстроена вся архитектура: отдельный API-сервер на Node.js, PostgreSQL с векторным расширением для поиска по смыслу, Redis под очередь задач и отдельный ML-контейнер, который считает лица и эмбеддинги для CLIP-поиска. Это активно развивающийся проект с частыми релизами — и, как следствие, интерфейс и API за последние пару лет менялись заметно быстрее, чем у более зрелого PhotoPrism.
PhotoPrism старше и устроен проще: один Go-бинарник плюс MariaDB (или SQLite для маленьких библиотек). Философия другая — это скорее «умная файловая система для фото», которая индексирует то, что уже лежит на диске в оригинальной структуре папок, а не «принимает» фото как единственный источник правды. Мобильное приложение у PhotoPrism тоже есть, но исторически это было слабое место проекта — Immich с самого начала фокусировался именно на мобильном опыте, и разрыв в этой части до сих пор ощутим.
Если упростить: Immich — это «сделайте мне альтернативу Google Photos», PhotoPrism — «дайте мне умный веб-интерфейс над моим архивом фото». Формулировка задачи предопределяет большую часть остальных различий.
ИИ-поиск: CLIP в Immich против TensorFlow в PhotoPrism
Обе системы обещают «найти фото по описанию», но делают это принципиально по-разному, и качество результата ощутимо отличается.
Immich использует модель CLIP — она понимает семантику текстового запроса и ищет по смыслу, а не по заранее заданному словарю тегов. Запрос «закат над водой» найдёт подходящие кадры, даже если в них нет буквального тега «закат», потому что модель сопоставляет эмбеддинг текста с эмбеддингом изображения напрямую. Это же используется для распознавания лиц — Immich группирует похожие лица в кластеры, которые можно затем подписать именем.
PhotoPrism строит классический пайплайн тегирования через TensorFlow: модель классификации сцен и объектов при индексации присваивает фото набор тегов из ограниченного словаря («пляж», «собака», «закат», «еда»), и поиск в интерфейсе идёт уже по этим тегам, а не по свободному тексту. Разница ощущается на практике: CLIP в Immich точнее понимает нестандартные и составные запросы, TensorFlow-теги в PhotoPrism прозрачнее — вы всегда видите конкретный список тегов у фото и можете их поправить руками, если модель ошиблась.
Отдельно про лица: обе системы их распознают и позволяют объединять снимки одного человека в альбом, но Immich исторически довёл эту функцию до более зрелого состояния — точнее кластеризация, удобнее интерфейс подтверждения совпадений.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверТребования к серверу и деньги
Здесь разница архитектур бьёт напрямую по кошельку. Immich — это четыре-пять контейнеров (сервер, ML-сервис, Postgres, Redis, иногда прокси), и каждый из них требует своей доли памяти даже в покое. PhotoPrism — два контейнера (сам сервис плюс база), и голый Go-бинарник ощутимо легче Node.js API плюс отдельного Python-процесса с ONNX Runtime.
| Параметр | Immich | PhotoPrism |
|---|---|---|
| Контейнеров в типовом compose | 4–5 | 2 |
| База данных | PostgreSQL + pgvector | MariaDB (или SQLite) |
| ИИ-поиск | CLIP, семантический | TensorFlow, по тегам |
| RAM в покое (без ML) | 300–500 МБ | 150–300 МБ |
| RAM под ИИ-обработку партии фото | 1,5–3+ ГБ (отдельный ML-контейнер) | 2–6 ГБ (зависит от объёма архива) |
| Минимум для комфортного личного архива | 4 ГБ RAM | 2–4 ГБ RAM |
| Мобильное приложение | Сильная сторона, автобэкап "из коробки" | Есть, но менее отполировано |
| Управление файлами на диске | Импортирует и переиндексирует | Работает над существующей структурой папок |
Точные цифры зависят от размера библиотеки, доли RAW-файлов и включённых опций — подробный разбор по контейнерам есть отдельно: сколько RAM нужно для Immich и сколько RAM нужно для PhotoPrism. Общее правило простое: на одном и том же бюджете PhotoPrism почти всегда даёт больше запаса под рост библиотеки, а Immich за более высокую цену по памяти отдаёт более качественный семантический поиск и мобильный опыт.
Быстрый пример разницы в лимитах контейнеров для одинакового по духу сервера на 4 vCPU / 8 ГБ RAM:
# Immich — ML-контейнер обычно самый прожорливый
services:
immich-machine-learning:
deploy:
resources:
limits:
memory: 3g
# PhotoPrism — весь стек укладывается компактнее
services:
photoprism:
deploy:
resources:
limits:
memory: 2g
mariadb:
deploy:
resources:
limits:
memory: 1g
На одинаковом железе PhotoPrism после этого распределения всё ещё оставляет заметный запас памяти под систему и своп, а у Immich запас скромнее — четыре контейнера делят один и тот же объём. Готовые compose-файлы под оба сервиса — в статьях Immich в Docker Compose и PhotoPrism в Docker Compose.
Мобильное приложение и автобэкап
Для большинства людей, уходящих с Google Photos или iCloud, именно мобильный сценарий решает выбор больше, чем любые технические характеристики. Приложение Immich (iOS и Android) умеет фоновый автобэкап по расписанию, работает достаточно стабильно даже на слабом канале и синхронизируется в реальном времени — открыли приложение, снятое утром фото уже на сервере. Это результат целенаправленного фокуса разработки: мобильный клиент у Immich получает внимание наравне с сервером, а не как второстепенный придаток.
PhotoPrism тоже предлагает мобильные приложения, но фоновая синхронизация исторически была слабее — где-то нужно открывать приложение вручную, где-то фоновая загрузка на iOS ограничена самой политикой Apple по фоновым процессам (это ограничение общее для всех подобных приложений, не специфика PhotoPrism, но именно у Immich реализация фонового бэкапа получила больше отладки и внимания сообщества).
Если основной сценарий — «телефон сам заливает фото, я про это не думаю», Immich здесь заметно впереди. Если вы храните фото на NAS или ПК и периодически подгружаете туда архивы с камеры или карты памяти вручную, разница в мобильном опыте почти не будет ощущаться — оба справятся.
Работа с существующим архивом на диске
Ещё одна практическая развилка — что у вас уже есть на момент переезда. Если фото годами копились в структуре папок по годам и событиям и вы хотите эту структуру сохранить, PhotoPrism ближе к философии «индексируй, что есть» — он может работать над существующей файловой иерархией в режиме только для чтения, не трогая оригиналы, и параллельно строить свой индекс поверх.
Immich устроен иначе: он импортирует файлы в собственное хранилище (или работает с внешней библиотекой через externalPaths, но это менее нативный сценарий, чем основной workflow загрузки через приложение или веб). Структура папок внутри Immich формируется системой, а не наследуется от вашей исходной раскладки — это нормально для нового архива, который вы строите с нуля через мобильную синхронизацию, но требует привыкания, если у вас уже сложившаяся своя система папок за 15 лет фотографий.
Где каждый спотыкается
Ни один из инструментов не идеален, и это стоит сказать прямо.
У Immich:
- Проект развивается быстро, и это одновременно плюс и минус — обновления версий базы данных или формата хранения иногда требуют аккуратной миграции, а не просто
docker compose pull && up. Резервную копию перед крупным обновлением стоит делать всегда — подробно про это в статье про бэкап и восстановление Immich. - ML-контейнер — самый тяжёлый компонент стека, и на слабом сервере именно он первым упирается в OOM при массовой загрузке фото.
- Нативная работа с уже существующей структурой папок на диске не главный сценарий использования — Immich в первую очередь про «загрузи и забудь», а не «индексируй то, что уже разложено».
У PhotoPrism:
- Семантический поиск по свободному тексту слабее CLIP — вы ограничены словарём тегов, которые распознала TensorFlow-модель, и составные нетривиальные запросы находят меньше.
- Мобильный автобэкап менее зрелый, чем у Immich — если весь смысл переезда именно в «телефон сам всё грузит», это ощутимый минус.
- Часть продвинутых функций (расширенное распознавание лиц, некоторые интеграции) доступна в платной версии PhotoPrism Plus — базовая версия открытая и полнофункциональная для персонального использования, но стоит заранее свериться с актуальным списком возможностей на сайте проекта, если рассчитываете именно на них.
Какой сценарий что выбирает
Основной источник фото — телефон, хотите автобэкап "как в Google Photos" и точный поиск по смыслу. Берите Immich. Мобильный опыт и CLIP-поиск — это ровно то, ради чего стоит платить лишний гигабайт-два RAM.
Сервер скромный (2–4 ГБ RAM), архив уже лежит на диске в своей структуре папок, поиск по тегам вас устроит. PhotoPrism даст более комфортный запас по памяти на том же тарифе и не заставит переваривать структуру ваших файлов заново.
Большая семья с несколькими активными фотографами, важно распознавание лиц и видео в 4K. Здесь обычно выигрывает Immich за счёт более зрелой кластеризации лиц — но закладывайте сервер от 8 ГБ RAM и выше, четыре контейнера на большом потоке загрузок просят места с запасом. Установка с нуля разобрана в статье про установку Immich на VPS.
Архив в основном исторический (фото с камеры, сканы, старые альбомы), заливается пачками, а не с телефона каждый день. PhotoPrism ближе к задаче — он не навязывает мобильный workflow там, где он не нужен. Установка — в статье про установку PhotoPrism на VPS.
Не уверены и хотите попробовать оба. Это разумно — оба ставятся на отдельные тестовые VPS за считанные минуты через готовые приложения, и с одним и тем же архивом в несколько тысяч фото разница в ощущениях от интерфейса и поиска станет понятна за один вечер, до того как вы решите переносить весь архив на постоянку.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Можно ли перенести архив из PhotoPrism в Immich или наоборот?
Прямого встроенного мигратора между ними нет. Оба читают исходные файлы фото с диска, так что при переезде можно взять оригиналы и переиндексировать их заново в другой системе — но альбомы, теги и результаты распознавания лиц придётся собирать заново, автоматического переноса метаданных между форматами баз данных не предусмотрено.
Что легче запустить на слабом VPS с 2 ГБ RAM?
PhotoPrism с отключёнными или ограниченными ИИ-функциями и SQLite вместо MariaDB. Immich технически заведётся и на 2 ГБ, но с включённым ML-контейнером первая же массовая загрузка фото упрётся в память — для комфортной работы Immich стоит закладывать от 4 ГБ.
У какого из двух лучше распознавание лиц?
По ощущениям сообщества — у Immich кластеризация лиц более зрелая и удобнее подтверждать совпадения в интерфейсе. У PhotoPrism распознавание лиц тоже есть, но часть более тонких настроек относится к платной версии Plus.
Оба бесплатны?
Да, оба — открытый код с бесплатной базовой версией, полнофункциональной для личного использования. PhotoPrism дополнительно предлагает платную подписку Plus с частью продвинутых функций и поддержкой проекта; Immich полностью бесплатен и развивается за счёт донатов и спонсорства, без платного тира.
Нужен ли GPU для ИИ-функций хотя бы одному из них?
Нет, оба по умолчанию считают на CPU — GPU ускоряет обработку у обоих (если он есть и настроена поддержка), но не является обязательным условием для запуска ни распознавания лиц, ни тегирования.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →