Tropic Host

在 VPS 上部署 Immich:搭建自己的照片和视频云端空间

阅读约需 9 分钟
Tropic
在 VPS 上部署 Immich:搭建自己的照片和视频云端空间

Immich:在 VPS 上搭建自己的照片和视频云端空间

Immich 是一款用于存储并自动上传照片和视频的自托管服务。它提供移动应用、Web 界面、相册、智能搜索和人脸识别,并将媒体库保存在您选择的服务器上。

下面将介绍 Immich 的服务器要求、如何通过 Docker Compose 在 Ubuntu 上安装、配置 HTTPS、连接手机,以及设置外部备份。

六步部署 Immich

  1. 创建一台拥有足够内存和磁盘空间的 Linux VPS。
  2. 将一个子域名(例如 photos.example.com)解析到服务器 IP。
  3. 安装 Docker,并下载 Immich 官方配置。
  4. 指定媒体库和数据库路径,然后启动容器。
  5. 关闭对外开放的内部端口,并配置 HTTPS。
  6. 安装移动应用,并设置外部备份。

Immich 是什么

Immich 是一款开源应用,用于自行管理照片和视频资料库。照片会按时间线显示,可以整理到相册中、通过搜索找到,并从手机自动上传到服务器。

它与普通云相册服务的主要区别在于,您可以掌控服务器端。文件存放在自己的 VPS 或家庭服务器上,但可用空间、更新、安全和备份也需要由服务器所有者负责。

参数云相册服务Immich
文件存储位置服务提供商的基础设施您自己的服务器
维护由服务提供商负责由服务器所有者负责
费用按存储容量订阅VPS、磁盘和备份

Immich 本身并不等同于备份。如果照片只保存在一台 VPS 上,磁盘故障或误删除仍然可能导致整个资料库丢失。

Immich 的主要功能

  • 自动上传。 Android 和 iOS 应用可以上传所选相册中的照片和视频。默认仅使用 Wi-Fi,已存在的文件会根据校验和自动跳过。
  • 智能搜索。 可按人物、地点、日期、相机、图片中的文字以及画面内容描述进行搜索。系统会自动对人脸分组,之后可以为其命名。
  • 相册和共享。 支持多个用户、共享相册、伴侣共享,以及带密码和有效期的公开链接。
  • 地图和元数据。 Immich 可以读取 EXIF 信息、显示拍摄地点、生成回忆,并支持收藏、归档和外部资料库。

首次导入时,机器学习任务对 CPU 和内存的占用尤其明显。缩略图和索引生成完成后,日常运行负载通常会降低。

Immich 的服务器要求

当前版本的官方要求如下:

  • 64 位 Linux 或类 Unix 系统;
  • 至少 2 个 CPU 核心,推荐 4 个;
  • 至少 6 GB 内存,推荐 8 GB;
  • 安装带有 docker compose 插件的 Docker Engine;
  • 使用本地 SSD 存储 PostgreSQL 数据库;
  • 为原始文件、缩略图和转码视频预留空间。

如果关闭机器学习功能,Immich 可以在 4 GB 内存的服务器上运行。若要使用人脸识别和智能搜索,建议一开始就选择 8 GB 内存。

缩略图和转码文件通常会额外占用媒体库容量的 10–20%。对于 200 GB 的资料库,至少应准备 240–260 GB 空间。数据库目录 DB_DATA_LOCATION 应放在本地 SSD 上,而不是网络磁盘上。

一个实用的入门配置是:4 vCPU、8 GB 内存、Ubuntu 24.04 LTS,以及比原始媒体库大 20–30% 的 SSD。独立显卡不是必需的,但可以加快大型资料库的处理速度。

如何在 VPS 上安装 Immich

以下示例使用 Ubuntu 24.04 和子域名 photos.example.com

1. 配置 DNS 并准备 Ubuntu

创建一条指向 VPS IPv4 地址的 DNS A 记录。然后通过 SSH 连接:

ssh root@SERVER_IP
apt update && apt upgrade -y

ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

在确认新的 SSH 连接可以正常建立之前,不要关闭当前会话。

2. 安装 Docker 和 Docker Compose

apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
  -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc

tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

apt update
apt install -y docker-ce docker-ce-cli containerd.io \
  docker-buildx-plugin docker-compose-plugin
docker compose version

必须使用 docker compose 命令:过时的 docker-compose 已不再受该项目支持。

3. 下载并配置 Immich

mkdir -p /opt/immich /srv/immich-data
cd /opt/immich

curl -L -o docker-compose.yml \
  https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
curl -L -o .env \
  https://github.com/immich-app/immich/releases/latest/download/example.env

打开配置文件:

nano /opt/immich/.env

修改主要参数:

