当前位置:
文章详情

群晖NAS下部署 Immich 图库完整指南

2026-08-22 17:27:29 1点赞 1收藏 0评论

适用于 Synology NAS + Docker 环境

本文基于实际部署经验撰写,重点解决中国大陆网络环境下 HuggingFace 被屏蔽导致 Machine Learning 模型无法下载的问题

目录

  1. 环境说明

  2. 前置准备

  3. 部署 Immich 核心服务

  4. 解决 ML 模型下载问题(核心重点)

  5. 配置 Smart Search Facial Recognition

  6. 可选:将 ML 服务迁移到高性能设备

  7. 常见问题排查

一、环境说明

最低要求

  • Synology NAS(支持 Docker / Container Manager)

  • DSM 7.0 以上

  • 建议至少 4GB 内存(8GB 更佳)

  • 足够的存储空间

本指南测试环境

  • Synology DS918+(Intel Celeron J3455, 4GB RAM)

  • Immich v3

  • 中国大陆网络环境(HuggingFace 无法直接访问)


二、前置准备

2.1 安装 Container Manager

在 DSM 套件中心安装 Container Manager(旧版 DSM 中为 Docker 套件)。

2.2 安装 Git(可选)

在 DSM 套件中心安装 Git 套件。后续下载模型时可能用到。

2.3 使用镜像源拉取 Docker 镜像

由于 ghcr.io 在中国大陆可能无法直接访问,需要使用镜像加速。本指南使用 xuanyuan.run 镜像站,你也可以替换为其他可用的 Docker 镜像加速站点。

镜像地址对照:

群晖NAS下部署 Immich 图库完整指南

提示: Docker 镜像加速站点经常变动,请搜索最新可用的 ghcr 镜像站。


三、部署 Immich 核心服务

3.1 创建项目目录

在 NAS 上通过 SSH 或 File Station 创建目录:

/volume1/docker/immich/

3.2 创建 .env 文件

# Immich 环境变量配置

UPLOAD_LOCATION=./library

DB_DATA_LOCATION=./postgres

IMMICH_VERSION=v3

DB_PASSWORD=你的数据库密码 # 请修改为强密码,仅使用 A-Za-z0-9

DB_USERNAME=postgres

DB_DATABASE_NAME=immich

# 【关键】HuggingFace 镜像站点,解决中国大陆无法访问 HuggingFace 的问题

HF_ENDPOINT="https://hf-mirror.com"

⚠️ HF_ENDPOINT 是本指南最关键的配置之一。 如果不设置,ML 容器将无法从 HuggingFace 下载模型。

3.3 创建 docker-compose.yml

群晖NAS下部署 Immich 图库完整指南

通过 DSM Container Manager → Project → 创建项目,选择上述目录,启动即可。

或通过 SSH(需要管理员权限):

cd /volume1/docker/immich

docker compose up -d


四、解决 ML 模型下载问题(核心重点)

⚠️ 这是在中国网络环境下部署 Immich 最容易踩坑的地方。

4.1 问题说明

Immich 的 Machine Learning 服务需要从 HuggingFace 下载 AI 模型文件。这些模型用于:

  • Smart Search(智能搜索):CLIP 模型,如 XLM-Roberta-Large-Vit-B-16Plus

  • Facial Recognition(人脸识别)antelopev2 模型

  • OCR(文字识别)PP-OCRv5_mobile 模型

在中国大陆,huggingface.co 无法直接访问,导致模型下载失败,ML 服务无法正常工作。

4.2 方案一:通过 HF_ENDPOINT 自动下载(推荐)

.env 文件中设置:

HF_ENDPOINT="https://hf-mirror.com"

ML 容器内的 Python huggingface_hub 库会自动使用该镜像站下载模型。

优点: 无需手动操作,容器启动后自动下载。
缺点: 首次启动较慢,需要等待模型下载完成。

4.3 方案二:手动下载模型文件

如果方案一因网络问题失败,可以通过 SSH 手动下载模型文件。

步骤 1:查询模型文件列表

通过 API 查询模型包含的文件:

# 查询 CLIP 模型文件列表

wget -q -O - "https://hf-mirror.com/api/models/immich-app/XLM-Roberta-Large-Vit-B-16Plus" | python3 -m json.tool

