为什么选择 Immich
在飞牛NAS上管理照片,很多人第一反应是自带的相册应用。但当你拥有数万张照片、需要智能分类和快速检索时,Immich 几乎是目前开源社区里体验最接近 Google Photos 的方案。它自带人脸识别、物体识别、自动生成时间线,还支持 iOS 和 Android 的自动备份,最关键的是所有数据完全私有。
准备工作
在开始之前,请确认你的飞牛NAS满足以下条件:
- 系统版本为 fnOS 0.8.18 或更高
- 已开启 Docker 服务(飞牛应用中心可一键安装)
- 至少 4GB 可用内存,推荐 8GB
- 预留足够的存储空间,照片原文件建议单独挂载
第一步:创建目录结构
打开飞牛NAS的「文件管理」,在 Docker 数据目录下创建以下文件夹。这里以 /vol1/docker/immich 为例,你可以根据实际存储池调整。
/vol1/docker/immich
├── library # 照片原文件存储
├── postgres # 数据库数据
├── redis # 缓存数据
└── upload # 上传临时目录
建议将 library 目录单独放在大容量存储池上,因为照片会持续增长。
第二步:准备 docker-compose 文件
飞牛NAS的 Docker 支持 Compose 编排,这是最干净的部署方式。进入「Docker」应用,点击「Compose」标签,新建一个项目。
将以下内容粘贴进去:
version: "3.8"
services:
immich-server:
image: ghcr.io/immich-app/immich-server:release
container_name: immich-server
restart: unless-stopped
ports:
- "2283:2283"
volumes:
- /vol1/docker/immich/library:/usr/src/app/upload/library
- /vol1/docker/immich/upload:/usr/src/app/upload
environment:
- DB_HOSTNAME=immich-postgres
- DB_USERNAME=postgres
- DB_PASSWORD=your_strong_password
- DB_DATABASE_NAME=immich
- REDIS_HOSTNAME=immich-redis
- TZ=Asia/Shanghai
depends_on:
- immich-postgres
- immich-redis
networks:
- immich-net
immich-machine-learning:
image: ghcr.io/immich-app/immich-machine-learning:release
container_name: immich-ml
restart: unless-stopped
volumes:
- /vol1/docker/immich/upload:/usr/src/app/upload
environment:
- TZ=Asia/Shanghai
depends_on:
- immich-server
networks:
- immich-net
immich-postgres:
image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0
container_name: immich-postgres
restart: unless-stopped
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=your_strong_password
- POSTGRES_DB=immich
volumes:
- /vol1/docker/immich/postgres:/var/lib/postgresql/data
networks:
- immich-net
immich-redis:
image: redis:6.2-alpine
container_name: immich-redis
restart: unless-stopped
networks:
- immich-net
networks:
immich-net:
driver: bridge
注意把 your_strong_password 替换成一个强密码,建议使用 16 位以上混合字符。
第三步:启动服务
点击「部署」按钮,飞牛会自动拉取镜像并启动四个容器。首次拉取可能需要几分钟,耐心等待。部署完成后,在容器列表中你应该能看到四个运行中的容器。
打开浏览器,访问 http://你的飞牛IP:2283,如果一切正常,会看到 Immich 的欢迎页面。
第四步:初始化管理员账号
首次访问需要创建管理员账号。点击「Get Started」,填写邮箱和密码。这个账号拥有全部权限,建议使用强密码并开启两步验证。
创建完成后进入主界面,第一件事是前往「管理」→「设置」→「机器学习」,确保以下开关全部打开:
第五步:配置外部存储(可选但强烈推荐)
Immich 默认将照片存储在 Docker 卷内,但更合理的做法是直接映射飞牛NAS的共享文件夹。这样即使 Immich 容器重建,照片也不会丢失。
在「管理」→「设置」→「外部存储」中,添加一个外部库,指向飞牛NAS上的照片目录,例如 /vol1/photos/手机相册。设置好路径后,Immich 会扫描并索引这些文件,但不会移动或修改原文件。
第六步:手机端自动备份
在手机应用商店搜索 Immich(iOS 和 Android 都有),安装后登录你的服务器地址。进入应用设置,开启「后台备份」,选择备份目录和网络条件(建议仅在 WiFi 下备份)。
Immich 的备份会保留原始画质,不会压缩,这是它相比网盘备份的最大优势。
进阶优化技巧
1. 反向代理与 HTTPS
如果希望外网访问,不建议直接暴露 2283 端口。推荐使用飞牛自带的「反向代理」功能,将域名指向 localhost:2283,并开启 HTTPS。这样既安全又能享受高速访问。
2. 定时清理缩略图缓存
长期使用后,缩略图缓存会占用不少空间。可以设置一个定时任务,每周执行一次:
docker exec immich-server immich-admin asset clean
这个命令会清理无效的缩略图记录,但不会影响原图。
3. 智能搜索玩法
在搜索框输入 颜色:红色 可以筛选特定颜色的照片,输入 物体:汽车 能找出所有含汽车的图片。中文搜索支持得不错,日常使用完全够用。
常见问题排查
如果启动后无法访问,先检查四个容器是否都在运行。在 Docker 日志中查看 immich-server 的报错,最常见的是端口占用或数据库连接失败。确认防火墙已放行 2283 端口。
人脸识别不生效时,检查机器学习容器是否正常启动,并确保在设置中开启了对应选项。首次索引大量照片可能需要几小时,耐心等待即可。
总结
Immich 在飞牛NAS上的部署并不复杂,一次配置后基本可以一劳永逸。它解决了家庭用户最核心的痛点:照片分散、检索困难、隐私泄露。配合飞牛NAS的硬件能力,Immich 的人脸识别速度令人满意。如果你还在用网盘存照片,不妨花半小时迁移到本地,从此真正拥有自己的数据。