最强第三方相册?威联通NAS一键部署Immich~多版本

2025-09-02 15:18:01 13点赞 84收藏 6评论

本期要和大家分享一款网传最好用的第三方相册工具——Immich 的部署流程,采用官方推荐的Docker Compose方式进行部署。

演示环境选择在 威联通 NAS 平台,型号为 TS-464C,搭载 Intel N5095 四核处理器内存 8GB

最强第三方相册?威联通NAS一键部署Immich~多版本

需要说明的是,Immich 官方并没有给出明确的“最低硬件要求”。不过,由于系统运行过程中涉及 数据库、机器学习、人脸/物体识别以及视频转码 等功能,这些都会消耗一定的 CPU、内存和硬盘 IO。从稳定性和兼容性出发,我个人建议优先使用 x86 架构的服务器或 NAS,因为相关的镜像和硬件加速支持更成熟。

综合来看,无论是从 硬件配置 还是 用户普及度 的角度,TS-464C 都是一个较为合理的演示平台。接下来,就以这台设备为例,完成 Immich 的部署。

⚠️注意:仅展示Immich如何部署于威联通NAS,分享部署代码及显卡调用验证。文章不包含部署后的每个功能演示,因为我并不使用它,具体功能建议大家参考官方文档~

照片是不可替代的数据,请遵循 3-2-1 原则。切勿依赖单一工具或单一副本。


准备工作

因为 Immich 的体积大、功能多,所以要事先了解下。

下图所示的example.envhwaccel.transcoding.ymldocker-compose.yml这三个模版中的内容,不需要下载~

最强第三方相册?威联通NAS一键部署Immich~多版本

起初我是打算按照所给的docker-compose.yml来,但思来想去,还是直接一套撸吧,就是部署代码会长一点点。最强第三方相册?威联通NAS一键部署Immich~多版本


部署流程

直接给到大家带硬件加速的版本。独显版本(TS-673A),以及不启用硬件加速版本放在文末。

以下除将 immich_server 固定为明确 tag 外,immich-machine-learning 也与之保持同一 tag;其它镜像严格沿用官方 docker compose 中的镜像名与摘要(digest),不做改动。

services: database: container_name: immich_postgres # Postgres 14 + pgvecto-rs 扩展(满足 Immich 向量检索需求) image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0 environment: # ⚠️ 首次部署前把密码改成仅含字母数字的强密码(容器初始化后再改会麻烦) POSTGRES_PASSWORD: ChangeMeAlnum24Chars POSTGRES_USER: postgres # Immich 默认用 postgres 用户 POSTGRES_DB: immich # Immich 使用的数据库名 POSTGRES_INITDB_ARGS: '--data-checksums' # 开启数据校验,提升一致性 # DB_STORAGE_TYPE: 'HDD' # 如果数据库在机械盘,可取消注释以使用更保守参数 volumes: # 本地持久化数据库目录(务必是本机磁盘,别放 NFS/SMB) - /share/Container/immich/postgres:/var/lib/postgresql/data shm_size: 128mb # 提升 Postgres 共享内存,避免复杂查询时异常 restart: always redis: container_name: immich_redis # Valkey(Redis 分支),固定到带 sha256 的镜像,避免上游变动 image: docker.io/valkey/valkey:8-bookworm@sha256:a137a2b60aca1a75130022d6bb96af423fefae4eb55faf395732db3544803280 healthcheck: test: redis-cli ping || exit 1 # 简单健康检查:可 ping 则健康 restart: always immich-machine-learning: container_name: immich_machine_learning # 机器学习服务:OpenVINO 变体(Intel/CPU 上推理更快更稳) image: ghcr.io/immich-app/immich-machine-learning:v1.140.1-openvino environment: - TZ=Asia/Shanghai # 容器内时区 - OPENVINO_DEVICE=AUTO # 设备选择策略(报错时可改 CPU) volumes: # 模型缓存持久化到主机目录,避免每次重启重新下载 # 支持的其他模型压缩包也可丢在这下面 # 重启应用就会在配置中出现 # 一般默认模型是最为贴合你配置的 - /share/Container/immich/model-cache:/cache restart: always healthcheck: disable: false # 保留默认健康检查(镜像内置) immich-server: container_name: immich_server # Immich 主服务(API/转码/任务等) image: ghcr.io/immich-app/immich-server:v1.140.1 devices: - /dev/dri:/dev/dri # 将宿主机 iGPU 映射进容器(VAAPI/QuickSync 依赖) environment: - TZ=Asia/Shanghai - LIBVA_DRIVER_NAME=iHD # VAAPI 驱动(如花屏/失败可换 i965 试) # —— 连接数据库与 Redis(通过服务名直连,无需写 IP)—— - DB_HOST=database # 指向上面的 database 服务 - DB_PORT=5432 - DB_USERNAME=postgres - DB_PASSWORD=ChangeMeAlnum24Chars - DB_DATABASE_NAME=immich - REDIS_HOST=redis # 指向上面的 redis(valkey)服务 - REDIS_PORT=6379 volumes: # 照片/视频库:把 NAS 目录直接映射为 /data(Immich 里即看到 /data) - /share/Phone/picture:/data # 同步宿主时间到容器,确保日志/计划任务时间一致 - /etc/localtime:/etc/localtime:ro ports: - "2283:2283" # 浏览器访问 http://:2283 depends_on: - redis - database # 等数据库与 Redis 就绪再启动 restart: always healthcheck: disable: false # 保留默认健康检查

