项目地址:https://github.com/immich-app/immich
immich相册人脸识别、依赖于智能搜索的重复照片识别,非常的强悍,有些照片人眼乍看下都没发现有人脸,但是immich却可以识别出来;重复照片这个也很强,已经帮我删除几十G的重复照片,识别精度改成0.001,基本可以一键删除,但如果还可以细化那就更好了,比如设置目录长度或只删除指定目录,目前还在不断更新,后期应该会持续优化的。
相关文字教程
将immich相册反向地理编码设置为中文 (教程日期:2024-08-16)
将immich相册地图模块设置为中文地图 (教程日期:2024-04-28)
docker-compose安装
# 基于官方模板制作
# 官方文档
# https://immich.app
# https://github.com/immich-app/immich
# 官方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://wiki.slarker.me/unraid/deploy_immich.html
# AI模型替换教程
# https://wiki.slarker.me/unraid/immich_ai_model.html
# https://www.bilibili.com/read/cv33865669
# AI模型列表,推荐 XLM-Roberta-Large-Vit-B-16Plus
# 人脸识别Facial Recognition用的模型是:buffalo_l,压缩包内还加入了antelopev2,据说效果更好
# https://huggingface.co/immich-app
# AI模型,国内源分流
# https://www.123pan.com/s/WXqA-EGL6d.html
# https://www.123pan.com/s/YuAUVv-Qp1nA.html 提取码:fgee
# immich相册反向地理编码设置为中文资源包,见下教程说明
# https://www.123pan.com/s/mYvMTd-SJhY3
# 指定数据库,注意tag,截至2025-01-08前,官方支持 pg14/15/16,pg17名义上是兼容的
# 为确保安装的pgvecto.rs版本兼容,tag范围是 >= 0.2.0, < 0.4.0,本模板使用的是 pg16-v0.3.0
# https://hub.docker.com/r/tensorchord/pgvecto-rs
# 如果官方的镜像不好拉取,可以选择拉取以下两个镜像
# https://hub.docker.com/r/altran1502/immich-server
# https://hub.docker.com/r/altran1502/immich-machine-learning
# 将immich相册反向地理编码设置为中文 (教程日期:2024-08-16)
# https://post.smzdm.com/p/an9k0w57
# 将immich相册地图模块设置为中文地图 (教程日期:2024-04-28)
# https://post.smzdm.com/p/akl59689
---
version: "3.8"
# 最后编辑时间:2025-01-08
# 2025-01-08:更新模板,添加immich相册反向地理编码设置为中文的路径映射
services:
immich-server:
image: ghcr.io/immich-app/immich-server:release
# 镜像地址
container_name: immich-server
# 容器名字
hostname: immich-server
# 主机名
privileged: true
# 特权模式,赋予容器几乎与主机相同的权限
volumes:
- 【这里替换为你的照片上传存放目录】:/usr/src/app/upload
# 上传目录
- /volume1:/volume1:ro
- /volume1/homes:/群晖相册:ro
# 外部库目录,此文件夹将定期扫描,内容将自动导入immich,需要在immich上进行设置,容器路径可以自定义多个,理解映射就会明白了,默认为/usr/src/app/external
# - 【这里替换为你的本地相册存放目录】:/【这里替换为你的本地相册存放目录的名字】
# 自定义外部库目录,可以写多个,容器路径可随便自定义
- /volume1/docker/immich/immich-machine-learning/i18n-iso-countries:/usr/src/app/node_modules/i18n-iso-countries
- /volume1/docker/immich/immich-machine-learning/geodata:/build/geodata
# immich相册反向地理编码设置为中文所需的路径
environment:
- IMMICH_PORT=2283
# 自定义容器端口,默认为3001,这里预设为2283
# 2024-06-11,v1.106.3版本开始,这里的变量由SERVER_PORT改为IMMICH_PORT
- REDIS_HOSTNAME=immich-redis
# 指定要连接的redis,预设为immich-redis
- DB_HOSTNAME=immich-pgsql
- DB_DATABASE_NAME=immich
- DB_USERNAME=immich
- DB_PASSWORD=immich
# 指定要连接的postgres,预设为immich-pgsql
# pgsql的子数据库,账号密码均为预设的immich
ports:
- 2283:2283/tcp
# WebUI 端口
restart: unless-stopped
# 重启策略,可根据实际情况而选择 no/always/unless-stopped/on-failure/on-failure:3
depends_on:
- immich-redis
- immich-pgsql
# 关联所需的其他docker容器
############################################################################
immich-machine-learning:
image: ghcr.io/immich-app/immich-machine-learning:release
# 镜像地址
# 如果使用n卡,则tag改为release-cuda,同理还有 armnn, openvino, openvino-wsl
container_name: immich-machine-learning
# 容器名字
hostname: immich-machine-learning
# 主机名
privileged: true
# 特权模式,赋予容器几乎与主机相同的权限
# runtime: nvidia
# 使用N卡的需要装好N卡驱动,并且设置这个参数
volumes:
- /volume1/docker/immich/immich-machine-learning:/cache
# clip与人脸识别模型的目录,推荐使用XLM-Roberta-Large-Vit-B-16Plus
# 请将XLM-Roberta-Large-Vit-B-16Plus.zip解压缩后的XLM-Roberta-Large-Vit-B-16Plus文件夹放到/cache/clip内
# 目录结构:/xxx/immich/immich-machine-learning/clip/XLM-Roberta-Large-Vit-B-16Plus
#
environment:
- TZ=Asia/Shanghai
# 时区
# - NVIDIA_DRIVER_CAPABILITIES=all
# - NVIDIA_VISIBLE_DEVICES【=N卡的ID】
# 使用N卡的需要装好N卡驱动,并且设置这两个N卡参数
####################
#
# 以下均为默认不需要修改,除非有特殊需要
# - MACHINE_LEARNING_REQUEST_THREADS=0
# cpu核心数,根据实际情况填写,默认0为禁用
# - MACHINE_LEARNING_MODEL_INTER_OP_THREADS=1
# 同时处理的文件数量,默认为1
# - MACHINE_LEARNING_MODEL_INTRA_OP_THREADS=2
# AI深度学习的线程数,默认为2
# - MACHINE_LEARNING_WORKERS=1
# AI深度学习的步数,默认为1
# - MACHINE_LEARNING_WORKER_TIMEOUT=120
# AI深度学习的超时时间,默认为120
#
####################
restart: always
# 重启策略,可根据实际情况而选择 no/always/unless-stopped/on-failure/on-failure:3
############################################################################
immich-redis:
image: redis:latest
# 镜像地址
container_name: immich-redis
# 容器名字
hostname: immich-redis
# 主机名
volumes:
- /volume1/docker/immich/immich-redis:/data
# 数据库目录
restart: always
# 重启策略,可根据实际情况而选择 no/always/unless-stopped/on-failure/on-failure:3
############################################################################
immich-pgsql:
image: tensorchord/pgvecto-rs:pg16-v0.3.0
# 镜像地址
container_name: immich-pgsql
# 容器名字
hostname: immich-pgsql
# 主机名
volumes:
- /volume1/docker/immich/immich-pgsql:/var/lib/postgresql/data
# 数据库目录
environment:
- POSTGRES_DB=immich
- POSTGRES_USER=immich
- POSTGRES_PASSWORD=immich
# pgsql的子数据库,账号密码均为预设的immich
restart: always
# 重启策略,可根据实际情况而选择 no/always/unless-stopped/on-failure/on-failure:3
############################################################################
更新流程:
1、获取root权限
sudo -i #密码是DSM账号的密码
2、进入docker-compose所在目录
cd /volume4/docker/immich #cd后面的路径替换为你的路径
3、停止项目
docker-compose stop
4、更新项目
docker-compose pull
5、重构项目
docker-compose up -d
6、一键更新:
保存为任意好记的文件,后缀是.sh,比如update.sh,进入到项目文件夹,执行bash update.sh即可,也是要事先获取 root权限
#! /bin/bash
docker-compose stop #停止
docker-compose pull #更新
docker-compose up -d #重构
#docker image prune -a -f