DIY NAS系列16 — 照片管理之 PhotoPrism

PhotoPrism 简介

PhotoPrism 是一款开源的个人照片管理工具,它能帮助用户方便地组织和分享照片。它使用最先进的开发语言与技术,如: Go、TensorFlow,并提供了一个具有人脸识别、地理标签、复杂搜索等功能的自动照片管理系统。

PhotoPrism 不仅支持各种照片格式,还可以自动识别和分类照片,使照片管理变得更加简单。它的设计理念是简洁、易用并且强大,目标是让用户能够以最简单的方式找到他们需要的照片。

此外,PhotoPrism 还支持多用户和共享功能,用户可以方便地将照片分享给家人和朋友,同时保证了数据的私密性和安全性。尽管 PhotoPrism 是一个开源项目,但它的功能和商业软件相比毫不逊色,甚至在某些方面更胜一筹。

总的来说,PhotoPrism 是一个功能强大、易用的照片管理工具,无论你是摄影爱好者,或者只是想要更好地管理你的照片,都值得尝试。

安装 PhotoPrism

说明: 基于前期构建的 traefik 网关,详见: DIY NAS系列12 -- Traefik 出口网关配置
docker-compose.yaml 文件中,会对重要的配置进行说明,因个人网络环境等不同,需要根据自身实际情况调整配置。

注: 测试过程中发现如果需要通过 traefik 进行反向代理,一定要配置 labels 中的相关 httphttps

version: '3.5'

services:
  photoprism:
    restart: always
    image: photoprism/photoprism:latest
    security_opt:
      - seccomp:unconfined
      - apparmor:unconfined
    ports:
      - 2342:2342 # [local port]:[container port]
    environment:
      PHOTOPRISM_ADMIN_USER: "username"
      PHOTOPRISM_ADMIN_PASSWORD: "password"          # PLEASE CHANGE: Your initial admin password (min 4 characters)
      PHOTOPRISM_HTTP_PORT: 2342                     # Built-in Web server port
      PHOTOPRISM_HTTP_COMPRESSION: "gzip"            # Improves transfer speed and bandwidth utilization (none or gzip)
      PHOTOPRISM_DEBUG: "false"                      # Run in debug mode (shows additional log messages)
      PHOTOPRISM_PUBLIC: "false"                     # No authentication required (disables password protection) 为了您的安全与隐私不建议开启匿名访问权限。
      PHOTOPRISM_READONLY: "false"                   # Don't modify originals directory (reduced functionality)
      PHOTOPRISM_EXPERIMENTAL: "false"               # Enables experimental features
      PHOTOPRISM_DISABLE_WEBDAV: "false"             # Disables built-in WebDAV server
      PHOTOPRISM_DISABLE_SETTINGS: "false"           # Disables Settings in Web UI
      PHOTOPRISM_DISABLE_TENSORFLOW: "false"         # Disables using TensorFlow for image classification
      PHOTOPRISM_DARKTABLE_PRESETS: "false"          # Enables Darktable presets and disables concurrent RAW conversion
      PHOTOPRISM_DETECT_NSFW: "false"                # Flag photos as private that MAY be offensive (requires TensorFlow)
      PHOTOPRISM_UPLOAD_NSFW: "true"                 # Allow uploads that MAY be offensive
      # PHOTOPRISM_DATABASE_DRIVER: "sqlite"         # SQLite is an embedded database that doesn't require a server
      PHOTOPRISM_DATABASE_DRIVER: "mysql"            # Use MariaDB (or MySQL) instead of SQLite for improved performance
      PHOTOPRISM_DATABASE_SERVER: "mariadb:3306"     # MariaDB database server (hostname:port)
      PHOTOPRISM_DATABASE_NAME: "photoprism"         # MariaDB database schema name
      PHOTOPRISM_DATABASE_USER: "photoprism"         # MariaDB database user name
      PHOTOPRISM_DATABASE_PASSWORD: "insecure"       # MariaDB database user password
      PHOTOPRISM_SITE_URL: " https://photo.rockylinux.cn"  # Public PhotoPrism URL
      PHOTOPRISM_SITE_TITLE: "PhotoPrism"
      PHOTOPRISM_SITE_CAPTION: "RockyLinux之家"
      PHOTOPRISM_SITE_DESCRIPTION: ""
      PHOTOPRISM_SITE_AUTHOR: ""
    volumes:
      - "/SSD/Photo:/photoprism/originals" # 设置照片存放的位置
      - "/SSD/Demo/photoprism/storage:/photoprism/storage" # 元数据等配置存放位置

    networks: # 网络配置
      - traefik_net

    labels:
      - "traefik.enable=true"
      - "traefik.docker.network=traefik_net"
      - "traefik.http.routers.photoprism.entrypoints=web"
      - "traefik.http.routers.photoprism.rule=Host(`photo.rockylinux.cn`)"
      - "traefik.http.middlewares.photoprism-https-redirect.redirectscheme.scheme=https"
      - "traefik.http.routers.photoprism.middlewares=photoprism-https-redirect"
      - "traefik.http.routers.photoprism-secure.entrypoints=websecure"
      - "traefik.http.routers.photoprism-secure.rule=Host(`photo.rockylinux.cn`)"
      - "traefik.http.routers.photoprism-secure.tls=true"
      - "traefik.http.routers.photoprism-secure.tls.certresolver=myresolver"
      - "traefik.http.services.photoprism-secure.loadbalancer.server.port=2342"
      - "traefik.port=2342"

  mariadb: # 数据库配置
    image: mariadb:10.5
    restart: unless-stopped
    security_opt:
      - seccomp:unconfined
      - apparmor:unconfined
    command: mysqld --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-loc
