PhotoPrism чи Immich: який фотосервер обрати
Порівняння PhotoPrism та Immich: мінімум RAM, мобільні застосунки, карти й точні команди резервного копіювання для кожного сервера на 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-файли з описом отриманих даних.
Ця єдина відмінність пояснює більшість інших розбіжностей. 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 його можна запускати лише з вимкненим машинним навчанням. PhotoPrism вимагає 3 GB фізичної пам’яті та два ядра CPU і зазначає, що обсяг RAM має відповідати кількості ядер.
Ця різниця реальна. Вона зумовлена контейнером машинного навчання. Immich запускає свої моделі в окремій службі immich-machine-learning, яка завантажує в пам’ять моделі CLIP (contrastive language image pretraining) і розпізнавання облич. На машині з 2 GB kernel завершує роботу цього контейнера. У Docker він завершується з кодом 137, що є типовою ознакою завершення через нестачу пам’яті. Моделі TensorFlow у PhotoPrism менші, і програма працює в обмеженому режимі, а не завершується аварійно: на машинах із 1 GB RAM або менше вона вимикає конвертування RAW і TensorFlow, а не завершує роботу з помилкою.
Обидва проєкти вимагають swap. Документація PhotoPrism прямо рекомендує щонайменше 4 GB 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 store не можна.
Як встановити кожен із них
Обидва варіанти встановлення складаються з 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. Жоден із цих застосунків не слід відкривати безпосередньо. Розмістіть перед ним зворотний проксі з TLS (захистом транспортного рівня), за тією самою схемою, що й у самостійно розгорнутого Nextcloud з Docker, TLS і резервними копіями.
Який із них має кращий мобільний застосунок
Саме тут ці два проєкти найбільше відрізняються. Через це більшість користувачів зрештою обирають Immich.
Immich випускає офіційні застосунки для Android та iOS. Вони виконують фонове резервне копіювання фотоплівки. Нові фотографії передаються з телефона без потреби відкривати застосунок. Застосунку потрібна кінцева точка HTTPS, тому reverse proxy є обов’язковим, якщо ви плануєте користуватися ним за межами домашньої мережі.
PhotoPrism не має офіційного нативного застосунку. Він постачається як 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 додають такі можливості, як розширені шари карти, більше ролей користувачів та інтерфейс керування користувачами. Станом на July 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 можна відновити, витративши на це кілька годин процесорного часу. Сам дамп бази даних нічого не відновлює, оскільки містить лише метадані.
Для 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 і ви хочете отримати працездатну бібліотеку, а не бібліотеку, що працює зі свопінгом. Це кращий інструмент для впорядкування колекції, який створює менше навантаження на слабке обладнання.
Запускати обидва сервіси також доцільно. Immich обробляє щоденне завантаження фотографій із телефонів, а раз на рік ви відбираєте потрібні фотографії до архіву й дозволяєте PhotoPrism проіндексувати його. Вони не конфліктують, оскільки PhotoPrism читає каталоги, а Immich використовує власне сховище.
FAQ
Чи можуть PhotoPrism та Immich спільно використовувати ту саму папку з фотографіями?
Безпечно працювати в обох напрямках не можна. PhotoPrism читає папку originals і записує файли YAML sidecar поруч із вашими зображеннями, тоді як 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 обмежує себе чотирма робочими процесами. У документації рекомендовано перейти на MariaDB, оскільки вона краще працює за високої одночасної активності. Файл compose, який постачається з проєктом, уже містить MariaDB, тому рекомендований варіант також є стандартним.
Скільки дискового простору потрібно передбачити понад розмір бібліотеки?
Додайте від 10 до 20 відсотків до розміру оригіналів для будь-якого з цих застосунків. Цього достатньо для створених мініатюр і транскодованих попередніх переглядів відео. Для колекції обсягом 200 GB потрібно передбачити приблизно том на 300 GB, залишивши місце для бази даних, локальної резервної копії та подальшого зростання.