容器项目&相册类

最后更新于:

容器项目&相册类

相册

说起相册,大家肯定都是熟悉群辉的 Synology Photo s这样的品牌 NAS 的相册。当然,免费的飞牛 NAS 的相册也是不错的,而且有 AI 相册。容器类得相册项目,现在主要有两个项目,国产收费的 MT Photos 和国外免费项目 immich。

我先把我的 docker 树目录再放出来,方便你修改路径,如果和我一样的路径就不需要修改。

 1root(根目录)
 2├── docker(分支节点:docker目录)
 3│ ├── apps(叶子节点:docker app目录)
 4│ │ ├── mt-photos路径
 5│ │ └── immich路径
 6│ └── docker-compose(叶子节点:docker-compose.yaml目录)
 7│ │ ├── mt-photos
 8│ │ │ └── docker-compose.yaml
 9│ │ ├── immich
10│ │ └──── docker-compose.yaml
11│ ├── photos
12│ │ ├── mt-photos
13│ │ └── immich-photos
14...

1 MT Photos

1.1 什么是MT Photos

MT Photos 是什么? MT Photos 是一款为NAS用户量身打造的照片管理系统。通过 AI 技术,自动将您的照片整理、分类,包括但不限于时间、地点、人物、照片类型。先不看项目地址,我们先来看一下 MT Photos 在线 dome 地址体验一下。

MT Photos dome地址

MT Photos 项目地址

账号:demo,密码:mtphotos

https://img.nw177.cn/blog/10.docker/1002-容器项目&相册类-02-mtphotos-01.webp


1.2 部署项目 MT Photos

如果不需要同时部署 MT Photos AI,那么只需要下面的代码就行。

 1# 官方文档
 2# https://mtmt.tech/
 3
 4# 体验demo,账号demo,密码demo
 5# https://d.mtmt.tech/login
 6
 7# GPS API 配置
 8# https://mtmt.tech/docs/start/gps_api/
 9
10# 生成激活码
11# https://auth.mtmt.tech/iKey
12
13# ---
14
15name: mt-photos
16# 最后编辑时间:2025-02-28
17services:
18  mt-photos:
19    # 镜像地址
20    image: registry.cn-hangzhou.aliyuncs.com/mtphotos/mt-photos:latest
21    # 容器名
22    container_name: mt-photos
23    # 主机名
24    hostname: mt-photos
25    environment:
26      # 用户和用户组权限,ssh中使用“id 用户名”查看,用户组一般为100(users)
27      # 第一个用户而言,群晖为1026,新绿联为1001,linux类系统为1000,后续用户均+1
28      # 如果出现无法下载的情况,改为0
29      - PUID=1000
30      - PGID=100
31      # 默认创建新文件的权限,一般写022  
32      - UMASK=022
33      # 时区
34      - TZ=Asia/Shanghai
35    # 驱动  
36    devices:
37      # 添加硬件加速转码
38      - /dev/dri:/dev/dri
39    # dns  
40    dns: 
41      - 114.114.114.114  
42    # 路径
43    volumes:
44      # 配置文件目录 
45      # mt-photos配置文件路径
46      - /docker/apps/mt-photos/config:/config
47      # mt-photos手机相册上传路径
48      - /docker/apps/mt_photos/upload:/upload
49      # 其他相册路径
50      - /photos/mt-photos:/photos
51    # 网络模式:桥接模式
52    network_mode: bridge
53    # 端口
54    ports:
55      # webUI端口
56      - 8063:8063
57    # 重启策略,总是重启
58    restart: always