# 查询人脸识别模型文件列表

wget -q -O - "https://hf-mirror.com/api/models/immich-app/antelopev2" | python3 -m json.tool

也可以直接在浏览器访问:

  • CLIP 模型:https://hf-mirror.com/immich-app/XLM-Roberta-Large-Vit-B-16Plus/tree/main

  • 人脸模型:https://hf-mirror.com/immich-app/antelopev2/tree/main

步骤 2:使用脚本批量下载

创建下载脚本(以 CLIP 模型 XLM-Roberta-Large-Vit-B-16Plus 和人脸模型 antelopev2 为例):

群晖NAS下部署 Immich 图库完整指南

提示: 使用 nohup 防止 SSH 断连导致下载中断:

nohup bash /tmp/download_models.sh > /tmp/download.log 2>&1 &

tail -f /tmp/download.log # 查看进度

步骤 3:验证下载完成

# 检查 CLIP 模型

du -sh /volume1/docker/immich/model-cache/clip/XLM-Roberta-Large-Vit-B-16Plus/

find /volume1/docker/immich/model-cache/clip/XLM-Roberta-Large-Vit-B-16Plus -type f | wc -l

# 检查人脸模型

du -sh /volume1/docker/immich/model-cache/facial-recognition/antelopev2/

find /volume1/docker/immich/model-cache/facial-recognition/antelopev2 -type f | wc -l

CLIP 模型约 2.6GB,人脸模型约 1.2GB。

4.4 方案三:通过 Docker 容器下载

如果 NAS 上没有 python3,可以通过临时 Docker 容器下载:

群晖NAS下部署 Immich 图库完整指南

4.5 模型目录结构说明

下载完成后,model-cache 目录结构应如下:

群晖NAS下部署 Immich 图库完整指南

4.6 可用CLIP某型对比

群晖NAS下部署 Immich 图库完整指南

建议中文用户选择支持多语言的模型,这样可以直接用中文搜索照片,例如搜索"日落"、"海滩"、"家庭聚餐"等。


五、配置 Smart Search 和 Facial Recognition

5.1 在 Immich Web UI 中配置模型

访问 http://你的NAS_IP:2283,进入管理界面:

  1. Administration → Settings → Machine Learning → Smart Search

    • 设置模型名称为你下载的模型,例如 XLM-Roberta-Large-Vit-B-16Plus

    • 点击 Save

  2. Administration → Settings → Machine Learning → Facial Recognition

    • 确认模型为 antelopev2

5.2 配置外部库排除规则

如果你导入了 NAS 上已有的照片目录,需要排除 Synology 系统生成的元数据文件夹:

Administration → External Libraries → 编辑你的外部库 → Exclusion Patterns,添加:

**/@eaDir/**

**/#recycle/**

**/#snapshot/**

**/._*

⚠️ 不设置排除规则会导致 Immich 尝试处理 Synology 的缩略图和元数据文件,大幅增加处理队列数量。

5.3 运行索引任务

建议按以下顺序执行:

  1. 先运行 Smart Search

    • Administration → Jobs → Smart Search → 点击 All

    • 建议 concurrency 设为 3

    • 完成后即可使用搜索功能

  2. 再运行 Face Detection

    • Administration → Jobs → Face Detection → 点击 All

    • 建议 concurrency 设为 3

  3. Face Recognition 自动执行

    • 人脸检测完成后自动开始

    • concurrency 固定为 1,无法修改

5.4 关于 File Watcher 限制

如果你有大量照片(数万张以上),可能会在日志中看到:

Error: ENOSPC: System limit for number of file watchers reached

解决方案:在 External Libraries关闭 Watch for changes,改用定期扫描。


六、可选:将 ML 服务迁移到高性能设备

如果你的 NAS CPU 较弱(如 Celeron J3455),ML 处理会非常慢。可以将 ML 服务迁移到同一局域网内的高性能设备上运行。

6.1 架构说明

群晖NAS下部署 Immich 图库完整指南

6.2 在高性能设备上部署 ML 服务

