Установка PhotoPrism на Debian

Что такое PhotoPrism?

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

Основные возможности PhotoPrism:

  • Хранение и управление фотографиями: PhotoPrism предоставляет место для хранения ваших фотографий и видео. Вы можете организовать свою библиотеку с помощью тегов, альбомов и других метаданных.
  • Распознавание лиц и местоположений: Программа автоматически может определять лица и местоположения на ваших фотографиях, что делает их поиск и организацию более удобными.
  • Поиск и фильтрация: С мощными инструментами поиска и фильтрации вы можете быстро находить нужные изображения в больших коллекциях.
  • Приватность и безопасность: PhotoPrism предоставляет возможность управлять доступом к вашим медиафайлам, обеспечивая надежную защиту данных.
  • Web-интерфейс: Вы можете легко получить доступ к своей библиотеке фотографий через веб-интерфейс, это удобно для просмотра, редактирования и обмена изображениями.
  • Редактирование и обработка: PhotoPrism интегрируется с редакторами изображений, позволяя вам редактировать фотографии и видео непосредственно в приложении.
  • Геотегирование: Программа поддерживает геотегирование, это дает возможность отображать фотографии на карте в зависимости от местоположения.

Для кого этот гайд?

Я пишу его скорее для себя, чтобы в случае необходимости можно было быстро развернуть домашний сервер. Но он будет полезен и тебе, если хочется проделать свой путь без официального гайда.

PhotoPrism официально поддерживает установку с помощью Docker контейнера. Еще один вариант — для разработчиков, но он содержит много лишней информации, которая скорее всего не понадобится в повседневном использовании. Поэтому в этом гайде установим PhotoPrism на Debian 11 без использования Docker контейнера.

Установка PhotoPrism

В установке я использую LXC контейнер, запущенный в Proxmox. Для контейнера выделены следующие ресурсы:

  • ОЗУ: 3Гб
  • Подкачка: 1Гб
  • ЦП: 4 ядра
  • HDD: 5Гб для установки

Можно увеличить память до 4Гб, всё зависит от загружаемых объемов фотографий, но чем больше памяти, тем быстрее обработаются фотографии. В простое потребляемые ресурсы достаточно скромные:

Потребляемые ресурсы в простое очень скромные, веселье начинается, когда обрабатываются фотки и видосики

Итак, у тебя уже установлен Debian 11, теперь обновим его:

sudo apt update
sudo apt upgrade

Далее установим необходимые пакеты для PhotoPrism:

sudo apt install -y gcc g++ git gnupg make zip unzip ffmpeg

Рекомендую установить также пакеты для обработки RAW фотографий и извлечения метаданных:

sudo apt install -y exiftool darktable libpng-dev libjpeg-dev libtiff-dev imagemagick

Node.js доступен в репозитории Debian, но там достаточно старая версия, рекомендуемая — v18, скачаем и установим ее:

wget https://deb.nodesource.com/setup_18.x -O node_setup.sh
chmod +x node_setup.sh
sudo ./node_setup.sh
sudo apt install -y nodejs
rm node_setup.sh

Теперь перейдем к установки Golang версии 1.20.6:

wget https://golang.org/dl/go1.20.6.linux-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.20.6.linux-amd64.tar.gz
sudo ln -s /usr/local/go/bin/go /usr/local/bin/go
rm go1.20.6.linux-amd64.tar.gz

Вкратце объясню, что мы делаем: скачиваем архив, удаляем каталог /usr/local/go, распаковываем архив в /usr/local и создаем симлинк на исполняемый файл go расположенный в /usr/local/go/bin/.

Библиотека Tensorflow необходима для распознавания лиц и классификации фотографий. Скачать можно с сайта PhotoPrism.

Важно скачать правильную сборку, всё зависит от поддержки процессором инструкций AVX или AVX2. Это можно проверить, выполнив команду в терминале lscpu | grep -Eo 'avx2?\W'

Для AVX2:

wget https://dl.photoprism.org/tensorflow/linux/libtensorflow-linux-avx2-1.15.2.tar.gz
sudo tar -C /usr/local -xzf libtensorflow-linux-avx2-1.15.2.tar.gz
sudo ldconfig
rm libtensorflow-linux-avx2-1.15.2.tar.gz

Для AVX:

wget https://dl.photoprism.org/tensorflow/linux/libtensorflow-linux-avx-1.15.2.tar.gz
sudo tar -C /usr/local -xzf libtensorflow-linux-avx-1.15.2.tar.gz
sudo ldconfig
rm libtensorflow-linux-avx-1.15.2.tar.gz

