Immich部署及使用

提示“找不到人物”

人脸识别失效,一般是机器学习模型下载失败。官方镜像(immich-machine-learning)默认会连huggingface.co下载镜像,但国内访问不了。有个镜像站:hf-mirror.com,可以替换。

有用的帖子:

简而言之就是:

add HF_ENDPOINT to your env file
在env里添加HF_ENDPOINT=https://hf-mirror.com

工具

  • immich-go:强大的导入工具,可以按照文件夹上传成相册,上传打tag等。但导入后文件由immich接管,虽然相册结构和文件夹结构一致,但相当于把文件夹中的照片上传一份(冗余)到immich内部存储,而内部存储的文件夹结构会遵循immich自己的结构,也就是说不会保留原始文件夹结构。适用于将照片交给immich管理的场景,可能会在以后迁移到其他工具时造成麻烦。
  • immich-folder-album-creator:可以直接将外部图库按照文件夹创建相册,此时这些照片仍然属于外部图库,不占immich内部空间。仅仅是按照文件夹结构创建了相册。
  • 更多工具参考:https://awesome.immich.app/

使用心得

部署至今已有2月余,下面谈谈使用心得,就是如何更好的组织immich使得照片更加井井有条。

以前整理好的图片用外部图库的方式引入

在使用immich之前,你可能已经用自己的管理方式(例如拆分文件夹)整理了一大堆照片。这些照片如果直接导入的immich,就会丢失之前的文件夹结构,后续如果你不想用immich了,无疑会成为一个症结。因此,对于这部分照片,适合使用外部图库的方式来管理。当然,一个很自然的需求是按照文件夹结构生成相册。这一点可以通过上面提到的immich-folder-album-creator来解决。同时启用一个定时任务,每天定时处理外部文件夹的变更,实时调整到immich内部的相册中。例如,文件夹A新增了几张照片,那immich中对应的相册也要新增那几张照片。

$ cat run.sh
#!/bin/bash
 
API_KEY=*************************
API_URL=http://localhost:2283/api
 
python3 immich_auto_album.py /mnt/android $API_URL $API_KEY \
    -r /mnt/segate \
    --album-levels=-1 --album-separator " | " \
    --share-with "xxx@qq.com" \
    --read-album-properties --find-assets-in-albums "$@"
 
$ crontab -l
0 5 * * * cd /opt/immich/tools/immich-folder-album-creator && ./run.sh --unattended

那么如何对这些照片做同步呢?

我目前的做法是,使用其他工具(syncthing)将手机中其他相册(即此前归类好的文件夹)同步到immich所在的服务器对应的外部图库目录,然后定时脚本每天会将相册变更同步到immich内部,immich自己也会定期扫描外部图库。一般前一天的变更,第二天就能在immich内部正常体现。

更新频率高的用immich管理

对于经常更新,日常变动,加加减减的照片,例如手机相册(DCIM/Camera)。每天拍照记录信息也好,拍风景也好,就是不拍,也会定期清理一些当时有用,现在无用的照片。对于这些相册,我直接用immich手机端app,使用其自动备份功能,将手机文件夹备份成immich内部相册。这样,手机相册文件夹中的变更,可以实时体现到immich系统内。

上传目录结构管理

默认从webui/app上传的照片会被hash,分散到hash前缀的文件夹中,对手动管理来说非常不友好(但可能对程序来说性能更高)。秉着“万事留一线,日后好相见”的原则(万一以后不用它了),还是有必要简单整理一下目录结构。Immich提供了存储模板来自定义上传目录结构。目前我的配置是,

  • 如果照片隶属于相册,直接创建相册目录,把照片放进去。
  • 如果照片未隶属任一相册,按照YYYY/mm的目录整理。
  • 我的存储模板:{{#if album}}{{{album}}}{{else}}{{y}}/{{MM}}{{/if}}/{{filename}}

总结

我选择Immich的理由如下,

  1. 好看的UI,类似Google Photo
  2. 好用的WebUI,功能比app还多
  3. 提供各平台app
  4. 多用户管理包括:配额管理,共享相册,公开分享,协同共享等
  5. 基础的机器学习能力:人脸识别、OCR、智能搜索

搭建、维护自己的照片库是一件非常有价值的事情,而且时间越久价值越高。感谢immich开发者提供这么好的工具,感谢immich社区!