前言

硬件性能:

  • photoprism官方明确要求部署pp服务的最低硬件要求是4核 + 4GB内存,玩客云的cpu性能孱弱而且内存也仅仅只有1GB
  • 能跑起来的前提是禁用全部的图像算法识别功能
  • 如果你需要的是一个全功能的photoprism,那这个方案不适合你,更不适合玩客云
  • 实测部署成功以后,photoprism能跑,网页端访问流畅,导入100+张图片未出现oom。适合轻负载使用
  • 实测转码一张mi10s拍摄的2400万像素的heif/heic格式的照片到jpg需要7秒钟,纯cpu编解码
  • 转码视频,mi10s拍摄的1080p@60fps h265视频30秒,转码成720p avc视频,大概需要2分半,纯cpu编解码

存储空间:

  • docker.io + docker-compose大概占用300MB存储
  • photoprism + mariadb镜像大概占用1.6GB存储
  • 合计大概占用2GB空间,玩客云内置emmc可用空间大概是6GB,能装下,但需要提前考虑存储空间的占用

部署 & 优化

第一步:安装docker环境

直接用debian仓库里的docker.io

apt install docker.io

使用docker-compose方式部署

apt install dockere-compose

因为docker hub国内被屏蔽,记得配置docker国内镜像

第二步:配置文件调整

先创建目录吧。玩客云内置存储空间比较珍贵,pp的运行目录记得放在外置存储。

# 创建目录,记得把pp运行目录指向外置硬盘
mkdir photoprism ; cd $_

# 下载官方的配置文件
wget https://dl.photoprism.app/docker/armv7/docker-compose.yml

官方提供的配置文件,除了常规的密码、运行目录之类,还有以下几个项目要修改

  • PHOTOPRISM_DEFAULT_TLS: "false",这个选项是pp程序初次部署时生成一个自签名的https/tls证书,没卵用,而且在玩客云上部署时会耗费大量时间以生成证书,建议禁用
  • PHOTOPRISM_DISABLE_CHOWN: "true",这个选项是pp每次启动的时候调整storage目录的权限,如果图库文件数量很大,会导致每次pp启动都非常非常耗时,建议禁用
  • PHOTOPRISM_DISABLE_WEBDAV: "true",禁用webdav服务。webdav服务用来分享照片的,用不上,禁用。也可以在webui里禁用。
  • PHOTOPRISM_DISABLE_TENSORFLOW: "true",禁用tensorflow。图像算法识别功能,吃硬件性能,玩客云上跑pp必须禁用掉。务必在配置文件中直接禁用,要不然启动pp都很难。
  • user: "1000:1000",有权限洁癖的用户需要这个,自己加一行参数,指定photoprism以non-root用户运行。如果加了这条,对应的originalsimportstorage三个目录需要提前手动创建并分配用户权限。如果以root用户运行,这条可以无视。
  • image: linuxserver/mariadb:10.6.13,这是mariadb的配置项,目前支持armv7的mariadb的最新(后)一个版本就是10.6.13,需要指定版本。

改完配置文件以后,就可以开始部署了

docker-compose up -d

不出意外等命令跑完就OK了。

不过pp启动还是会稍微有点耗时,大概需要半分钟到一分钟的样子就可以访问web端了。

第三步:web端功能精简

有些功能可以在webui中进行优化(禁用),可以酌情调整。

  • 一般:人物:建议关闭,需要tensorflow进行人脸识别
  • 一般:标签:建议关闭,需要tensorflow进行照片主题识别添加标签,禁用tensorflow以后没有标签了,没必要保留入口
  • 一般:瞬间:建议关闭,根据地点、标签、人脸之类标签来汇总整理的相册功能,禁用掉地点和tensorfow以后这功能就是个残废,没必要保留入口
  • 资料库:估算:建议关闭,地理坐标的功能
  • 高级:禁用webdav:建议关闭
  • 高级:禁用地点:建议关闭,除了吃硬件性能之外,这服务还会需要去网上下载地图数据,碰到网络差或者网站被屏蔽时会导致照片索引服务卡在网络请求这一步很久
  • 高级:禁用exiftool:建议关闭,每个照片都会创建一个exif json文件,非常吃i/o存储性能
  • 高级:禁用tensorflow:务必关闭,玩客云上开这个功能的话pp根本没法用
  • 高级:禁用备份:建议关闭,pp默认会统一修改原文件名,所以需要备份原始元数据到yaml文件,大量小文件吃i/o性能,对原文件名没有要求的话可以关闭
  • 高级:动态预览:建议关闭,它自述不适合低性能nas,所以关闭
  • 高级:禁用imagemagick:建议关闭,raw文件生成缩略图用的,没有raw文件就关闭

大致就这些了,禁用掉这些功能以后,photoprism在玩客云上就能流畅运行了。


后记

有人可能会说photoprism禁用掉这么多功能,那用它还有什么意义,不如用lychee。

emmm,🤔,你说的很有道理,确实lychee轻量好用。如果对相册服务没有什么喜好,而且一定要在玩客云上跑,那我也建议lychee。

但这篇文章的目的就是在玩客云上跑photoprism。(╯‵□′)╯︵┻━┻

适合前期已经入坑photoprism、又不想单独弄个机器(或者虚拟机)跑pp、想最大化挖掘玩客云可用性、需要一个媒体文件归档服务的用户,比如我。

🎉