k-wait-timeout=50 --innodb_buffer_pool_size=512M --innodb_log_file_size=512M
    volumes:
      - "/SSD/Demo/photoprism/database:/var/lib/mysql" # 数据库存放位置
    environment:
      MYSQL_ROOT_PASSWORD: please_change
      MYSQL_DATABASE: photoprism
      MYSQL_USER: photoprism
      MYSQL_PASSWORD: insecure
    networks:
      - traefik_net

networks:
  traefik_net:
    external: true

# 启动服务 
[root@demo memos]# docker-compose up -d

配置 PhotoPrism

PhotoPrism 本身具有出色的开箱即用特性,无需过多的设置。但对于希望在手机、电脑、平板等设备之间上传、共享照片的用户,WebDAV 配置值得一提。

用户及权限管理

社区版官方文档说明只支持两种角色类型,但实际测试可以支持三种角色类型: superadmin admin guest,另外两种角色类型: user 与 viewer 不支持,另外从角色权限来看还有一个角色类型 visitor 不需要单独创建。相关用户创建及权限设置官方文档参考文末链接。

# 用户管理命令详解
root@231128:/photoprism$ photoprism users -h
NAME:
   photoprism users - User management subcommands

USAGE:
   photoprism users command [command options] [arguments...]

COMMANDS:
   ls      Searches existing user accounts # 查看用户
   legacy  Searches legacy user accounts
   add     Adds a new user account # 添加用户
   show    Shows detailed account information # 显示用户详细信息
   mod     Modifies an existing user account # 修改用户权限等,功能与添加用户功能相同
   rm      Removes a user account # 删除账号,实际并未真实从数据库删除,只是标记为删除,可以通过添加账号来进行恢复。
   reset   Removes all accounts and resets the database # 删除所有帐户并重置数据库

OPTIONS:
   --help, -h  show help

# 添加用户命令详解
root@231128:/photoprism$ photoprism users add -h
NAME:
   photoprism users add - Adds a new user account

USAGE:
   photoprism users add [command options] [username]

