无 Docker 安装 Immich

Immich 是一个自托管的照片备份软件,和谷歌相册比较相似,我很喜欢。可惜的是官方只提供了基于 Docker 的安装方案,而我一直对 Docker 有点意见,能用 LXC 的就绝对不上 Docker。万幸我不是一个人在战斗,AUR 上正好有 immich-server,而我自己的 LXC 容器又正好都是基于 Arch 的,思路就很简单了,本机打包,再把包以及依赖扔到 LXC 上,最后安装、启动服务即可。

环境准备  

没什么特别的,按照 Immich 官方文档推荐,分了4个核心和6G RAM。

LXC 资源分配

打包  

因为immich-server还有几个 AUR 的依赖,所以就不直接用makepkg了,还是找个 helper 方便点。

paru -S immich-server

编了半天在pgvecto.rs挂了,提示error occurred: Failed to find tool. Is clang-16 installed?,于是再安装clang16

sudo pacman -S clang16

装了之后错误依旧,发现clang16不在PATH里面,不知道是出于何种考量,临时加进去再战。

fish_add_path -g /usr/lib/llvm16/bin/

这次没问题了,打包完直接CTRL+C退出安装就可以了。在~/.cache/paru/clone/里找到pgvecto.rsimmich-serverperl-mojolicious,扔到 LXC 上。

安装  

pacman -U *.pkg.tar.zst

配置  

按照提示,配置数据库。

su -l postgres -c "initdb --locale=C.UTF-8 --encoding=UTF8 -D '/var/lib/postgres/data'"
systemctl enable postgresql.service --now
su -l postgres -c "psql -c 'ALTER SYSTEM SET shared_preload_libraries = \"vectors.so\"'"
su postgres -c psql -c 'ALTER SYSTEM SET shared_preload_libraries = "vectors.so"'

由于用到的人脸识别、CLIP模型托管在 huggingface,直连比较困难,魔改一下对应的 service,配置一下代理。

# 文件为 /usr/lib/systemd/system/immich-machine-learning.service
[Service]
...

# 在此处加上代理配置,这边指向了我的另一台 LXC。
Environment=https_proxy=http://192.168.1.100:7890
Environment=http_proxy=http://192.168.1.100:7890

...

改完重载一下,启动服务。

systemctl daemon-reload
systemctl enable immich-server --now

使用  

体验非常不错,常规的优点不赘述了,比较特别的是人脸识别和自然语言搜索。

人脸识别基本上跟谷歌相册一个逻辑,识别率和准确率都不错,比较遗憾的是目前还不支持移除错误识别的人脸(将非人脸识别成了人脸)。

自然语言搜索就是基于 CLIP 的,默认的模型只支持英文,我换了一个 multi-lingual 的模型,可以用中文搜索了,但搜索速度比之前慢了,不过准确率似乎有提升。下面是搜索“蓝色键盘”的部分结果。

搜索“蓝色键盘”

刚导入图片的时候人脸识别和 CLIP 的资源占用会比较大,平时还行。

资源占用

上一篇:新的开始