容器项目&相册类
容器项目&相册类
相册
说起相册,大家肯定都是熟悉群辉的 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 地址体验一下。
账号:demo,密码:mtphotos

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

体验了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 项目就行。

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


- 01基于飞牛漏洞安全访问Lucky反代&雷池防护 2026-02-03
- 02OEC-Turbo (RK3566) 安装飞牛 OS 2026-01-24
- 03Lucky 反向代理终极指南 2026-01-16
文档导航
此分类暂无内容