Google Photos 非常方便——直到你达到存储限制,注意到你的 AI 训练的面孔出现在广告中,或者意识到 Google 可以随时更改其条款。在 2024 年,Google 减少了免费存储并再次提高了价格。许多用户开始询问:有没有办法在不放弃我的照片的情况下获得相同的体验?
答案是 Immich——一个开源、自托管的照片和视频管理平台,外观和感觉与 Google Photos 非常相似。它提供从手机的自动备份、人脸识别、智能搜索、地图视图、共享相册,甚至回忆——所有这些都在你自己的硬件上运行。
在本指南中,我们将从头开始使用 Docker Compose 设置 Immich。到最后,你将拥有一个完全功能的私人照片云,完全由你控制。
为什么选择 Immich?
在我们深入设置之前,让我们了解一下 Immich 与其他自托管照片解决方案(如 PhotoPrism 或 LibrePhotos)的不同之处:
| 功能 | Immich | Google 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 真正闪光的地方。从以下位置安装移动应用:
- Apple App Store(iOS)
- Google Play Store(Android)
- F-Droid(适用于去谷歌化的 Android 用户)
当你打开应用时,输入你的服务器 URL (http://YOUR_SERVER_IP:2283) 并使用你刚创建的账户登录。
要启用自动备份:
- 点击右上角的 云图标
- 选择要备份的相册(相机、截图、WhatsApp 等)
- 切换 “启用备份”
- 可选地启用 “后台备份” 以便在应用关闭时也能同步
你的照片将立即开始上传。根据你的库的大小,这次初始同步可能需要一段时间——如果需要,可以让它过夜运行。
步骤 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 存储(文件更小,质量相同)
- 在您的存储驱动器上使用启用压缩的 ZFS 或 Btrfs
- 为上传位置挂载 NAS 或网络共享(适用于照片,但 不 适用于数据库)
从 Google Photos 迁移
如果您正在从 Google Photos 切换,这里是迁移路径:
- 从 Google Takeout 导出您的数据——仅选择 Google Photos,选择 .zip 格式
- 下载归档——这可能需要一些时间,具体取决于您的库大小
- 使用 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,这些记忆是您的——真正完全属于您。
```