容器项目&相册类
相册
说起相册,大家肯定都是熟悉群辉的 Synology Photo s这样的品牌 NAS 的相册。当然,免费的飞牛 NAS 的相册也是不错的,而且有 AI 相册。容器类得相册项目,现在主要有两个项目,国产收费的 MT Photos 和国外免费项目 immich。
我先把我的 docker 树目录再放出来,方便你修改路径,如果和我一样的路径就不需要修改。
root(根目录)
├── docker(分支节点:docker目录)
│ ├── apps(叶子节点:docker app目录)
│ │ ├── mt-photos路径
│ │ └── immich路径
│ └── docker-compose(叶子节点:docker-compose.yaml目录)
│ │ ├── mt-photos
│ │ │ └── docker-compsoe.yaml
│ │ ├── immich
│ │ └──── docker-compsoe.yaml
│ ├── photos
│ │ ├── mt-photos
│ │ └── immich-photos
...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,那么只需要下面的代码就行。
# 官方文档
# https://mtmt.tech/
# 体验demo,账号demo,密码demo
# https://d.mtmt.tech/login
# GPS API 配置
# https://mtmt.tech/docs/start/gps_api/
# 生成激活码
# https://auth.mtmt.tech/iKey
# ---
name: mt-photos
# 最后编辑时间:2025-02-28
services:
mt-photos:
# 镜像地址
image: registry.cn-hangzhou.aliyuncs.com/mtphotos/mt-photos:latest
# 容器名
container_name: mt-photos
# 主机名
hostname: mt-photos
environment:
# 用户和用户组权限,ssh中使用“id 用户名”查看,用户组一般为100(users)
# 第一个用户而言,群晖为1026,新绿联为1001,linux类系统为1000,后续用户均+1
# 如果出现无法下载的情况,改为0
- PUID=1000
- PGID=100
# 默认创建新文件的权限,一般写022
- UMASK=022
# 时区
- TZ=Asia/Shanghai
# 驱动
devices:
# 添加硬件加速转码
- /dev/dri:/dev/dri
# dns
dns:
- 114.114.114.114
# 路径
volumes:
# 配置文件目录
# mt-photos配置文件路径
- /docker/apps/mt-photos/config:/config
# mt-photos手机相册上传路径
- /docker/apps/mt_photos/upload:/upload
# 其他相册路径
- /photos/mt-photos:/photos
# 网络模式:桥接模式
network_mode: bridge
# 端口
ports:
# webUI端口
- 8063:8063
# 重启策略,总是重启
restart: always但是如果需要同时部署 MT Photos AI,那么需要下面的代码才可以。
# 官方文档
# https://mtmt.tech/
# 体验demo,账号demo,密码demo
# https://d.mtmt.tech/login
# 添加智能识别
# https://mtmt.tech/docs/advanced/ocr_api/
# 添加人脸识别API
# https://mtmt.tech/docs/advanced/facial_api/
# GPS API 配置
# https://mtmt.tech/docs/start/gps_api/
# 生成激活码
# https://auth.mtmt.tech/iKey
# ---
name: mt-photos
# 最后编辑时间:2025-02-28
services:
mt-photos:
# 镜像地址
image: registry.cn-hangzhou.aliyuncs.com/mtphotos/mt-photos:latest
# 容器名
container_name: mt-photos
# 主机名
hostname: mt-photos
environment:
# 用户和用户组权限,ssh中使用“id 用户名”查看,用户组一般为100(users)
# 第一个用户而言,群晖为1026,新绿联为1001,linux类系统为1000,后续用户均+1
# 如果出现无法下载的情况,改为0
- PUID=1000
- PGID=100
# 默认创建新文件的权限,一般写022
- UMASK=022
# 时区
- TZ=Asia/Shanghai
# 驱动
devices:
# 添加硬件加速转码
- /dev/dri:/dev/dri
# dns
dns:
- 114.114.114.114
# 依赖
depends_on:
# 连接AI相册
- mtphotos_ai
# 连接AI人脸识别
- mtphotos_face_api
# 路径
volumes:
# 配置文件目录
# mt-photos配置文件路径
- /docker/apps/mt-photos/config:/config
# mt-photos手机相册上传路径
- /docker/apps/mt_photos/upload:/upload
# 其他相册路径
- /photos/mt-photos:/photos
# 网络模式:桥接模式
network_mode: bridge
# 端口
ports:
# webUI端口
- 8063:8063
# 重启策略,总是重启
restart: always
mtphotos_ai:
# 镜像地址
image: registry.cn-hangzhou.aliyuncs.com/mtphotos/mt-photos-ai:onnx-latest
# 容器名
container_name: mtphotos_ai
# 主机名
hostname: mtphotos_ai
environment:
# mtphotos_ai密码,可以自定义,不改也行
- API_AUTH_KEY=mt_photos_ai_extra
ports:
# AI相册连接端口
- 8060:8060
# 重启策略,总是重启
restart: always
mtphotos_face_api:
# 镜像地址
# 如果下载不到,前面加上加速地址
# crpi-gcuyquw9co62xzjn.cn-guangzhou.personal.cr.aliyuncs.com
image: devfox101/mt-photos-insightface-unofficial:latest
# 容器名
container_name: mtphotos_face_api
# 主机名
hostname: mtphotos_face_api
environment:
# mtphotos_face_ai密码,可以自定义,不改也行
- API_AUTH_KEY=mt_photos_ai_extra
ports:
# AI人脸识别连接端口
- 8066:8066
# 重启策略,总是重启
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 配置文件。
# immich照片存储路径
UPLOAD_LOCATION=/docker/apps/immich/library
# postgres数据库存储路径,这里建议存储在/docker/apps/immich目录下,方便管理。
DB_DATA_LOCATION=/docker/apps/immich/postgres
TZ=Asia/Shanghai
#要使用的immich版本。您可以将其固定到特定版本,如“v1.71.0”
IMMICH_VERSION=release
#postgres数据库的访问密码
DB_PASSWORD=postgres
DB_USERNAME=postgres
DB_DATABASE_NAME=immich2.3 创建硬件加速文件
其次我们来创建 hwaccel.ml.yaml 硬件加速文件。
services:
armnn:
devices:
- /dev/mali0:/dev/mali0
volumes:
- /lib/firmware/mali_csffw.bin:/lib/firmware/mali_csffw.bin:ro # Mali firmware for your chipset (not always required depending on the driver)
- /usr/lib/libmali.so:/usr/lib/libmali.so:ro # Mali driver for your chipset (always required)
cpu: {}
cuda:
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities:
- gpu
openvino:
device_cgroup_rules:
- 'c 189:* rmw'
devices:
- /dev/dri:/dev/dri
volumes:
- /dev/bus/usb:/dev/bus/usb
openvino-wsl:
devices:
- /dev/dri:/dev/dri
- /dev/dxg:/dev/dxg
volumes:
- /dev/bus/usb:/dev/bus/usb
- /usr/lib/wsl:/usr/lib/wsl2.4 创建 AI 大模型文件
再次,我们来创建 hwaccel.transcoding.yaml 文件。
services:
cpu: {}
nvenc:
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities:
- gpu
- compute
- video
quicksync:
devices:
- /dev/dri:/dev/dri
rkmpp:
security_opt:
- systempaths=unconfined
- apparmor=unconfined
group_add:
- video
devices:
- /dev/rga:/dev/rga
- /dev/dri:/dev/dri
- /dev/dma_heap:/dev/dma_heap
- /dev/mpp_service:/dev/mpp_service
#- /dev/mali0:/dev/mali0 # only required to enable OpenCL-accelerated HDR -> SDR tonemapping
volumes:
#- /etc/OpenCL:/etc/OpenCL:ro # only required to enable OpenCL-accelerated HDR -> SDR tonemapping
#- /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
vaapi:
devices:
- /dev/dri:/dev/dri
vaapi-wsl: # use this for VAAPI if you're running Immich in WSL2
devices:
- /dev/dri:/dev/dri
volumes:
- /usr/lib/wsl:/usr/lib/wsl
environment:
- LIBVA_DRIVER_NAME=d3d122.5 创建无核显+cpu 运行大模型文件
众所周知,硬件加速需要硬件支持,假如你的硬件是不支持核显或者图形显卡加速,再或者你不知道怎么选择,直接用本文件肯定没错。根据自己配置,我们来创建 docker-compose.yaml 文件。
# 基于官方模板制作
# 官方文档
# https://immich.app
# 官方compose教程
# https://immich.app/docs/install/docker-compose
# 官方变量说明
# https://immich.app/docs/install/environment-variables
# 官方CLIP说明
# https://immich.app/docs/features/command-line-interface
# 官方硬件转码说明
# https://immich.app/docs/features/hardware-transcoding
# https://hub.docker.com/r/tensorchord/pgvecto-rs
# 如果官方的镜像不好拉取,可以选择拉取以下两个镜像作为替代,部署参数完全相同,将模板上对应的镜像进行修改即可,tag也是release
# https://hub.docker.com/r/altran1502/immich-server
# https://hub.docker.com/r/altran1502/immich-machine-learning
# ---
name: immich
# 最后编辑时间:2025-02-14
services:
immich-server:
# 镜像地址
image: ghcr.nju.edu.cn/immich-app/immich-server:${IMMICH_VERSION:-release}
# 容器名
container_name: immich_server
# 主机名
hostname: immich-server
volumes:
# 请去.env修改路径
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro
# 配置文件,指定版本,指定相册路径,数据库路径
env_file:
- .env
# 调用数据库
depends_on:
- redis
- database
# 健康检查
healthcheck:
disable: false
# webUI端口
ports:
- 2283:2283
# 重启策略,总是重启
restart: always
immich-machine-learning:
# 镜像名称
image: ghcr.nju.edu.cn/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}-openvino
# 容器名
container_name: immich_machine_learning
# 主机名
hostname: immich_machine_learning
volumes:
#修改机器学习模型存储路径
- /docker/apps/immich/model-cache:/cache
# 配置文件,指定版本,指定相册路径,数据库路径
env_file:
- .env
# 健康检查
healthcheck:
disable: false
# 重启策略,总是重启
restart: always
redis:
# 镜像名称
image: docker.io/redis:6.2-alpine
# 容器名
container_name: immich_redis
# 主机名
hostname: immich_redis
# 健康检查
healthcheck:
test: redis-cli ping || exit 1
# 重启策略,总是重启
restart: always
database:
# 镜像名称
image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0
# 容器名
container_name: immich_postgres
# 主机名
hostname: immich_postgres
# 配置文件
environment:
# 数据库用户
POSTGRES_USER: ${DB_USERNAME}
# 数据库密码
POSTGRES_PASSWORD: ${DB_PASSWORD}
# 数据库名称
POSTGRES_DB: ${DB_DATABASE_NAME}
POSTGRES_INITDB_ARGS: '--data-checksums'
volumes:
# 请去.env修改路径
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data
# 健康检查
healthcheck:
test: >-
pg_isready --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" || exit 1;
Chksum="$$(psql --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" --tuples-only --no-align
--command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')";
echo "checksum failure count is $$Chksum";
[ "$$Chksum" = '0' ] || exit 1
interval: 5m
start_interval: 30s
start_period: 5m
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
# 重启策略,总是重启
restart: always2.6 创建 intel 6 代核显 vaapi+cpu 运行大模型文件
众所周知,硬件加速需要硬件支持,假如你的硬件是 intel 6 代以上 hd610 或者 hd630 核显加速,那么你选择本文件。根据自己配置,我们来创建 docker-compose.yaml 文件。
# 基于官方模板制作
# 官方文档
# https://immich.app
# 官方compose教程
# https://immich.app/docs/install/docker-compose
# 官方变量说明
# https://immich.app/docs/install/environment-variables
# 官方CLIP说明
# https://immich.app/docs/features/command-line-interface
# 官方硬件转码说明
# https://immich.app/docs/features/hardware-transcoding
# https://hub.docker.com/r/tensorchord/pgvecto-rs
# 如果官方的镜像不好拉取,可以选择拉取以下两个镜像作为替代,部署参数完全相同,将模板上对应的镜像进行修改即可,tag也是release
# https://hub.docker.com/r/altran1502/immich-server
# https://hub.docker.com/r/altran1502/immich-machine-learning
# ---
name: immich
# 最后编辑时间:2025-02-14
services:
immich-server:
# 镜像地址
image: ghcr.nju.edu.cn/immich-app/immich-server:${IMMICH_VERSION:-release}
# 容器名
container_name: immich_server
# 主机名
hostname: immich-server
# 拓展
extends:
# 调用转码文件
file: hwaccel.transcoding.yaml
# 请去设置四个中的一个转码方式 [nvenc 英伟达, quicksync 英特尔核显, rkmpp rk系列的arm, vaapi, vaapi-wsl]
service: vaapi
volumes:
# 请去.env修改路径
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro
# 配置文件,指定版本,指定相册路径,数据库路径
env_file:
- .env
# 调用数据库
depends_on:
- redis
- database
# 健康检查
healthcheck:
disable: false
# webUI端口
ports:
- 2283:2283
# 重启策略,总是重启
restart: always
immich-machine-learning:
# 镜像名称
image: ghcr.nju.edu.cn/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}-openvino
# 容器名
container_name: immich_machine_learning
# 主机名
hostname: immich_machine_learning
# [armnn arm图形使用, cuda n卡cuda, openvino intel核显],机器学习调用编码器
# Example tag: ${IMMICH_VERSION:-release}-cuda 在image的镜像最后面添加相应的图形解码,如果想使用cpu则删除就可以
# 拓展
extends:
# 调用转码文件
file: hwaccel.ml.yaml
service: openvino # 设置四个图形解码中的一个 [armnn arm图形使用, cuda n卡cuda, openvino 优先使用,intel核显, openvino-wsl intel核显]
volumes:
#修改机器学习模型存储路径
- /docker/apps/immich/model-cache:/cache
# 配置文件,指定版本,指定相册路径,数据库路径
env_file:
- .env
# 健康检查
healthcheck:
disable: false
# 重启策略,总是重启
restart: always
redis:
# 镜像名称
image: docker.io/redis:6.2-alpine
# 容器名
container_name: immich_redis
# 主机名
hostname: immich_redis
# 健康检查
healthcheck:
test: redis-cli ping || exit 1
# 重启策略,总是重启
restart: always
database:
# 镜像名称
image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0
# 容器名
container_name: immich_postgres
# 主机名
hostname: immich_postgres
# 配置文件
environment:
# 数据库用户
POSTGRES_USER: ${DB_USERNAME}
# 数据库密码
POSTGRES_PASSWORD: ${DB_PASSWORD}
# 数据库名称
POSTGRES_DB: ${DB_DATABASE_NAME}
POSTGRES_INITDB_ARGS: '--data-checksums'
volumes:
# 请去.env修改路径
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data
# 健康检查
healthcheck:
test: >-
pg_isready --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" || exit 1;
Chksum="$$(psql --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" --tuples-only --no-align
--command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')";
echo "checksum failure count is $$Chksum";
[ "$$Chksum" = '0' ] || exit 1
interval: 5m
start_interval: 30s
start_period: 5m
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
# 重启策略,总是重启
restart: always2.7 创建 intel 核显 qsv+openvino 文件
众所周知,硬件加速需要硬件支持,假如你的硬件是 intel 11 代以上核显加速,那么你选择本文件。根据自己配置,我们来创建 docker-compose.yaml 文件。
# 基于官方模板制作
# 官方文档
# https://immich.app
# 官方compose教程
# https://immich.app/docs/install/docker-compose
# 官方变量说明
# https://immich.app/docs/install/environment-variables
# 官方CLIP说明
# https://immich.app/docs/features/command-line-interface
# 官方硬件转码说明
# https://immich.app/docs/features/hardware-transcoding
# https://hub.docker.com/r/tensorchord/pgvecto-rs
# 如果官方的镜像不好拉取,可以选择拉取以下两个镜像作为替代,部署参数完全相同,将模板上对应的镜像进行修改即可,tag也是release
# https://hub.docker.com/r/altran1502/immich-server
# https://hub.docker.com/r/altran1502/immich-machine-learning
# ---
name: immich
# 最后编辑时间:2025-02-14
services:
immich-server:
# 镜像地址
image: ghcr.nju.edu.cn/immich-app/immich-server:${IMMICH_VERSION:-release}
# 容器名
container_name: immich_server
# 主机名
hostname: immich-server
# 拓展
extends:
# 调用转码文件
file: hwaccel.transcoding.yaml
# 请去设置四个中的一个转码方式 [nvenc 英伟达, quicksync 英特尔核显, rkmpp rk系列的arm, vaapi, vaapi-wsl]
service: quicksync
volumes:
# 请去.env修改路径
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro
# 配置文件,指定版本,指定相册路径,数据库路径
env_file:
- .env
# 调用数据库
depends_on:
- redis
- database
# 健康检查
healthcheck:
disable: false
# webUI端口
ports:
- 2283:2283
# 重启策略,总是重启
restart: always
immich-machine-learning:
# 镜像名称
image: ghcr.nju.edu.cn/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}-openvino
# 容器名
container_name: immich_machine_learning
# 主机名
hostname: immich_machine_learning
# [armnn arm图形使用, cuda n卡cuda, openvino intel核显],机器学习调用编码器
# Example tag: ${IMMICH_VERSION:-release}-cuda 在image的镜像最后面添加相应的图形解码,如果想使用cpu则删除就可以
# 拓展
extends:
# 调用转码文件
file: hwaccel.ml.yaml
# 设置四个图形解码中的一个 [armnn arm图形使用, cuda n卡cuda, openvino 优先使用,intel核显, openvino-wsl intel核显]
service: openvino
volumes:
#修改机器学习模型存储路径
- /docker/apps/immich/model-cache:/cache
# 配置文件,指定版本,指定相册路径,数据库路径
env_file:
- .env
# 健康检查
healthcheck:
disable: false
# 重启策略,总是重启
restart: always
redis:
# 镜像名称
image: docker.io/redis:6.2-alpine
# 容器名
container_name: immich_redis
# 主机名
hostname: immich_redis
# 健康检查
healthcheck:
test: redis-cli ping || exit 1
# 重启策略,总是重启
restart: always
database:
# 镜像名称
image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0
# 容器名
container_name: immich_postgres
# 主机名
hostname: immich_postgres
# 配置文件
environment:
# 数据库用户
POSTGRES_USER: ${DB_USERNAME}
# 数据库密码
POSTGRES_PASSWORD: ${DB_PASSWORD}
# 数据库名称
POSTGRES_DB: ${DB_DATABASE_NAME}
POSTGRES_INITDB_ARGS: '--data-checksums'
volumes:
# 请去.env修改路径
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data
# 健康检查
healthcheck:
test: >-
pg_isready --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" || exit 1;
Chksum="$$(psql --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" --tuples-only --no-align
--command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')";
echo "checksum failure count is $$Chksum";
[ "$$Chksum" = '0' ] || exit 1
interval: 5m
start_interval: 30s
start_period: 5m
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
# 重启策略,总是重启
restart: always2.9 创建 N 卡 nvenc+cuda 文件
众所周知,硬件加速需要硬件支持,假如你的硬件是 N 卡英伟达 cuda 加速,那么你选择本文件。根据自己配置,我们来创建 docker-compose.yaml 文件。
# 基于官方模板制作
# 官方文档
# https://immich.app
# 官方compose教程
# https://immich.app/docs/install/docker-compose
# 官方变量说明
# https://immich.app/docs/install/environment-variables
# 官方CLIP说明
# https://immich.app/docs/features/command-line-interface
# 官方硬件转码说明
# https://immich.app/docs/features/hardware-transcoding
# https://hub.docker.com/r/tensorchord/pgvecto-rs
# 如果官方的镜像不好拉取,可以选择拉取以下两个镜像作为替代,部署参数完全相同,将模板上对应的镜像进行修改即可,tag也是release
# https://hub.docker.com/r/altran1502/immich-server
# https://hub.docker.com/r/altran1502/immich-machine-learning
# ---
name: immich
# 最后编辑时间:2025-02-14
services:
immich-server:
# 镜像地址
image: ghcr.nju.edu.cn/immich-app/immich-server:${IMMICH_VERSION:-release}
# 容器名
container_name: immich_server
# 主机名
hostname: immich-server
extends:
file: hwaccel.transcoding.yml
# 请去设置四个中的一个转码方式 [nvenc 英伟达, quicksync 英特尔核显, rkmpp rk系列的arm, vaapi, vaapi-wsl]
service: nvenc
volumes:
# 请去.env修改路径
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro
# 配置文件,指定版本,指定相册路径,数据库路径
env_file:
- .env
# 调用数据库
depends_on:
- redis
- database
# 健康检查
healthcheck:
disable: false
# webUI端口
ports:
- 2283:2283
# 重启策略,总是重启
restart: always
immich-machine-learning:
# 镜像名称
image: ghcr.nju.edu.cn/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}-openvino
# 容器名
container_name: immich_machine_learning
# 主机名
hostname: immich_machine_learning
# [armnn arm图形使用, cuda n卡cuda, openvino intel核显],机器学习调用编码器
# Example tag: ${IMMICH_VERSION:-release}-cuda 在image的镜像最后面添加相应的图形解码,如果想使用cpu则删除就可以
# 拓展
extends:
# 调用转码文件
file: hwaccel.ml.yaml
service: cuda # 设置四个图形解码中的一个 [armnn arm图形使用, cuda n卡cuda, openvino 优先使用,intel核显, openvino-wsl intel核显]
volumes:
#修改机器学习模型存储路径
- /docker/apps/immich/model-cache:/cache
# 配置文件,指定版本,指定相册路径,数据库路径
env_file:
- .env
# 健康检查
healthcheck:
disable: false
# 重启策略,总是重启
restart: always
redis:
# 镜像名称
image: docker.io/redis:6.2-alpine
# 容器名
container_name: immich_redis
# 主机名
hostname: immich_redis
# 健康检查
healthcheck:
test: redis-cli ping || exit 1
# 重启策略,总是重启
restart: always
database:
# 镜像名称
image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0
# 容器名
container_name: immich_postgres
# 主机名
hostname: immich_postgres
# 配置文件
environment:
# 数据库用户
POSTGRES_USER: ${DB_USERNAME}
# 数据库密码
POSTGRES_PASSWORD: ${DB_PASSWORD}
# 数据库名称
POSTGRES_DB: ${DB_DATABASE_NAME}
POSTGRES_INITDB_ARGS: '--data-checksums'
volumes:
# 请去.env修改路径
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data
# 健康检查
healthcheck:
test: >-
pg_isready --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" || exit 1;
Chksum="$$(psql --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" --tuples-only --no-align
--command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')";
echo "checksum failure count is $$Chksum";
[ "$$Chksum" = '0' ] || exit 1
interval: 5m
start_interval: 30s
start_period: 5m
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
# 重启策略,总是重启
restart: always2.9 immich 总结
根据自己的配置创建好这 4 个文件,我们直接把 immich 这个文件夹上传到我们对应的目录,然后运行 compose 项目就行。

3 AI 大模型配置
3.1 MT Photos AI 大模型配置
mt photos 的 ai 大模型配置在官方文档都有介绍,想用高德地图也有教程文档,我这里就不多说了。
3.2 immich AI 大模型配置
immich 基本都是英文文档,首先主要是智能搜索中的中文模型。安装好 immich 后,依次打开设置→机器学习设置→智能搜索→CLIP模型修改为以下的代码。
XLM-Roberta-Large-Vit-B-16Plus其次,就是需要改成中文地图。依次打开设置→地图与GPS设置→地图→浅色模式和深色模式都修改为以下的代码,其他设置根据自己需求修改,以下的 aip 是通过一个地图网站自己编辑的。
https://api.maptiler.com/maps/5f203af3-3f1d-4a6d-b1ab-612ec5b58ceb/style.json?key=18pTCzPiaEcdoABeRqDh