8.2.22 Встановлення та налаштування PhotoPrism

TheHost Banner PhotoPrism

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

У цій статті ми детально розглянемо процес встановлення та налаштування PhotoPrism на операційній системі Ubuntu 24.04, використовуючи Docker Compose. Ви дізнаєтеся, як підготувати сервер, запустити застосунок, налаштувати брандмауер і виконати початкову конфігурацію, а також як імпортувати медіафайли й робити резервне копіювання даних.

Підготовка сервера

Вимоги

  • Віртуальний або виділений сервер з установленою Ubuntu 24.04 LTS.
  • Мінімум 2 ГБ оперативної пам’яті та 20 ГБ вільного дискового простору.
  • root-доступ або користувач із правами sudo.
  • Встановлені Docker і Docker Compose. У рамках цієї статті їхня інсталяція не розглядається.

Змінні середовища

У процесі встановлення та налаштування PhotoPrism вам потрібно буде замінити такі значення-placeholder на власні:

  • YOUR_ADMIN_USERNAME: бажане ім’я користувача для входу в PhotoPrism.
  • YOUR_ADMIN_PASSWORD: надійний пароль для вашого адміністративного користувача PhotoPrism.
  • YOUR_SERVER_IP: IP-адреса вашого сервера Ubuntu.
  • PATH_TO_YOUR_PHOTOS: повний шлях до директорії з вашими фотографіями на сервері.

Оновлення системи

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

sudo apt update
sudo apt upgrade -y
sudo apt autoremove -y
  • Команда sudo apt update оновлює список доступних пакетів.
  • Команда sudo apt upgrade -y встановлює всі доступні оновлення пакетів без запиту підтвердження (-y).
  • Команда sudo apt autoremove -y видаляє застарілі пакети, які більше не потрібні системі.

Створення директорії для PhotoPrism

Створіть директорію, у якій зберігатимуться файли конфігурації PhotoPrism і дані. Рекомендується використовувати /opt/photoprism.

sudo mkdir -p /opt/photoprism
  • Опція -p гарантує створення всіх необхідних батьківських директорій, якщо вони не існують.

Завантаження файлу конфігурації Docker Compose

Завантажте офіційний файл docker-compose.yml для PhotoPrism. Цей файл містить визначення всіх необхідних сервісів (PhotoPrism, MariaDB), їхні налаштування та залежності.

sudo wget -O /opt/photoprism/docker-compose.yml https://dl.photoprism.app/docker/compose.yaml
  • wget використовується для завантаження файлу за вказаним URL.
  • Опція -O /opt/photoprism/docker-compose.yml вказує, що завантажений файл має бути збережений як docker-compose.yml у директорії /opt/photoprism.

Налаштування локального зберігання даних і файлу Docker Compose

За замовчуванням PhotoPrism використовує Docker named volumes для зберігання даних. Для зручнішого керування й резервного копіювання даних на хості рекомендується використовувати локальні директорії (bind mounts).

Спочатку створіть необхідні директорії для зберігання даних PhotoPrism і бази даних MariaDB:

sudo mkdir -p /opt/photoprism/data/storage \
                /opt/photoprism/data/originals \
                /opt/photoprism/data/database \
                /opt/photoprism/data/settings \
                /opt/photoprism/data/cache \
                /opt/photoprism/data/sidecar

Тепер відредагуйте завантажений файл docker-compose.yml, щоб він використовував ці локальні директорії замість named volumes.

sudo nano /opt/photoprism/docker-compose.yml

У відкритому файлі знайдіть секцію services -> photoprism -> volumes. Замініть усі рядки, що починаються з photoprism_, на шляхи до локальних директорій, використовуючи відносні шляхи ./data/....

Приклад змін для сервісу photoprism:

Спочатку (приблизно):

    volumes:
      - photoprism_storage:/photoprism/storage
      - photoprism_originals:/photoprism/originals
      - photoprism_settings:/photoprism/settings
      - photoprism_cache:/photoprism/cache
      - photoprism_sidecar:/photoprism/sidecar

Змініть на:

    volumes:
      - /opt/photoprism/data/storage:/photoprism/storage
      - /opt/photoprism/data/originals:/photoprism/originals
      - /opt/photoprism/data/settings:/photoprism/settings
      - /opt/photoprism/data/cache:/photoprism/cache
      - /opt/photoprism/data/sidecar:/photoprism/sidecar