Если проц не поддерживает ни один из вышеуказанных инструкций, тогда устанавливаешь это:

wget https://dl.photoprism.org/tensorflow/linux/libtensorflow-linux-cpu-1.15.2.tar.gz
sudo tar -C /usr/local -xzf libtensorflow-linux-cpu-1.15.2.tar.gz
sudo ldconfig
rm libtensorflow-linux-cpu-1.15.2.tar.gz

Если устанавливаешь на ARM процессор, нужную сборку можешь найти туть.

Наконец-то мы добрались до установки PhotoPrism. Сначала создадим каталог, где будет храниться скомпилированный PhotoPrism:

sudo mkdir -p /opt/photoprism/bin

Скачиваем исходники:

git clone https://github.com/photoprism/photoprism.git
cd photoprism
git checkout release

Теперь соберем воедино Node.js, golang и PhotoPrism:

sudo make all
sudo ./scripts/build.sh prod /opt/photoprism/bin/photoprism
sudo cp -a assets/ /opt/photoprism/assets/
sudo chown -R photoprism:photoprism /opt/photoprism

Убедись, что у тебя перед сборкой выделено более 1Гб ОЗУ, иначе процесс может упасть с ошибкой.

Настройка PhotoPrism

С установкой завершили, теперь можно приступить к настройке. В первую очередь рекомендую создать пользователя, от чьего имени будет запускаться служба:

sudo useradd --system photoprism

Создадим каталог, в котором будут храниться файлы, такие как метаданные, база данных sqlite и т.д., и дадим необходимые права нашему пользователю photoprism на каталог:

sudo mkdir /var/lib/photoprism
sudo chown photoprism:photoprism /var/lib/photoprism

Создадим каталог и в нем — конфигурационный файл:

cd /var/lib/photoprism
sudo nano .env

Полный список команд для файла можно посмотреть туть и дополнить его на свое усмотрение:

# Initial password for the admin user
PHOTOPRISM_AUTH_MODE="password"
PHOTOPRISM_ADMIN_PASSWORD="photoprism"

# PhotoPrism storage directories
PHOTOPRISM_STORAGE_PATH="/var/lib/photoprism"
PHOTOPRISM_ORIGINALS_PATH="/var/lib/photoprism/photos/Originals"
PHOTOPRISM_IMPORT_PATH="/var/lib/photoprism/photos/Import"

# Uncomment below if using MariaDB/MySQL instead of SQLite (the default)
# PHOTOPRISM_DATABASE_DRIVER="mysql"
# PHOTOPRISM_DATABASE_SERVER="MYSQL_IP_HERE:PORT"
# PHOTOPRISM_DATABASE_NAME="DB_NAME"
# PHOTOPRISM_DATABASE_USER="USER_NAME"
# PHOTOPRISM_DATABASE_PASSWORD="PASSWORD"
Не забудь в строке PHOTOPRISM_ADMIN_PASSWORD="photoprism" вместо photoprism указать свой пароль
sudo chown photoprism:photoprism .env
sudo chmod 640 .env

Это гарантирует, что файл не сможет быть прочитан другими пользователями системы, поскольку он содержит конфиденциальные данные.

Ну вот теперь точно последний шаг! Cконфигурируем службу для запуска. Создадим еще один конфигурационный файл:

sudo nano /etc/systemd/system/photoprism.service

И наполним его следующим содежанием:

[Unit]
Description=PhotoPrism service
After=network.target

[Service]
Type=forking
User=photoprism
Group=photoprism
WorkingDirectory=/opt/photoprism
EnvironmentFile=/var/lib/photoprism/.env
ExecStart=/opt/photoprism/bin/photoprism up -d
ExecStop=/opt/photoprism/bin/photoprism down

[Install]
WantedBy=multi-user.target

Эти команды запустят службу и обеспечат ее автоматический запуск при старте системы:

sudo systemctl daemon-reload
sudo systemctl start photoprism
sudo systemctl enable photoprism

Теперь ты можешь перейти в браузере по адресу http://you_ip:2342 и авторизоваться с логином admin и паролем, который указал в конфиге .env.

Заключение

Установка PhotoPrism на Debian - это простой способ создать свою собственную фотогалерею. Благодаря удобному веб-интерфейсу и широким возможностям по организации, поиску и сортировке фотографий, PhotoPrism становится незаменимым инструментом для тех, кто ценит свои воспоминания и хочет удобно управлять своей библиотекой. Процесс установки довольно прост, и, следуя моему гайду, можно легко создать свою собственную библиотеку фотографий, доступную в любое время и из любой точки мира.

Подпишись на рассылку, чтобы не пропустить новые посты. Обещаю, будет полезно!