SSD Nodes Learn Hosting plans →
Посібники Matt ConnorВід Matt Connor · Оновлено 2026-10-30

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, фотографії залишаться в тих самих каталогах із тими самими іменами. Файли YAML sidecar, які PhotoPrism створив з описом знайдених даних, зберігатимуться у власному каталозі сховища PhotoPrism. Саме там PhotoPrism зберігає їх за замовчуванням.

Ця єдина відмінність пояснює більшість інших особливостей. Immich має потужну підтримку мобільних пристроїв, оскільки контролює імпорт файлів. PhotoPrism добре підходить для впорядкування бібліотеки, оскільки не змінює наявну структуру. Immich краще підходить для сім’ї, чиї фотографії зберігаються на телефонах. PhotoPrism краще підходить для архіву, який зберігається на диску.

Апаратні вимоги: Immich потребує більше ресурсів

Заявлені мінімальні обсяги пам’яті суттєво відрізняються, і на невеликому VPS це зазвичай є вирішальним фактором.

ГрафікDocumented minimum memory, as of October 2026
Дані, на яких побудовано графік
[
  {
    "label": "Immich",
    "min_ram_gb": 6
  },
  {
    "label": "PhotoPrism",
    "min_ram_gb": 3
  }
]

Immich вказує 6 GB RAM як мінімум і 8 GB як рекомендований обсяг. Також зазначено, що машина з 4 GB може запускати його лише з вимкненим machine learning. PhotoPrism вказує 3 GB фізичної пам’яті та два ядра CPU і зазначає, що після досягнення цього мінімуму обсяг RAM має відповідати кількості ядер.

Різниця реальна, і її спричиняє контейнер machine learning. Immich запускає свої моделі в окремому сервісі immich-machine-learning, який завантажує в пам’ять моделі CLIP (contrastive language image pretraining) і розпізнавання облич. На машині з 2 GB ядро завершує роботу цього контейнера, і він виходить із кодом 137. Це статус процесу, завершеного сигналом 9, і саме так у Docker проявляється завершення через нестачу пам’яті. Вбудовані моделі PhotoPrism працюють на ONNX. У документації зазначено, що вони зазвичай добре працюють на всіх типах обладнання. Для випадку обмеженої пам’яті передбачено резервний режим: на машинах із 1 GB або менше PhotoPrism вимикає конвертацію RAW і розпізнавання облич. Однак це не гарантує стабільної роботи. Нижче мінімального значення 3 GB проєкт попереджає про нестабільність і проблеми з продуктивністю, тому сприймайте цей обсяг саме як мінімальний.

У документації PhotoPrism прямо зазначено, що на сервері бажано мати щонайменше 4 GB swap. На сторінці вимог Immich swap не згадується, але він дає контейнеру machine learning додатковий запас пам’яті на невеликій машині. Додайте 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 -h

free -h має вивести рядок Swap: зі значенням 4.0Gi. Якщо виведено 0B, це означає, що swapon не спрацював, зазвичай через відсутність підтримки fallocate файловою системою. У такому разі використовується sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 як резервний варіант. Обмеження пам’яті контейнерів тут також важливі. Налаштування обмежень пам’яті в Docker Compose дає змогу не допустити, щоб один ресурсомісткий сервіс вивів з ладу весь сервер. Винятком є сам PhotoPrism: його документація не радить встановлювати жорстке обмеження пам’яті для контейнера, оскільки під час індексації великих файлів тимчасово потрібен додатковий обсяг пам’яті, а обмеження може спричинити несподівані перезапуски.

Є ще одна вимога, про яку часто забувають. База даних Postgres для Immich має розміщуватися на звичайній Unix-файловій системі з реальними власниками та дозволами, на локальному сховищі, а не на мережевому ресурсі. PhotoPrism також попереджає, що файли його бази даних не можна зберігати в спільній мережевій папці, і називає локальне SSD-сховище найкращим місцем для них. Жоден із цих застосунків не можна безпечно запускати, якщо його база даних розміщена на змонтованому 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 має робоче значення за замовчуванням. Immich рекомендує замінити його на випадковий пароль, хоча це не є обов’язковим. Postgres не відкритий для публічного доступу, тому пароль використовується лише для локальної автентифікації. Проте встановити випадковий пароль нескладно. Використовуйте лише символи A-Za-z0-9, оскільки в документації Immich зазначено, що інші символи можуть спричинити проблеми під час обробки значення Docker. Потім запустіть його.

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 photoprism