OPTIONS:
   --name NAME, -n NAME              full NAME for display in the interface # 设置用户名
   --email EMAIL, -m EMAIL           unique EMAIL address of the user # 设置用户邮箱
   --password PASSWORD, -p PASSWORD  PASSWORD for local authentication # 设置密码
   --role NAME, -r NAME              user role NAME (admin, user, viewer or guest) (default: "admin") # 设置用户角色
   --auth TYPE, -A TYPE              authentication TYPE (local, token, none or default) (default: "default") # 设置认证类型
   --superadmin, -s                  make user super admin with full access # 设置用户为超级管理员
   --no-login, -l                    disable login on the web interface # 禁用 web 登录
   --webdav, -w                      allow to sync files via WebDAV # 启用 webdav 功能
   --upload-path value, -u value     upload files to this subfolder # 上传路径设置

# 进入容器进行创建用户 muzi,并设置上传路径为 upload-muzi,开启 webdav 功能。
root@231128:/photoprism$ photoprism users add -u upload-muzi muzi -p password -n muzi -w

# 修改用户权限为管理员
root@231128:/photoprism$ photoprism users mod -r admin muzi
INFO[2024-02-17T06:57:18Z] Become a member today, support our mission and enjoy our member benefits! 💎 
INFO[2024-02-17T06:57:18Z] Visit https://www.photoprism.app/membership to learn more. 
INFO[2024-02-17T06:57:18Z] user 'muzi' has been updated  

# 修改用户为角色为 user 时会报错如下
root@231128:/photoprism$ photoprism users mod -r user muzi
INFO[2024-02-17T06:57:06Z] Become a member today, support our mission and enjoy our member benefits! 💎 
INFO[2024-02-17T06:57:06Z] Visit https://www.photoprism.app/membership to learn more. 
ERRO[2024-02-17T06:57:06Z] additional account roles like 'user' are currently only available with a membership to support development and maintenance 

# 查看用户
root@231128:/photoprism$ photoprism users ls
INFO[2024-02-17T03:44:27Z] Become a member today, support our mission and enjoy our member benefits! 💎 
INFO[2024-02-17T03:44:27Z] Visit https://www.photoprism.app/membership to learn more. 
INFO[2024-02-17T03:44:27Z] found 2 users                                

|------------------|----------|-------|----------------|-------------|-----------|---------------------|---------|-------------|
|       UID        | Username | Role  | Authentication | Super Admin | Web Login |     Last Login      | WebDAV  | Upload Path |
|------------------|----------|-------|----------------|-------------|-----------|---------------------|---------|-------------|
| urwadkl39kqbbasz | mumu     | Admin | Local          | Yes         | Enabled   | 2024-02-17 03:42:27 | Enabled |             |
| ad8adjdueldkekau | muzi     | Admin | Default        |             | Enabled   |                     | Enabled | upload-muzi |
|------------------|----------|-------|----------------|-------------|-----------|---------------------|---------|-------------|

# 删除用户,删除后通过 photoprism users ls 无法查看到用户,但通过 photoprism users show 还可以显示用户详细信息
root@231128:/photoprism$ photoprism users rm muzi
INFO[2024-02-17T07:14:32Z] Become a member today, support our mission and enjoy our member benefits! 💎 
INFO[2024-02-17T07:14:32Z] Visit https://www.photoprism.app/membership to learn more. 
Delete user 'muzi'?: y
INFO[2024-02-17T07:14:34Z] user 'muzi' has been deleted  

配置 WebDAV

PhotoPrism 的 WebDAV 功能主要允许用户通过 WebDAV 协议访问和管理他们的照片库。WebDAV 是一种基于 HTTP 的协议,它支持用户通过网络来读取和写入资源。通过开启 PhotoPrism 的 WebDAV 功能,用户可以在任何支持 WebDAV 的应用程序或设备上,如电脑、手机、平板等,直接访问和管理他们在 PhotoPrism 上的照片库,无需下载或上传照片。这大大方便了用户在不同设备间同步和管理照片。这个功能对于那些经常在多个设备间切换的用户来说非常有用,特别是对于那些经常需要处理大量照片的摄影师和设计师来说,可以大大提高他们的工作效率。值得注意的是,虽然 WebDAV 功能非常强大,但是它需要在 PhotoPrism 的设置中手动开启,并且用户需要有一定的网络知识来正确配置和使用。下面简单介绍一下对应的开启方法与客户端配置。

