В этой инструкции я покажу как установить PhotoPrism на Synology в контейнер docker, но по аналогии можно будет установить куда угодно, в том числе и на TerraMaster.

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 – для хранения конфигурации

Теперь в Container Manager создайте новый проект, дайте ему название, укажите путь и создайте docker-compose файл. Остальные параметры данного мастера по кнопке далее можно не менять.

Файл 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 установлен и запущен.

Через несколько минут откройте в браузере новую страницу http://IP-NAS:2342 и вы должны увидеть такое окно. Введите логин и пароль, который вы указали в файле docker-compose

И вы попадете в интерфейс PhotoPrism

Первым делом рекомендую перейти в настройки и установить Русский язык.

Для загрузки файлов в PhotoPrism есть несколько вариантов
1 – Положите ваши фото и видео в папку Pictures в такой структуре, которая вам нужна. Затем перейдите в библиотека, индексирование и нажмите кнопку начать. Начнется процесс поиска мультимедиа файлов, которой к слову не быстрый.

2 – Положите ваши фото и видео в папку Import. Затем перейдите в библиотека, импортировать, установите флажок перемещать в корзину и нажмите импортировать. Файлы из папки Import будут по мере индексирования перемещаться в папку Pictures со структурой ГОД/МЕСЯЦ

3 – На скрине выше нажмите кнопку загрузить и выберите файлы с вашего ПК, которые хотели бы загрузить в PhotoPrism
После индексации и анализа файлов их можно будет удобно просматривать в интерфейсе PhotoPrism. Отдельно есть места, люди, календарь и прочие вкладки.

Можно сделать доступ к PhotoPrism по доменному имени через обратный прокси. Откройте панель управления в DSM, портал для входа, дополнительно и обратный прокси. Создайте новое правило. Придумайте название правила. В источнике укажите https, имя домена и 443 порт. В месте назначения укажите http, localhost и порт 2342. На двух других вкладках сделайте как показана на скриншотах ниже.



После этих манипуляций PhotoPrism будет открывать просто по имени домена.
Для телефона официального приложения нет, но веб интерфейс ничем не отличается от версии ПК

Кстати есть очень много не официальных приложений, в том числе и на IOS (App Store), которые легко найти в интернете.
Теперь вы знаете как установить PhotoPrism на Synology в контейнер docker и не только.