但是如果需要同时部署 MT Photos AI,那么需要下面的代码才可以。

  1# 官方文档
  2# https://mtmt.tech/
  3
  4# 体验demo,账号demo,密码demo
  5# https://d.mtmt.tech/login
  6
  7# 添加智能识别
  8# https://mtmt.tech/docs/advanced/ocr_api/
  9
 10# 添加人脸识别API
 11# https://mtmt.tech/docs/advanced/facial_api/
 12
 13# GPS API 配置
 14# https://mtmt.tech/docs/start/gps_api/
 15
 16# 生成激活码
 17# https://auth.mtmt.tech/iKey
 18
 19# ---
 20
 21name: mt-photos
 22# 最后编辑时间:2025-02-28
 23services:
 24  mt-photos:
 25    # 镜像地址
 26    image: registry.cn-hangzhou.aliyuncs.com/mtphotos/mt-photos:latest
 27    # 容器名
 28    container_name: mt-photos
 29    # 主机名
 30    hostname: mt-photos
 31    environment:
 32      # 用户和用户组权限,ssh中使用“id 用户名”查看,用户组一般为100(users)
 33      # 第一个用户而言,群晖为1026,新绿联为1001,linux类系统为1000,后续用户均+1
 34      # 如果出现无法下载的情况,改为0
 35      - PUID=1000
 36      - PGID=100
 37      # 默认创建新文件的权限,一般写022  
 38      - UMASK=022
 39      # 时区
 40      - TZ=Asia/Shanghai
 41    # 驱动  
 42    devices:
 43      # 添加硬件加速转码
 44      - /dev/dri:/dev/dri
 45    # dns  
 46    dns: 
 47      - 114.114.114.114
 48    # 依赖     
 49    depends_on:
 50      # 连接AI相册
 51      - mtphotos_ai
 52      # 连接AI人脸识别
 53      - mtphotos_face_api
 54    # 路径
 55    volumes:
 56      # 配置文件目录 
 57      # mt-photos配置文件路径
 58      - /docker/apps/mt-photos/config:/config
 59      # mt-photos手机相册上传路径
 60      - /docker/apps/mt_photos/upload:/upload
 61      # 其他相册路径
 62      - /photos/mt-photos:/photos
 63    # 网络模式:桥接模式
 64    network_mode: bridge
 65    # 端口
 66    ports:
 67      # webUI端口
 68      - 8063:8063
 69    # 重启策略,总是重启
 70    restart: always
 71
 72  mtphotos_ai:
 73    # 镜像地址
 74    image: registry.cn-hangzhou.aliyuncs.com/mtphotos/mt-photos-ai:onnx-latest
 75    # 容器名
 76    container_name: mtphotos_ai
 77    # 主机名
 78    hostname: mtphotos_ai
 79    environment:
 80      # mtphotos_ai密码,可以自定义,不改也行
 81      - API_AUTH_KEY=mt_photos_ai_extra	
 82    ports:
 83      # AI相册连接端口
 84      - 8060:8060
 85    # 重启策略,总是重启
 86    restart: always
 87
 88  mtphotos_face_api:
 89    # 镜像地址
 90    # 如果下载不到,前面加上加速地址
 91    # crpi-gcuyquw9co62xzjn.cn-guangzhou.personal.cr.aliyuncs.com
 92    image: devfox101/mt-photos-insightface-unofficial:latest
 93    # 容器名
 94    container_name: mtphotos_face_api
 95    # 主机名
 96    hostname: mtphotos_face_api
 97    environment:
 98      # mtphotos_face_ai密码,可以自定义,不改也行
 99      - API_AUTH_KEY=mt_photos_ai_extra
100    ports:
101      # AI人脸识别连接端口
102      - 8066:8066
103    # 重启策略,总是重启
104    restart: always
  • mt-photos ai,识别需要填写接口地址 http://ip:8060,API_AUTH_KEY填写 mt\_photos\_ai\_extra(或者你自定义密码)。
  • 添加人脸识别 API,需要填写接口地址 http://ip:8066,API_AUTH_KEY填写 mt\_photos\_ai\_extra(或者你自定义密码)。
  • 最后一个需要 GPS 信息识别地址的话,那就看教程 wiki 地址,注册高德地图,获取 api 填写就行。为什么我不用内置的识别模型,首先内置识别识别率低,其次自己跟着搭建各种API有参与感。
  • 总结,mt-photos 是付费的国产相册软件,体验也不错,安装免费试用一个月,好用就买,不好用就看下面我介绍得 immich。

2 immich

2.1 什么是 immich

immich 是作者仿照谷歌相册写的一款相册软件,非常得外国化,以前不支持中文,现在加入了中文。永久免费的软件,自带 AI 识别,更新快其实有的时候也不是一件好事儿,作者开发积极,更新频繁。当然你不更新其实也没什么事情的,一样的好用。先不看项目地址,我们先来看一下 immich 在线 dome 地址体验一下。

邮箱:demo@immich.app,密码:demo

https://img.nw177.cn/blog/10.docker/1002-容器项目&相册类-01-immich-01.webp