Тепер знайдіть секцію services -> mariadb -> volumes. Змініть рядок із томом бази даних:

Спочатку (приблизно):

    volumes:
      - photoprism_database:/var/lib/mysql

Змініть на:

    volumes:
      - ./data/database:/var/lib/mysql

Нарешті, прокрутіть файл до самого кінця та видаліть увесь блок volumes:, який визначає named volumes, оскільки вони більше не використовуватимуться.

Спочатку (приблизно, наприкінці файлу):

volumes:
  photoprism_storage:
  photoprism_originals:
  photoprism_database:
  photoprism_settings:
  photoprism_cache:
  photoprism_sidecar:

Видаліть цей блок повністю.

Збережіть зміни й закрийте файл (Ctrl+O, Enter, Ctrl+X).

Налаштування змінних середовища PhotoPrism

Для зручного керування конфігурацією PhotoPrism, включно з обліковими даними адміністратора, створіть файл .env у директорії PhotoPrism.

sudo nano /opt/photoprism/.env

Додайте такий вміст у відкритий файл. Замініть YOUR_ADMIN_USERNAME і YOUR_ADMIN_PASSWORD на бажані облікові дані адміністратора PhotoPrism.

/opt/photoprism/.env
PHOTOPRISM_ADMIN_USER=YOUR_ADMIN_USERNAME
PHOTOPRISM_ADMIN_PASSWORD=YOUR_ADMIN_PASSWORD
  • PHOTOPRISM_ADMIN_USER: ім’я користувача для входу у вебінтерфейс PhotoPrism.
  • PHOTOPRISM_ADMIN_PASSWORD: пароль для вказаного адміністративного користувача.

Збережіть зміни й закрийте файл (Ctrl+O, Enter, Ctrl+X).

Запуск PhotoPrism

Перейдіть у директорію PhotoPrism і запустіть сервіси, визначені у файлі docker-compose.yml.

cd /opt/photoprism/
sudo docker compose up -d
  • Команда cd /opt/photoprism/ переводить вас у робочу директорію PhotoPrism.
  • Команда sudo docker compose up -d запускає всі сервіси (контейнери) у фоновому режимі (-d, detached mode). Docker Compose автоматично завантажить потрібні образи Docker, якщо вони ще не завантажені.

Перевірка статусу PhotoPrism

Після запуску переконайтеся, що всі контейнери PhotoPrism успішно запущені та працюють.

sudo docker compose ps

Вивід має показати статус running для всіх сервісів PhotoPrism (зазвичай photoprism і mariadb).

Якщо ви зіткнулися з проблемами, можна переглянути логи контейнерів для діагностики:

sudo docker compose logs -f

Натисніть Ctrl+C, щоб вийти з режиму перегляду логів.

Налаштування брандмауера

Якщо на вашому сервері активний брандмауер UFW (Uncomplicated Firewall), потрібно відкрити порт 2342 для доступу до вебінтерфейсу PhotoPrism. Також рекомендується відкрити порти 80 і 443, якщо ви плануєте використовувати реверс-проксі (наприклад, Nginx) з SSL-сертифікатом.

UFW

Перевірте статус UFW:

sudo ufw status

Дозвольте потрібні порти:

sudo ufw allow 2342/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Якщо UFW не активний, увімкніть його:

sudo ufw enable

Підтвердьте дію, ввівши y, якщо буде запит.

iptables

sudo iptables -A INPUT -p tcp --dport 2342 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

Доступ до вебінтерфейсу PhotoPrism

Після успішного запуску PhotoPrism і налаштування брандмауера ви можете отримати доступ до вебінтерфейсу PhotoPrism, відкривши браузер і перейшовши за таким посиланням:

http://YOUR_SERVER_IP:2342

Замініть YOUR_SERVER_IP на фактичну IP-адресу вашого сервера Ubuntu.

Початкове налаштування та створення адміністратора

Під час першого доступу до вебінтерфейсу PhotoPrism вам буде запропоновано увійти в систему. Використовуйте облікові дані, які ви вказали у файлі .env раніше:

  • Ім’я користувача: YOUR_ADMIN_USERNAME
  • Пароль: YOUR_ADMIN_PASSWORD

