Immich:把手机相册搬回自己家,11.7 万 star 的开源相册怎么装怎么用
Immich 是目前最像 Google 相册的开源方案:自动备份、人脸识别、时间轴、地图,全在你自己的硬盘上。装法、备份策略和它吃资源的实话都在这。
手机存储就那么大,照片一年比一年多。iCloud 和 Google 相册能解决,但你的照片就存在别人服务器上了,而且每年要交钱。
Immich 是这条路上目前最成熟的开源答案。11.7 万 star,项目地址:
https://github.com/immich-app/immich
它像 Google 相册的地方在于:后台自动备份、按时间轴排、人脸自动分组、地图定位、相册共享、原图下载。不同的是这些全部跑在你家 NAS 上,硬盘满了加盘,不上传、不订阅。
代价也有,而且不小——它资源吃得厉害,尤其是人脸识别那部分。
装之前想清楚三件事
一、它不是"装完就完事"的服务
Immich 后面挂着 PostgreSQL 数据库和 Redis,还有一个人脸/物体识别的机器学习服务。四个容器一起跑,内存至少给 4 GB,8 GB 更稳。
二、备份策略要提前定
照片是那种丢了找不回来的东西。Immich 的数据库和上传目录必须进备份,而且这两个要一起备——只备照片不备数据库,恢复出来是散的。
三、版本别乱跳
Immich 更新很快,大版本之间偶尔有破坏性变更。升级前看一眼 Release Notes,别在半夜手一滑。
装
应用中心里先搜一下 Immich,有就直接装。没有的话走 Docker,官方给了一份 compose,建议直接用它给的那份,别自己拼——它的服务之间版本是配套的。
地址在仓库根目录的 docker/docker-compose.yml。下载下来改三个地方:
# 1. 照片存哪儿
UPLOAD_LOCATION=/vol1/photos/immich
# 2. 数据库存哪儿
DB_DATA_LOCATION=/vol1/photos/immich-pgdata
# 3. 数据库密码,自己设一个
DB_PASSWORD=换成一个你自己的强密码
再加一行时区:
TZ=Asia/Shanghai
然后:
docker compose up -d
docker compose logs -f immich-server
看到 Immich Server is listening on ... 就成了。浏览器打开 http://NAS地址:2283。
第一次打开会让你建管理员账号,这个账号没有找回密码的入口(本地服务,没有邮件服务),密码记好。
手机端:自动备份怎么开
这是 Immich 最有用的部分。
- 应用商店装 Immich App(iOS / Android 都有);
- 服务器地址填
http://内网IP:2283,或者你已经配好的域名; - 登录后进「备份」→ 选择要备份的相册 → 打开「前后台备份」。
第一次会传很久,尤其你手机里存了几年照片。建议先只备份某几个相册试水,别一上来全家桶。
传的过程中手机会发热,这正常,充上电慢慢传。
出门在外想备份?那就得让服务器能从外网访问。别直接把 2283 开到公网——先看站里《Cloudflare Tunnel 应用版》或《CPN-连接私网》那两篇,加一层再开。
人脸识别:好用,但慢
上传完照片,它会在后台跑人脸检测,把同一个人归到一组。第一次跑很慢——几万张照片跑一晚上很正常。
这部分是 immich-machine-learning 容器在干活,CPU 会长时间高位。两个建议:
- 晚上跑,别在你要看电影的时候跑;
- 如果你的 NAS 有核显或独显,可以给它开硬件加速,速度快好几倍。
识别完在「人物」里点一下就能改名,之后照片自动归到这个人下面。给家人用的时候,这一步的价值会立刻体现出来——找"去年在海边那张"比翻相册快多了。
目录怎么规划
建议这样放:
/vol1/photos/
├── immich/ # 上传的原图,按用户和设备分目录
└── immich-pgdata/ # 数据库
两个都在同一块盘上,图省事。但如果你在意安全,数据库放 SSD、原图放机械盘更好——数据库小但读写频繁,放机械盘会拖慢整个界面的响应。
备份,说三遍
Immich 自带一个备份命令,能把数据库导出来:
docker exec -t immich-postgres pg_dumpall -c -U postgres > dump.sql
但更省事的做法是整个目录一起备:immich/ 和 immich-pgdata/ 同时进你的备份任务(站里有 rsync、快照、跨品牌备份几篇可以对着看)。
只备份 immich/ 不备份数据库,恢复的时候照片在、人脸分组和相册全没,等于白忙。
几个会遇到的坑
2283 打得开,App 连不上
手机和 NAS 不在同一个网段,或者你填的是 localhost。填 NAS 的内网 IP。
上传卡在某个百分比
多半是 HEIC 格式或者视频太大。看 docker logs immich-server,报错会写清楚是哪个文件。
人脸识别一直"处理中"
机器学习的容器没起来,或者内存不够被 OOM 杀了。docker ps 看它是不是反复重启。
照片重复了 可能是之前备份过一次又重装。Immich 有去重机制,但依赖数据库——这也是为什么数据库必须一起备份。
外网访问很慢 原图很大,走中转当然慢。要么让它在局域网里备份,要么开缩略图优先显示。
它适合谁
- 手机照片超过 100 GB、又不想一直交订阅费的;
- 家里有多个人,想各自有账号、各自备份的;
- 在意隐私,不愿意把家庭照片放云上的。
不适合:只有 4 GB 内存的小机器(跑不动机器学习那部分);只想找个网盘存文件的(那用不着这么重)。
最后
Immich 是那种"装完就再也不想用别的"的东西。它的体验已经接近商业产品,而数据完全在你自己手里——这两点同时成立的开源项目不多。
代价是它真的重。装之前先看一眼内存,别装完了跟影视库抢资源,两个一起卡。
装的过程中卡住,留言,我补进这篇。
留言