体验了dome相册,我们再来看看immich项目具体的wiki。

immich 我们需要创建 4 个文件,immich 原本项目的 docker-compose.yaml 文件,但是根据不同硬件我介绍了四个配置,你可以根据自己硬件选择不同的文件。最后就是需要创建硬件加速 hwaccel.ml.yaml,ai大模型 hwaccel.transcoding.yaml 以及 .env 的配置文件。


2.2 创建路径配置文件

首先我们来创建 .env 配置文件。

 1# immich照片存储路径
 2UPLOAD_LOCATION=/docker/apps/immich/library
 3
 4# postgres数据库存储路径,这里建议存储在/docker/apps/immich目录下,方便管理。
 5DB_DATA_LOCATION=/docker/apps/immich/postgres
 6TZ=Asia/Shanghai
 7
 8#要使用的immich版本。您可以将其固定到特定版本,如“v1.71.0”
 9IMMICH_VERSION=release
10
11#postgres数据库的访问密码
12DB_PASSWORD=postgres
13DB_USERNAME=postgres
14DB_DATABASE_NAME=immich

2.3 创建硬件加速文件

其次我们来创建 hwaccel.ml.yaml 硬件加速文件。

 1services:
 2  armnn:
 3    devices:
 4      - /dev/mali0:/dev/mali0
 5    volumes:
 6      - /lib/firmware/mali_csffw.bin:/lib/firmware/mali_csffw.bin:ro # Mali firmware for your chipset (not always required depending on the driver)
 7      - /usr/lib/libmali.so:/usr/lib/libmali.so:ro # Mali driver for your chipset (always required)
 8
 9  cpu: {}
10
11  cuda:
12    deploy:
13      resources:
14        reservations:
15          devices:
16            - driver: nvidia
17              count: 1
18              capabilities:
19                - gpu
20
21  openvino:
22    device_cgroup_rules:
23      - 'c 189:* rmw'
24    devices:
25      - /dev/dri:/dev/dri
26    volumes:
27      - /dev/bus/usb:/dev/bus/usb
28
29  openvino-wsl:
30    devices:
31      - /dev/dri:/dev/dri
32      - /dev/dxg:/dev/dxg
33    volumes:
34      - /dev/bus/usb:/dev/bus/usb
35      - /usr/lib/wsl:/usr/lib/wsl

2.4 创建 AI 大模型文件

再次,我们来创建 hwaccel.transcoding.yaml 文件。

 1services:
 2  cpu: {}
 3
 4  nvenc:
 5    deploy:
 6      resources:
 7        reservations:
 8          devices:
 9            - driver: nvidia
10              count: 1
11              capabilities:
12                - gpu
13                - compute
14                - video
15
16  quicksync:
17    devices:
18      - /dev/dri:/dev/dri
19
20  rkmpp:
21    security_opt: 
22      - systempaths=unconfined
23      - apparmor=unconfined
24    group_add:
25      - video
26    devices:
27      - /dev/rga:/dev/rga
28      - /dev/dri:/dev/dri
29      - /dev/dma_heap:/dev/dma_heap
30      - /dev/mpp_service:/dev/mpp_service
31      #- /dev/mali0:/dev/mali0 # only required to enable OpenCL-accelerated HDR -> SDR tonemapping
32    volumes:
33      #- /etc/OpenCL:/etc/OpenCL:ro # only required to enable OpenCL-accelerated HDR -> SDR tonemapping
34      #- /usr/lib/aarch64-linux-gnu/libmali.so.1:/usr/lib/aarch64-linux-gnu/libmali.so.1:ro # only required to enable OpenCL-accelerated HDR -> SDR tonemapping
35
36  vaapi:
37    devices:
38      - /dev/dri:/dev/dri
39
40  vaapi-wsl: # use this for VAAPI if you're running Immich in WSL2
41    devices:
42      - /dev/dri:/dev/dri
43    volumes:
44      - /usr/lib/wsl:/usr/lib/wsl
45    environment:
46      - LIBVA_DRIVER_NAME=d3d12

2.5 创建无核显+cpu 运行大模型文件

