如何自托管 Immich:15 分钟内拥有私人 Google Photos
教程 2026年2月4日 4 min read

如何自托管 Immich:15 分钟内拥有私人 Google Photos

H

Hostly Team

Self-Hosting Enthusiast

几分钟内使用 Docker Compose 设置 Immich。免费、开源的照片备份,具有人脸识别、智能搜索和移动应用——一个完全由你控制的 Google Photos 替代品。

Google Photos 非常方便——直到你达到存储限制,注意到你的 AI 训练的面孔出现在广告中,或者意识到 Google 可以随时更改其条款。在 2024 年,Google 减少了免费存储并再次提高了价格。许多用户开始询问:有没有办法在不放弃我的照片的情况下获得相同的体验?

答案是 Immich——一个开源、自托管的照片和视频管理平台,外观和感觉与 Google Photos 非常相似。它提供从手机的自动备份、人脸识别、智能搜索、地图视图、共享相册,甚至回忆——所有这些都在你自己的硬件上运行。

在本指南中,我们将从头开始使用 Docker Compose 设置 Immich。到最后,你将拥有一个完全功能的私人照片云,完全由你控制。

为什么选择 Immich?

在我们深入设置之前,让我们了解一下 Immich 与其他自托管照片解决方案(如 PhotoPrism 或 LibrePhotos)的不同之处:

功能ImmichGoogle Photos
成本免费(开源)15GB 免费,之后 $2-10/月
存储无限(你的硬件)15GB 免费,之后付费层
隐私100% 本地——你的数据留在本地Google 扫描并索引你的照片
人脸识别✅ 设备内 ML✅ 基于云
智能搜索✅ 基于 CLIP 的语义搜索✅ 专有 AI
自动备份✅ iOS & Android 应用✅ iOS & Android 应用
共享相册✅ 多用户支持✅ 内置共享
地图视图✅ 基于 GPS 的照片地图✅ 位置时间线
回忆✅ “今天”功能✅ 回忆与拼贴
离线访问✅ 无需互联网即可工作❌ 需要连接

自首次发布以来,Immich 迅速增长——现在它是 GitHub 上最受欢迎的自托管项目之一,拥有超过 55,000 个星标。移动应用程序经过精心打磨,网页界面快速,机器学习功能真正与 Google 的相媲美。由 FUTO 支持,这是一个致力于构建开放技术的基金会,Immich 拥有许多开源项目所缺乏的长期可持续性。

你需要什么

在我们开始之前,请确保你拥有以下内容:

  • 一台服务器或 PC——任何 Linux 机器、NAS、Raspberry Pi 5,甚至是一台旧笔记本电脑。如果你想要远程访问,VPS 也可以。
  • 至少 6GB 的 RAM——Immich 运行多个服务,包括 PostgreSQL 和机器学习引擎。4GB 可以工作,但机器学习功能会比较慢。
  • Docker 和 Docker Compose——推荐的安装方法。如果你是 Docker 新手,请查看我们的 自托管初学者指南
  • 存储空间——足够的磁盘空间来存储你的照片库。对于大多数用户来说,1TB 的驱动器是一个不错的起点。

💡 硬件推荐

  • 预算:Raspberry Pi 5(8GB)+ 外部 USB 驱动器——可处理 ~50,000 张照片
  • 中档:Intel N100 迷你 PC + 16GB RAM + 2TB NVMe——快速的机器学习,处理 200k+ 照片
  • 发烧友:任何带 GPU 的台式机/服务器(甚至是旧的 GTX 1050)——超快的人脸识别和搜索
  • 云 VPS:一台 4 核/8GB 的 VPS(如 Hetzner CX31)非常适合 1-3 个用户

步骤 1:安装 Docker

如果你还没有安装 Docker,这里是将其安装到新 Linux 服务器(Ubuntu/Debian)上的最快方法:

# 使用官方便利脚本安装 Docker
curl -fsSL https://get.docker.com | sh

