🚀 使用 Docker Compose 快速部署 Immich(自托管照片视频备份方案)Immich 是一款功能强大、自我托管(Self-Hosted)的个人照片和视频备份解决方案,它提供了类似 Google Photos 的用户体验。本文将指导您如何在 Ubuntu Server 192.168.5.126 上,使用 Docker Compose 和 Caddy 反向代理来部署 Immich 服务。
| 组件 | 描述 | 路径/地址 |
| 操作系统 | Ubuntu Server | 运行 Docker 的宿主机 |
| 宿主机 IP | 假设的本地 IP 地址 | 192.168.5.126 |
| Immich 配置文件 | Docker Compose 编排文件 | /opt/docker-stack/immchi/compose.yaml |
| Immich 数据目录 | 存储照片、视频和数据库等数据 | /opt/docker-stack/immchi/immchi-data |
| 反向代理 | Caddy Server,负责 HTTPS/SSL 处理 | /opt/docker-stack/caddy/compose.yaml |
🌟 步骤一:环境准备与目录创建1. 安装 Docker 及 Docker Compose在您的 Ubuntu Server 上,如果尚未安装,请执行以下命令:Bash# 安装 Docker
sudo apt update
sudo apt install docker.io -y
启动 Docker 服务
sudo systemctl start docker
sudo systemctl enable docker
安装 Docker Compose V2 (推荐)
sudo apt install docker-compose-plugin -y
- 创建核心目录结构根据您的规划,创建 Immich 的配置文件和数据存储目录。Bash# 创建配置目录和数据目录
mkdir -p /opt/docker-stack/immchi
mkdir -p /opt/docker-stack/immchi/immchi-data
⚙️ 步骤二:Immich 的 Docker Compose 配置Immich 的部署较为复杂,涉及到多个服务(如 Web、Microservices、Postgres 数据库、Redis 缓存)。官方提供了一个详细的 docker-compose.yml 文件。1. 创建 compose.yaml 文件使用您指定的路径创建配置文件:/opt/docker-stack/immchi/compose.yaml。Bashcd /opt/docker-stack/immchi
nano compose.yaml - 粘贴 Immich 配置将 Immich 的官方配置(可能需要从 Immich GitHub 仓库获取最新版本)粘贴到 compose.yaml 中,并修改卷挂载部分以匹配您的路径。【关键修改点示例】请确保配置中的 volumes 部分指向您的数据目录:YAML# … (配置文件的中间部分)
postgres 数据库服务
services:
database:
# …
volumes:
- /opt/docker-stack/immchi/immchi-data/postgres:/var/lib/postgresql/data
immich-microservices:
# …
volumes:
- /opt/docker-stack/immchi/immchi-data/upload:/usr/src/app/upload
immich-server:
# …
volumes:
- /opt/docker-stack/immchi/immchi-data/upload:/usr/src/app/upload
…
提示: Immich 官方配置会使用 .env 文件来管理环境变量(如数据库密码)。请确保在 /opt/docker-stack/immchi/ 目录下放置一个正确的 .env 文件。🌐 步骤三:启动 Immich 服务在 compose.yaml 文件所在的目录执行启动命令:Bashcd /opt/docker-stack/immchi
docker compose up -d
服务启动后,Immich 容器内部会通过默认端口(例如 3001)对外提供服务。由于我们使用 Caddy 反代,您无需在宿主机上映射这些端口到公网。🔒 步骤四:配置 Caddy 反向代理 (处理 HTTPS)为了实现安全访问(HTTPS)和使用域名访问,我们将配置 Caddy 来反向代理 Immich 的 Web 服务。1. Caddy 配置文件路径您的 Caddy 配置位于 /opt/docker-stack/caddy/compose.yaml。假设您的 Caddy 服务已通过 Docker Compose 启动,且位于一个共享的网络(例如 proxy_network)中。2. Caddyfile 配置示例您需要在 Caddy 的配置文件 Caddyfile 中添加 Immich 的反代规则。假设您希望通过域名 photos.yourdomain.com 访问 Immich。Bash# 位于 /opt/docker-stack/caddy/Caddyfile
photos.yourdomain.com {
# 自动处理 HTTPS 证书
reverse_proxy immich-server:3001
# Immich Web 的 WebSocket 需求
reverse_proxy /api/socket immich-websocket:3002
}
注意: 这里的 immich-server 和 immich-websocket 是 Docker Compose 中 Immich 服务的容器名,前提是 Caddy 和 Immich 都在同一个 Docker 自定义网络中。3. 重启 CaddyBashcd /opt/docker-stack/caddy
docker compose restart
🎉 步骤五:访问服务现在,您可以通过以下方式访问您的 Immich 服务:浏览器访问: 打开浏览器,输入您配置的域名 https://photos.yourdomain.com。首次登录: 首次访问时,Immich 会引导您创建管理员账户。App 访问: 在手机上下载 Immich 客户端,并使用 https://photos.yourdomain.com 作为服务器地址进行连接。补充与优化建议A. Docker 网络优化为了让 Caddy 容器能够通过服务名 (immich-server) 访问 Immich 容器,强烈建议将它们部署在同一个自定义的 Docker 网络中:在 Immich 的 compose.yaml 和 Caddy 的 compose.yaml 文件底部,添加相同的 networks 配置:YAML# 位于 compose.yaml 底部
networks:
default:
external: true
name: proxy_network
B. 数据备份与维护虽然您手动指定了数据卷,但定期备份仍然至关重要。备份目标: 定期备份整个数据目录 /opt/docker-stack/immchi/immchi-data。方法: 在服务停止时(或使用数据库容器内置的备份工具)对该目录进行压缩和远程存储。
评论(没有评论)