PhotoPrism чи Immich: який сервер фото обрати
Порівняння PhotoPrism та Immich: мінімум RAM, мобільні застосунки, карти, зберігання 400 GB і точні команди резервного копіювання на VPS.
PhotoPrism проти Immich: коротка відповідь
PhotoPrism проти Immich — це вибір між двома різними завданнями, а не між двома версіями одного продукту. Immich замінює Google Photos: застосунок на телефоні автоматично створює резервні копії фотографій із камери, а отримана часова шкала буде знайомою кожному, хто відмовляється від галереї на телефоні. PhotoPrism упорядковує наявну фототеку: індексує папки з файлами на диску, читає їхні метадані, розміщує фотографії на карті й залишає файли саме там, де вони були.
Вибирайте Immich, якщо проблема сформульована так: «На телефоні закінчується місце, і я хочу відмовитися від Google Photos». Вибирайте PhotoPrism, якщо проблема така: «У мене є 400 GB фотографій на диску, і я не можу нічого в них знайти». Обидва продукти мають відкритий вихідний код, працюють як Docker-контейнери на звичайному VPS і індексують та шукають вашу фототеку, не надсилаючи нічого стороннім сервісам.
Філософія відрізняється — і саме це визначає все
Immich керує файлами. Ви вказуєте йому місце для завантажень, застосунок на телефоні або вебзавантажувач надсилає оригінали, а Immich зберігає їх у власному шляху та використовує власні імена. У базі даних зберігаються дані про альбоми, обличчя та результати пошуку. Саме завдяки такій архітектурі робота на телефоні зручна: сервер завжди знає повний стан кожного ресурсу.
PhotoPrism читає файли. Ви монтуєте папку originals, якою вже керуєте, а PhotoPrism створює для неї індекс. Структура каталогів залишається під вашим контролем. Якщо завтра видалити PhotoPrism, фотографії залишаться в тих самих папках із тими самими іменами, а PhotoPrism запише поруч із ними YAML-файли sidecar з описом отриманих даних.
Ця єдина відмінність пояснює більшість інших відмінностей. Immich має потужну підтримку мобільних пристроїв, оскільки керує імпортом файлів. PhotoPrism краще підходить для впорядкування бібліотеки, оскільки не змінює наявну структуру. Immich — кращий вибір для сім’ї, чиї фотографії зберігаються на телефонах. PhotoPrism — кращий вибір для архіву, що зберігається на диску.
Апетити до ресурсів: Immich потребує більше
Задокументовані мінімальні вимоги до пам’яті суттєво відрізняються, і на невеликому VPS це зазвичай є вирішальним фактором.
The data behind this chart
[
{
"label": "Immich",
"min_ram_gb": 6,
"recommended_ram_gb": 8
},
{
"label": "PhotoPrism",
"min_ram_gb": 3,
"recommended_ram_gb": 4
}
]Immich вказує 6 GB RAM як мінімум і 8 GB як рекомендований обсяг. Також зазначено, що на машині з 4 GB RAM сервіс може працювати лише з вимкненим machine learning. PhotoPrism вимагає 3 GB фізичної пам’яті та два ядра CPU і зазначає, що обсяг RAM має відповідати кількості ядер.
Різниця реальна, і її спричиняє контейнер machine learning. Immich запускає моделі в окремому сервісі immich-machine-learning, який завантажує в пам’ять моделі CLIP (contrastive language image pretraining) і розпізнавання облич. На машині з 2 GB RAM kernel завершує роботу цього контейнера, і він виходить із кодом 137. Для Docker це ознака завершення через нестачу пам’яті. Моделі TensorFlow у PhotoPrism менші, а сервіс коректно обмежує функціональність замість аварійного завершення: на машинах із 1 GB RAM або менше він вимикає конвертацію RAW і TensorFlow, а не завершує роботу з помилкою.
Обидва проєкти вимагають swap. У документації PhotoPrism прямо зазначено, що на сервері має бути щонайменше 4 GB swap. Додайте swap до встановлення будь-якого з цих застосунків.
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
free -hfree -h тепер має вивести рядок Swap: зі значенням 4.0Gi. Якщо виведено 0B, це означає, що swapon не спрацював, зазвичай через відсутність підтримки fallocate файловою системою; у такому разі використовується sudo dd if=/dev/zero of=/swapfile bs=1M count=4096. Обмеження пам’яті контейнерів також мають значення. Налаштування обмежень пам’яті в Docker Compose дає змогу не допустити, щоб один ресурсомісткий сервіс вивів з ладу весь сервер.
Є ще одна вимога, про яку часто забувають. База даних Postgres в Immich має розміщуватися на звичайній Unix-файловій системі з коректними власниками та правами доступу і на локальному сховищі, а не на мережевій спільній теці. PhotoPrism висуває таку саму вимогу до файлів бази даних. Жоден із цих застосунків не слід запускати, якщо його база даних розміщена на змонтованому object storage.
Як інсталювати кожен із них
Обидві інсталяції складаються з compose-файлу постачальника та однієї команди. Спочатку налаштуйте Docker Engine і плагін Compose, як описано в нашому посібнику з Docker Compose на VPS.
Immich публікує свій compose-файл і приклад файлу середовища з кожним релізом.
sudo mkdir -p /opt/immich && cd /opt/immich
wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.envВідредагуйте .env перед будь-яким запуском. У UPLOAD_LOCATION зберігатимуться ваші оригінали, а DB_PASSWORD потрібно змінити зі значення за замовчуванням, використовуючи лише символи A-Za-z0-9, оскільки спеціальні символи порушують рядок підключення. Потім запустіть застосунок.
docker compose up -d
docker compose psВебінтерфейс доступний на порту 2283. Перший обліковий запис, зареєстрований через цю сторінку, стає адміністратором. Тому одразу відкрийте сторінку та зареєструйте обліковий запис, а не залишайте відкритий екземпляр доступним з інтернету.
PhotoPrism постачається з одним compose-файлом, який уже містить MariaDB.
sudo mkdir -p /opt/photoprism && cd /opt/photoprism
wget https://dl.photoprism.app/docker/compose.yamlВідкрийте compose.yaml і змініть PHOTOPRISM_ADMIN_PASSWORD перед першим запуском. У документації це зазначено прямо: застосунок запускається з початковим паролем, указаним у цьому файлі, мінімальна довжина пароля становить 8 символів, а значення за замовчуванням не можна використовувати на публічному сервері. Одночасно встановіть для тому originals папку, у якій зберігаються ваші фотографії.
docker compose up -d
docker compose logs -f photoprismPhotoPrism доступний на порту 2342 під користувачем admin. Жоден із застосунків не слід відкривати безпосередньо. Розмістіть перед ним reverse proxy із TLS (transport layer security), використовуючи ту саму схему, що й для self-hosted Nextcloud з Docker, TLS і резервними копіями.
Який проєкт має кращий мобільний застосунок
Саме тут ці два проєкти найбільше відрізняються. Через це більшість користувачів зрештою обирають Immich.
Immich випускає офіційні застосунки для Android та iOS. Вони виконують фонове резервне копіювання фотографій із камери. Це означає, що нові фотографії передаються з телефона без потреби відкривати застосунок. Застосунок потребує HTTPS endpoint, тому reverse proxy є обов’язковим, якщо ви плануєте користуватися ним поза домом.
PhotoPrism не має офіційного native застосунку. Проєкт постачає progressive web app, який можна додати на головний екран у браузері, і описує WebDAV (web distributed authoring and versioning) як спосіб синхронізації з телефона. Для цього проєкт рекомендує сторонній застосунок PhotoSync, налаштований на каталог /import/ або /originals/ через WebDAV. Це працює, але синхронізацію виконує платний сторонній застосунок, тоді як Immich реалізує цю функцію у власному клієнті.
Якщо потрібне автоматичне резервне копіювання фотографій із телефонів кількох членів сім’ї, вибір очевидний. Immich.
Що насправді дає машинне навчання
Immich виконує семантичний пошук у бібліотеці за допомогою CLIP, тому запит на кшталт «червоний велосипед у снігу» знаходить фотографії, які ніхто ніколи не позначав тегами. Також Immich виявляє обличчя, групує їх і знаходить дублікати. Індексація великого імпорту на CPU триває годинами у фоновому режимі. Це нормально, і для цього не потрібен GPU (графічний процесор).
PhotoPrism класифікує зображення за допомогою TensorFlow і призначає їм мітки, виявляє обличчя та групує їх за людьми, а також зчитує метадані про місцезнаходження для побудови карти місць. Саме карта часто стає функцією, заради якої користувачі залишаються: бібліотека, проіндексована за місцем зйомки, дає принципово інший спосіб переглядати фотографії за двадцять років. Розпізнавання облич входить до безкоштовної редакції Community. Платні підписки Essentials і Plus додають такі можливості, як розширені шари карти, більше ролей користувачів та інтерфейс керування користувачами. Станом на липень 2026 року вартість починається від кількох євро на місяць.
Immich повністю безкоштовний і не має платного тарифу. Основна функціональність PhotoPrism безкоштовна, а додаткові платні можливості доступні за бажанням.
Резервні копії визначають, чи збережете ви дані
Фотосервер без резервної копії може втратити всі сімейні дані через одну несправність диска. Для обох застосунків потрібні дві резервні копії: бази даних і файлів.
Для Immich створіть дамп бази даних із контейнера Postgres і скопіюйте каталог із завантаженнями.
docker exec -t immich_postgres pg_dump --clean --if-exists --dbname=immich --username=postgres | gzip > /backup/immich-db.sql.gzПотім створіть резервну копію UPLOAD_LOCATION. Папки з даними, які неможливо відновити, — це upload, library і profile. Папки thumbs і encoded-video можна згенерувати повторно, але це потребуватиме кількох годин роботи CPU. Сам по собі дамп бази даних нічого не відновлює, оскільки містить лише метадані.
Для PhotoPrism індекс має власну команду.
docker compose exec photoprism photoprism backup -i -fВона записує SQL-дамп у storage/backup/. Потім скопіюйте папку originals і папку storage. PhotoPrism також записує супровідні YAML-файли з описом кожної фотографії. Тому втрачений індекс можна повторно створити лише з файлів. Це суттєва перевага для архіву, який ви плануєте зберігати десятиліттями.
Незалежно від вибраного застосунку, регулярно передавайте ці резервні копії за межі сервера за допомогою зашифрованих дедуплікованих резервних копій restic у віддалене сховище. Резервна копія на тому самому диску, що й бібліотека, не є резервною копією.
Що слід запустити
Запускайте Immich, якщо фотографії зберігаються на телефонах, якщо резервні копії фотоплівки потрібні кільком людям і якщо ви можете виділити серверу щонайменше 6 GB RAM. Це найближчий аналог Google Photos, який можна розгорнути на власному сервері. Основна перевага — мобільний інтерфейс. У нашому покроковому посібнику зі встановлення Immich докладно описано проблеми з аварійним завершенням процесів через нестачу пам’яті та типові помилки під час оновлення.
Запускайте PhotoPrism, якщо у вас уже є фотоархів на диску, якщо для вас важливі карти й метадані та збереження власної структури каталогів, або якщо ваш VPS має 4 GB RAM і ви надаєте перевагу працездатній бібліотеці замість бібліотеки, яка постійно використовує swap. PhotoPrism краще підходить для впорядкування колекції та менше навантажує слабке обладнання.
Запускати обидва застосунки також доцільно. Immich обробляє щоденне завантаження фотографій із телефона, а раз на рік ви відбираєте потрібні фотографії до архіву й даєте PhotoPrism проіндексувати його. Вони не конфліктують, оскільки PhotoPrism читає каталоги, а Immich керує власним сховищем.
FAQ
Чи можуть PhotoPrism та Immich використовувати одну папку з фотографіями?
Безпечно використовувати її в обох напрямках не можна. PhotoPrism читає папку originals і записує поруч із зображеннями супровідні YAML-файли, тоді як Immich очікує, що саме він керуватиме вмістом свого сховища завантажень. Ви можете вказати PhotoPrism на доступну лише для читання копію папки library Immich, щоб переглядати її вміст. Але не дозволяйте обом застосункам керувати одними й тими самими файлами, оскільки під час індексації шаблон сховища Immich може переміщувати або перейменовувати ресурси, які використовує PhotoPrism.
Чи достатньо стабільний Immich, щоб зберігати єдину копію моїх фотографій?
Жоден self-hosted застосунок не повинен бути єдиною копією будь-яких даних. Immich часто випускає версії зі змінами, що порушують сумісність, а необережне docker compose pull може призвести до неможливості запуску бази даних. Тому зафіксуйте версію та прочитайте примітки до випуску перед оновленням. Зберігайте оригінальні файли в резервній копії поза сервером, і ризик залишатиметься невеликим.
Чому контейнер машинного навчання Immich постійно перезапускається?
Його примусово зупиняють через надмірне споживання пам’яті. Виконайте docker compose ps і знайдіть завершення роботи сервісу машинного навчання з кодом 137. Це означає, що спрацював засіб ядра для завершення процесів через нестачу пам’яті. Додайте swap або задайте контейнеру обмеження пам’яті, щоб його споживання обмежувалося, а не призводило до завершення роботи. На машині з 4 GB можна також повністю вимкнути машинне навчання. Без нього пошук перестане працювати, але решта Immich працюватиме нормально.
Чи потрібна PhotoPrism MariaDB, чи достатньо SQLite?
SQLite працює і підходить для особистої бібліотеки, але PhotoPrism обмежує себе чотирма workers під час її використання. Документація рекомендує перейти на MariaDB, оскільки вона краще працює за високої паралельності. Compose-файл, який випускає проєкт, уже містить MariaDB, тому рекомендований варіант також є типовим.
Скільки дискового простору потрібно передбачити додатково до розміру бібліотеки?
Для будь-якого з цих застосунків додайте 10–20 відсотків до обсягу оригіналів. Цього достатньо для згенерованих мініатюр і транскодованих попередніх переглядів відео. Для колекції обсягом 200 GB потрібно приблизно 300 GB у тому, щоб залишити місце для бази даних, локальної резервної копії та подальшого зростання.