
📥 下载地址:Immich 开源相册(自托管)
GitHub 最新版本:github.com/immich-app/immich/releases/latest
部署文档:docs.immich.app/install/docker-compose
手机客户端:App Store / 各大安卓应用商店搜索 Immich
开源协议 AGPL-3.0 · 服务端自行部署,不依赖任何第三方账号
前阵子刷到一个视频,标题问得很实在:手机照片存网盘,真的要年年交钱吗?底下评论两极分化,一派说”一年两百多不算贵”,另一派翻出自己十年前的照片,说”我不确定它十年后还在不在”。
这两个问题其实不是一回事。年费是钱的问题,数据在不在自己手里是另一个问题。而自建相册这件事,恰好能同时解决——但也确实有它的门槛,不是点两下就完事。
我自己把家里的照片从公有云搬到自建相册有一段时间了,用的是 Immich。这篇把它怎么部署、手机怎么自动备份、备份怎么做、哪些坑必须提前知道,一次讲清楚。跟着走一遍,大概率能跑起来。
一、先算一笔账:网盘年费到底在为什么买单
先摆事实。主流存储服务的价格大致是这样(以官方页面为准,随时可能调整):
| 方案 | 大致容量 | 年成本(估算) | 数据归属 |
|---|---|---|---|
| iCloud 2TB | 2 TB | 约 800 元 | 苹果服务器 |
| Google One 2TB | 2 TB | 约 700~900 元 | 谷歌服务器 |
| 国内网盘会员 | 2~5 TB | 约 250~400 元 | 网盘厂商 |
| 自建 Immich | 硬盘买多少有多少 | 硬盘一次性 + 电费 | 自己的硬盘 |
数字上看,自建并不便宜——一块 4TB 企业盘一千多,加上一台常年开机的机器(NAS 或小主机),第一年成本比年费高。真正的差别在后面:
- 第二年以后,边际成本接近于零。空间不够加块硬盘就行,不用换套餐;
- 照片不会被”限速”。会员过期后下载回原图被限到几百 KB/s,这种经历很多人都有过;
- 隐私不需要靠信任。照片、地点、人脸都在自己机器上,不上传、不做”内容分析”;
- 不会被单方面改规则。容量缩减、功能下线、账号异常,这些都不再由别人决定。
所以这件事的本质不是省钱,是把控制权拿回来。省不省钱,取决于你用多久、存多少。
二、Immich 是什么,凭什么能替代网盘相册
Immich 是一个自托管的照片和视频管理服务,2026 年 11 月的数据是 11.8 万 Star、AGPL-3.0 协议、最新版 v3.3.6。它最常被拿来和 Google Photos 对比,因为界面上确实很像:
| 能力 | Immich 的表现 | 说明 |
|---|---|---|
| 时间轴浏览 | ✅ 完整 | 按天滚动,支持缩放到年视图,流畅度接近商业产品 |
| 手机自动备份 | ✅ 完整 | iOS/Android 官方 App,可只在 Wi-Fi 下备份、可只备份指定相册 |
| 人脸识别 | ✅ 本地运行 | 自动聚类人物,可命名合并,模型跑在本机不上传 |
| 智能搜索 | ✅ 语义搜索 | 输入”海边日落””生日蛋糕”能搜到,靠 CLIP 模型理解画面 |
| 地图视图 | ✅ 支持 | 读取 EXIF 坐标,按地点聚合 |
| 原图与 RAW | ✅ 保留原文件 | 上传即原图,不二次压缩;支持 RAW 预览 |
| 多用户 | ✅ 支持 | 家里几个人各用各的账号,也能共享相册 |
| 外链分享 | ✅ 支持 | 生成链接给别人看,可设密码和有效期 |
| Live Photo / 动态照片 | ✅ 支持 | iPhone 的动态照片能正常播放 |
它和同类的区别在哪:
- PhotoPrism(约 4 万 Star):更偏”图库管理”,标签和搜索很成熟,但手机端体验和自动备份不如 Immich 顺;
- LibrePhotos(约 8 千 Star):人脸和相册组织不错,项目规模小一些,更新节奏慢;
- Photoview(约 6.5 千 Star):轻量,直接把已有目录挂进来浏览,适合”已有照片库、只想加个网页界面”;
- Immich:功能最全、迭代最快,代价是大版本升级偶尔有破坏性变更,需要看 release notes(后面第九节细说)。
如果你要的是”手机拍完自动进我自己的服务器,界面像 Google Photos”,Immich 目前是最省心的选择。如果你只想让一堆散落在硬盘里的老照片有个好看的浏览界面,Photoview 反而更合适——这点后面会再提。
三、自建之前必须想清楚的三件事
3.1 硬件:不要按”能跑起来”来配,要按”三年后”来配
Immich 有四个容器:主服务、机器学习、Redis(Valkey)、PostgreSQL。跑起来不难,难的是照片多了以后:
| 照片规模 | 内存 | CPU | 存储(含缩略图) |
|---|---|---|---|
| 1 万张以内(试用、单人) | 4 GB | 2 核 | 原图 × 1.3 |
| 1~5 万张(家庭主力) | 8 GB | 4 核 | 原图 × 1.4 |
| 5 万张以上 / 多人共用 | 16 GB | 4 核以上 | 原图 × 1.5 |
“原图 × 1.3″这个系数来自缩略图和转码文件。手机视频多的,系数还要往上走。所以别按现在的照片量买盘,按三年的增量买。
3.2 备份:没有备份的自建,比网盘更危险
这是最容易忽略、后果也最严重的一点。公有云挂了有厂商兜底,自己的机器挂了就是真的没了。硬盘会坏、误删会发生、勒索病毒也真的会加密 NAS——站内那篇《群晖 NAS 勒索病毒防护与应急响应指南》就是讲这个的。
最低要求是3-2-1:三份数据、两种介质、一份异地。做不到全套,至少要保证”一份离线备份”。具体做法第八节展开。
3.3 访问方式:先决定局域网用还是公网用
只在家里看,那部署完就能用,简单。要在外面随时看,就要解决公网访问,而这会引入安全风险——直接暴露 2283 端口是最常见的错误。第七节讲怎么做。
四、部署实战:四条命令跑起来
官方推荐 Docker Compose,因为要认真跑 PostgreSQL 和机器学习服务,手工装会很痛苦。下面的步骤在 Ubuntu / Debian / 群晖 Docker / 1Panel 环境都通用。
4.1 准备目录
mkdir -p /opt/immich && cd /opt/immich
wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env
注意一定从 releases/latest/download 取,不要用仓库 main 分支的版本——官方在文件头明确写了:main 上的 compose 可能和最新 release 不兼容。
4.2 改三个环境变量
.env 里真正需要动的只有三个:
UPLOAD_LOCATION=/mnt/data/immich/library
DB_DATA_LOCATION=/mnt/data/immich/postgres
DB_PASSWORD=换成一串随机字符
TZ=Asia/Shanghai
三个提醒:
- DB_PASSWORD 只能用字母和数字,不要用特殊字符和空格,官方特别标注了这条;
- DB_DATA_LOCATION 必须放在本地磁盘,不能是网络共享。数据库跑在 NFS/SMB 上会出各种锁冲突,这是很多人踩的坑;
- UPLOAD_LOCATION 才是照片本体,可以放大盘、可以放挂载的存储池。
4.3 启动
docker compose up -d
docker compose ps
四个容器都应该是 running 或 healthy:immich_server、immich_machine_learning、immich_redis、immich_postgres。首次拉镜像大概几分钟,机器学习镜像比较大。
如果 immich_server 反复重启,先看日志:
docker compose logs -f immich-server
90% 的情况是数据库没起来或者密码不对,日志里会直接写连接失败。
4.4 初始化
浏览器打开 http://服务器IP:2283,第一次进会要求创建管理员账号。这个账号就是你的最高权限,密码用密码管理器生成一个。
进去之后建议先去「管理 → 设置 → 存储模板」改一下目录结构。默认是按 用户/年份/年月 分,改成 年份/年月/文件名 这种纯时间目录更好——原因是他日想脱离 Immich 直接把文件拷走,目录结构依然可读。这一步很多教程会跳过,但它决定了你以后有没有”退出自由”。
五、手机端自动备份怎么配
装官方 App(iOS 应用商店、安卓各大市场都能搜到 Immich,也可以从 GitHub Releases 下载 APK),打开后填服务器地址。
关键设置在「备份」页:
| 选项 | 建议 | 原因 |
|---|---|---|
| 备份开关 | 打开 | 关掉就变成手动同步,很容易忘 |
| 仅在 Wi-Fi 下备份 | 建议开 | 视频文件大,蜂窝流量烧得快 |
| 前台/后台备份 | 两个都开 | iOS 后台限制严,只开前台等于没开 |
| 备份相册范围 | 只选相机胶卷 | 避免把截图、下载的图、表情包一起塞进去 |
| 同步已删除文件 | 先不开 | 手滑删本地会连带云端一起删,等信任之后再开 |
iOS 用户注意:后台备份受系统限制,最好的触发时机是晚上插着电、连着 Wi-Fi。安卓端可以更激进,很多机型支持常驻通知保活。
第一次备份会跑很久,取决于照片量。这期间 CPU 和内存会明显升高,因为要同时生成缩略图、跑人脸检测和 CLIP 向量。别在这时候去网页上疯狂滚动时间轴,容易互相拖慢。
🔧 我整理的软件库
这些年折腾服务器、虚拟化和开发环境,装过的系统镜像、运维工具、开发套件、数据库与中间件,我都归档在自建的文件库里,持续补充新版本。没有弹窗广告,不强制注册,需要什么直接取。
常用工具随手可取 · 不定期补档
六、人脸识别和智能搜索:这才是自建的真正价值
很多人搬家的动机只是”省钱”,但真正让人回不去的是这两个功能——因为它们是在你自己机器上跑的。
6.1 人脸识别
备份完成、缩略图生成完之后,在「探索 → 人物」里会看到自动聚类出来的人。操作很朴素:点进去给一张脸命名,同一批就会合并。同名的人脸多了,识别会越来越准。
几个实用细节:
- 识别在机器学习容器里跑,首次会把模型下载到
model-cache卷,大约几百 MB; - 老照片里的小孩和成年后的人脸,一开始不会归到一起,手动合并一次就行;
- 不想被识别可以在设置里关掉,但关掉之后就失去了”按人找照片”的能力。
6.2 语义搜索
Immich 用 CLIP 模型给每张图生成向量,所以可以直接搜内容而不是文件名。搜”生日蛋糕”、”海边日落”、”白色汽车”都能命中,不需要提前打标签。
这功能吃算力:一张图一次推理,几万张照片的初始索引可能要跑几小时到一整天。如果有 NVIDIA 显卡或者带核显的 Intel 平台,可以给机器学习容器开硬件加速(官方 compose 里已经写好了注释,取消注释就行),速度能快好几倍。
6.3 这两个功能为什么必须自建
公有云也做人脸和场景识别,但那是把照片传上去、在别人服务器上算。自建的意义就在这:模型、向量、人脸数据全在本地,不联网也能跑。对照片里有家人、小孩、证件、票据的人来说,这是决定性的差别。
七、公网访问与安全加固
这一节别跳。自建相册暴露在公网,等于把家里的照片柜搬到马路边上——门锁做得怎么样,直接决定后果。
7.1 不要直接把 2283 开到公网
最少也要加一层反向代理 + HTTPS。有域名的,用 Caddy 或 Nginx 配证书(Let’s Encrypt 免费);没有域名的,内网穿透也行,但穿透服务本身要选可靠的。
如果只是自己用,更好的方案是:不暴露公网,走 VPN 或内网穿透的白名单。Tailscale、ZeroTier 这类组网工具能让你在外面像在内网一样访问,攻击面直接降到零。
7.2 必做的五项加固
| 加固项 | 做法 |
|---|---|
| 强密码 + 二次验证 | 管理员账号用随机密码,开启两步验证 |
| HTTPS 强制 | 反代层做 301 跳转,加 HSTS |
| 限制注册 | 关掉公开注册,新账号由管理员邀请 |
| 数据库不出网 | compose 里 postgres 和 redis 本来就没映射端口,别自己加上 |
| 日志与告警 | 保留访问日志,对异常登录尝试设阈值告警 |
想更彻底一点,可以在前面加一层 WAF。站内写过一篇《雷池 SafeLine 一条命令给个人站点装上开源 WAF》,配置成本很低。另外《网站漏洞怎么自查》里那套自查流程,对自建服务同样适用——尤其是”敏感文件别放网站根目录”和”管理端口别裸奔”这两条。
八、备份:自建最容易翻车的地方
这一节是我认为整篇最该认真看的部分。照片丢了,前面所有折腾都白费。
8.1 要备份哪两样东西
Immich 的数据分两块,缺一不可:
- 照片本体:就是
UPLOAD_LOCATION那个目录,包括原图、缩略图、转码后的视频; - 数据库:PostgreSQL 里存的是元数据——谁上传的、什么时候、在哪个相册、人脸聚类结果、向量索引。
只备照片,重装后是新库,所有相册分组和人脸标签全丢;只备数据库,那是空壳,点开全是裂图。
8.2 数据库导出
docker exec -t immich_postgres pg_dumpall --clean --if-exists --username=postgres > /backup/immich-db-$(date +%F).sql
这条命令可以放进 cron,每天凌晨跑一次。SQL 文件不大,几万张照片通常也就几百 MB。
8.3 文件同步
照片目录用 rsync 增量同步到另一块盘或另一台机器:
rsync -a --delete /mnt/data/immich/library/ /mnt/backup/immich-library/
注意 --delete 这个参数:它会让备份和目标完全一致,好处是不会越备越乱,坏处是源端误删会同步到备份。所以我更推荐用快照或者带版本的工具,把”删除”这件事留一条后路。
8.4 异地那一份
同城的另一台机器、或者加密后传到对象存储、或者定期拷一块移动硬盘放到别处。三种都行,选一种真正会执行的。很多人计划得很好,最后败在”忘了插硬盘”。
如果你手上就是一堆散落在各处的照片和文件,想先把它们归拢起来再加备份,站内那篇《awesome-selfhosted 收录上千个开源项目》里有不少配套工具的思路,可以参考。
真出事的时候(数据库坏了、容器起不来、误删了相册),恢复顺序是固定的:先还原数据库 → 再放回照片目录 → 最后启动容器。顺序反了会对不上。如果自助排查卡住了,或者手上没有可用备份想评估还能救回多少,可以直接联系我:微信/手机 17712677007。先在消息里说清楚三件事——装在哪套环境、最后一次正常是什么时候、有没有数据库 SQL 备份,比笼统问”数据没了怎么办”能快很多。
九、版本升级与大版本跳跃
Immich 迭代很快,2026 年已经到 v3.x。快是优点,代价是大版本之间偶尔有破坏性变更:数据库结构、环境变量名、甚至 compose 文件结构都可能变。
安全升级的流程:
- 先看 GitHub Releases 的说明,重点找”Breaking Changes”字样;
- 备份数据库和照片目录(对,每次升级前都备);
- 重新下载对应版本的
docker-compose.yml,别用旧的; docker compose pull && docker compose up -d;- 看日志确认迁移跑完,再打开网页验证。
不想折腾的,就把 IMMICH_VERSION 钉在一个具体版本号上,别用 release 这种浮动标签——否则某次重启就自动跳版本了,而你完全不知道发生了什么。
十、三种不适合自建的情况
说实话,这件事不是所有人都该做。以下三种情况我建议别自建:
| 情况 | 原因 | 替代方案 |
|---|---|---|
| 完全没有运维经验,也不想学 | 出问题时没人兜底,数据风险高于省下的钱 | 继续用网盘,或者买成品 NAS 的相册套件 |
| 照片超过 10 万张且必须随时外网高速访问 | 带宽和算力要求高,家用环境体验会打折 | 自建 + 云端只存精选,混合方案 |
| 只是想让老照片有个浏览界面 | Immich 四容器架构对这点需求太重 | Photoview 或更轻的静态图库 |
判断标准很简单:你愿不愿意为它每年花几个小时维护。愿意,就值;不愿意,网盘那笔钱买的就是”不用管”。
十一、常见问题
Q:手机备份很慢,正常吗?
首次正常,几万张照片跑一整晚很常见。后续增量备份只传新文件,会快很多。如果一直慢,检查是不是在蜂窝网络下、是不是服务器 CPU 被打满了。
Q:HEIC 照片会不会出问题?
Immich 支持 HEIC,会生成兼容格式的预览。原文件保留不动,所以下载回来还是 HEIC。
Q:硬盘空间涨得比预期快?
三个原因:缩略图(约占原图 10~20%)、视频转码(生成多个码率)、以及”删了但还在回收站”。先去管理后台看空间占用明细,再决定是清回收站还是调转码策略。
Q:可以在群晖/威联通上装吗?
可以,这两种 NAS 都支持 Docker Compose。注意数据库目录一定放本地卷,别放网络共享。低端型号(2G 内存那种)跑起来会很吃力。
Q:以后想搬走,照片拿得出来吗?
能。这正是前面强调”改存储模板”的原因——文件在磁盘上是按你定义的目录结构存的普通图片文件,不是加密数据库里的二进制。就算哪天不用 Immich 了,直接拷走照样能看。
Q:和网盘能不能共存?
可以,很多人是”Immich 存全量原始库,网盘只放精选和分享”。这样既有完整备份,又不至于把几百 GB 都塞给云服务。
十二、写在最后
回到开头那个问题:手机照片存网盘,该不该继续交年费?
我的答案是:看你想要的是”存储空间”还是”数据的所有权”。前者花钱买就行,后者只能自己搭。
Immich 这类项目真正改变的地方,不是省了多少钱,而是把”我的照片在哪里、谁能看、会不会明天改规则”这三个问题的答案,从别人手里拿回到自己手里。代价是要花一个下午部署、每年花几个小时维护、以及一套真正能恢复的备份。
这三件事做到了,剩下的就是享受——手机拍完自动进库,随时能搜到三年前那只猫,而且没有人会因为你没续费就把原图限速。
如果部署过程中卡在某一步,或者你想评估自己那套环境(NAS 型号、内存、现有照片量)到底跑不跑得动,欢迎评论区说下具体情况,我挑典型的单独拆一篇。
✍️ 关于作者
IT 峰哥,互联网技术从业者。日常折腾服务器、虚拟化、数据库与企业级应用,关注开源系统的二次开发与基础设施落地。这里记录的是踩过的坑和验证过跑得通的方案,不是转述文档。
交流:微信 / 手机 17712677007(注明来意,看到会回)
文中方案如有疏漏,欢迎在评论区指正 · 技术问题欢迎交流