PhotoPrism доступний на порту 2342 з користувачем admin. Жоден із цих застосунків не слід відкривати безпосередньо. Розмістіть перед ними reverse proxy з TLS (захистом транспортного рівня), за тією самою схемою, що використовується для self-hosted Nextcloud з Docker, TLS і резервними копіями, або залиште сервер приватним і підключайтеся до нього через VPN. Якщо цей VPS використовуватиметься не лише для фотографій, застосовуйте такі самі обмеження до кожного доданого сервісу, оскільки self-hosted ретранслятор RustDesk потребує доступності лише власних двох портів і більше нічого.

Який із них має кращий мобільний застосунок

Саме тут ці два проєкти найбільше відрізняються, і саме тому більшість користувачів зрештою обирає Immich.

Immich випускає офіційні застосунки для Android та iOS. Вони виконують фонове резервне копіювання фотоплівки: нові фотографії передаються з телефона без потреби відкривати застосунок. Для доступу з-поза домашньої мережі Immich описує три варіанти: VPN, наприклад WireGuard або OpenVPN, Tailscale або reverse proxy, який обслуговує HTTPS. Саме reverse proxy дає змогу мобільним застосункам підключатися без VPN-застосунку на кожному телефоні. Immich застерігає: не слід безпосередньо відкривати порт 2283 в інтернет без додаткового налаштування.

PhotoPrism не має офіційного нативного застосунку. Він постачається як progressive web app, який можна додати на головний екран із браузера. Для синхронізації з телефона проєкт описує WebDAV (web distributed authoring and versioning). Проєкт рекомендує для цього сторонній застосунок PhotoSync, налаштований на каталог /import/ або /originals/ через WebDAV. Це працює, але платний сторонній застосунок виконує функцію, яку Immich реалізує у власному клієнті.

Якщо потрібне автоматичне резервне копіювання фотографій із телефонів кількох членів родини, вибір очевидний: Immich.

Що насправді дає машинне навчання

Immich виконує семантичний пошук у вашій бібліотеці за допомогою CLIP. Тому запит на кшталт «червоний велосипед у снігу» знаходить фотографії, які ніхто ніколи не позначав вручну. Також Immich виявляє обличчя, об’єднує їх у групи та знаходить дублікати. Індексація великого імпорту на CPU може тривати годинами у фоновому режимі. Це нормально, і для цього не потрібен GPU (графічний процесор).

PhotoPrism класифікує зображення за мітками за допомогою вбудованої моделі ONNX, виявляє обличчя та об’єднує їх у профілі людей за допомогою моделей облич ONNX, а також зчитує метадані про розташування для побудови карти місць. Файл vision.yml у папці конфігурації дає змогу підключити Ollama або OpenAI для створення міток і підписів, якщо це потрібно. Саме карта часто стає головною причиною залишитися на цій платформі: бібліотека, проіндексована за місцем зйомки, дає принципово інший спосіб переглядати двадцять років фотографій. Такий самий підхід працює з іншими колекціями медіафайлів, а відеомагазин Halcyon у стилі 90-х для Jellyfin є його кіноверсією: перегляд за полицями замість списку. Розпізнавання облич входить до безкоштовної редакції Community. Платні підписки Essentials і Plus додають такі можливості, як докладніші шари карти, більше ролей користувачів та інтерфейс керування користувачами. Станом на October 2026 вони коштують від кількох євро на місяць за умови щорічної оплати.

В Immich немає функцій, доступних лише за плату, і проєкт заявляє, що їх не буде. Immich продає додаткові безстрокові ключі продукту: $25 для одного користувача або $100 для цілого сервера за цінами, оголошеними Immich у July 2024. Проте купівля ключа нічого не розблоковує, і 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 у віддалене сховище. Резервна копія на тому самому диску, що й бібліотека, не є резервною копією. Налаштуйте сповіщення про помилки завдання, оскільки резервна копія, яка непомітно перестала виконуватися в березні, до дня відновлення нічим не відрізняється від тієї, що виконувалася минулої ночі. Власний сервер ntfy надішле таке сповіщення на телефон того самого вечора.

Що слід запустити

