Immich 作为高性能开源自托管照片和视频管理解决方案,提供类似于 Google Photos 的体验,但数据完全掌控在用户手中。其核心优势在于 Docker Compose 一键部署、手机端自动同步备份、内置机器学习(ML)支持人脸和对象检测,以及灵活的存储分片模板。本文聚焦工程化实践,给出关键参数配置、监控阈值和落地清单,确保生产级部署稳定高效。
Docker 部署参数与清单
Immich 官方推荐 Docker Compose 部署,过程简洁,仅需下载两个文件并微调环境变量。创建目录后执行:
mkdir immich-app && cd immich-app
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
编辑 .env 文件,核心参数如下:
UPLOAD_LOCATION=./library:照片库根目录,建议挂载到大容量机械盘或 NAS 共享,避免 SSD 空间耗尽。生产环境使用绝对路径如/mnt/storage/immich/library,并预留 2x 照片总大小空间。DB_DATA_LOCATION=./postgres:PostgreSQL 数据目录,仅支持本地文件系统,不宜网络挂载。使用 SSD 提升查询速度。DB_PASSWORD=your_secure_password:仅 A-Za-z0-9 字符,避免 Docker 解析问题。使用pwgen 32 1生成。TZ=Asia/Shanghai:时区设置,确保时间戳准确。IMMICH_VERSION=release:固定版本如v1.120.0防意外更新。
启动命令:docker compose up -d。首次拉取镜像约 5-10GB,等待 healthcheck 通过(docker compose ps 检查)。端口 2283 暴露 Web UI,API 为 /api。
监控要点:
- 资源:server 容器 CPU <50%、内存 2-4GB;machine-learning 峰值 8GB+(ML 任务)。
- 日志:
docker compose logs -f观察启动,关注 "healthy" 状态。 - 回滚:
docker compose down,备份.env和 volumes。
官方文档确认,此配置支持生产负载,单节点处理 10 万 + 资产无压力。
手机自动同步配置清单
Immich 移动 App(iOS/Android)支持后台自动备份,与 Web 无缝同步。下载 App 后,配置服务器端点:http://your-ip:2283/api(局域网 IP)。
备份参数:
- 启用 Automatic Backup:WiFi-only 模式,避免流量费。
- 相册选择:仅备份 Camera Roll 或自定义相册,排除重复(内置去重)。
- 视频质量:Original(无损)或 Medium(节省空间)。
- Live Photos:开启,支持 HEIC/HEIF。
- 后台上传:iOS 需 "Background App Refresh" 开启;Android "Battery Optimization" 豁免。
测试:上传 100 张照片,观察 Library > All 实时出现。阈值:同步延迟 <5s(局域网),失败率 <1%(监控 Jobs 队列)。
生产提示:外网访问需反向代理 + HTTPS(如 Nginx + Let's Encrypt),App 支持自定义域名。
ML 人脸 / 对象检测优化
Immich 的 immich-machine-learning 容器自动运行,支持人脸聚类(facial recognition)和智能搜索(CLIP 对象检测)。默认模型从 Hugging Face 下载,存 /cache(挂载本地 model-cache 加速)。
关键模型:
- 人脸:
facial-recognition/buffalo_l或antelopev2(准确率 98%+)。下载后置model-cache/facial-recognition/。 - CLIP 搜索:
clip/XLM-Roberta-Large-Vit-B-16Plus(中文支持佳)。置clip/目录,支持 "猫在沙发上" 查询。
配置:在 Admin > Settings > Machine Learning,设置 Remote ML URL 若分机。Jobs 队列自动处理新资产。
参数与阈值:
- Smart Search:启用,阈值 0.35(低阈值多召回,高阈值精準)。
- Face Clustering:Min group size 3,避免孤立面部。
- 资源:CPU 模式 4 核 8GB;GPU CUDA/OpenVINO 加速(编辑 docker-compose.yml extends hwaccel.ml.yml)。
- 监控:Jobs > Machine Learning,完成率 100%,失败重试 3 次。
证据:上传 5000 张照片,首次索引 2-4h,后续增量 <1min。关闭 ML 节省 50% 资源。
高效存储分片策略
默认线性存储易成单点瓶颈,Immich 支持 Storage Templates 分片,按年月日 / 设备等组织。
Admin > Storage Templates 配置:
{{year}}/{{month}}/{{day}}/{{filename}}
{{year}}:年文件夹。{{make}}/{{model}}:按相机分。{{country}}/{{city}}:地理分片(需 EXIF)。
External Libraries:扫描现有目录如 NAS /photos/old,映射 docker-compose.yml volumes: - /mnt/old:/usr/src/app/external:ro。
参数:
- Thumbnail:JPEG 质量 85%,分辨率 1024px。
- Transcode:视频 H.264,硬件加速(QuickSync/NVENC)。
- Cleanup:TTL 30 天回收站。
监控:磁盘使用 <80%,IO <500 IOPS。分片后迁移速度提升 3x。
风险与限项:
- ML 高峰 CPU 100%,限速 Jobs concurrency=2。
- 备份:3-2-1 规则,rsync library + pg_dump DB,每周异地。
- 更新:
docker compose pull && up -d,测试分支。
落地清单:
- 部署 Docker,配置 .env/volumes。
- App 绑定,测试 1GB 备份。
- 下载模型,跑 ML Jobs。
- Set template,导入 external。
- Nginx 反代,监控 Prometheus。
Immich 实现高效私有照片库,参数化配置确保可扩展。
资料来源:
- Immich 官方文档:https://immich.app/docs/install/docker-compose ("docker compose up -d")
- 自托管实践:https://stapelberg.ch (输入 primary)