# 将你的用户添加到 docker 组(这样你就不需要 sudo)
sudo usermod -aG docker $USER

# 登出并重新登录,然后验证
docker --version
docker compose version

你应该看到 Docker 24+ 和 Docker Compose v2+。如果你使用的是其他发行版,请查看 官方 Docker 安装文档

步骤 2:创建 Immich 目录

让我们为你的 Immich 安装创建一个专用目录:

# 创建并进入 Immich 目录
mkdir ~/immich-app
cd ~/immich-app

步骤 3:下载配置文件

Immich 提供了官方的 docker-compose.yml 和环境文件。下载它们:

# 下载官方 docker-compose.yml
wget -O docker-compose.yml 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

这将为你提供一个预配置的设置,包含 Immich 所需的所有服务:主服务器、机器学习服务、用于数据库的 PostgreSQL 和用于缓存的 Redis。

步骤 4:配置你的环境

打开 .env 文件并进行自定义:

# 编辑环境文件
nano .env

以下是需要更改的关键设置:

# 照片存储位置——选择一个有足够空间的位置
UPLOAD_LOCATION=/mnt/photos/immich

# 数据库文件存储位置(保持在快速存储上,推荐 SSD)
DB_DATA_LOCATION=./postgres

# 设置你的时区
TZ=Europe/Paris

# 固定到特定版本以确保稳定性(或使用 'v2' 获取最新的 v2.x)
IMMICH_VERSION=v2

# 重要:将此更改为安全的随机密码
DB_PASSWORD=YourSecurePasswordHere123

# 这些通常不需要更改
DB_USERNAME=postgres
DB_DATABASE_NAME=immich

⚠️ 重要提示

  • 📁UPLOAD_LOCATION:这是你所有照片和视频将存储的位置。指向你最大的驱动器。确保在启动之前目录存在。
  • 🔒DB_PASSWORD:仅使用字母和数字(A-Za-z0-9)。特殊字符可能会导致 Docker 的环境解析出现问题。
  • 💾DB_DATA_LOCATION:PostgreSQL 数据库必须位于适当的 Linux 文件系统上(ext4、ZFS、BTRFS)。NTFS 和 FAT 可用。

如果上传目录尚不存在,请创建它:

# 创建照片存储目录
sudo mkdir -p /mnt/photos/immich
sudo chown $USER:$USER /mnt/photos/immich

步骤 5:启动 Immich

现在是激动人心的部分——用一个命令启动所有内容:

# 拉取镜像并启动所有服务
docker compose up -d

Docker 将下载 Immich 镜像(第一次运行约 2-3 GB)并启动所有容器。你可以查看进度:

# 实时查看日志
docker compose logs -f

等待直到你看到服务器报告它已准备好。这通常在第一次启动时需要 30-60 秒,因为数据库正在初始化。

步骤 6:创建你的管理员账户

打开你的浏览器并导航到:

http://YOUR_SERVER_IP:2283

你将看到 Immich 设置屏幕。点击 “开始使用” 并创建你的管理员账户。第一个注册的用户自动成为管理员。

选择一个强密码——这个账户控制着你的整个照片库,并可以管理其他用户。

步骤 7:设置你的移动应用

这就是 Immich 真正闪光的地方。从以下位置安装移动应用:

当你打开应用时,输入你的服务器 URL (http://YOUR_SERVER_IP:2283) 并使用你刚创建的账户登录。

要启用自动备份:

  1. 点击右上角的 云图标
  2. 选择要备份的相册(相机、截图、WhatsApp 等)
  3. 切换 “启用备份”
  4. 可选地启用 “后台备份” 以便在应用关闭时也能同步

你的照片将立即开始上传。根据你的库的大小,这次初始同步可能需要一段时间——如果需要,可以让它过夜运行。

步骤 8:探索 Immich 的功能

一旦你的照片上传完成,花点时间探索 Immich 能做什么:

人脸识别

Immich 的机器学习引擎会自动检测你照片中的人脸并将其分组。导航到 探索 页面以查看检测到的人。点击一个人脸集群以分配名称——之后,你可以立即搜索“妈妈的照片”或“与 Alex 的照片”。

智能搜索

得益于 CLIP 模型,你可以使用自然语言进行搜索。尝试以下查询:

  • “海滩上的日落”
  • “雪中玩耍的狗”
  • “带蜡烛的生日蛋糕”
  • “红色汽车”

搜索是语义性的——它理解概念,而不仅仅是关键词。它的工作效果令人印象深刻,完全不需要手动标记。

地图视图

如果你的照片包含 GPS 数据(大多数手机照片都有),地图视图会在世界地图上显示你的照片。这是重温旅行和查看你记忆形成地点的美好方式。

共享相册和多用户

你可以创建相册并与其他用户共享你的 Immich 实例。这对于家庭来说非常完美——每个人都有自己的账户和私人存储,但你可以共享假期、生日或日常时刻的相册。

```html

回忆

就像 Google Photos 的“今天”功能一样,Immich 会向您展示过去几年的照片。这是重新发现被遗忘的瞬间的愉快方式——只不过这一次,没有公司在挖掘这些记忆以获取数据。

为远程访问保护 Immich

现在,Immich 仅在您的本地网络上可访问。要从任何地方访问它(这对于在家外自动备份手机至关重要),您有两个主要选项:

选项 A:使用 HTTPS 的反向代理(推荐)

设置一个反向代理,如 Nginx Proxy Manager 或 Caddy,以处理 SSL 并安全地暴露 Immich:

# 示例 Caddy 配置 (Caddyfile)
photos.yourdomain.com {
    reverse_proxy localhost:2283
}

这会为您提供一个干净的 URL,如 https://photos.yourdomain.com,并通过 Let's Encrypt 自动启用 HTTPS。您需要一个域名,并将其 DNS 指向您服务器的公共 IP。

选项 B:Cloudflare Tunnel(零配置)

如果您不想在路由器上打开任何端口,Cloudflare Tunnel 会在您的服务器和 Cloudflare 的网络之间创建安全连接:

# 安装 cloudflared
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared any main' | sudo tee /etc/apt/sources.list.d/cloudflared.list
sudo apt update && sudo apt install cloudflared

# 认证并创建隧道
cloudflared tunnel login
cloudflared tunnel create immich
cloudflared tunnel route dns immich photos.yourdomain.com

# 运行隧道
cloudflared tunnel --url http://localhost:2283 run immich

这种方法不需要开放端口,也不需要动态 DNS——Cloudflare 处理一切。

保持 Immich 更新

Immich 正在积极开发,频繁更新。要更新到最新版本:

# 进入您的 Immich 目录
cd ~/immich-app

# 拉取最新镜像
docker compose pull

# 使用新镜像重启
docker compose up -d

# 清理旧镜像(可选,节省磁盘空间)
docker image prune -f

如果您在 .env 文件中固定了 IMMICH_VERSION=v2,这将拉取最新的 v2.x 版本。为了最大稳定性,您可以固定到特定版本,如 v2.1.0,并手动更新。

🔄 更新前备份您的数据库

  • 💡在重大更新之前,请始终备份您的 PostgreSQL 数据库。运行:docker exec -t immich_postgres pg_dumpall -c -U postgres > immich_backup.sql
  • 💡无论如何,您的照片都是安全的——它们作为常规文件存储在您的 UPLOAD_LOCATION 中。数据库存储元数据、面部数据和用户帐户。

性能提示

一旦您完成基础设置,这里有一些提示可以让您的 Immich 实例发挥最大效能:

启用硬件加速的机器学习

如果您的服务器有兼容的 GPU(Nvidia、Intel Quick Sync 或 AMD),您可以显著加快面部检测、物体识别和智能搜索索引的速度。将 GPU 支持添加到您的 docker-compose.yml 中:

# 对于 Nvidia GPU,添加到 immich-machine-learning 服务:
  immich-machine-learning:
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities:
                - gpu

通过 GPU 加速,处理 10,000 张照片的时间从几个小时缩短到几分钟。

外部库支持

已经在磁盘上有照片集合?您不需要重新上传所有内容。Immich 支持 外部库——只需指向现有文件夹,它将就地索引您的照片,而不会重复文件。

存储优化

Immich 默认存储原始文件(无损压缩)。如果存储空间紧张,请考虑:

  • 在您的手机上设置自动 HEIF/HEVC 存储(文件更小,质量相同)
  • 在您的存储驱动器上使用启用压缩的 ZFSBtrfs
  • 为上传位置挂载 NAS 或网络共享(适用于照片,但 适用于数据库)

从 Google Photos 迁移

如果您正在从 Google Photos 切换,这里是迁移路径:

  1. Google Takeout 导出您的数据——仅选择 Google Photos,选择 .zip 格式
  2. 下载归档——这可能需要一些时间,具体取决于您的库大小
  3. 使用 Immich CLI 批量上传:
# 安装 Immich CLI
npm i -g @immich/cli

# 与您的 Immich 服务器进行身份验证
immich login http://YOUR_SERVER_IP:2283 YOUR_API_KEY

# 上传您的 Google Takeout 照片
immich upload --recursive /path/to/google-takeout/Google\ Photos/

CLI 保留 EXIF 元数据,包括日期、GPS 坐标和相机信息。您的照片将在 Immich 中显示正确的时间戳。

常见问题

我需要多少存储?

一张典型的智能手机照片大小为 3-8 MB。对于 10,000 张照片,预算大约 50-80 GB。视频要大得多——一段 1 分钟的 4K 视频约为 300-500 MB。一个 1TB 的硬盘可以轻松容纳大多数个人收藏。

我可以在 Raspberry Pi 上使用 Immich 吗?

可以!配备 8GB RAM 的 Raspberry Pi 5 运行 Immich 表现良好。机器学习处理速度会比 x86 硬件慢,但日常使用(浏览、上传、分享)非常流畅。Pi 4 也可以使用,但预计初始处理时间会更长。

Immich 适合生产环境吗?

Immich 已显著成熟,每天有数十万人使用。开发者对其状态保持透明——虽然他们历史上提到它处于积极开发中,但 v2 版本标志着一个重要的稳定里程碑。定期备份您的数据库,您就会没问题。

多个家庭成员可以使用吗?

当然可以。为每个家庭成员创建单独的用户帐户。每个人都有自己的私人库,同时可以分享相册。管理员可以为每个用户设置存储配额。

它与 PhotoPrism 有什么区别?

PhotoPrism 是另一个优秀的自托管照片管理器,但它更专注于组织现有的收藏。Immich 从一开始就是作为 Google Photos 替代品 构建的,移动备份是其核心功能。如果自动手机备份对您很重要,Immich 是明确的选择。

接下来是什么?

您现在拥有一个私有的、自托管的照片云,其功能可与 Google Photos 相媲美,同时完全掌控您的数据。以下是一些可以探索的下一步:

  • 设置 Immich 数据库的自动备份,以防止数据丢失
  • 探索 API——Immich 提供全面的 REST API 以便进行自定义集成
  • 尝试 Immich Kiosk——将旧平板电脑变成显示您 Immich 库的数字相框
  • 浏览更多自托管应用Hostly 的应用目录——从 密码管理器反向代理,几乎所有东西都有自托管解决方案

自托管您的照片是您迈向数字独立的最重要步骤之一。您的记忆值得更好的存储,而不是存放在他人的服务器上,被算法扫描,并被订阅付费墙所束缚。

有了 Immich,这些记忆是您的——真正完全属于您。

```