众所周知,硬件加速需要硬件支持,假如你的硬件是不支持核显或者图形显卡加速,再或者你不知道怎么选择,直接用本文件肯定没错。根据自己配置,我们来创建 docker-compose.yaml 文件。

  1# 基于官方模板制作
  2# 官方文档
  3# https://immich.app
  4# 官方compose教程
  5# https://immich.app/docs/install/docker-compose
  6# 官方变量说明
  7# https://immich.app/docs/install/environment-variables
  8# 官方CLIP说明
  9# https://immich.app/docs/features/command-line-interface
 10# 官方硬件转码说明
 11# https://immich.app/docs/features/hardware-transcoding
 12# https://hub.docker.com/r/tensorchord/pgvecto-rs
 13
 14# 如果官方的镜像不好拉取,可以选择拉取以下两个镜像作为替代,部署参数完全相同,将模板上对应的镜像进行修改即可,tag也是release
 15# https://hub.docker.com/r/altran1502/immich-server
 16# https://hub.docker.com/r/altran1502/immich-machine-learning
 17
 18# ---
 19
 20name: immich
 21# 最后编辑时间:2025-02-14
 22services:
 23  immich-server:
 24    # 镜像地址
 25    image: ghcr.nju.edu.cn/immich-app/immich-server:${IMMICH_VERSION:-release}
 26    # 容器名
 27    container_name: immich_server
 28    # 主机名
 29    hostname: immich-server
 30    volumes:
 31      # 请去.env修改路径
 32      - ${UPLOAD_LOCATION}:/usr/src/app/upload 
 33      - /etc/localtime:/etc/localtime:ro
 34    # 配置文件,指定版本,指定相册路径,数据库路径
 35    env_file:
 36      - .env
 37    # 调用数据库
 38    depends_on:
 39      - redis
 40      - database
 41    # 健康检查
 42    healthcheck:
 43      disable: false
 44    # webUI端口  
 45    ports:
 46      - 2283:2283
 47    # 重启策略,总是重启
 48    restart: always
 49
 50  immich-machine-learning:
 51    # 镜像名称
 52    image: ghcr.nju.edu.cn/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}-openvino
 53    # 容器名
 54    container_name: immich_machine_learning
 55    # 主机名
 56    hostname: immich_machine_learning
 57    volumes:
 58      #修改机器学习模型存储路径
 59      - /docker/apps/immich/model-cache:/cache
 60    # 配置文件,指定版本,指定相册路径,数据库路径
 61    env_file:
 62      - .env
 63    # 健康检查
 64    healthcheck:
 65      disable: false
 66    # 重启策略,总是重启
 67    restart: always
 68
 69  redis:
 70    # 镜像名称
 71    image: docker.io/redis:6.2-alpine
 72    # 容器名
 73    container_name: immich_redis
 74    # 主机名
 75    hostname: immich_redis
 76    # 健康检查
 77    healthcheck:
 78      test: redis-cli ping || exit 1
 79    # 重启策略,总是重启
 80    restart: always
 81
 82  database:
 83    # 镜像名称
 84    image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0
 85    # 容器名
 86    container_name: immich_postgres
 87    # 主机名
 88    hostname: immich_postgres
 89    # 配置文件
 90    environment:
 91      # 数据库用户
 92      POSTGRES_USER: ${DB_USERNAME}
 93      # 数据库密码
 94      POSTGRES_PASSWORD: ${DB_PASSWORD}
 95      # 数据库名称
 96      POSTGRES_DB: ${DB_DATABASE_NAME}
 97      POSTGRES_INITDB_ARGS: '--data-checksums'
 98    volumes:
 99      # 请去.env修改路径
100      - ${DB_DATA_LOCATION}:/var/lib/postgresql/data
101    # 健康检查
102    healthcheck:
103      test: >-
104        pg_isready --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" || exit 1;
105        Chksum="$$(psql --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" --tuples-only --no-align
106        --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')";
107        echo "checksum failure count is $$Chksum";
108        [ "$$Chksum" = '0' ] || exit 1
109      interval: 5m
110      start_interval: 30s
111      start_period: 5m
112    command: >-
113      postgres
114      -c shared_preload_libraries=vectors.so
115      -c 'search_path="$$user", public, vectors'
116      -c logging_collector=on
117      -c max_wal_size=2GB
118      -c shared_buffers=512MB
119      -c wal_compression=on
120    # 重启策略,总是重启
121    restart: always

2.6 创建 intel 6 代核显 vaapi+cpu 运行大模型文件

