Immich / PhotoPrism 自建照片备份:把 Google 相册搬上 VPS 的完整方案(2026)
2026-08-15 · DevCraft Studio
谷歌相册开始收费、隐私焦虑不断蔓延,越来越多人想把全家人的照片搬上国外 VPS 自建备份。本文彻底讲清 Immich 与 PhotoPrism 的核心差异、最低 4GB 内存背后的硬件真相、人脸识别机器学习的具体需求、Google Takeout 迁移与手机自动上传配置,并给出存储增长测算、必须做的备份铁律,以及 Contabo、Hetzner、RackNerd 的选购建议。
谷歌相册从「无限免费」一步步缩水到收费、压缩、限容量,加上这两年隐私焦虑蔓延,越来越多人想把全家人的照片搬回自己手里。搜索「VPS 自建照片备份」的人肉眼可见地变多。答案基本锁定在两个开源项目:Immich 和 PhotoPrism。Immich 是 2026 年最像谷歌相册的替代品,时间线、共享相册、AI 搜索一应俱全;PhotoPrism 更轻、更偏「照片管理」。但真要跑顺,硬件坑比想象中深——尤其是那个被反复提到的「最低 4GB 内存」。本文把这事拆透,并给你一套从谷歌相册迁移、手机自动上传到人脸识别硬件需求的完整实操方案。
延伸阅读
更多相关攻略推荐:别被多核骗了!为什么买 VPS 必须看单核(Single-Core)、【区块链节点 03】用 VPS 运行比特币全节点:UTXO、prun、在 VPS 上自托管 CI Runner:GitLab Runner、【VPS 自建影音与网盘 01】用 VPS 搭建私人影音服务器:Je、Matrix / Element 自托管即时通讯:搭一个不被监控的私。
一、Immich 和 PhotoPrism 到底选谁
两者都是自托管照片方案,但定位不同。Immich 用 TypeScript + Dart 写,目标就是「碾压商业云体验」:手机后台自动备份、时间线、共享相册、地图视图、「那年今日」回忆、以及本地运行的人脸识别和 CLIP 自然语言搜索。PhotoPrism 用 Go 写,更像一个强大的照片管理与浏览工具,索引快、资源占用低,但手机自动备份和社交分享体验不如 Immich 顺滑。给你一张对照表:
| 维度 | Immich | PhotoPrism |
|---|---|---|
| 最低内存 | 4GB(低于会 OOM) | 约 2GB |
| 手机自动备份 | 官方 iOS/Android 应用,体验好 | 需第三方或手动上传 |
| 人脸识别 | 内置机器学习,本地跑 | 可选 TensorFlow 索引 |
| AI 自然语言搜索 | 支持(CLIP) | 不支持 |
| 上手难度 | 中(组件多) | 低(单容器为主) |
结论:想要「谷歌相册平替」、全家共用、要人脸识别,选 Immich;只想安静管理自己的照片库、机器小、不想折腾 ML,选 PhotoPrism。下面以 Immich 为主线,因为它正是本文的重点。
二、硬件真相:那个「最低 4GB 内存」是怎么来的
Immich 比绝大多数自托管应用都吃资源,原因在它的机器学习栈。Immich 由 server、PostgreSQL 数据库、Redis 缓存、machine-learning 四个容器组成。稳态下 server + 数据库 + Redis 只占 1–1.5GB,但 machine-learning 容器加载人脸识别、CLIP 模型时要再吃 1.5–3GB。所以「4GB 能跑」指的是小图库、且接受首次索引慢;「8GB 才舒服」指的是家庭级图库、ML 常开。
为什么强调 4GB 是地板?因为低于 4GB,Docker 的 OOM Killer 会在首次大批量索引时默默杀掉进程——照片照样能传,但人脸识别和智能搜索悄悄停了,你很难察觉。所以选购 VPS 时,把内存放在第一位,宁愿少点 CPU 也别低于 4GB;家庭用直接上 8GB。
CPU 方面:2 vCPU 是底线,4–6 vCPU 推荐。CPU 最累的两个时刻,一是首次全量扫描(弱核要几天,强核几小时),二是视频转码缩略图。如果你那台机器带 Intel 核显(QuickSync),开启硬件转码能让这几小时缩短到几分钟——但这又回到 VPS 没 GPU 的老问题,普通云 VPS 别指望,专用服务器才行。
三、机器学习人脸识别到底要什么硬件
Immich 的「魔法」——按人脸分组、用「海滩上的狗」搜图——全靠 machine-learning 容器本地跑模型,不经过任何第三方云。这既是隐私卖点,也是硬件负担。两个功能分开看:
- 人脸检测与分组:加载人脸模型,内存敏感,4GB 是底线,8GB 才不卡。
- CLIP 语义搜索:把图片编码成向量做相似度检索,除了吃内存还吃 CPU/GPU,首次处理几万张图时 CPU 会冲很高。
如果你完全不在乎人脸识别,可以在环境变量里设 MACHINE_LEARNING_ENABLED=false 直接关掉 ML,这样 2GB 内存的小机也能跑 Immich,只是失去了它最吸引人的 AI 部分。对隐私党来说,模型全在本地跑、照片不出服务器,正是甩开谷歌的最大理由。
四、存储账:你的照片库涨得比你以为的快
照片是只涨不跌的数据集,规划存储不能拍脑袋。真实生成速度参考:
- 一个重度手机用户:照片 + 随手拍视频,约 50–150GB/年。
- 有娃couple:娃的视频占大头,约 200–300GB/年。
- 4K 视频家庭或 RAW 摄影党:约 0.5–1TB/年。
还要注意 Immich 自己会膨胀:原图 + 缩略图 + 视频转码缓存,100GB 原图在磁盘上往往占 130–150GB。所以规划时按原图的 1.3–1.5 倍预留,并且把数据库和缩略图放在 NVMe 上(缩略图延迟决定了时间线滑起来卡不卡)。规则:第一天就至少按当前图库的 2 倍留盘;大图库(1TB+)考虑挂载块存储或上带大硬盘的存储型服务器。
五、从 Google 相册迁移:Takeout 实战
想把历史照片搬过来,正路是用 Google Takeout 导出,再用 Immich 的批量导入把元数据(相册、时间戳、地点)一并带过来。步骤:
- 在 Google 账号的 Takeout 页面,只勾选「相册」,选导出格式为原始画质,分卷下载(建议每卷 2GB 以内,避免单文件过大)。
- 把导出的 zip 用 rclone 或 rsync 传到 VPS 的临时目录,解压后得到一串带 JSON 元数据的图片。
- 用 Immich 官方 CLI 的批量导入命令,把照片按拍摄时间写回正确的存储模板目录,并恢复相册与日期。
关键提醒:Immich 的 storage-template 功能会把原图存成一套规整、可移植的文件夹结构,这正是你日后「随时能拎包走人」的退路,别关掉它。迁移期可能要好几个小时到几天,取决于图库大小,插着电让手机和 VPS 慢慢跑。
六、手机自动上传怎么配
Immich 的杀手锏是手机后台自动备份,体验对标谷歌相册。配置要点:
- 在 App Store / Play Store 装 Immich 官方 App,填入你的服务器域名(走 HTTPS),用管理员账号登录。
- 在设置里开启「相机 roll 后台备份」,首次会全量同步,建议插电过夜。
- 服务器地址一变(比如从临时域名换成正式域名),必须在 App 里手动更新服务器 URL 并重新登录,否则备份会悄悄停掉——这是新手最常踩的坑。
如果家里人多,给每个人建独立账号,各自备份到各自的相册;共享相册再单独拉人。这样既隔离隐私,又能全家共用一台 VPS。
七、实战部署:Docker + Nginx 反代 HTTPS
Immich 官方给了 docker compose 模板,核心是 server、machine-learning、PostgreSQL(带 VectorChord 扩展)、Redis 四个服务。最关键的坑在数据库:从 Immich v1.133 起,向量搜索依赖 pgvector 与 VectorChord 扩展,必须用官方 Postgres 镜像 ghcr.io/immich-app/postgres,不能用裸 Postgres,否则服务能起、但人脸和物体检索会失败。
compose 里要设好的环境变量(示意):
services:
immich-server:
image: ghcr.io/immich-app/server:release
environment:
- DB_URL=postgresql://immich:password@immich-postgres:5432/immich
- REDIS_HOSTNAME=immich-redis
- UPLOAD_LOCATION=/mnt/photos
- MACHINE_LEARNING_ENABLED=true
volumes:
- /mnt/photos:/usr/src/app/upload
ports:
- "127.0.0.1:2283:3001"
restart: unless-stopped把端口只绑 127.0.0.1,前面用 Nginx 反代并签发 Let's Encrypt 证书。Nginx 片段(注意 Immich 需要 websocket 透传):
location / {
proxy_pass http://127.0.0.1:2283;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}部署后用 certbot --nginx -d photos.yourdomain.com 一键 HTTPS,访问域名进入初始化,创建管理员账号即可。
八、五个悄悄搞坏自托管照片的坑
- 数据库没装 VectorChord 扩展:人脸识别和物体检索失效。修法是换官方 Postgres 镜像。
- ML 吃内存后被 OOM 杀掉:4GB 以下主机常见,表现是人脸识别悄悄停了。修法是升到 8GB,或关掉 ML。
- 换域名后 App 失联:备份静默停止。修法是每次换域名都在 App 里更新服务器地址并重登。
- 磁盘悄悄爆满:原图 + 缩略图 + 转码缓存,100GB 原图能占 130–150GB。修法是提前按 1.3–1.5 倍规划,并挂监控。
- 忘了备份数据库:Postgres 里存着相册、标签、人脸聚类等元数据,只备份照片卷不够。修法见下一节。
九、Immich 不是备份!restic / borg 必须上
这是最容易被忽略、也最致命的一点:在 App 里删一张照片,服务器上就没了;磁盘坏了没冗余,全没了。RAID 只能防磁盘坏,防不了误删、勒索、软件 bug。所以两条铁律:
- 照片原卷 + Postgres 数据库 dump,一起用 restic 或 borg 备份到第二台机器或另一家对象存储。
- 两地点、定期演练恢复、每季度一次。照片是那种「以后再说备份」最后必然变成家庭悲剧的数据集,别赌。
简单说:Immich 解决的是「随时随地访问和 AI 整理」,备份是另一回事,必须单独做。
十、厂商选购与成本
结合「内存优先、存储随图库长」的结论,三家定位:
- Contabo:大内存 + 大硬盘性价比王,4 vCPU + 8GB + 50GB NVMe 约 4.99 欧元/月,无限流量,适合图库大、需要本地大盘的家庭。
- Hetzner:综合最稳,2 vCPU + 8GB 约 5.83 欧元/月,含 20TB 流量,8GB 内存刚好让 ML 跑得舒服,可挂 Storage Box 扩存储,欧盟合规。
- RackNerd:年付小鸡价位最低,适合图库小、想先低成本试水的朋友;但内存通常偏小,跑 ML 要吃紧,建议关掉 ML 或只做轻量备份。
成本粗算:一台 10–20 美元/月的 VPS + 挂载块存储(约 5 美元/100GB/月),家庭级图库每月大约 20–40 美元。对比谷歌相册付费 + 多人共享,长期看并不亏,而且数据全在自己手里。
#VPS自建照片备份 #Immich私人相册 #VPS替代Google相册 #自托管