无 Docker 安装 Immich
Immich 是一个自托管的照片备份软件,和谷歌相册比较相似,我很喜欢。可惜的是官方只提供了基于 Docker 的安装方案,而我一直对 Docker 有点意见,能用 LXC 的就绝对不上 Docker。万幸我不是一个人在战斗,AUR 上正好有 immich-server,而我自己的 LXC 容器又正好都是基于 Arch 的,思路就很简单了,本机打包,再把包以及依赖扔到 LXC 上,最后安装、启动服务即可。
环境准备
没什么特别的,按照 Immich 官方文档推荐,分了4个核心和6G RAM。
打包
因为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.rs
,immich-server
和perl-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 的资源占用会比较大,平时还行。