众所周知,硬件加速需要硬件支持,假如你的硬件是 intel 6 代以上 hd610 或者 hd630 核显加速,那么你选择本文件。根据自己配置,我们来创建 docker-compose.yaml 文件。

  1# 基于官方模板制作
  2# 官方文档
  3# https://immich.app
  4# 官方compose教程
  5# https://immich.app/docs/install/docker-compose
  6# 官方变量说明
  7# https://immich.app/docs/install/environment-variables
  8# 官方CLIP说明
  9# https://immich.app/docs/features/command-line-interface
 10# 官方硬件转码说明
 11# https://immich.app/docs/features/hardware-transcoding
 12# https://hub.docker.com/r/tensorchord/pgvecto-rs
 13
 14# 如果官方的镜像不好拉取,可以选择拉取以下两个镜像作为替代,部署参数完全相同,将模板上对应的镜像进行修改即可,tag也是release
 15# https://hub.docker.com/r/altran1502/immich-server
 16# https://hub.docker.com/r/altran1502/immich-machine-learning
 17
 18# ---
 19
 20name: immich
 21# 最后编辑时间:2025-02-14
 22services:
 23  immich-server:
 24    # 镜像地址
 25    image: ghcr.nju.edu.cn/immich-app/immich-server:${IMMICH_VERSION:-release}
 26    # 容器名
 27    container_name: immich_server
 28    # 主机名
 29    hostname: immich-server
 30    # 拓展
 31    extends:
 32       # 调用转码文件 
 33       file: hwaccel.transcoding.yaml
 34       # 请去设置四个中的一个转码方式 [nvenc 英伟达, quicksync 英特尔核显, rkmpp rk系列的arm, vaapi, vaapi-wsl] 
 35       service: vaapi 
 36    volumes:
 37      # 请去.env修改路径
 38      - ${UPLOAD_LOCATION}:/usr/src/app/upload 
 39      - /etc/localtime:/etc/localtime:ro
 40    # 配置文件,指定版本,指定相册路径,数据库路径
 41    env_file:
 42      - .env
 43    # 调用数据库
 44    depends_on:
 45      - redis
 46      - database
 47    # 健康检查
 48    healthcheck:
 49      disable: false
 50    # webUI端口  
 51    ports:
 52      - 2283:2283
 53    # 重启策略,总是重启
 54    restart: always
 55
 56  immich-machine-learning:
 57    # 镜像名称
 58    image: ghcr.nju.edu.cn/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}-openvino
 59    # 容器名
 60    container_name: immich_machine_learning
 61    # 主机名
 62    hostname: immich_machine_learning
 63    # [armnn arm图形使用, cuda n卡cuda, openvino intel核显],机器学习调用编码器
 64    # Example tag: ${IMMICH_VERSION:-release}-cuda 在image的镜像最后面添加相应的图形解码,如果想使用cpu则删除就可以
 65    # 拓展
 66    extends: 
 67      # 调用转码文件 
 68      file: hwaccel.ml.yaml
 69      service: openvino # 设置四个图形解码中的一个 [armnn arm图形使用, cuda n卡cuda, openvino 优先使用,intel核显, openvino-wsl intel核显] 
 70    volumes:
 71      #修改机器学习模型存储路径
 72      - /docker/apps/immich/model-cache:/cache
 73    # 配置文件,指定版本,指定相册路径,数据库路径
 74    env_file:
 75      - .env
 76    # 健康检查
 77    healthcheck:
 78      disable: false
 79    # 重启策略,总是重启
 80    restart: always
 81
 82  redis:
 83    # 镜像名称
 84    image: docker.io/redis:6.2-alpine
 85    # 容器名
 86    container_name: immich_redis
 87    # 主机名
 88    hostname: immich_redis
 89    # 健康检查
 90    healthcheck:
 91      test: redis-cli ping || exit 1
 92    # 重启策略,总是重启
 93    restart: always
 94
 95  database:
 96    # 镜像名称
 97    image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0
 98    # 容器名
 99    container_name: immich_postgres
