菜单

概述

相关源文件

这份文档对 Immich 进行了技术介绍,Immich 是一款高性能的自托管照片和视频管理解决方案。它涵盖了系统架构、关键组件以及它们如何协同工作以提供自动备份、相册创建、媒体处理、面部识别和智能搜索等功能。

有关详细的安装说明,请参阅部署指南,有关开发设置,请参阅开发指南

系统架构

Immich 采用微服务架构,其组件经过容器化处理,可使用 Docker Compose 进行协同部署。

高级架构图

来源:server/package.json1-155 web/package.json1-99 mobile/pubspec.yaml1-148 cli/package.json1-74 machine-learning/pyproject.toml1-107

关键组件

Immich 由五个主要组件组成,每个组件都有特定的职责。

1. 服务器组件

Immich 服务器采用 NestJS (v11) 构建,作为核心后端。它处理以下任务:

  • 客户端通信的 REST API
  • 身份验证和授权
  • 资产处理管道
  • 数据库交互
  • 后台任务调度

来源:server/package.json37-72

2. Web 界面

Web UI 采用 Svelte 和 SvelteKit 构建,提供响应式浏览器界面,用于管理照片和视频。

主要功能

  • 资产查看和组织
  • 相册管理
  • 共享功能
  • 系统配置管理面板
  • 响应式设计

来源:web/package.json27-53

3. 移动应用程序

移动应用程序采用 Flutter 构建,可用于 iOS 和 Android 平台。

主要功能

  • 设备相册媒体备份
  • 后台同步
  • 离线查看功能
  • 推送通知
  • 相册管理

来源:mobile/pubspec.yaml12-81

4. 机器学习服务

一个基于 Python 和 FastAPI 构建的服务,提供:

  • 使用 InsightFace 进行人脸识别
  • 目标检测
  • 基于 CLIP 的语义搜索
  • 位置数据的逆地理编码

它支持多种硬件加速选项:

  • CUDA (NVIDIA)
  • OpenVINO (Intel)
  • ROCm (AMD)
  • RKNN (瑞芯微)
  • ArmNN (ARM)

来源:machine-learning/pyproject.toml8-54

5. 命令行界面

一个基于 Node.js 的 CLI 工具,使用户能够:

  • 上传资产到 Immich 服务器
  • 管理相册和图库
  • 执行管理任务
  • 自动化工作流程

来源:cli/package.json64-69

数据流架构

该图展示了数据如何在 Immich 系统中流动,从资产摄取到面向用户的功能。

来源:server/package.json37-72 machine-learning/pyproject.toml8-54

服务器 API 结构和任务处理

Immich 服务器使用 NestJS 控制器和服务模式来提供 RESTful API。下面是服务器 API 和任务处理系统的结构。

来源:server/package.json37-72 open-api/immich-openapi-specs.json1-293

技术栈

组件技术版本
服务器NestJS, Node.jsv11.0.4
网页界面Svelte, SvelteKitv5.25.3
移动应用程序Flutterv3.29.3
机器学习服务Python, FastAPIv0.95.2+
数据库PostgreSQL, pgvecto.rsv8.11.3
缓存与任务队列Redis, BullMQv5.3.2, v4.8.0
命令行界面TypeScriptv5.3.3
媒体处理Sharp(图像处理), FFmpeg(视频处理)v0.33.0
元数据提取ExifToolv28.3.1

来源:server/package.json37-72 web/package.json27-53 mobile/pubspec.yaml12-81 machine-learning/pyproject.toml8-54 cli/package.json64-69

主要功能

功能描述相关组件
资产上传照片和视频的上传与存储服务器,Web 界面,移动应用
去重防止重复资产服务器
元数据提取读取 EXIF、GPS 和其他元数据服务器
缩略图生成创建优化缩略图服务器
视频转码转换视频以供网页播放服务器
面部识别人脸识别与分组机器学习,服务器
目标检测图像中的物体识别机器学习,服务器
智能搜索照片的自然语言搜索机器学习,服务器
相册照片整理服务器,Web 界面,移动应用
共享与其他用户分享相册服务器,Web 界面,移动应用
用户管理用户账户和权限服务器,Web 界面
地图视图基于地理位置的照片查看服务器,Web 界面,移动应用
后台备份照片自动备份移动端
CLI 访问命令行管理CLI

来源:README.md74-106

部署

Immich 设计为使用 Docker Compose 进行部署,同时支持开发和生产环境。

有关详细的部署说明,请参阅 Wiki 页面部署指南

来源:mobile/android/fastlane/Fastfile1-46 mobile/ios/fastlane/Fastfile1-36 README.md55-56