PhotoPrism 简介
PhotoPrism 是一款开源的个人照片管理工具,它能帮助用户方便地组织和分享照片。它使用最先进的开发语言与技术,如: Go、TensorFlow,并提供了一个具有人脸识别、地理标签、复杂搜索等功能的自动照片管理系统。
PhotoPrism 不仅支持各种照片格式,还可以自动识别和分类照片,使照片管理变得更加简单。它的设计理念是简洁、易用并且强大,目标是让用户能够以最简单的方式找到他们需要的照片。
此外,PhotoPrism 还支持多用户和共享功能,用户可以方便地将照片分享给家人和朋友,同时保证了数据的私密性和安全性。尽管 PhotoPrism 是一个开源项目,但它的功能和商业软件相比毫不逊色,甚至在某些方面更胜一筹。
总的来说,PhotoPrism 是一个功能强大、易用的照片管理工具,无论你是摄影爱好者,或者只是想要更好地管理你的照片,都值得尝试。
安装 PhotoPrism
说明: 基于前期构建的 traefik
网关,详见: DIY NAS系列12 — Traefik 出口网关配置
在 docker-compose.yaml
文件中,会对重要的配置进行说明,因个人网络环境等不同,需要根据自身实际情况调整配置。
注: 测试过程中发现如果需要通过 traefik
进行反向代理,一定要配置 labels
中的相关 http
与 https
。
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、各版本功能说明等相关链接。