本文最后更新于 2024-08-14,文章内容可能已经过时。

大家好,这里是Cherry,喜爱折腾、捡垃圾、玩数码,热衷于分享NAS、docker玩耍经验~

| 前言

7月19日,immich宣布了关于软件收费的公告,不过说收费,更多的应该是捐赠后给予一个身份认证的意思,就算普通用户不捐赠,依旧可以无偿使用immich的所有服务。
image.png

之后,immich新版本中,在左下角增加了未经授权的字样,虽然这个未经授权不是强制的,但是让用户感觉很不舒服,于是有大佬给出了自定义CSS修改方案,同时,这个决定这让开发团队在github上被狠狠的吐槽了一番。
image.png

不过好的是,immich听取了社区的意见,在随后的更新中决定取消未授权字样。目前最新的v1.111版本中,已经完全没有相关提示了。
image.png

本文基于immich最新v1.111.0版本,重新介绍如何在NAS系统上安装这一套开源相册管理工具,并且解决外部存储、中文Clip、人脸识别、显卡转码加速、中文地图等等问题。

项目地址:

https://github.com/immich-app/immich

| 系统部署教程

一、导入镜像

如果无法访问docker下载地址的,可以通过本网盘下载镜像压缩包(exe格式),解压为tar格式以后上传至NAS的自定义路径。然后通过NAS的镜像导入功能导入,或通过ssh输入以下指令导入​​

阿里云盘:https://www.alipan.com/s/kK4M9gHgFz7
提取码: tr40

# path代表真实路径,XXX.tar代表镜像压缩包
docker load -i /path/XXXX.tar

二、compose代码

🔻新建文件夹路径/volume1/docker/immich,在目录下新建或上传【docker-compose.yml】文件,复制compose代码并修改

version: "3.8"
name: immich

services:
  immich-server:
    container_name: immich_server
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      # 如果怕修改原有照片,最后加上ro,否则删除ro
      - ${PHOTOS_LOCATION}:/usr/src/app/external:ro
      - /etc/localtime:/etc/localtime:ro
    env_file:
      - .env
    ports:
      - 2283:3001
    depends_on:
      - redis
      - database
    restart: always

  immich-machine-learning:
    container_name: immich_machine_learning
    # 不同硬件可以在镜像后增加[armnn, cuda, openvino] 标签,比如支持cuda的独立显卡加速,可以为 ${IMMICH_VERSION:-release}-cuda
    image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
    # 下面的代码开启核显转码加速
    # devices:  
      # - /dev/dri:/dev/dri
    volumes:
      # 这个目录存放AI模型
      - /volume1/docker/immich/model:/cache
    restart: always

  redis:
    container_name: immich_redis
    image: library/redis:6.2-alpine
    restart: always

  database:
    container_name: immich_postgres
    image: tensorchord/pgvecto-rs:pg14-v0.2.0
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
      POSTGRES_INITDB_ARGS: '--data-checksums'
    volumes:
      #自定义data位置
      - ${DB_DATA_LOCATION}:/var/lib/postgresql/data
    restart: always
    command: ["postgres", "-c" ,"shared_preload_libraries=vectors.so", "-c", 'search_path="$$user", public, vectors', "-c", "logging_collector=on", "-c", "max_wal_size=2GB", "-c", "shared_buffers=512MB", "-c", "wal_compression=on"]

🔻同一个路径下,增加【.env】文件,代码如下

TZ=Asia/Shanghai
IMMICH_VERSION=release
HF_ENDPOINT=https://hf-mirror.com

# 自定义的上传照片存放路径,群晖需要先创建好
UPLOAD_LOCATION=./library
# 自定义的数据库存放路径,群晖需要先创建好
DB_DATA_LOCATION=./postgres
# 自定义的外部库存放路径
PHOTOS_LOCATION=/volume1/homes/name/Photos/

# 下面修改数据库账号密码等信息
DB_PASSWORD=postgres
DB_USERNAME=postgres
DB_DATABASE_NAME=immich

三、各NAS系统部署项目方法

方法一:通用SSH部署compose(绿联等NAS通用)

# 来到文件夹目录
cd /volume1/docker/容器名/
# 启动容器
docker-compose up -d

方法二:群晖部署compose

打开Container Manager,选择项目,点击新建,选择路径,点击下一步即可
image.png

方法三:威联通部署compose

