Immich:在 VPS 上搭建自己的照片和视频云端空间
Immich 是一款用于存储并自动上传照片和视频的自托管服务。它提供移动应用、Web 界面、相册、智能搜索和人脸识别,并将媒体库保存在您选择的服务器上。
下面将介绍 Immich 的服务器要求、如何通过 Docker Compose 在 Ubuntu 上安装、配置 HTTPS、连接手机,以及设置外部备份。
六步部署 Immich
- 创建一台拥有足够内存和磁盘空间的 Linux VPS。
- 将一个子域名(例如
photos.example.com)解析到服务器 IP。 - 安装 Docker,并下载 Immich 官方配置。
- 指定媒体库和数据库路径,然后启动容器。
- 关闭对外开放的内部端口,并配置 HTTPS。
- 安装移动应用,并设置外部备份。
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/.env和docker-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 上传,也可以将目录作为外部资料库连接。大规模导入前,请先复制一份原始数据。