100    # 主机名
101    hostname: immich_postgres
102    # 配置文件
103    environment:
104      # 数据库用户
105      POSTGRES_USER: ${DB_USERNAME}
106      # 数据库密码
107      POSTGRES_PASSWORD: ${DB_PASSWORD}
108      # 数据库名称
109      POSTGRES_DB: ${DB_DATABASE_NAME}
110      POSTGRES_INITDB_ARGS: '--data-checksums'
111    volumes:
112      # 请去.env修改路径
113      - ${DB_DATA_LOCATION}:/var/lib/postgresql/data
114    # 健康检查
115    healthcheck:
116      test: >-
117        pg_isready --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" || exit 1;
118        Chksum="$$(psql --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" --tuples-only --no-align
119        --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')";
120        echo "checksum failure count is $$Chksum";
121        [ "$$Chksum" = '0' ] || exit 1
122      interval: 5m
123      start_interval: 30s
124      start_period: 5m
125    command: >-
126      postgres
127      -c shared_preload_libraries=vectors.so
128      -c 'search_path="$$user", public, vectors'
129      -c logging_collector=on
130      -c max_wal_size=2GB
131      -c shared_buffers=512MB
132      -c wal_compression=on
133    # 重启策略,总是重启
134    restart: always

2.7 创建 intel 核显 qsv+openvino 文件

众所周知,硬件加速需要硬件支持,假如你的硬件是 intel 11 代以上核显加速,那么你选择本文件。根据自己配置,我们来创建 docker-compose.yaml 文件。

  1# 基于官方模板制作
  2# 官方文档
  3# https://immich.app
  4# 官方compose教程
  5# https://immich.app/docs/install/docker-compose
  6# 官方变量说明
  7# https://immich.app/docs/install/environment-variables
  8# 官方CLIP说明
  9# https://immich.app/docs/features/command-line-interface
 10# 官方硬件转码说明
 11# https://immich.app/docs/features/hardware-transcoding
 12# https://hub.docker.com/r/tensorchord/pgvecto-rs
 13
 14# 如果官方的镜像不好拉取,可以选择拉取以下两个镜像作为替代,部署参数完全相同,将模板上对应的镜像进行修改即可,tag也是release
 15# https://hub.docker.com/r/altran1502/immich-server
 16# https://hub.docker.com/r/altran1502/immich-machine-learning
 17
 18# ---
 19
 20name: immich
 21# 最后编辑时间:2025-02-14
 22services:
 23  immich-server:
 24    # 镜像地址
 25    image: ghcr.nju.edu.cn/immich-app/immich-server:${IMMICH_VERSION:-release}
 26    # 容器名
 27    container_name: immich_server
 28    # 主机名
 29    hostname: immich-server
 30    # 拓展
 31    extends:
 32       # 调用转码文件 
 33       file: hwaccel.transcoding.yaml
 34      # 请去设置四个中的一个转码方式 [nvenc 英伟达, quicksync 英特尔核显, rkmpp rk系列的arm, vaapi, vaapi-wsl] 
 35      service: quicksync 
 36    volumes:
 37      # 请去.env修改路径
 38      - ${UPLOAD_LOCATION}:/usr/src/app/upload 
 39      - /etc/localtime:/etc/localtime:ro
 40    # 配置文件,指定版本,指定相册路径,数据库路径
 41    env_file:
 42      - .env
 43    # 调用数据库
 44    depends_on:
 45      - redis
 46      - database
 47    # 健康检查
 48    healthcheck:
 49      disable: false
 50    # webUI端口  
 51    ports:
 52      - 2283:2283
 53    # 重启策略,总是重启
 54    restart: always
 55
 56  immich-machine-learning:
 57    # 镜像名称
 58    image: ghcr.nju.edu.cn/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}-openvino
 59    # 容器名
 60    container_name: immich_machine_learning
 61    # 主机名
 62    hostname: immich_machine_learning
 63    # [armnn arm图形使用, cuda n卡cuda, openvino intel核显],机器学习调用编码器
 64    # Example tag: ${IMMICH_VERSION:-release}-cuda 在image的镜像最后面添加相应的图形解码,如果想使用cpu则删除就可以
 65    # 拓展
 66    extends: 
 67      # 调用转码文件 
 68      file: hwaccel.ml.yaml
 69      # 设置四个图形解码中的一个 [armnn arm图形使用, cuda n卡cuda, openvino 优先使用,intel核显, openvino-wsl intel核显] 
 70      service: openvino 
 71    volumes:
 72      #修改机器学习模型存储路径
 73      - /docker/apps/immich/model-cache:/cache
 74    # 配置文件,指定版本,指定相册路径,数据库路径
 75    env_file:
 76      - .env
 77    # 健康检查
 78    healthcheck:
 79      disable: false
 80    # 重启策略,总是重启
 81    restart: always
 82
 83  redis:
 84    # 镜像名称
 85    image: docker.io/redis:6.2-alpine
 86    # 容器名
 87    container_name: immich_redis
 88    # 主机名
 89    hostname: immich_redis
 90    # 健康检查
 91    healthcheck:
 92      test: redis-cli ping || exit 1
 93    # 重启策略,总是重启
 94    restart: always
 95
 96  database:
 97    # 镜像名称
 98    image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0
 99    # 容器名
