字节笔记本

2026年3月22日

Immich - 自托管 Google Photos 替代方案

本文介绍 Immich,一款高性能的自托管照片和视频管理解决方案,旨在为用户提供类似 Google Photos 的体验,同时完全掌控自己的数据。

项目简介

Immich 是一个开源的自托管照片和视频备份与管理平台。它提供移动端应用(iOS 和 Android)以及 Web 端界面,支持自动备份、人脸识别、地图视图等丰富功能。对于关注数据隐私、希望摆脱云服务商依赖的用户来说,Immich 是目前最优秀的自托管替代方案之一。

项目采用 AGPLv3 许可证发布,拥有活跃的社区和频繁的更新迭代。Immich 在 GitHub 上获得了极高的关注度,Star 数量已突破数万,是自托管领域的明星项目。

与 Google Photos、iCloud Photos 等商业方案相比,Immich 的核心优势在于:数据完全由用户自己控制,不依赖第三方云服务,功能丰富且性能出色,同时支持多用户使用场景。

核心特性

Immich 的功能覆盖了照片管理的大部分需求,以下按类别进行详细介绍。

照片与视频管理

  • 上传与查看:支持照片和视频的上传与浏览,移动端和 Web 端均可操作。
  • 自动备份:移动端打开应用时自动触发备份,支持后台备份功能。
  • 防重复机制:自动检测并防止重复资源的上传,节省存储空间。
  • 选择性备份:可选择特定的相册进行备份,不必全量同步。
  • 本地下载:支持将照片和视频下载到本地设备。
  • RAW 格式支持:完整支持各种 RAW 格式照片的显示与存储。

智能功能

  • 人脸识别与聚类:自动识别人脸并进行分组,方便按人物浏览照片。
  • 智能搜索:支持按元数据(EXIF)、物体识别、人脸和 CLIP 向量搜索,可以像 Google Photos 一样用自然语言查找照片。
  • 元数据查看:完整的 EXIF 信息展示,包括拍摄参数、地图定位等。
  • 回忆功能:自动生成"多年前今天"的回忆内容。

组织与分享

  • 相册与共享相册:创建相册进行照片整理,支持与他人共享相册。
  • 伙伴共享:与家人或朋友共享照片库,实现联合管理。
  • 公共分享:生成公共链接分享照片,无需注册即可查看。
  • 归档与收藏:支持照片归档和收藏标记,便于整理。
  • 文件夹视图:按文件夹结构浏览照片,保持原始组织方式。
  • 标签系统:Web 端支持为照片添加标签进行分类。

平台与用户体验

  • 多用户支持:支持创建多个用户账户,适合家庭或团队使用。
  • 多语言支持:支持包括简体中文、繁体中文在内的 20 多种语言。
  • 全局地图:在地图上查看所有带位置信息的照片。
  • 虚拟滚动:流畅浏览大量照片,无卡顿感。
  • 可拖拽滚动条:快速跳转到特定时间点。
  • 360 度图片:Web 端支持 360 度全景图片显示。
  • LivePhoto/MotionPhoto:支持 Apple LivePhoto 和 Android MotionPhoto 的备份与播放。
  • 只读图库:支持设置只读模式,适合展示用途。

系统与管理

  • OAuth 支持:集成 OAuth 认证,方便统一管理。
  • API Keys:提供 API 密钥机制,便于第三方集成。
  • 用户自定义存储结构:可自定义文件在服务器上的存储路径和命名规则。
  • 离线支持:移动端支持离线查看已缓存的 photos。

技术栈

Immich 的技术架构现代且高效,主要由以下技术构成:

  • 后端:采用 Node.js/TypeScript 构建,使用 NestJS 框架提供 API 服务。
  • 前端(Web):基于 React/TypeScript,使用 Next.js 框架,配合 Svelte 等技术。
  • 移动端:使用 Flutter 框架构建,支持 iOS 和 Android 双平台。
  • 数据库:PostgreSQL 作为主数据库,Redis 用于缓存和队列。
  • 机器学习:集成 TensorFlow 用于人脸识别和物体检测。
  • 存储:支持本地文件系统和 S3 兼容的对象存储。
  • 容器化:提供完整的 Docker Compose 配置,部署简单。
  • 反向代理:支持 Nginx 等反向代理部署。

整个项目遵循现代化开发实践,代码质量高,架构清晰,便于二次开发和功能扩展。

安装指南

Immich 提供了详细的官方文档,推荐使用 Docker Compose 进行安装部署。

系统要求

  • 操作系统:Linux(推荐)、macOS 或支持 Docker 的其他系统
  • 内存:建议至少 2GB RAM
  • 存储:根据照片数量预留足够的磁盘空间
  • 软件依赖:Docker 和 Docker Compose

使用 Docker Compose 安装

这是最推荐的安装方式,步骤如下:

bash
# 1. 克隆仓库
git clone https://github.com/immich-app/immich.git
cd immich

# 2. 启动服务
docker compose up -d

启动后,访问 http://你的服务器IP:2283 即可进入 Immich 的 Web 界面。

环境变量配置

在部署前,建议根据实际需求修改 .env 文件中的关键配置:

  • UPLOAD_LOCATION:照片上传的存储路径
  • DB_DATA_LOCATION:数据库数据存储路径
  • 端口配置、时区设置等

详细的环境变量说明可以在官方文档中查阅。

快速开始

部署完成后,按照以下步骤快速上手:

  1. 注册账户:打开 Web 界面,注册第一个管理员账户。
  2. 安装移动端应用:在 App Store 或 Google Play 下载 Immich 应用。
  3. 配置服务器地址:在移动端应用中输入服务器的 Endpoint URL。
  4. 登录并备份:使用刚注册的账户登录移动端,开启自动备份。
  5. 开始使用:上传的照片将自动同步到服务器,可在 Web 端浏览和管理。

移动端设置

在移动端应用中配置以下信息:

  • Server Endpoint URLhttp://你的服务器IP:2283/api
  • 开启"Auto Backup"选项
  • 可选择备份的相册

Web 端管理

登录 Web 端后,可以:

  • 管理用户账户
  • 查看所有照片和视频
  • 创建和共享相册
  • 查看系统状态
  • 配置存储和备份策略

使用示例

场景一:家庭照片管理

家庭成员各自注册账户,开启自动备份。利用伙伴共享功能,夫妻之间可以共享照片库,让家庭照片集中管理。通过人脸识别自动将照片按人物分类,轻松找到某个家庭成员的所有照片。

场景二:旅行照片整理

旅行归来后,所有照片已自动备份到 Immich。通过全局地图功能,在地图上查看旅行足迹;使用智能搜索,输入"海滩"即可找到所有海边照片;创建旅行相册,生成公共链接分享给朋友。

场景三:NAS 部署

在家庭 NAS 设备上部署 Immich,配合 S3 兼容存储(如 MinIO),实现海量照片的安全存储。通过自定义存储结构,保持照片的目录组织方式与 NAS 文件系统一致,便于直接访问原始文件。

重要提醒

Immich 项目官方强烈建议遵循 3-2-1 备份原则:至少保留 3 份数据副本,存储在 2 种不同的介质上,其中 1 份存放在异地。即使使用自托管方案,也务必做好数据备份,以防硬件故障导致数据丢失。

项目链接

分享: