该如何安放你,我的照片

一个自行部署的照片托管解决方案伪横评(真水文)。

使用设备:Celeron N5105(无 AVX 指令集),16G RAM,512G SSD;Arch Linux,容器环境 Podman

如读者需对比功能和界面上的差异,请进入对应的 GitHub 页面,均有 demo。

个人的需求其实很简单,只是一个相册分类 + 照片时间线预览。要说特殊需求大概就是有大量的 HEIC 图片,毕竟谁的空间也不是大风刮来的,另外最好能够用类 MySQL。

Photoprism

photoprism/photoprism

21 年就久仰大名,2.5 万 star 足以证明它已被许多人信赖。TensorFlow 的人脸和内容识别,Live Photo 支持,PWA 网页,Go 语言后端,较为详细的文档,一切看起来都是那么的美好。

不过我一直是个 Docker(或者说容器)黑,Photoprism 并没有提供单独的部署方法。万能的 AUR 有一个不需要容器的 pkgbuild,但安装后并没有任何后续步骤的提示,自带的配置文件没有提供任何有价值的信息,启动 systemd service 之后没有任何反应,打开默认端口也没有任何内容。

无奈只能试着用 Podman Compose 安装,然而这玩意与 Docker Compose 的兼容性并不好。查找 文章 过后发现需要设置 SELinux 策略,极其麻烦,且容器设置项也较为繁琐,直接放弃。

另外感觉 Photoprism 搞了不少开源项目之外的东西,给人的感觉就像…… 有点花里胡哨。当然也可能是我想多了。

Librephotos

GitHub

LibrePhotos/librephotos

功能特性和 Photoprism 较为相似。仍然仅支持 Docker 一种方式。由于不支持 MySQL 类的数据库,将镜像拉下来之后占用会十分巨大:

text
1
2
3
4
5
6
REPOSITORY                                      TAG            IMAGE ID      CREATED       SIZE
docker.io/library/postgres                      13             beb2ef252f25  3 hours ago   381 MB
docker.io/reallibrephotos/librephotos           latest         430b4edbed00  2 weeks ago   7.39 GB
docker.io/reallibrephotos/librephotos-frontend  latest         d11186a8c1cd  2 weeks ago   25.3 MB
docker.io/reallibrephotos/librephotos-proxy     latest         17cb19b36d32  2 weeks ago   146 MB
docker.io/library/redis                         6              c250e371c399  2 weeks ago   116 MB

文档中介绍由于机器学习模型的原因,将会占用 10GB 的硬盘空间。有点劝退。基于 Python,效率也有点堪忧(希望是不必要的担忧)。另外,还附带 PostgresSQL 和 Redis,不知道要吃掉多少内存。

开发者提供了非容器化的选择,但仅支持 Debian 系。按照官方步骤仍然无法使用 Podman Compose 直接启动,所以也直接放弃了…… 懒得跟它耗下去。

Photoview

photoview/photoview

官方认可 AUR,好耶!相对来说,手动安装过程是最简单而且符合直觉的。托打包者和开发者的福,在安装 AUR 后,只需要修改一下配置文件里的 MySQL 连接参数(或者直接改成 SQLite),然后启动 systemd 服务即可。功能相对来说简单,不过对我来说够用。人脸识别的准确度很一般,但对我来说也是锦上添花的功能。

AUR 安装后的配置指引

提示:如果不想或不能改变文件所有权,建议使用文件 ACL setfacl -Rdm 命令为 photoview 用户授予循环继承权限。

用下来几天发现了两个主要的问题,一个是一次导入过多照片的时候会卡住(假完成),阈值大约 100 张,另一个是 HEIC 图片的 EXIF 可能不能正确识别(提了 issue)。作者似乎有点摆,应该也没太多时间。

Immich

immich-app/immich

自动备份功能看起来挺有意思的,不用手动把照片拷贝出去了。

使用 TensorFlow 需要 AVX 支持,但似乎有人编译出了不需要 AVX 的 Docker 镜像。

数据库后端好像是 Postgres 和 Redis,算了……

其他

被 HEIC 需求毙掉的:PiGallery2


网络上的其他讨论可见 Reddit 帖 1Reddit 帖 2