UPLOAD_LOCATION=/srv/immich-data
DB_DATA_LOCATION=/opt/immich/postgres
TZ=Europe/Berlin
DB_PASSWORD=REPLACE_WITH_A_LONG_PASSWORD

请填写您自己的时区。PostgreSQL 密码应由拉丁字母和数字组成;可使用 openssl rand -hex 24 命令生成随机值。其他行请保留当前 example.env 文件中的内容。

4. 关闭内部端口并启动容器

docker-compose.yml 中找到 immich-server 服务的端口:

ports:
  - '2283:2283'

将其替换为:

ports:
  - '127.0.0.1:2283:2283'

此后,该端口只能由 VPS 本机访问。启动服务:

cd /opt/immich
docker compose up -d
docker compose ps

如需排查问题,请使用 docker compose logs --tail=200

5. 通过 Caddy 配置 HTTPS

apt install -y caddy

cat > /etc/caddy/Caddyfile <<'EOF'
photos.example.com {
    reverse_proxy 127.0.0.1:2283
}
EOF

caddy validate --config /etc/caddy/Caddyfile
systemctl reload caddy

如果 DNS 已指向 VPS,并且 80 与 443 端口可访问,Caddy 会自动申请证书。Immich 必须部署在域名或子域名的根路径;不支持 example.com/immich 这种地址。

6. 创建管理员并连接手机

打开 https://photos.example.com。第一个注册的用户会成为管理员,并可创建其他账户。

从 App Store 或 Google Play 安装 Immich。在登录页面输入不带 /api 的地址:

https://photos.example.com

选择需要同步的相册并启用备份。首次导入可能需要一些时间:服务器需要生成缩略图、识别人脸、建立搜索索引并处理视频。

更新 Immich

更新前请阅读版本说明,尤其是在升级到新的主要版本时:

cd /opt/immich
docker compose pull
docker compose up -d
docker image prune

先更新移动应用,再更新服务器。除非官方提供单独说明,否则数据库可能不支持回滚到旧版本。

备份 Immich

Immich 会自动创建 PostgreSQL 转储,但其中只包含数据库和元数据,不包含照片和视频。为了能够完整恢复,请备份:

  • 整个 /srv/immich-data 目录;
  • /opt/immich/.envdocker-compose.yml
  • Caddy 配置。

保存在同一台 VPS 上的副本无法防止磁盘故障或服务器被删除。请将数据发送到另一台服务器、NAS 或对象存储,并遵循 3-2-1 备份原则。应定期执行恢复测试,而不只是确认备份文件存在。

如何为 Immich 选择 VPS

若要完整使用人脸识别和智能搜索,建议选择至少配备 4 vCPU 和 8 GB 内存的 VPS。磁盘容量应根据媒体库大小计算,并为缩略图、视频以及资料库后续增长预留空间。

带有固定 IP 和 SSD 存储的 tropic.host Linux VPS 适合运行 Immich。可以从 8 GB 内存配置起步,并在资料库增长后增加资源。PostgreSQL 数据库应存放在高速本地磁盘上,而备份应保存在这台 VPS 之外。

VPS 便于从任何网络全天候访问。对于数 TB 的资料库,家庭服务器可能更便宜,但供电、外部访问和冗余都需要自行解决。

Immich 的局限性

自托管并不能自动保证可靠性。弱密码、对外开放的 2283 端口、过时的容器或缺少外部备份,都会增加数据丢失风险。

Immich 也并不是 Google Photos 或 iCloud 的完全替代品:编辑能力和后台同步机制有所不同,分析速度还取决于硬件。在迁移唯一一份照片资料库之前,请先用一个小型测试库验证服务。

简要总结

Immich 可以帮助您搭建自己的照片库,并提供手机自动上传、相册、人脸识别、搜索和共享功能。对于当前版本,建议准备一台拥有 4 个核心、8 GB 内存,以及至少多出 20–30% 可用空间的 SSD Linux VPS。

安装完成后,请配置 HTTPS、更新机制,并对媒体目录和数据库进行外部备份。真正保护照片不丢失的是备份,而不是自托管本身。

FAQ

Immich 免费吗?

Immich 服务器是开源软件,无需强制订阅即可运行。但 VPS、域名、磁盘空间和备份仍需付费。

Immich 需要多少内存?

官方最低要求为 6 GB 内存,推荐 8 GB。若只有 4 GB,则需要关闭机器学习功能。

可以不使用域名安装 Immich 吗?

技术上可以,但如果需要长期从手机访问,最好使用域名和 HTTPS。这样可以保护登录过程和文件传输。

Immich 能代替照片备份吗?

不能。请将媒体库和数据库分别复制到另一台设备或其他存储位置。

可以迁移现有照片资料库吗?

可以。文件可以通过 Web 界面或 CLI 上传,也可以将目录作为外部资料库连接。大规模导入前,请先复制一份原始数据。