AI摘要:本文介绍了使用Docker部署immich照片管理系统的过程,包括配置PostgreSQL数据库、编辑docker-compose文件、部署immich服务、配置外部图库和机器学习模型,以及移动端配置。
Powered by AISummary.
前言
immich官网给你的compose文件需要拉取以下4个镜像:
ghcr.io/immich-app/immich-server(immich服务端)
ghcr.io/immich-app/immich-machine-learning(机器学习用于人脸识别)
docker.io/valkey/valkey:8-bookworm(redis)
ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0(数据库)
还要配置 .env
文件,但是玩nas这么长时间了,大部分人已经部署了redis和PostgreSQL数据库了,所以我这个教程是直接调用现有redis和PostgreSQL,不需要配置‘.env’文件,只用一个镜像(包括机器学习)来部署immich,全网仅此一家。
一、immich简介
Immich 是一款基于 Web 的应用程序,通过云存储为用户提供安全的个人档案库。它允许用户创建时间轴,将照片、文字、音频和其他多媒体文件按日期和事件分类,形成一个完整的个人历史记录。此外,用户还可以设定访问权限,与家人或朋友共享特定的内容。
技术分析
- 前端框架: Immich 使用现代前端框架 React 构建,提供高效且响应式的用户体验。
- 后端服务: 基于 Node.js 和 Express 框架,提供了稳定可靠的服务器端处理能力。
- 数据库: 利用 MongoDB 进行数据存储,支持非结构化数据和高扩展性。
- 身份验证: 集成了 Auth0 提供的安全身份验证服务,确保用户数据安全。
- API 设计: 使用 RESTful API 设计原则,易于与其他系统集成。
- 云存储: 集成 Google Cloud Storage,为用户提供可靠的云存储解决方案。
功能用途
- 个人记忆管理: 创建时间线,将照片、视频等媒体按照日期和事件归档。
- 隐私保护: 可设置不同级别的访问权限,控制谁可以看到你的内容。
- 家庭共享: 分享家庭活动,让亲人共同回顾美好的时光。
- 教育工具: 老师可以使用 Immich 存储学生作品,方便教学回顾和评估。
- 项目文档: 在团队项目中记录进度,保存成果,便于后期查阅。
特点
- 开源免费: 开发者可以在 GitHub 上查看并参与到项目中,贡献自己的力量。
- 跨平台: 作为Web应用,Immich可在任何设备和操作系统上运行。
- 可自托管: 对于有需求的用户,可以选择自行部署,保证数据完全掌控。
- 直观易用: 用户界面设计简洁,易于上手。
二、部署过程(linux系统通用)
本教程没有使用官方镜像,介意请绕道!!!
Immich 的硬件和软件要求:
- 操作系统:推荐使用 Linux 或 *nix 操作系统(Ubuntu、Debian 等)。
- 非 Linux 操作系统的 Docker 体验通常较差,因此强烈建议不要使用,请提前安装好docker和docker-compose。
Immich 在完整的虚拟机中运行良好,在虚拟化环境中运行良好。不建议在 LXC 容器中使用 Docker ,但高级用户或许可以。
- RAM:最低 4GB,建议 6GB。
- CPU:最低2核,建议4核。
- 存储:推荐使用与 Unix 兼容的文件系统(EXT4、ZFS、APFS 等),支持用户/组所有权和权限。
- 缩略图和转码视频的生成平均可以使照片库的大小增加 10-20%。
1.配置PostgreSQL数据库
- 创建名为immich的数据库文件
登录你的PostgreSQL数据库,输入如下命令:
CREATE DATABASE immich
ENCODING = 'UTF8'
LC_COLLATE = 'en_US.UTF-8'
LC_CTYPE = 'en_US.UTF-8';
- 配置immich数据库相关扩展
输入如下命令查看PostgreSQL是否安装了相关扩展
sudo -u root psql -c "SELECT * FROM pg_available_extensions WHERE name IN ('plpgsql', 'vector', 'postgis', 'uuid-ossp', 'unaccent', 'cube', 'earthdistance', 'pg_trgm');"
如果输出中 installed_version 为空,则需安装缺失的扩展:
# Ubuntu/Debian 示例
sudo apt-get update
sudo apt-get install postgresql-contrib postgis postgresql-vector #缺哪个就安哪个
为immich启用相关扩展,输入以下命令进入immich数据库
sudo psql -U <用户名> -d immich
在数据库会话中运行以下 SQL 命令:
# 确保扩展开启(IF NOT EXISTS 避免重复创建)
CREATE EXTENSION IF NOT EXISTS plpgsql; -- 通常默认已启用
CREATE EXTENSION IF NOT EXISTS vector;
CREATE EXTENSION IF NOT EXISTS postgis;
CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; -- 注意双引号(含连字符)
CREATE EXTENSION IF NOT EXISTS unaccent;
CREATE EXTENSION IF NOT EXISTS cube;
CREATE EXTENSION IF NOT EXISTS earthdistance; -- 依赖 cube,但会自动处理
CREATE EXTENSION IF NOT EXISTS pg_trgm;
2.部署immich服务
准备目录
分别手动创建如下目录(可自行修改):
/home/docker/immich/config #immich的配置文件目录,用于存放机器学习的模型文件
/home/docker/immich/photos #准备映射给immich的照片目录
/home/照片 #准备映射给immich的外部图库目录,也就是说这个目录存放的是你现有的照片
编辑compose文件
终端输入nano /home/docker/immich/docker-compose.yaml
,将如下代码复制粘贴。
version: '3.8'
services:
immich:
image: ghcr.io/imagegenius/immich:latest #用这个镜像就不需要再单独设置机器学习服务了
container_name: immich
environment:
- PUID=1000 # 替换为实际用户ID,可在终端输入`id`查询
- PGID=1000 # 替换为实际用户ID,可在终端输入`id`查询
- TZ=Asia/Shanghai
# 数据库配置
- DB_HOSTNAME=192.168.8.9 #修改为你的数据库地址
- DB_USERNAME=root #数据库用户名
- DB_PASSWORD=12345678 #数据库密码
- DB_DATABASE_NAME=immich #数据库名称
- DB_PORT=5432 #数据库访问端口
# redis配置
- REDIS_HOSTNAME=192.168.8.8 #修改为你的redis地址
- REDIS_PORT=6379 #redis访问端口
- REDIS_PASSWORD=123456 #redis访问密码,如果没有密码请删除此行
- DEBUG=*
- NODE_ENV=development
## 机器学习部分
- MACHINE_LEARNING_GPU_ACCELERATION= #默认
- MACHINE_LEARNING_HOST=0.0.0.0 #默认
- MACHINE_LEARNING_PORT=3003 #确保3003端口没有被占用
- MACHINE_LEARNING_WORKERS=1 #默认
- MACHINE_LEARNING_WORKER_TIMEOUT=120 #默认
# 添加连接池配置
- DB_POOL_MIN=1
- DB_POOL_MAX=10
- DB_POOL_CONNECTION_TIMEOUT=60000
devices:
- /dev/dri:/dev/dri #英特尔硬件加速,根据实际情况启用
volumes:
- ./config:/config
- /home/docker/immich/photos:/photos
- /home/照片:/extlib
ports:
- "8080:8080" # 主机端口:容器内部端口,左边端口可根据实际情况修改
restart: unless-stopped
networks:
- immich-net
# 创建专用网络
networks:
immich-net:
driver: bridge
终端输入cd /home/docker/immich
docker compose up -d
到此项目部署完毕!
三、配置外部图库
此时访问设备8080端口即可登录immich,输入邮箱和密码创建一个账号并登录。
按如下步骤创建外部图库
四、 配置机器学习
安装lfs并创建目录
1.安装lfs
sudo apt install git-lfs
2.创建目录
终端进入/home/docker/immich/config/machine-learning/models
目录,没有就自行创建,而后分别创建名字为clip
和facial-recognition
的目录,前者用户存放智能搜索模型,后者用于存放人脸识别模型。
cd /home/docker/immich/config/machine-learning/models
mkdir clip facial-recognition
拉取智能识别模型
进入clip
目录
cd clip
执行如下命令:
git clone https://huggingface.co/immich-app/XLM-Roberta-Large-Vit-B-16Plus
cd XLM-Roberta-Large-Vit-B-16Plus
git lfs pull
模型比较大,耐性等待下载完成即可。
拉取人脸识别模型
进入facial-recognition
目录
cd /home/docker/immich/config/machine-learning/models/facial-recognition
执行如下命令:
git clone https://huggingface.co/immich-app/buffalo_l
cd buffalo_l
git lfs pull
耐性等待下载完成即可。
配置模型
进入设置界面,把智能搜索和人脸识别模型的名字手动输入一下就可以了。
五、配置移动端
下载
登录并使用
使用服务器端点 URL 登录移动应用程序http://
单击屏幕右上角的云图标导航到备份屏幕。