Docker 玩法

飞牛NAS上使用Docker部署Immich智能相册管理全家照片

为什么选择Immich?

如果你正在寻找一个能替代Google Photos的私有照片管理方案,Immich绝对值得一试。Immich是一款开源自托管的照片和视频管理平台,它提供了:

  • 🖼️ 智能AI识别:自动识别人脸、物体、场景,并支持以自然语言搜索照片
  • 📱 全平台客户端:iOS、Android端体验流畅,支持自动备份手机照片
  • 🗂️ 强大的相册管理:时间线浏览、地图视图、相册分享等功能一应俱全
  • 🔒 数据完全私有:所有照片存储在你自己飞牛NAS上,不用担心隐私泄露
  • 硬件转码支持:可利用飞牛NAS的核显进行视频硬件转码

相比其他方案,Immich的UI/UX设计更接近Google Photos,学习成本极低,家人也能轻松上手。

准备工作

在飞牛NAS上部署Immich之前,请确保:

  1. 飞牛NAS已安装Docker和Docker Compose:fnOS系统自带Docker支持,可在应用中心直接启用
  2. 存储空间充足:建议为Immich预留至少100GB空间用于照片存储
  3. 了解基础路径:需要确定照片存放的物理路径,比如 /vol1/1000/photos

创建目录结构

登录飞牛NAS终端,创建Immich所需的目录结构:

# 创建Immich主目录
mkdir -p /vol1/1000/docker/immich
cd /vol1/1000/docker/immich

# 创建数据存放子目录
mkdir -p {postgres,redis,library,upload,profile,video,thumbs,encoded-video}

合理的目录规划能让日后的维护和备份更加方便。

Docker Compose 部署

/vol1/1000/docker/immich 目录下创建 docker-compose.yml 文件:

version: '3.8'

services:
  immich-server:
    image: ghcr.io/immich-app/immich-server:release
    container_name: immich-server
    volumes:
      - /vol1/1000/photos:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
    environment:
      DB_HOSTNAME: immich-postgres
      DB_USERNAME: postgres
      DB_PASSWORD: postgres
      DB_DATABASE_NAME: immich
      REDIS_HOSTNAME: immich-redis
      TZ: Asia/Shanghai
    ports:
      - 2283:3001
    depends_on:
      - immich-redis
      - immich-postgres
    restart: unless-stopped

  immich-machine-learning:
    image: ghcr.io/immich-app/immich-machine-learning:release
    container_name: immich-machine-learning
    volumes:
      - ./model-cache:/cache
    environment:
      TZ: Asia/Shanghai
    restart: unless-stopped

  immich-redis:
    image: redis:6.2-alpine
    container_name: immich-redis
    restart: unless-stopped

  immich-postgres:
    image: tensorchord/pgvecto-rs:pg14-v0.2.0
    container_name: immich-postgres
    environment:
      POSTGRES_PASSWORD: postgres
      POSTGRES_USER: postgres
      POSTGRES_DB: immich
    volumes:
      - ./postgres:/var/lib/postgresql/data
    restart: unless-stopped

相比复杂的多容器拆分方案,这个配置精简了服务数量,更适合家用飞牛NAS的性能水平。如果你的NAS内存超过8GB,也可以替换为官方最新版的完整多容器配置。

启动与初始化

# 在docker-compose.yml所在目录执行
docker-compose up -d

# 查看各容器启动状态
docker-compose ps

等待所有容器状态变为 healthy 后,在浏览器访问 http://你的飞牛IP:2283 即可看到Immich初始化页面。

初始化设置

  1. 创建管理员账户(邮箱+密码)
  2. 进入「管理」→「设置」,配置以下关键项:
  3. 外部库:可导入飞牛NAS上已有的照片文件夹
  4. 转码设置:根据NAS硬件能力调整视频转码参数
  5. 模板存储:建议与上传目录一致

关键配置说明

存储路径优化

上面配置中 /vol1/1000/photos 是照片的实际存储位置。你可以修改为飞牛NAS上任何有足够空间的路径。Immich会在这个目录下自动创建以下结构:

photos/
├── library/        # 原始照片和视频
├── upload/         # 上传缓存
├── profile/        # 用户头像
├── thumbs/         # 缩略图
└── encoded-video/  # 转码后的视频

核显硬件加速(可选)

如果你的飞牛NAS搭载Intel CPU,可以启用硬件转码。在 immich-server 的配置中添加:

devices:
  - /dev/dri:/dev/dri
environment:
  - HWACCEL_ENABLED=true

启用后可大幅降低视频转码时的CPU占用。

手机端配置

  1. 从App Store或Google Play下载Immich客户端
  2. 打开App,输入服务器地址:http://你的飞牛IP:2283/api
  3. 登录管理员账户
  4. 开启「自动备份」,选择需要备份的相册

如果希望在外网也能访问Immich,可以配合飞牛NAS的DDNS和反向代理实现安全访问。

日常使用技巧

  1. 智能搜索:试试搜索"猫"、"海滩"、"生日蛋糕",AI识别会让搜索结果非常精准
  2. 共享相册:可以为家人创建共享相册,各自上传但共同查看
  3. 重复检测:Immich支持自动检测重复照片,帮你节省存储空间
  4. 定期备份数据库:建议每周导出一次PostgreSQL数据库: bash docker exec immich-postgres pg_dump -U postgres immich > immich-backup.sql

常见问题

Q: 容器启动后访问页面空白?

A: 检查 immich-machine-learning 容器是否正常启动,它负责AI模型推理。可以查看日志:docker logs immich-machine-learning

Q: 上传大视频失败?

A: 在飞牛NAS的Docker设置中增加内存限制,或关闭视频转码功能。

Q: 移动端备份很慢?

A: 确保手机和NAS在同一个局域网下,传输速度取决于WiFi带宽。首次全量备份建议在家完成。

总结

Immich是目前开源社区最优秀的自托管照片管理方案,配合飞牛NAS的Docker能力,搭建过程非常简单。部署完成后,你会拥有一个功能不输商业云相册的私有照片平台,数据完全由自己掌控,再也不必为云存储订阅付费。

如果这篇文章对你有帮助,欢迎分享给更多飞牛NAS玩家!

💬 评论区
leave a comment

no comments yet