在 Proxmox 上用 ZFS 镜像搭建 Immich:安装与 3-2-1 备份
发布日期 2026-10-27
Immich 是一个支持手机备份的自托管照片和视频库。本指南介绍一套能经受磁盘故障的方案:在 Proxmox 上的虚拟机里运行 Immich,照片存放在 ZFS 镜像上,再加上真正的 3-2-1 备份。这里假设你已经安装好 Proxmox,并有两块容量相同的磁盘用于做镜像。
硬件:官方最低要求
| 项目 | 最低 | 推荐 |
|---|---|---|
| 内存 | 6 GB | 8 GB |
| CPU | 2 核 | 4 核 |
| 数据库存储 | 本地 SSD,绝不能放在网络共享上 | |
来源:Immich 系统要求(页面更新于 2026-10-08,核对于 2026-10-19)。该页面还提到,缩略图和转码后的视频会使媒体库大小增加约 10–20%;如果内存只有 4 GB,应关闭机器学习功能。
第 1 步 — 创建 ZFS 镜像
- 在 Proxmox 中:Datacenter → node → Disks → ZFS → Create: ZFS,选中两块磁盘,RAID 级别选 Mirror。
- 两块磁盘的镜像只有一块磁盘的容量;任意一块磁盘损坏都不会丢失数据。
- 把它添加为虚拟机磁盘的存储,或者创建一个数据集(例如
tank/photos)挂载给虚拟机使用。
第 2 步 — 创建虚拟机
- 创建一台 Debian 或 Ubuntu 虚拟机,配置至少达到上面的最低要求。把虚拟机的系统盘放在 SSD 上,这样 Postgres 数据库就位于本地 SSD。
- 将 CPU 类型设为
host(或其他支持 x86-64-v2 的类型);在 amd64 上,Immich 的机器学习容器要求 x86-64-v2。 - 在 ZFS 镜像上添加第二块虚拟磁盘用于存放照片,并挂载,例如挂载到
/srv/photos。
Immich 的文档把虚拟机中的 Docker Compose 作为受支持的方式;在 LXC 容器中运行则被描述为不推荐。
第 3 步 — 安装 Immich
- 安装 Docker 和 Compose 插件。
- 从 Immich 安装文档下载官方的
docker-compose.yml和example.env。 - 在
.env中设置UPLOAD_LOCATION=/srv/photos/library,并让DB_DATA_LOCATION保留在 SSD 系统盘上。 - 运行
docker compose up -d,打开 2283 端口,创建管理员账户,安装手机应用并开启备份。
第 4 步 — 3-2-1 备份
镜像只能防范磁盘损坏,防不了误删、勒索软件或火灾。Immich 自己的文档推荐 3-2-1 策略:3 份副本,存放在 2 种不同介质上,其中 1 份放在异地。
| 副本 | 位置 | 方式 |
|---|---|---|
| 1 | ZFS 镜像(在线使用) | Immich 本身 |
| 2 | 外接 USB 磁盘或另一台机器 | ZFS 快照 + zfs send,或 restic/borg |
| 3 | 异地(云存储桶或朋友的服务器) | 带加密的 restic/borg |
两部分都要备份。Immich 会在 UPLOAD_LOCATION/backups 中自动生成数据库转储(默认每天凌晨 2:00,保留最近 14 份)。这些转储只包含元数据——不含照片——所以你的备份任务必须复制整个 UPLOAD_LOCATION,其中就包含这些转储。来源:Immich 备份与恢复,核对于 2026-10-19。
请至少测试一次恢复:启动一台临时虚拟机,恢复文件和一份转储,然后登录。
同一台服务器上还能放什么
- 文件同步服务(例如 Syncthing),放在同一个镜像上。
- 密码管理器服务器,与同一个异地备份任务一起备份。
- 监控(磁盘 SMART 和 ZFS scrub 告警)——清单里最便宜的保险。
常见问题
- 镜像就是我的备份吗?
- 不是。它只是冗余。删除一张照片会立刻在两块磁盘上同时删除。
- 可以通过 NFS 把数据库放在 ZFS 镜像上吗?
- Immich 表示数据库绝不能放在网络共享上。请把它放在本地 SSD。
- ZFS 本身需要多少内存?
- ZFS 会把空闲内存用作缓存(ARC),并在内存紧张时让出;先确定虚拟机的内存预算,剩下的再留给宿主机。
来源
- Immich 系统要求 — 核对日期 2026-10-19
- Immich 备份与恢复 — 核对日期 2026-10-19
相关(韩语): 开发知识汇总(개발 지식 모음)
🌐 English · Español · Bahasa Indonesia · 日本語 · ไทย · Tiếng Việt · 中文
📤 공유