Immich怎么装?NAS自建谷歌相册平替,4万张照片不用重拷,中文搜图先换模型

媳妇要找去年在海边拍的落日,记得是娃在沙滩上跑的那几张。飞牛相册翻了一晚上,按月份一格一格划,划到眼花也没凑齐——它只能按时间翻,不能按内容找。我想起九月中装的那个Immich,当第二份备份试着玩,这回干脆把它扶正,四万多张老照片全喂给它。一个月用下来,搜「海边落日」真能把那几张直接捞出来,坑也踩了四个,一个个说。
先弄清它是干嘛的:一台自己的「谷歌相册」
Immich是个开源软件,免费,界面和玩法就是照着谷歌相册抄的:时间线、那年今天、地图足迹、人脸分组、按内容搜索。谷歌相册国内用不了,家里NAS能干的,就差「按内容搜」这一口气——群晖Photos和飞牛相册至少在我这版固件上还做不到。
Immich把这口气补上了。它底下带一套机器学习模型,把每张照片的内容「看」一遍建索引,你在搜索框输「海边」「猫」「火锅」,它把对得上的照片全列出来。代价也明摆着:它比官方相册重得多。官方App就是传照片、看照片,Immich底下跑着四个容器——服务器本体、机器学习、数据库、缓存,四个各管一摊的员工。Docker的镜像、容器这些概念不熟的话,先看我那篇Docker白话文再动手,不然每一步都发懵。
装的时候最香的一步:外部库,四万张照片一份不用重拷
装法不复杂。飞牛应用商店里没有它,走Docker:官方的docker-compose文件拉下来,四个容器一起起,对外就一个2283端口。浏览器敲 http://192.168.31.10:2283 进网页端,注册的第一个账号就是管理员。端口映射到底映射了啥,之前那篇讲Docker网络的文章说透了,这里不重复。
真正让我眼前一亮的是「外部库」。我原本做好心理准备:照片得让App重新传一遍,四万六千张、186G,等于盘里再塞一份,4T的酷狼直接少一半身位。实际上不用。外部库是让Immich去「读」照片原来所在的目录,只建索引不动文件——186G照片原地不动,一份都不拷。挂上之后它自己扫,EXIF信息、缩略图、时间线,全从原文件来。这一手对老照片几万张的人是救命的。
有个细节别漏:外部库填的路径得是容器里看得见的路径,compose里要把照片目录挂进容器,不然Immich盯着一个空文件夹扫半天还一脸无辜。我第一遍就是没挂对,进度条走完显示零张,还以为程序坏了,回头查挂载才发现扫了个寂寞。改完重新扫描,四万六千张一张不少全进来了。
这里撞了个小坑:之前试水时手机App往Immich里传过几十张新照片,外部库一挂,时间线上这些照片出现两份——一份是传上去的,一份是索引来的。去管理页面把内部上传的那份删掉才干净。所以两条路只走一条:老照片全走外部库,新照片也别再让App往Immich传,备份交给官方App那条线就行。
四万张跑下来,N100的账:内存比你想的紧
外部库挂完,机器学习这才开工。人脸识别过一遍、内容编码过一遍,两道活。我家那台N100,之前跑飞牛自带的人脸识别,四万一千张跑了一天半;Immich两道活一起上,断断续续跑了两天半。那几天机器跟打了鸡血似的,四个核全吃满,风扇声都变了调,Jellyfin转码得给它让路。我掐着上班时间让它跑,晚上高峰期各容器照常用,就是新照片的识别慢半拍,能忍。
内存才是真正要掂量的。机器学习容器平时安安静静占几百兆,一旦跑识别或者你点一次智能搜索,模型整个加载进内存,三个G到三个半G就没了。我那台之前升级到了8G,加上Jellyfin、qBittorrent、Home Assistant这一大家子,识别那两天一度只剩几百兆余量。要是4G内存的机器,别犹豫:要么进设置把机器学习整个关掉——时间线、相册、那年今天照用,只是搜不了内容、分不了人脸;要么干脆别装。我早前写过一句「内存两G起步」,那是关掉机器学习之后的账,真开起来完全不是这个数,这里给自己纠个偏。
电费倒不用慌。跑识别也就那两三天,N100满载也就三十来瓦,几天工夫一两度电。跑完它就闲下来了,新照片进来识别一张几秒钟的事。
中文搜索有个大坑:默认模型捞不出「海边」
第一次试搜索,我输「海边」,出来的东西驴唇不对马嘴;换成英文「beach」,反而对了。查了半天才知道,它默认的内容模型是英文的,中文关键词压根不认识。得进管理后台的机器学习设置,把智能搜索的模型换成multilingual多语言版,保存之后还要把全库重新编码一遍——又是小一天。
换完是真好用。「海边落日」出来四十多张,娃在沙滩上跑的那几张排在头一屏,媳妇一眼锁定。「猫」连我家那只橘猫打哈欠的都给翻出来了。她还试了个「火锅」,去年火锅店里拍糊的两张都搜了出来。人脸识别也比飞牛自带的强一档:我家娃这六年的照片,飞牛版把他拆成了三个人,得手动一个个合并;Immich一次就分对了个大概,合并的活省了一大半。当然娃一岁以内的照片它也有认不出的时候,变化太大,这个不苛求。
多说一句,这个搜索是在本机跑的,照片一张不出门。跟谷歌相册那种照片全传云端的玩法是两码事,图的就是这口的,可以动手了。
家人怎么用:我妈继续飞牛App,Immich只归我和媳妇
手机装App,登录时填服务器地址 http://192.168.31.10:2283 ,账号在网页端开。安卓记得把这台机器的电池优化关掉,不然后台备份动不动被系统掐断;苹果更麻烦,系统不让它一直在后台传,得开着屏幕让它传完那一批,设置里开「后台App刷新」能好一些,但别指望它像安卓那样自觉。出门在外想翻照片,FN Connect那条远程路,App里把地址换成域名就行。
我爸妈那边我没给配。我妈手机上的飞牛App用得好好的,一个只读账号翻照片,让她再记「服务器地址加端口」这种登录方式,任何一步出问题她都没法自救——这也是当初四方案对比时我没给她用Immich的原因。所以在我家,Immich只归我和媳妇:她要找照片,喊我一声,我来搜。给家人配相册账号的路子,之前写过,需要的翻那篇。
什么人装,什么人别碰
一个月下来,机器的账和人的账都摆这儿了:
| 你的情况 | 我的建议 |
| 内存8G往上、爱折腾、照片几万张 | 闭眼装,外部库挂上跑就是 |
| 内存4G的机器 | 关掉机器学习再装,只当时间线相册;或者不装 |
| 全家老小都要用 | 别上Immich,官方App给爸妈配 |
| 只想要个自动备份 | 官方App够了,这是杀鸡用牛刀 |
还有个隐形成本得提醒:这项目迭代飞快,一个月好几个版本,手机App和服务器版本还得对得上,不然动不动提示你升级。容器怎么升级不丢数据,之前写过五步,照着走就行,但你要做好每个月伺候它一回的心理准备。
顺序给你排好:先看内存到没到8G,Docker把四件套起起来,外部库挂老照片(别让App再传一份),第一时间把智能搜索的模型换成multilingual再跑编码,挑个上班时间让它跑人脸识别,App只装给自己人。我媳妇现在找照片直接喊我搜,这个月已经省下她三个「翻一晚上」。

发表评论