Установка PhotoPrism на Synology в контейнер docker

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

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

Миссия PhotoPrism заключается в том, чтобы предоставить наиболее удобное для пользователя и конфиденциальность решение, чтобы ваши фотографии были организованы и доступны. Вот почему 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 и не только.

Подписаться
Уведомить о
guest
12 Комментарий
Старые
Новые
Межтекстовые Отзывы
Посмотреть все комментарии