打开Container Station,选择【应用程序】,点击【创建】,将代码复制进去,点击验证后部署即可
image.png

方法四:铁威马部署compose

打开Docker Manager,选择【项目】,点击【+】,选择文件路径以后,填入代码即可
image.png


| 系统使用简介

Storage Template功能建议大家不要开启,这样可以保持原有的文件格式。
QQ_1722678955138.png

首先我们来切换中文界面,点击右上角账号,选择【Account Settings】-【Language】,把【English】切换成【Chinese (Simplified)】
QQ_1722681750668.png

一、外部库解决群晖重复照片问题

接着,我们来引入外部图库,即原来通过其它方式传入NAS的图片, 我们都可以将它们引入为immich的外部图库,进行集中管理。
QQ_1722681854436.png

点击新建图库最右侧的【…】,选择【编辑导入路径】,然后把我们在compose代码里设置的容器内路径填入,比如本文中的【/usr/src/app/external】。
QQ_1722682015372.png

完成以后,针对群晖用户, 点击【扫描设置】,填入【**/SYNOPHOTO_*.** 】、【**/@eaDir/*】等等,这个是群晖photos默认生成的缩略图、缩略视频。如果不排除,immich会把群晖的低质量照片扫描4份左右,而且无法通过重复文件删除,特别麻烦。其它系统可以根据自定义忽略内容,比如、【**/tmp/*】。
QQ_1722682080705.png

这两个设置好以后,点保存,然后依旧点【…】,选择【扫描新的图片文件】
QQ_1722682205750.png

然后捏,我们就可以在immich里看到含群晖原有相册在内的照片啦。
QQ_1722682274632.png

二、解决模型无法下载,以及无法使用中文clip问题

目前的版本,不论是clip还是人脸都需要从hugging face下载,国内网络不通,加上镜像库也无法下载。因此要使用AI功能,我们需要先下载模型。

支持中文clip的模型【XLM-Roberta-Large-Vit-B-16Plus】,人脸识别的模型【buffalo_l】,国内可以通过下面的镜像站访问,也可以通过cherry的网盘下载。

# 网盘
阿里云盘:https://www.alipan.com/s/kK4M9gHgFz7
提取码: tr40

# 抱脸虫的镜像站
https://hf-mirror.com/immich-app/

🔻最终的路径如下

# 自然语言检索的路径
.../cache/clip/XLM-Roberta-Large-Vit-B-16Plus

# 多模态CLIP
.../cache/Multilingual CLIP/XLM-Roberta-Large-Vit-B-16Plus

🔻文件夹路径示例,可以参照这个
QQ_1722693629952.png

保存以后如果日志有提示说明正确
QQ_1722781814422.png

完成以后,记得到任务里去跑一下智能搜索,如果照片多的话,会使用很长时间,而且因为是cpu跑的,基本NAS就做不了其他事情了。
QQ_1722704060177.png

分别搜索【女孩】、【马】、【太阳】,可以正确检索出相关的图片并排序。
QQ_1722788500354.png
QQ_1722788518305.png
QQ_1722788530953.png

三、增加显卡加速

显卡加速一共有2个用途,一个是给AI算法加速(之前代码备注了,有cuda镜像可以下载,这里就不讨论了),一个是给转码加速。常规的NAS因为无法外置显卡,采用的都是核显,所以只能转码加速,方法和emby等一样,增加/der/dri即可。

在代码里已经说明了,需要核显加速的取消#备注即可
image.png

重新创建immich堆栈,完成以后,来到【设置】-【视频转码设置】
image.png

打开【硬件加速】-【加速器API】-【快速同步(Quick Sync)】就ok了,记得保存哦
image.png

四、增加中文地图

给immich增加中文地图的方法,是对地图样式进行修改。根据值友@范先森94的方法,注册MapTiler并生成样式即可。

登录并注册MapTiler,选择【newmap】
image.png

选择右下角的【CUSTOMIZE】
image.png

把语言更改为中文
image.png

选择自己所在地区,点击【定位】按钮固定默认位置
image.png

点击右上角Save保存,
image.png

点击publish发布地图
image.png

完成以后退回上一页,选择红框内的style,点击复制
image.png

回到immich,路径【管理】-【设置】-【地图与GPS设置】,把地图复制到浅色模式下保存。
image.png

可以看到,已经默认为我们设置的地图样式和定位了
image.png