В этой инструкции я покажу как установить PhotoPrism на Synology в контейнер docker, но по аналогии можно будет установить куда угодно, в том числе и на TerraMaster.
![](https://bafista.ru/wp-content/uploads/2024/02/image-85-1024x678.png)
PhotoPrism – это приложение для фотографий на базе искусственного интеллекта для децентрализованного Интернета. Он использует новейшие технологии для автоматической маркировки и поиска изображений, не мешая вам. Вы можете запустить его дома, на частном сервере или в облаке.
Миссия PhotoPrism заключается в том, чтобы предоставить наиболее удобное для пользователя и конфиденциальность решение, чтобы ваши фотографии были организованы и доступны. Вот почему PhotoPrism был создан с нуля, чтобы работать там, где вам это нужно, без ущерба для свободы, конфиденциальности или функциональности:
- Просматривайте все свои фотографии и видео, не беспокоясь о преобразовании RAW, дубликатах или видеоформатах.
- Легко находите конкретные изображения с помощью мощных фильтров поиска
- Узнает лица вашей семьи и друзей
- Автоматическая классификация изображений на основе их содержания и местоположения
- Воспроизведение Live Photos, наведя на них курсор в альбомах и результатах поиска
- Поскольку пользовательский интерфейс является Прогрессивное веб-приложение, оно обеспечивает собственный интерфейс, похожий на приложение, и вы можете удобно установить его на главный экран всех основных операционных систем и мобильных устройств.
- Включает в себя 4 карты мира с высоким разрешением, чтобы вернуть воспоминания о ваших любимых поездках
- Метаданные извлекаются и объединяются из Exif, XMP и других источников, таких как Google Фото
- Можно также найти еще много свойств изображения, таких как цвета, цвет и качество.
- Использовать PhotoSync для безопасного резервного копирования телефонов iOS и Android в фоновом режиме
- Клиенты WebDAV, такие как Microsoft Windows Explorer и Apple Finder, могут подключаться непосредственно к PhotoPrism, позволяя открывать, редактировать и удалять файлы с вашего компьютера, как если бы они были локальными.
Плюсы:
- Не зависеть от сторонних облачных систем, а хранить данные на своем сервере
- Легкий и быстрый веб интерфейс
- Очень мощный ИИ, который оперирует нереально много параметрами: меток, мест, людей по вашим фотографиям
- Красивая и очень удобная карта с посещаемыми местами
Минусы
- Только один пользователь. Для второго человека нужен второй экземпляр установки.
- Нет официальных приложений для телефона, но зато есть очень много сторонних
- Метки на Английском языке, но легко переименовываются на Русский
Я рекомендую для PhotoPrism создать отдельную папку общего доступа, так как в ней будут лежать все файлы фото и видео. Но показывать я буду на примере, когда данные PhotoPrism лежат в папке docker. Главное создайте в каталоге PhotoPrism четыре пустые папки:
- database – для хранения файлов базы данных
- Import – для временных файлов, которые путем импорта будут добавлены в базу PhotoPrism
- Pictures – это основная папка, в которой будут лежать все фото и видео файлы
- storage – для хранения конфигурации
![](https://bafista.ru/wp-content/uploads/2024/02/image-73-1024x600.png)
Теперь в Container Manager создайте новый проект, дайте ему название, укажите путь и создайте docker-compose файл. Остальные параметры данного мастера по кнопке далее можно не менять.
![](https://bafista.ru/wp-content/uploads/2024/02/image-74-1024x561.png)
Файл docker-compose для PhotoPrism должен иметь такое содержание. Вам только нужно установить в нем свои параметры PHOTOPRISM_ADMIN_USER и PHOTOPRISM_ADMIN_PASSWORD. Если размер файлов видео планируется использовать более 5ГБ, то установите свое значение в поле PHOTOPRISM_ORIGINALS_LIMIT. Остальные параметры на ваше усмотрение, они все подписаны.
version: '3.5'
services:
photoprism-app:
## Use photoprism/photoprism:preview for testing preview builds:
image: photoprism/photoprism:latest
container_name: photoprism-app
## Don't enable automatic restarts until PhotoPrism has been properly configured and tested!
## If the service gets stuck in a restart loop, this points to a memory, filesystem, network, or database issue:
## https://docs.photoprism.app/getting-started/troubleshooting/#fatal-server-errors
restart: unless-stopped
stop_grace_period: 10s
depends_on:
- photoprism-mariadb
security_opt:
- seccomp:unconfined
- apparmor:unconfined
## Server port mapping in the format "Host:Container". To use a different port, change the host port on
## the left-hand side and keep the container port, e.g. "80:2342" (for HTTP) or "443:2342 (for HTTPS):
ports:
- 2342:2342
## Before you start the service, please check the following config options (and change them as needed):
## https://docs.photoprism.app/getting-started/config-options/
environment:
PHOTOPRISM_ADMIN_USER: "sadmin" # admin login username
PHOTOPRISM_ADMIN_PASSWORD: "PASSWORD" # initial admin password (8-72 characters)
PHOTOPRISM_AUTH_MODE: "password" # authentication mode (public, password)
# PHOTOPRISM_SITE_URL: "http://localhost:2342/" # server URL in the format "http(s)://domain.name(:port)/(path)"
# PHOTOPRISM_DISABLE_TLS: "false" # disables HTTPS/TLS even if the site URL starts with https:// and a certificate is available
# PHOTOPRISM_DEFAULT_TLS: "true" # defaults to a self-signed HTTPS/TLS certificate if no other certificate is available
PHOTOPRISM_ORIGINALS_LIMIT: 5000 # file size limit for originals in MB (increase for high-res video)
PHOTOPRISM_HTTP_COMPRESSION: "gzip" # improves transfer speed and bandwidth utilization (none or gzip)
PHOTOPRISM_LOG_LEVEL: "info" # log level: trace, debug, info, warning, error, fatal, or panic
# PHOTOPRISM_READONLY: "false" # do not modify originals directory (reduced functionality)
# PHOTOPRISM_EXPERIMENTAL: "false" # enables experimental features
# PHOTOPRISM_DISABLE_CHOWN: "false" # disables updating storage permissions via chmod and chown on startup
# PHOTOPRISM_DISABLE_WEBDAV: "false" # disables built-in WebDAV server
# PHOTOPRISM_DISABLE_SETTINGS: "false" # disables settings UI and API
# PHOTOPRISM_DISABLE_TENSORFLOW: "false" # disables all features depending on TensorFlow
PHOTOPRISM_DISABLE_FACES: "false" # disables face detection and recognition (requires TensorFlow)
PHOTOPRISM_DISABLE_CLASSIFICATION: "false" # disables image classification (requires TensorFlow)
PHOTOPRISM_DISABLE_VECTORS: "false" # disables vector graphics support
PHOTOPRISM_DISABLE_RAW: "false" # disables indexing and conversion of RAW images
PHOTOPRISM_RAW_PRESETS: "false" # enables applying user presets when converting RAW images (reduces performance)
PHOTOPRISM_JPEG_QUALITY: 85 # a higher value increases the quality and file size of JPEG images and thumbnails (25-100)
PHOTOPRISM_DETECT_NSFW: "false" # automatically flags photos as private that MAY be offensive (requires TensorFlow)
PHOTOPRISM_UPLOAD_NSFW: "true" # allows uploads that MAY be offensive (no effect without TensorFlow)
# PHOTOPRISM_DATABASE_DRIVER: "sqlite" # SQLite is an embedded database that doesn't require a server
PHOTOPRISM_DATABASE_DRIVER: "mysql" # use MariaDB 10.5+ or MySQL 8+ instead of SQLite for improved performance
PHOTOPRISM_DATABASE_SERVER: "photoprism-mariadb:3306" # MariaDB or MySQL database server (hostname:port)
PHOTOPRISM_DATABASE_NAME: "photoprism" # MariaDB or MySQL database schema name
PHOTOPRISM_DATABASE_USER: "photoprism" # MariaDB or MySQL database user name
PHOTOPRISM_DATABASE_PASSWORD: "insecure" # MariaDB or MySQL database user password
PHOTOPRISM_SITE_CAPTION: "AI-Powered Photos App"
PHOTOPRISM_SITE_DESCRIPTION: "Synology BAF" # meta site description
PHOTOPRISM_SITE_AUTHOR: "AlexandrLinux" # meta site author
## Video Transcoding (https://docs.photoprism.app/getting-started/advanced/transcoding/):
# PHOTOPRISM_FFMPEG_ENCODER: "software" # H.264/AVC encoder (software, intel, nvidia, apple, raspberry, or vaapi)
# PHOTOPRISM_FFMPEG_SIZE: "1920" # video size limit in pixels (720-7680) (default: 3840)
# PHOTOPRISM_FFMPEG_BITRATE: "32" # video bitrate limit in Mbit/s (default: 50)
## Run/install on first startup (options: update https gpu tensorflow davfs clitools clean):
# PHOTOPRISM_INIT: "https gpu tensorflow"
## Run as a non-root user after initialization (supported: 0, 33, 50-99, 500-600, and 900-1200):
# PHOTOPRISM_UID: 1000
# PHOTOPRISM_GID: 1000
# PHOTOPRISM_UMASK: 0000
## Start as non-root user before initialization (supported: 0, 33, 50-99, 500-600, and 900-1200):
# user: "1000:1000"
## Share hardware devices with FFmpeg and TensorFlow (optional):
# devices:
# - "/dev/dri:/dev/dri" # Intel QSV
# - "/dev/nvidia0:/dev/nvidia0" # Nvidia CUDA
# - "/dev/nvidiactl:/dev/nvidiactl"
# - "/dev/nvidia-modeset:/dev/nvidia-modeset"
# - "/dev/nvidia-nvswitchctl:/dev/nvidia-nvswitchctl"
# - "/dev/nvidia-uvm:/dev/nvidia-uvm"
# - "/dev/nvidia-uvm-tools:/dev/nvidia-uvm-tools"
# - "/dev/video11:/dev/video11" # Video4Linux Video Encode Device (h264_v4l2m2m) working_dir: "/photoprism" # do not change or remove
## Storage Folders: "~" is a shortcut for your home directory, "." for the current directory
volumes:
# "/host/folder:/photoprism/folder" # Example
- ./Pictures:/photoprism/originals # Original media files (DO NOT REMOVE)
# - "/example/family:/photoprism/originals/family" # *Additional* media folders can be mounted like this
- ./Import:/photoprism/import # *Optional* base folder from which files can be imported to originals
- ./storage:/photoprism/storage # *Writable* storage folder for cache, database, and sidecar files (DO NOT REMOVE)
## Database Server (recommended)
## see https://docs.photoprism.app/getting-started/faq/#should-i-use-sqlite-mariadb-or-mysql
photoprism-mariadb:
image: mariadb:11
container_name: photoprism-mariadb
## If MariaDB gets stuck in a restart loop, this points to a memory or filesystem issue:
## https://docs.photoprism.app/getting-started/troubleshooting/#fatal-server-errors
restart: unless-stopped
stop_grace_period: 5s
security_opt: # see https://github.com/MariaDB/mariadb-docker/issues/434#issuecomment-1136151239
- seccomp:unconfined
- apparmor:unconfined
command: --innodb-buffer-pool-size=512M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
## Never store database files on an unreliable device such as a USB flash drive, an SD card, or a shared network folder:
volumes:
- ./database:/var/lib/mysql # DO NOT REMOVE
environment:
MARIADB_AUTO_UPGRADE: "1"
MARIADB_INITDB_SKIP_TZINFO: "1"
MARIADB_DATABASE: "photoprism"
MARIADB_USER: "photoprism"
MARIADB_PASSWORD: "insecure"
MARIADB_ROOT_PASSWORD: "insecure"
networks:
photoprism:
external: false
Если все сделали верно, то увидите Exit code 0, который означает что проект PhotoPrism в контейнере на Synology установлен и запущен.
![](https://bafista.ru/wp-content/uploads/2024/02/image-75-1024x561.png)
Через несколько минут откройте в браузере новую страницу http://IP-NAS:2342 и вы должны увидеть такое окно. Введите логин и пароль, который вы указали в файле docker-compose
![](https://bafista.ru/wp-content/uploads/2024/02/image-76-1024x678.png)
И вы попадете в интерфейс PhotoPrism
![](https://bafista.ru/wp-content/uploads/2024/02/image-77-1024x678.png)
Первым делом рекомендую перейти в настройки и установить Русский язык.
![](https://bafista.ru/wp-content/uploads/2024/02/image-78-1024x678.png)
Для загрузки файлов в PhotoPrism есть несколько вариантов
1 – Положите ваши фото и видео в папку Pictures в такой структуре, которая вам нужна. Затем перейдите в библиотека, индексирование и нажмите кнопку начать. Начнется процесс поиска мультимедиа файлов, которой к слову не быстрый.
![](https://bafista.ru/wp-content/uploads/2024/02/image-79-1024x678.png)
2 – Положите ваши фото и видео в папку Import. Затем перейдите в библиотека, импортировать, установите флажок перемещать в корзину и нажмите импортировать. Файлы из папки Import будут по мере индексирования перемещаться в папку Pictures со структурой ГОД/МЕСЯЦ
![](https://bafista.ru/wp-content/uploads/2024/02/image-80-1024x678.png)
3 – На скрине выше нажмите кнопку загрузить и выберите файлы с вашего ПК, которые хотели бы загрузить в PhotoPrism
После индексации и анализа файлов их можно будет удобно просматривать в интерфейсе PhotoPrism. Отдельно есть места, люди, календарь и прочие вкладки.
![](https://bafista.ru/wp-content/uploads/2024/02/image-81-1024x678.png)
Можно сделать доступ к PhotoPrism по доменному имени через обратный прокси. Откройте панель управления в DSM, портал для входа, дополнительно и обратный прокси. Создайте новое правило. Придумайте название правила. В источнике укажите https, имя домена и 443 порт. В месте назначения укажите http, localhost и порт 2342. На двух других вкладках сделайте как показана на скриншотах ниже.
![](https://bafista.ru/wp-content/uploads/2024/02/image-82-1024x956.png)
![](https://bafista.ru/wp-content/uploads/2024/02/image-83-1024x956.png)
![](https://bafista.ru/wp-content/uploads/2024/02/image-84-1024x956.png)
После этих манипуляций PhotoPrism будет открывать просто по имени домена.
Для телефона официального приложения нет, но веб интерфейс ничем не отличается от версии ПК
![](https://bafista.ru/wp-content/uploads/2024/02/telegram-cloud-photo-size-2-5404694173233304112-y-472x1024.jpg)
Кстати есть очень много не официальных приложений, в том числе и на IOS (App Store), которые легко найти в интернете.
Теперь вы знаете как установить PhotoPrism на Synology в контейнер docker и не только.