Immich:开源自托管的数字资产管理解决方案

Immich是一款专为个人和企业设计的开源自托管照片与视频备份管理工具,它提供了类似Google Photos的体验,但所有数据都完全掌握在用户自己手中。

核心功能

  1. 自动备份系统
    • 支持iOS和Android设备自动上传照片/视频
    • 可选择特定相册进行备份
    • 后台持续备份功能
  2. 智能分类管理
    • 基于ImageNet数据集的图像标签分类
    • 使用COCO SSD进行物体检测
    • 人脸识别与分组功能
  3. 多平台支持
    • Web管理界面(SvelteKit构建)
    • 原生移动应用(Flutter开发)
    • 命令行工具(CLI)批量上传

技术架构

Immich采用现代化的技术栈:

  • 后端​:NestJS框架
  • 数据库​:PostgreSQL
  • 缓存​:Redis
  • 机器学习​:TensorFlow
  • 前端​:SvelteKit + TailwindCSS

部署方案

Immich推荐使用Docker Compose部署:

bashbash复制# 创建部署目录
mkdir immich && cd immich

# 下载配置文件
wget https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env

# 启动服务
docker-compose up -d

默认访问地址:http://服务器IP:2283

独特优势

  1. 数据主权​:所有数据存储在用户自己的服务器/NAS上
  2. RAW格式支持​:可处理HEIC、HEIF、DNG等专业格式
  3. 地图视图​:基于OpenStreetMap展示照片地理位置
  4. 多用户协作​:支持家庭成员共享相册

适用场景

  • 家庭照片集中管理与共享
  • 摄影师作品备份与管理
  • 企业媒体资产存储与管理
  • 替代商业云相册服务的私有化方案

4. Machine Learning Service  4. 机器学习服务

A Python-based service built with FastAPI that provides:
一个基于 Python 的服务,使用 FastAPI 构建,提供:

  • Face recognition using InsightFace
    使用 InsightFace 进行人脸识别
  • Object detection  物体检测
  • CLIP-based semantic search
    基于 CLIP 的语义搜索
  • Reverse geocoding for location data
    地理位置数据的逆向地理编码

It supports various hardware acceleration options:
它支持各种硬件加速选项:

  • CUDA (NVIDIA)  CUDA(NVIDIA)
  • OpenVINO (Intel)  OpenVINO(英特尔)
  • ROCm (AMD)  ROCm(AMD)
  • RKNN (Rockchip)  RKNN(瑞芯微)
  • ArmNN (ARM)  ArmNN(ARM)

Technology Stack  技术栈

Component  组件Technology  技术Version  版本
Server  服务器NestJS, Node.jsv11.0.4
Web Interface  网页界面Svelte, SvelteKitv5.25.3
Mobile Applications  移动应用Flutterv3.29.3
Machine Learning Service  机器学习服务Python, FastAPIv0.95.2+
Database  数据库PostgreSQL, pgvecto.rsv8.11.3
Caching & Job Queues  缓存与任务队列Redis, BullMQv5.3.2, v4.8.0
Command Line Interface  命令行界面TypeScriptv5.3.3
Media Processing  媒体处理Sharp (images), FFmpeg (videos)
锐化(图像),FFmpeg(视频)
v0.33.0
Metadata Extraction  元数据提取ExifToolv28.3.1

Sources: server/package.json37-72 web/package.json27-53 mobile/pubspec.yaml12-81 machine-learning/pyproject.toml8-54 cli/package.json64-69
来源:服务器/package.json37-72Web/package.json27-53 移动/pubspec.yaml12-81 机器学习/pyproject.toml8-54CLI/package.json64-69

Key Features  主要功能

Feature  功能Description  描述Components Involved  涉及组件
Asset Upload  资产上传Upload and storage of photos and videos
照片和视频的上传与存储
Server, Web UI, Mobile  服务器、Web 界面、移动端
Deduplication  去重Prevention of duplicate assets
防止重复资产
Server  服务器
Metadata Extraction  元数据提取Reading EXIF, GPS and other metadata
读取 EXIF、GPS 和其他元数据
Server  服务器
Thumbnail Generation  缩略图生成Creation of optimized thumbnails
创建优化缩略图
Server  服务器
Video Transcoding  视频转码Converting videos for web playback
为网页播放转换视频
Server  服务器
Face Recognition  人脸识别Identifying and grouping faces
识别和分组人脸
Machine Learning, Server  机器学习,服务器
Object Detection  物体检测Identifying objects in images
识别图像中的物体
Machine Learning, Server  机器学习,服务器
Smart Search  智能搜索Natural language search for photos
自然语言照片搜索
Machine Learning, Server  机器学习,服务器
Albums  专辑Organization of photos  照片组织Server, Web UI, Mobile  服务器、Web 界面、移动端
Sharing  分享Sharing albums with other users
与其他用户共享相册
Server, Web UI, Mobile  服务器、Web 界面、移动端
User Management  用户管理User accounts and permissions
用户账户和权限
Server, Web UI  服务器,Web 界面
Map View  地图视图Geolocation-based photo viewing
基于地理位置的照片查看
Server, Web UI, Mobile  服务器,Web 界面,移动端
Background Backup  背景备份Automatic backup of photos
自动备份照片
Mobile  移动
CLI Access  命令行访问Command-line management  命令行管理CLI

Immich项目在GitHub上已获得超过6.5万星标,是目前最活跃的开源自托管照片管理解决方案之一。其活跃的开发者社区持续为项目添加新功能,使其成为数字资产管理领域的佼佼者。

项目地址:immich-app/immich