安装 Docker

  • Mac: 安装 Docker Desktop (https://docker.com)

  • Linux: 安装 Docker Engine

  • Windows: 安装 Docker Desktop

创建项目

mkdir -p ~/immich-ml/model-cache

cd ~/immich-ml

创建 docker-compose.yml

群晖NAS下部署 Immich 图库完整指南

注意:

  • 如果 ghcr.io 无法访问,使用你的镜像站地址替换

  • Mac Apple Silicon 用户无需特殊配置,Docker 会自动拉取 ARM64 镜像

启动服务

docker compose up -d

验证服务运行

curl http://localhost:3003/ping

# 应返回: pong

6.3 修改 NAS 端配置

修改 .env

添加一行(替换为你的高性能设备 IP):

IMMICH_MACHINE_LEARNING_URL=http://192.168.x.x:3003

修改 docker-compose.yml

注释掉 NAS 上的 immich-machine-learning 服务:

群晖NAS下部署 Immich 图库完整指南

重建项目

在 DSM Container Manager 中:Project → 选择 immich → Stop → Build → Start

⚠️ 确保 NAS 上旧的 immich_machine_learning 容器已被停止并删除,否则 Immich 可能仍会使用本地 ML 服务。

6.4 验证连接

从 NAS SSH 中测试:

curl http://192.168.x.x:3003/ping

# 应返回: pong

在 Immich 中搜索任意关键词,同时观察高性能设备上的 ML 日志:

docker logs -f immich_machine_learning

应看到模型加载和处理日志。

6.5 确保高性能设备持续运行

  • 防止休眠:关闭自动休眠设置

  • Docker 自启动:设置 Docker Desktop 开机自启

  • 给设备设置静态 IP:避免 IP 变动导致连接中断


七、常见问题排查

Q1: ML 容器日志显示模型下载失败

原因: HuggingFace 被墙,或 hf-mirror.com 的 CDN 无法访问。

解决:

  • 确认 .env 中设置了 HF_ENDPOINT="https://hf-mirror.com"

  • 尝试手动下载模型文件(方案二/方案三)

  • 如果 hf-mirror.com 也不可用,搜索其他 HuggingFace 镜像站

Q2: Git LFS 在 Synology 上不可用

解决: 不建议在 Synology 上使用 Git LFS 下载模型。使用 wget 直接下载或通过 Docker 容器下载更可靠。

如确实需要安装 Git LFS:

群晖NAS下部署 Immich 图库完整指南

关键点:

  • 必须放到 git --exec-path 目录(Synology 上通常是 /var/packages/Git/target/libexec/git-core/

  • 必须 chmod 755,Synology 默认权限为 700(仅 root 可执行)

Q3: 日志出现大量 ENOSPC file watcher 错误

原因: 照片数量超过系统文件监视器限制。

解决:

  • 在 External Libraries 中关闭 Watch for changes

  • 添加 **/@eaDir/** 等排除规则

  • 改用定时扫描

Q4: 处理速度很慢

可能原因和解决方案:

群晖NAS下部署 Immich 图库完整指南

Q5: DSM 更新后 Git LFS 丢失

DSM 或 Git 套件更新可能会覆盖自定义安装的文件。解决方案:重新执行安装步骤。

Q6: 如何更换 CLIP 模型

  1. 在 Immich Web UI → Administration → Settings → Smart Search 中修改模型名称

  2. 确保模型已下载到 model-cache/clip/模型名称/ 目录

  3. 如果设置了 HF_ENDPOINT,容器会自动从镜像站下载新模型

  4. 运行 Smart Search → All 重新索引所有照片


附录

有用的命令

群晖NAS下部署 Immich 图库完整指南

处理时间参考(207K 照片)

任务

群晖NAS下部署 Immich 图库完整指南

以上时间基于 M4 Mac Mini 作为 ML 设备。NAS 本地运行会慢 5-10 倍。


作者注: 本指南基于 2026 年 8 月的实际部署经验。Immich 版本更新较快,部分配置可能随版本变化。建议参考 Immich 官方文档 获取最新信息。

作者提示含AI生成内容。作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
挂件

Kenneth1348

An apple a day, keep doctors away.

关注 打赏
最新文章 热门文章
1
扫一下,分享更方便,购买更轻松