Запускайте Immich, якщо фотографії зберігаються на телефонах, якщо резервні копії фотоплівки потрібні кільком людям і якщо ви можете виділити серверу щонайменше 6 GB RAM. Це найближчий аналог Google Photos, який можна розгорнути на власному сервері. Основна перевага — мобільний інтерфейс. У нашому покроковому посібнику зі встановлення Immich докладно описано проблеми з аварійним завершенням процесів через нестачу пам’яті та типові помилки під час оновлення.

Запускайте PhotoPrism, якщо у вас уже є фотоархів на диску, якщо для вас важливі карти й метадані та збереження власної структури каталогів, або якщо ваш VPS має 4 GB RAM і ви надаєте перевагу працездатній бібліотеці замість бібліотеки, яка постійно використовує swap. PhotoPrism краще підходить для впорядкування колекції та менше навантажує слабке обладнання.

Запускати обидва застосунки також доцільно. Immich обробляє щоденне завантаження фотографій із телефона, а раз на рік ви відбираєте потрібні фотографії до архіву й даєте PhotoPrism проіндексувати його. Вони не конфліктують, оскільки PhotoPrism читає каталоги, а Immich керує власним сховищем.

FAQ

Чи можуть PhotoPrism та Immich використовувати одну й ту саму папку з фотографіями?

Безпечно працювати в обох напрямках не можна. PhotoPrism індексує папку originals і має функції, які записують до неї, якщо застосунок не запущено в режимі лише читання. Immich очікує, що керуватиме вмістом свого каталогу завантажень. Можна вказати PhotoPrism копію папки library Immich, доступну лише для читання, щоб переглядати її. Але не дозволяйте обом застосункам керувати одними й тими самими файлами, оскільки шаблон зберігання Immich може переміщувати або перейменовувати ресурси в каталозі PhotoPrism під час індексації.

Чи достатньо стабільний Immich, щоб зберігати в ньому єдину копію фотографій?

Жоден self-hosted застосунок не має бути єдиним місцем зберігання будь-яких даних. Immich тепер дотримується semantic versioning і зазначає, що несумісні зміни обмежені major-релізами. Тому зафіксуйте IMMICH_VERSION на тегу major-версії, наприклад v3, прочитайте release notes, а потім оновіть його за допомогою docker compose pull && docker compose up -d. Пониження версії не підтримується навіть у межах тієї самої minor-версії, тому перед кожним оновленням створюйте дамп бази даних. Зберігайте оригінальні файли в резервній копії поза сервером, і ризик залишатиметься невеликим.

Чому контейнер machine learning Immich постійно перезапускається?

Зазвичай його завершують через надмірне використання пам’яті. Виконайте docker compose ps --all, оскільки без цього прапорця зупинений контейнер не відображається, і перевірте, чи завершується сервіс machine learning із кодом 137. Цей код означає, що процес було завершено сигналом 9. Зазвичай причиною є OOM killer ядра, але це не єдина можливість, тому підтвердьте причину за допомогою sudo dmesg | grep -i 'out of memory'. Додайте swap або повністю вимкніть machine learning на машині з 4 GB. Обмеження пам’яті контейнера не зменшує його споживання: після досягнення ліміту контейнер усе одно буде завершено, але він перестане виснажувати ресурси решти сервера. Без machine learning не працюватимуть smart search і розпізнавання облич, але решта Immich працюватиме нормально.

Чи потрібна PhotoPrism MariaDB, чи достатньо SQLite?

SQLite працює і підходить для особистої бібліотеки, але під час його використання PhotoPrism обмежує себе чотирма workers. Документація рекомендує перейти на MariaDB, оскільки вона краще працює за високої конкурентності. Compose-файл, який постачається з проєктом, уже містить MariaDB, тому рекомендований варіант також є типовим.

Який обсяг диска потрібно передбачити понад розмір бібліотеки?

Для будь-якого з цих застосунків додайте 10–20 відсотків до розміру оригіналів. Це покриває згенеровані мініатюри та транскодовані попередні перегляди відео. Колекції обсягом 200 GB потрібно приблизно 220–240 GB лише для бібліотеки, а також додаткове місце для бази даних і зростання. Якщо на тому самому томі ви також зберігаєте повну локальну резервну копію, оригінали та ця копія потребують щонайменше 400 GB без урахування інших даних. Тому передбачте близько 450 GB або розмістіть копію на окремому томі.

Чи була ця стаття корисною?