获取 PhotoPrism 的 WebDAV 地址信息,设置 -- 服务 -- 使用 WEBDAV 连接,详见下图所示:

macOS 客户端配置

这里以 macOS 客户端配置进行简单介绍。
打开访达--前往--连接服务器,输入: http://username@domainname/originals/ ,点击连接,在弹出的对话框中输入密码登录即可。
连接成功以后,就可以看到 PhotoPrism 上的照片了。

安卓手机端配置

安卓手机端,强烈建议使用 FolderSync Pro,它支持多种协议、存储类型等,详解如下:

  • FolderSync Pro 是一款功能非常强大的设备本地存储(包括 SD 卡)文件/文件夹与云存储同步应用。它可以将手机中的文件自动同步到云端空间。
  • 支持包括 FTP. WebDAV. Dropbox.- Google Docs 在内的众多空间。
  • 支持各种不同的云服务商和文件协议,并且不断增加对更多平台的支持。在 root 设备上支持根文件访问。
  • 目前支持多个Google Drive,Dropbox,Amazon S3,SugarSync,Box.net,OneDrive,FTP,FTPS,SFTP,WebDAV和Windows共享帐户。
  • 支持将音乐. 图片和其他重要文件从手机备份到您的云存储或其他设备。使用起来十分舒爽简便。而且借助于 Tasker 和类似程序的自动化支持可对您的同步进行更准确精细的控制。它包含一个完整的文件管理器,使您可以在本地和云中管理文件。复制,移动和删除云/远程帐户中的文件。支持在 Amazon S3 中创建/删除存储。从手机上载和下载文件。

这里使用的是 FolderSync Pro 软件,首先需要设置一个账户,类型为: WebDAV,详细如下,需要注意一点,不能够使用 http,必须使用 https。

安卓手机我们一般设置同步三个目录即可:

截图存放目录: /storage/emulated/0/Pictures/Screenshots/
照片存放目录: /storage/emulated/0/DCIM/Camera/
微信图片存放目录: /storage/emulated/0/Pictures/WeiXin/

并且可以设置一个计划任务,多久同步一次至远程服务器。

这里设置了三个同步规则:

参考文献

[1] Docker Compose - PhotoPrism
[2] Account Roles - PhotoPrism
[3] CLI Commands - PhotoPrism
[4] Upcoming Features · Roadmap 🚀✨

写在最后

在本篇文章中,我们深入探讨了 PhotoPrism 的服务器端安装与配置,并深入了解了如何在手机和电脑客户端进行设置。随着数字资料的增长,高效地管理和检索这些资料变得至关重要。接下来,我们将转向另一个同样重要的工具——一个能够帮助您捕捉和整理思绪的闪念记忆工具:memos。敬请期待下篇文章,我们将深入探讨如何最大化利用 memos 帮助您日常生活与工作中的信息整理与记录。

变更记录

  • 2024-02-27
    • 新增用户及权限管理。
    • PHOTOPRISM_PUBLIC: "false" 新增匿名访问权限是否开启说明。
    • 【参考文献】新增用户管理、角色权限管理、Roadmap、各版本功能说明等相关链接。
Avatar photo

关于 木子

Founder of the Rocky Linux Chinese community, MVP、VMware vExpert、TVP, advocate for cloud native technologies, with over ten years of experience in site reliability engineering (SRE) and the DevOps field. Passionate about Cloud Computing、Microservices、CI&CD、DevOps、Kubernetes, currently dedicated to promoting and implementing Rocky Linux in Chinese-speaking regions.
用一杯咖啡支持我们,每一篇 [文档] 都经过我们实操,并非从网上一味的copy,期间花费了大量的心思,希望能够帮忙到您。
暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