Immich 部署笔记
替代 Google Photos 的私有照片管理方案。
为什么选 Immich
折腾了一圈开源照片管理方案,最终选定 Immich:
- 完全开源,GitHub 40k+ stars,社区活跃
- AI 人脸识别内置,基于 CLIP 模型,识别准确率不错
- 手机自动备份,iOS/Android 客户端都有,后台静默上传
- RAW 格式支持,CR3、ARW、DNG 都能处理
- 时间线浏览、地图视图、相册共享、多用户支持
Docker Compose 部署
services:
immich-server:
image: ghcr.io/immich-app/immich-server:release
volumes:
- /data/immich/upload:/usr/src/app/upload
environment:
- DB_PASSWORD=your_secure_password
- DB_HOSTNAME=database
- REDIS_HOSTNAME=redis
ports:
- "2283:2283"
depends_on:
- redis
- database
redis:
image: docker.io/redis:7-alpine
database:
image: docker.io/tensorchord/pgvecto-rs:pg16-v0.2.0
environment:
- POSTGRES_PASSWORD=your_secure_password
- POSTGRES_DB=immich
volumes:
- /data/immich/pgdata:/var/lib/postgresql/data
注意事项:
- 数据卷统一放 /data/immich/,方便备份
- PostgreSQL 用的是 Immich 定制的 pgvecto-rs 镜像,别用官方 postgres
- ML 模型首次启动自动下载,大概 2-3GB,耐心等
- 建议 8GB 以上内存,低于 8GB 加 swap
反向代理
内网用 Tailscale 直连,公网用 nginx 反代 + SSL:
server {
listen 443 ssl;
server_name photos.your-domain.com;
client_max_body_size 50000M;
location / {
proxy_pass http://localhost:2283;
proxy_set_header Host $host;
proxy_request_buffering off;
}
}
大文件上传需要调大 client_max_body_size 和超时时间。
手机端设置
App Store / Google Play 搜索 "Immich",安装后填入服务器地址:
- 开启后台自动备份,仅 Wi-Fi 时上传
- 关闭移动数据备份,省流量
- RAW 和 JPEG 同时备份
实用经验
- 备份策略:数据库用
pg_dump定时导出,上传目录用 rsync,两样都不能丢 - 硬件转码:admin 面板开启 VAAPI/QSV 硬件加速,CPU 占用降一半
- 存储模板:配置
STORAGE_TEMPLATE按年/月/日组织文件,方便迁移 - 升级流程:
docker compose pull && docker compose up -d,数据库自动迁移 - 机器学习:人脸识别和 CLIP 搜索很吃资源,可以在 admin 面板设并发数