前段时间在群晖上折腾immich,查了一堆在线的文档,跟AI也讨论了不少,发现一件本来很简单的事情被搞得过于复杂了。
简单来说,immich本身是很易于安装和配置的,在国内的环境下,主要困难在于:
- 需要hf镜像以下载大模型
- 需要docker-hub镜像以下载immich
接下来以普通的群晖 DS220+这款家用 2-bay NAS 为例,简单记一下如何从头开始配置 immich 。
环境配置
DSM版本 7.3.2
设备型号 Synology DS220+
设备CPU Intel(R) Celeron(R) J4025
MemTotal: 10031252 kB (10GB)
注:Immich 比较吃内存,建议加过内存的机型折腾,我这里加到了 10GB。
然后:
- 群晖上需要安装 Container Manager
- 打开 Container Manager / 镜像仓库 / 设置,添加一个镜像地址。我用的是轩辕,充一点钱可以用好久,除了这个以外,网上的所谓免费镜像都用不起来。
- 在群晖的控制面板里,新增一个文件夹,我这里用的是
docker作为名称。 - 在
docker下新建immich文件夹,后续所有的操作都在这个文件夹下进行。
下载和编辑immich的示例配置
前往 immich 的发布页,下载最新版的以下文件:
- docker-compose.yml
- example.env
- hwaccel.ml.yml (如果你有独立显卡,本例不涉及)
- hwaccel.transcoding.yml (如果你有独立显卡,本例不涉及)
编辑.env
打开 example.env,原始内容如下:
1 | UPLOAD_LOCATION=./library |
按照这个配置,在群晖/docker/immich下,新建library,postgres和cache文件夹。
文件夹结构如下:
1 | /docker/immich (你的 immich 根目录) |
现在把example.env重命名为.env,放到群晖/docker/immich下。
编辑docker-compose
打开docker-compose.yml。
- 如果你跟我一样使用了轩辕的镜像,那把
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}这一行,替换为你的url。如:image: {key}-ghcr.xuanyuan.run/immich-app/immich-server:${IMMICH_VERSION:-release} - 在immich-server节点下的volumes配置中,添加一行
- /volume1/photo:/usr/src/app/external,注意缩进和对齐 - ports下默认的
2283:2283端口映射不需要改,当然也可以改成如9527:2283,这样就可以通过9527端口来访问。 immich-machine-learning,immich_redis,immich_postgres的image路径也改为轩辕的镜像地址,其他的不需要变。immich-machine-learning下的 volumes 改为:- ./cache:/cache。
如果你可以正常拉取docker镜像的话就不需要配置轩辕镜像了。这种情况下只需要配置一下volumes就行。
完成后将docker-compose.yml也放到群晖/docker/immich下。
构建项目
打开Container Manager / 项目 / 新建项目,项目名称随便填,“路径”选择我们之前放.env/docker-compose.yml的地方,也就是 /docker/immich ,“使用现有的 docker-compose.yml 来创建项目”,然后按向导说的做,一路下一步就行。
暂时不需要配置web station。
等构建完成后,就可以通过LAN输入 ds220主机名称:2283 来访问了。
不能访问?
先在 Container Manager 里看一下 immich_server 的 ip地址,如172.20.0.5。
打开群晖【控制面板】/【安全性】/【防火墙】/【编辑规则】,添加一条规则,【端口】写2283,来源写全部,【允许】。应该就可以了。
下载大模型
immich 支持文字识别和人脸识别功能,在纯CPU模式下,我打算用最小的模型来凑合。
- 打开huggingface,创建一个新的token。
- Token Type选择Read
- 复制
hf_开头的一长串token,以下称之为{token}
找个本地磁盘的位置打开终端,然后运行以下命令(需要安装有python)
1 | pip install hf_cli |
将下载好的2个模型文件夹放到 docker/immich/cache 下,目录结构:
1 | /docker/immich/cache |
然后打开immich的系统管理后台,在机器学习设置里配置一下两个模型的名称。
智能搜索:CLIP模型使用`ViT-B-32-SigLIP2-256__webli`
人脸识别:模型使用`buffalo_s`
外部库
因为我的immich是作为Synology Photos的并行方案,所以我是通过外部库挂载的方式导入图像的。
在immich系统管理的外部库中,新建一个外部库,文件夹设置为 /usr/src/app/external ,其他使用默认值即可。
完成。