部署前要定的三件事

为什么先想清楚再装

新手部署 Immich 最常见的弯路,是装到一半才发现有些事情没定好:照片目录选错了位置,数据库和数据混在一个卷里没法单独备份;域名和端口随手填了一个,后来外网访问全要重来;账号体系没规划,家人照片全堆在一个账号里,分不开也理不清。

这些坑的共同点是:在部署之前改它们几乎零成本,部署之后再改则要动数据、改配置、重启服务,一个弄不好还要担心数据丢。所以这一章不讲安装步骤,只讲三件必须先拍板的小事——目录放哪、域名怎么定、账号怎么分。很多人会一带而过的事,恰恰是后面的麻烦来源。

如果你之前没有部署过任何容器服务,建议先把《自建 NAS 完全指南》 的容器基础读一遍,本章的结论可以直接写进你的部署笔记里。

部署前的三步决策

第一件:照片目录放在哪

Immich 默认把上传的照片放在自己的数据目录里,按拍摄日期整理成层级目录树。问题在于,很多 NAS 用户本来已经有一套自己的照片目录,比如按年份或按事件命名,十几年整理下来的习惯不可能推倒重来。

这时候有两种思路。思路一是让 Immich 接管,新照片全部由它来规整,旧照片导入到它的目录里,好处是结构统一、由软件打理,代价是旧目录要先走一次导入流程。思路二是使用外部库功能,让 Immich 直接读取你现有的目录,不复制、不移动,存储空间不翻倍,你原来的目录继续用原来的工具管理。两种思路可以混用——旧照片走外部库,新照片走默认上传,两个来源最终在同一个时间线里汇合。

方案 适合谁 存储占用 优点 注意点
默认上传目录 从零开始、没有旧目录 一份 结构统一规整 迁移时整目录搬
外部库引用 已有大量旧照片 一份 不复制不重整理 删除要走外部目录
混合方案 旧照片多、想保留原结构 一份 兼容旧习惯 两套目录都要纳入备份

无论选哪个,记住一条铁律:照片目录、数据库、配置文件这三个东西的位置,在 Compose 文件里映射清楚,并且数据库所在的卷要纳入备份计划。数据库丢了,照片还在但全部人脸分组、相册、整理结果都会一起没——这是自建相册里代价最高的操作失误。

第二件:域名与访问方式

部署完只有在内网能访问,多少差点意思。绝大多数人装相册是为了出门也能看照片,所以部署前就应该想好外网访问方案,因为反向代理的配置和域名直接相关,事后改要动配置再重启整套服务。

可选的方案摆在这里。如果有公网 IP,做动态域名解析最直接,DDNS 配合 Nginx 或 Caddy 反向代理,端口一通就能用;没有公网 IP 时,内网穿透工具是常见替代;还有一种思路是只在内网用,出门时通过 VPN 连回家,它把网络入口完全收窄,安全性反而最好。每种方案的配置工作量不同,先定方案再写配置是省事的关键。如果你对内网穿透、端口转发这些概念还比较生,建议先读一读《软路由从入门到精通》 的外网访问章节,方案定好了,反向代理一章照着改配置就行。

不建议的做法是先随手填一个内网地址凑合用、想着以后再改。反向代理一旦绑定到某个地址,后面切换域名时要改的不只是代理配置,还有手机 App 里存的登录地址、家人手机上已经登录的会话——这些隐形成本会让人一拖再拖,最后相册永远只有在家里能用。

外网访问的三条路

域名之外还有证书。云相册之所以无感,是因为 HTTPS 由平台包办;自建相册想要手机 App 正常工作,HTTPS 基本是硬性要求——App 的备份和同步接口大多要求安全上下文。好在现在申请免费证书非常容易,Caddy 甚至能自动申请并续期,几乎做到一次配置永久不管,这块在反向代理一章会给出完整的配置说明。

访问方式 前提条件 配置量 适合谁
DDNS 加反向代理 有公网 IP 中 有宽带条件、想要完整体验
内网穿透工具 无公网 IP 中少 想要完整体验但没公网
VPN 回家 路由器支持 少 重安全、只给自己用
纯内网 同一局域网 零 先跑通再说

第三件:账号怎么分

