Docker 玩法

飞牛NAS部署Immich:下一代智能相册管理

为什么选择 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 的人脸识别速度令人满意。如果你还在用网盘存照片,不妨花半小时迁移到本地,从此真正拥有自己的数据。

💬 评论区
发表评论

暂无评论,来说两句吧