没错,把代码适当修改下就能用。只需你稍微修改下,比如应用配置目录、大模型缓存目录、照片目录以及访问端口等等

接着打开威联通的Container Station创建新的应用程序。

最强第三方相册?威联通NAS一键部署Immich~多版本

使用展示

按照上文部署,浏览器输入NAS_IP:2283即可访问服务。

最强第三方相册?威联通NAS一键部署Immich~多版本

初次使用要创建超级账户。

最强第三方相册?威联通NAS一键部署Immich~多版本

进行登录。

最强第三方相册?威联通NAS一键部署Immich~多版本

前面部署时我们定义过时区之类的信息,系统会自动帮你自动适配语言等。初始化过程还有用户隐私、存储模版这些我就先不设置开启了,反正都可以进去再改。

最强第三方相册?威联通NAS一键部署Immich~多版本

威联通从最早就一直奉行的3-2-1备份策略,照片对大部分人来说应该都挺重要,也建议大家多多备份守护时光回忆。

最强第三方相册?威联通NAS一键部署Immich~多版本

完成初始化后先别急,我们对集显进行核验。

在容器中,找到immich_server,点击执行,选择/bin/bash,依次输入以下指令进行验证:

# 1) 设备节点是否映射进来 ls -l /dev/dri # 2) FFmpeg 是否识别到 VAAPI ffmpeg -hide_banner -hwaccels # 3) 有没有 VAAPI 编码器 ffmpeg -hide_banner -encoders | egrep 'h264_vaapi|hevc_vaapi' || true 最强第三方相册?威联通NAS一键部署Immich~多版本

如上图的输出结果所示,已经充分证明:

/dev/dri 里的 card0 / renderD128 被映射进容器;

ffmpeg 识别到 vaapi;

存在 h264_vaapi / hevc_vaapi 编码器。

说明 N5095 的集显(iGPU)已被容器正确识别并可用。

初始化完成后,点击左侧栏的设置,有非常多的可配置项目。视频转码设置位于最底下。

最强第三方相册?威联通NAS一键部署Immich~多版本

点击 转码/硬件加速:

硬件加速类型:选 VAAPI

硬件解码:建议开启(能降 CPU 占用)

恒定质量模式:保持 Auto(主要对 NVENC 有意义;VAAPI 下让它自动即可)

首选硬件设备:保持 auto;如需手动,填 /dev/dri/renderD128

设置完毕后别忘记保存生效。

最强第三方相册?威联通NAS一键部署Immich~多版本

我上传了果子上的一千来张Live Photo,以及HEVC视频,索引起来也是照样爆的~所以不建议大家一次性导入过多的内容,包括使用威联通自带的Qsirch,Qumagie等,索引和识别会占用大量的系统资源。因此建议分批上传。

最强第三方相册?威联通NAS一键部署Immich~多版本

独显调用

我的TS-673A因为家里网络问题,不能远程操作,所以尝试着修改了部署代码,有配置独显的朋友可以试试看。