第三个决定是给家里每个人开账号,还是所有人共用一个账号。这个决定现在看无所谓,照片一多就会显现出来。

共享账号的缺点很直接:人脸识别会把全家人的脸混在一起分组,每个人的照片要靠手动分拣;搜索某人的照片时无法按人物过滤;共享相册功能也要围着一个人转,家人想建自己的相册都没地方下手。分账号则各看各的照片,互不打扰,想共享的再建共享相簿,权限粒度清晰。

维度 单账号共享 每人一账号
人脸分组 全家人脸混在一起 各自独立分组
照片可见性 全部互相可见 默认隔离,可按需共享
管理复杂度 简单 要管理几个账号
共享相册 只能围绕一个人 任意成员可建可加

给家人开账号还有一个额外的好处:手机 App 登录各自的账号,备份自动分开,谁也不会把工作截图混进家庭相册里,孩子的照片只给孩子这一组人脸归档。管理员账号只用来做系统设置,不放照片、不登录手机 App,这个习惯建议从第一天就养成。

家庭成员不多的时候,账号管理也不是负担。Immich 支持管理员直接新增用户并分配初始密码,家人用各自的账号登录手机 App 之后修改一次密码即可。如果想给年长的家人简化体验,可以把他的账号上传权限保留、管理权限全部收走,这样他只需要享受相册,不需要理解相册。

账号类型 数量 权限建议
管理员 一个 只做系统设置与维护
家庭成员 每人一个 上传浏览,按需共享
访客账号 看需要 只读特定相册

第四件容易漏的事:时间与时区

严格说是三件半事。容器服务默认时区不统一是新手最容易踩的暗坑:部署完发现时间线里今天的照片出现在昨天的格子,照片日期对不上,排查一圈才意识到是容器时区没有设。这件事在 Compose 文件里只要加一行环境变量就能解决,属于花十秒钟省两小时的那种配置。

和时区一起值得检查的是 NTP 时间同步。NAS 主机长期开机,时钟漂移不明显,但如果机器放过假、断过电,系统时间偏了,新照片的时间戳会跟着错位。时间在相册里是第一索引,一旦乱了不像文件名还能补救——先把时间同步打开再开始装服务。

配置项 作用 后果
容器时区 照片分组按本地时间 时间线日期错位
主机 NTP 系统时钟准确 新照片时间戳偏移
数据库时区 内部时间戳一致 跨时区排序混乱

好在时区这类配置在 Immich 的文档示例里都有体现,照抄官方模板基本不会踩漏。真正要自己拿主意的还是前面三件事,这也是为什么把它们单列一章。

检查项 待定内容
容器时区 与主机一致的时区设置
NTP 同步 开启并核对当前时间

还有一个常见的心态是等一切条件都齐了再开始。其实部署这件事本身是可重复的,推倒重来一次的成本远低于想象:数据是外部目录的就不动它,数据库重建也能重来。先把三件事的答案填进下面的表格,剩下的在动手里解决。

一张部署前检查表

把三件事并成一张表,逐项打勾之后就可以进入下一章了。建议把这份表直接填一遍,部署时对照着改 Compose 参数,比改到一半再回头要踏实得多。

部署前检查表

检查项 待定内容
照片目录 默认上传还是外部库
存储位置 数据目录与数据库卷分开
外网方案 DDNS 还是穿透还是 VPN
域名 用哪个域名访问
证书 手动申请还是 Caddy 自动
账号体系 每人一账号还是共享
管理员账号 只做管理不放照片

表里每一行都对应 Compose 文件的一项或者部署流程的一步,部署章节会逐行解释它们分别要改成什么。填好这张表再往下走,你会发现后面的操作几乎就是机械地把答案抄进配置里。

小结

目录方案决定数据怎么长、备份怎么做;域名与访问方式决定相册在哪里能用、配置文件怎么写;账号体系决定人脸识别干不干净、照片隔不隔离。这三件事在部署前花十分钟定稿,能避免部署完成后推倒重来的狼狈。从下一章开始,进入真正的部署环节。

延伸阅读

  • 下一章《Docker Compose 全家桶解读》:逐服务讲清 Compose 文件每一项的含义。
  • 《OpenWrt 基础教程》:外网访问涉及路由器设置时的参考。