100    container_name: immich_postgres
101    # 主机名
102    hostname: immich_postgres
103    # 配置文件
104    environment:
105      # 数据库用户
106      POSTGRES_USER: ${DB_USERNAME}
107      # 数据库密码
108      POSTGRES_PASSWORD: ${DB_PASSWORD}
109      # 数据库名称
110      POSTGRES_DB: ${DB_DATABASE_NAME}
111      POSTGRES_INITDB_ARGS: '--data-checksums'
112    volumes:
113      # 请去.env修改路径
114      - ${DB_DATA_LOCATION}:/var/lib/postgresql/data
115    # 健康检查
116    healthcheck:
117      test: >-
118        pg_isready --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" || exit 1;
119        Chksum="$$(psql --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" --tuples-only --no-align
120        --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')";
121        echo "checksum failure count is $$Chksum";
122        [ "$$Chksum" = '0' ] || exit 1
123      interval: 5m
124      start_interval: 30s
125      start_period: 5m
126    command: >-
127      postgres
128      -c shared_preload_libraries=vectors.so
129      -c 'search_path="$$user", public, vectors'
130      -c logging_collector=on
131      -c max_wal_size=2GB
132      -c shared_buffers=512MB
133      -c wal_compression=on
134    # 重启策略,总是重启
135    restart: always

2.9 创建 N 卡 nvenc+cuda 文件

众所周知,硬件加速需要硬件支持,假如你的硬件是 N 卡英伟达 cuda 加速,那么你选择本文件。根据自己配置,我们来创建 docker-compose.yaml 文件。

  1# 基于官方模板制作
  2# 官方文档
  3# https://immich.app
  4# 官方compose教程
  5# https://immich.app/docs/install/docker-compose
  6# 官方变量说明
  7# https://immich.app/docs/install/environment-variables
  8# 官方CLIP说明
  9# https://immich.app/docs/features/command-line-interface
 10# 官方硬件转码说明
 11# https://immich.app/docs/features/hardware-transcoding
 12# https://hub.docker.com/r/tensorchord/pgvecto-rs
 13
 14# 如果官方的镜像不好拉取,可以选择拉取以下两个镜像作为替代,部署参数完全相同,将模板上对应的镜像进行修改即可,tag也是release
 15# https://hub.docker.com/r/altran1502/immich-server
 16# https://hub.docker.com/r/altran1502/immich-machine-learning
 17
 18# ---
 19
 20name: immich
 21# 最后编辑时间:2025-02-14
 22services:
 23  immich-server:
 24    # 镜像地址
 25    image: ghcr.nju.edu.cn/immich-app/immich-server:${IMMICH_VERSION:-release}
 26    # 容器名
 27    container_name: immich_server
 28    # 主机名
 29    hostname: immich-server
 30    extends:
 31       file: hwaccel.transcoding.yml
 32       # 请去设置四个中的一个转码方式 [nvenc 英伟达, quicksync 英特尔核显, rkmpp rk系列的arm, vaapi, vaapi-wsl] 
 33       service: nvenc 
 34    volumes:
 35      # 请去.env修改路径
 36      - ${UPLOAD_LOCATION}:/usr/src/app/upload 
 37      - /etc/localtime:/etc/localtime:ro
 38    # 配置文件,指定版本,指定相册路径,数据库路径
 39    env_file:
 40      - .env
 41    # 调用数据库
 42    depends_on:
 43      - redis
 44      - database
 45    # 健康检查
 46    healthcheck:
 47      disable: false
 48    # webUI端口  
 49    ports:
 50      - 2283:2283
 51    # 重启策略,总是重启
 52    restart: always
 53
 54  immich-machine-learning:
 55    # 镜像名称
 56    image: ghcr.nju.edu.cn/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}-openvino
 57    # 容器名
 58    container_name: immich_machine_learning
 59    # 主机名
 60    hostname: immich_machine_learning
 61    # [armnn arm图形使用, cuda n卡cuda, openvino intel核显],机器学习调用编码器
 62    # Example tag: ${IMMICH_VERSION:-release}-cuda 在image的镜像最后面添加相应的图形解码,如果想使用cpu则删除就可以
 63    # 拓展
 64    extends: 
 65      # 调用转码文件 
 66       file: hwaccel.ml.yaml
 67       service: cuda # 设置四个图形解码中的一个 [armnn arm图形使用, cuda n卡cuda, openvino 优先使用,intel核显, openvino-wsl intel核显] 
 68    volumes:
 69      #修改机器学习模型存储路径
 70      - /docker/apps/immich/model-cache:/cache
 71    # 配置文件,指定版本,指定相册路径,数据库路径
 72    env_file:
 73      - .env
 74    # 健康检查
 75    healthcheck:
 76      disable: false
 77    # 重启策略,总是重启
 78    restart: always
 79
 80  redis:
 81    # 镜像名称
 82    image: docker.io/redis:6.2-alpine
 83    # 容器名
 84    container_name: immich_redis
 85    # 主机名
 86    hostname: immich_redis
 87    # 健康检查
 88    healthcheck:
 89      test: redis-cli ping || exit 1
 90    # 重启策略,总是重启
 91    restart: always
 92
 93  database:
 94    # 镜像名称
 95    image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0
 96    # 容器名
 97    container_name: immich_postgres
 98    # 主机名
 99    hostname: immich_postgres