Після входу ви потрапите на головну сторінку PhotoPrism.

Імпорт фотографій

PhotoPrism автоматично сканує та індексує фотографії, розміщені у визначеній директорії. Оскільки ви налаштували bind mounts, ваші оригінальні фотографії мають знаходитись у директорії /opt/photoprism/data/originals на хост-системі.

Щоб імпортувати фотографії, скопіюйте їх у цю директорію:

sudo cp -r PATH_TO_YOUR_PHOTOS /opt/photoprism/data/originals
  • Замініть PATH_TO_YOUR_PHOTOS на фактичний шлях до ваших фотографій на сервері.
  • Опція -r використовується для рекурсивного копіювання директорій.

Після копіювання файлів перейдіть у вебінтерфейс PhotoPrism, натисніть кнопку Імпорт (Import) у лівому меню, щоб почати процес сканування й індексації нових фотографій.

Оновлення PhotoPrism

Щоб оновити PhotoPrism до останньої стабільної версії, виконайте такі кроки. Процес зводиться до зупинки контейнерів, завантаження нових образів і повторного запуску.

Перейдіть у директорію PhotoPrism:

cd /opt/photoprism/

Зупиніть запущені контейнери:

sudo docker compose down

Завантажте нові образи Docker:

sudo docker compose pull

Запустіть контейнери з оновленими образами:

sudo docker compose up -d

Резервне копіювання даних

Регулярне резервне копіювання даних PhotoPrism вкрай важливе для запобігання втраті фотографій і метаданих. Оскільки ви використовуєте bind mounts, усі важливі дані PhotoPrism (оригінали, мініатюри, кеш, індекс і база даних) зберігаються в директорії /opt/photoprism/data на вашому хості.

Важливо: для забезпечення цілісності даних, особливо бази даних, при резервному копіюванні рекомендується спочатку зупинити сервіси PhotoPrism за допомогою sudo docker compose down. Після завершення резервного копіювання ви можете знову запустити їх командою sudo docker compose up -d.

Приклад команди для створення архіву резервної копії:

sudo tar -czvf photoprism_backup_$(date +%Y%m%d).tar.gz /opt/photoprism/data /opt/photoprism/docker-compose.yml /opt/photoprism/.env
  • Ця команда створює стиснутий архів (.tar.gz) з усіма важливими файлами й директоріями PhotoPrism (дані, конфігурація Docker Compose і змінні середовища).
  • $(date +%Y%m%d) додає поточну дату до імені файлу резервної копії, що зручно для відстеження.
Поширені помилки
Помилка / Симптом Причина Рішення Діагностика
Неможливо отримати доступ до вебінтерфейсу PhotoPrism. Порт 2342 заблокований брандмауером. Дозвольте порт 2342 в UFW: sudo ufw allow 2342/tcp iptables: sudo iptables -A INPUT -p tcp --dport 2342 -j ACCEPT sudo ufw status
Контейнери PhotoPrism не запускаються або постійно перезапускаються. Недостатньо системних ресурсів (ОЗП, дисковий простір) або конфлікт портів. Перевірте системні логи (dmesg -T), логи Docker Compose (sudo docker compose logs). Переконайтеся, що немає інших застосунків, які використовують порт 2342. sudo docker compose ps, sudo docker compose logs photoprism
Помилка доступу до бази даних (MariaDB). Неправильні облікові дані або пошкоджена база даних. Переконайтеся, що змінні PHOTOPRISM_ADMIN_USER і PHOTOPRISM_ADMIN_PASSWORD правильно вказані у файлі .env. Спробуйте видалити вміст директорії бази даних на хості (/opt/photoprism/data/database), щоб почати з чистою базою даних. При цьому всі існуючі дані PhotoPrism буде втрачено, і потрібно буде повторно проіндексувати фотографії. sudo docker compose logs mariadb
Фотографії не імпортуються або відображаються некоректно. Неправильні права доступу до директорії originals або проблеми з форматом файлу. Переконайтеся, що користувач Docker (зазвичай root або користувач, від імені якого запускаються контейнери) має права на читання/запис у /opt/photoprism/data/originals. Перевірте, що файли не пошкоджені та мають підтримуваний формат. Перевірте права на директорії: ls -la /opt/photoprism/data/originals

Корисні посилання

Офіційна документація