services: database: container_name: immich_postgres image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0 environment: POSTGRES_PASSWORD: ChangeMeAlnum24Chars POSTGRES_USER: postgres POSTGRES_DB: immich POSTGRES_INITDB_ARGS: '--data-checksums' # DB_STORAGE_TYPE: 'HDD' # 若数据库在机械盘,可取消注释(更保守参数) volumes: - /share/Container/immich/postgres:/var/lib/postgresql/data shm_size: 128mb restart: always logging: driver: json-file options: { max-size: "50m", max-file: "3" } redis: container_name: immich_redis image: docker.io/valkey/valkey:8-bookworm@sha256:a137a2b60aca1a75130022d6bb96af423fefae4eb55faf395732db3544803280 healthcheck: test: redis-cli ping || exit 1 restart: always logging: driver: json-file options: { max-size: "50m", max-file: "3" } immich-machine-learning: container_name: immich_machine_learning # CUDA 变体:用 GTX 1050 Ti 加速识别/向量 image: ghcr.io/immich-app/immich-machine-learning:v1.140.1-cuda environment: - TZ=Asia/Shanghai - NVIDIA_VISIBLE_DEVICES=all - NVIDIA_DRIVER_CAPABILITIES=compute,video,utility # 若 Container Station 未自动注入 GPU,手动映射设备节点: devices: - /dev/nvidia0:/dev/nvidia0 - /dev/nvidiactl:/dev/nvidiactl - /dev/nvidia-uvm:/dev/nvidia-uvm - /dev/nvidia-uvm-tools:/dev/nvidia-uvm-tools volumes: - /share/Container/immich/model-cache:/cache restart: always ulimits: nofile: { soft: 65536, hard: 65536 } logging: driver: json-file options: { max-size: "50m", max-file: "3" } healthcheck: disable: false immich-server: container_name: immich_server image: ghcr.io/immich-app/immich-server:v1.140.1 # NVENC:映射 NVIDIA 设备并声明能力 environment: - TZ=Asia/Shanghai - NVIDIA_VISIBLE_DEVICES=all - NVIDIA_DRIVER_CAPABILITIES=compute,video,utility # 连接 Postgres / Valkey - DB_HOST=database - DB_PORT=5432 - DB_USERNAME=postgres - DB_PASSWORD=ChangeMeAlnum24Chars - DB_DATABASE_NAME=immich - REDIS_HOST=redis - REDIS_PORT=6379 devices: - /dev/nvidia0:/dev/nvidia0 - /dev/nvidiactl:/dev/nvidiactl - /dev/nvidia-uvm:/dev/nvidia-uvm - /dev/nvidia-uvm-tools:/dev/nvidia-uvm-tools volumes: - /share/Phone/picture:/data - /etc/localtime:/etc/localtime:ro ports: - "2283:2283" depends_on: [redis, database] restart: always ulimits: nofile: { soft: 65536, hard: 65536 } logging: driver: json-file options: { max-size: "50m", max-file: "3" } healthcheck: disable: false


不开启硬解

实际上注释掉一部分代码即可,不过还是建议配置硬解吧最强第三方相册?威联通NAS一键部署Immich~多版本

services: database: container_name: immich_postgres # Postgres 14 + pgvecto-rs(满足 Immich 向量检索) image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0 environment: POSTGRES_PASSWORD: ChangeMeAlnum24Chars # ← 改成仅含 A–Z/a–z/0–9 的强密码 POSTGRES_USER: postgres POSTGRES_DB: immich POSTGRES_INITDB_ARGS: '--data-checksums' # DB_STORAGE_TYPE: 'HDD' # 如果数据库在机械盘,可取消注释 volumes: - /share/Container/immich/postgres:/var/lib/postgresql/data shm_size: 128mb restart: always redis: container_name: immich_redis image: docker.io/valkey/valkey:8-bookworm@sha256:a137a2b60aca1a75130022d6bb96af423fefae4eb55faf395732db3544803280 healthcheck: test: redis-cli ping || exit 1 restart: always immich-machine-learning: container_name: immich_machine_learning # CPU 版本(不启用硬件加速) image: ghcr.io/immich-app/immich-machine-learning:v1.140.1 environment: - TZ=Asia/Shanghai volumes: - /share/Container/immich/model-cache:/cache # 模型缓存持久化 restart: always healthcheck: disable: false immich-server: container_name: immich_server # 不映射 /dev/dri、不设置 VAAPI/NVENC 变量(即纯软件转码) image: ghcr.io/immich-app/immich-server:v1.140.1 environment: - TZ=Asia/Shanghai # 连接 Postgres / Valkey - DB_HOST=database - DB_PORT=5432 - DB_USERNAME=postgres - DB_PASSWORD=ChangeMeAlnum24Chars # ← 与上面数据库密码一致 - DB_DATABASE_NAME=immich - REDIS_HOST=redis - REDIS_PORT=6379 volumes: - /share/Phone/picture:/data - /etc/localtime:/etc/localtime:ro ports: - "2283:2283" depends_on: - redis - database restart: always healthcheck: disable: false


最后

用了几天,也没觉得像大家说得那么神。

可能因为我的主要需求不在这方面吧?

希望能对各位有所帮助。

感谢观看,本文完~

展开 收起
6评论

  • 精彩
  • 最新
  • 树莓派5就可以流畅运行,但需要系统运行中ssd上

    校验提示文案

    提交
  • 每升级一次费劲的厉害,用了飞牛就再也没看im一眼

    校验提示文案

    提交
  • 这个有手机客户端吗?

    校验提示文案

    提交
  • 为什么我传2、300张就卡住了,CPU占用90多以后,手机app就停止上传了,NAS用的是872XT,性能不差啊。

    校验提示文案

    提交
  • 研究过几天,immich的数据库和照片库分不开,备份还得把immi的库备份,后来干脆虚拟了个飞牛

    校验提示文案

    提交
  • mtphoto也不错

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
84
扫一下,分享更方便,购买更轻松