100    # 配置文件
101    environment:
102      # 数据库用户
103      POSTGRES_USER: ${DB_USERNAME}
104      # 数据库密码
105      POSTGRES_PASSWORD: ${DB_PASSWORD}
106      # 数据库名称
107      POSTGRES_DB: ${DB_DATABASE_NAME}
108      POSTGRES_INITDB_ARGS: '--data-checksums'
109    volumes:
110      # 请去.env修改路径
111      - ${DB_DATA_LOCATION}:/var/lib/postgresql/data
112    # 健康检查
113    healthcheck:
114      test: >-
115        pg_isready --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" || exit 1;
116        Chksum="$$(psql --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" --tuples-only --no-align
117        --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')";
118        echo "checksum failure count is $$Chksum";
119        [ "$$Chksum" = '0' ] || exit 1
120      interval: 5m
121      start_interval: 30s
122      start_period: 5m
123    command: >-
124      postgres
125      -c shared_preload_libraries=vectors.so
126      -c 'search_path="$$user", public, vectors'
127      -c logging_collector=on
128      -c max_wal_size=2GB
129      -c shared_buffers=512MB
130      -c wal_compression=on
131    # 重启策略,总是重启
132    restart: always

2.9 immich 总结

根据自己的配置创建好这 4 个文件,我们直接把 immich 这个文件夹上传到我们对应的目录,然后运行 compose 项目就行。

https://img.nw177.cn/blog/10.docker/1002-容器项目&相册类-01-immich-02.webp


3 AI 大模型配置

3.1 MT Photos AI 大模型配置

mt photos 的 ai 大模型配置在官方文档都有介绍,想用高德地图也有教程文档,我这里就不多说了。


3.2 immich AI 大模型配置

immich 基本都是英文文档,首先主要是智能搜索中的中文模型。安装好 immich 后,依次打开设置→机器学习设置→智能搜索→CLIP模型修改为以下的代码。

1XLM-Roberta-Large-Vit-B-16Plus

其次,就是需要改成中文地图。依次打开设置→地图与GPS设置→地图→浅色模式和深色模式都修改为以下的代码,其他设置根据自己需求修改,以下的 aip 是通过一个地图网站自己编辑的

1https://api.maptiler.com/maps/5f203af3-3f1d-4a6d-b1ab-612ec5b58ceb/style.json?key=18pTCzPiaEcdoABeRqDh
推荐使用微信支付
微信支付二维码
推荐使用支付宝
支付宝二维码
最新文章

文档导航

此分类暂无内容