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

Полезные ссылки

Официальная документация