PhotoPrism 用 Go 编写,擅长把杂乱的照片库自动整理成可检索的相册:AI 打标、人脸聚类、地点地图、RAW 预览都很成熟。这篇教程用官方 Docker 镜像,在一台 2 核 4GB 机器上完成部署。
一、它适合谁
如果你有一块装满多年照片的移动硬盘,想要「丢进去就能按人、按地点、按内容找」,PhotoPrism 比 Immich 更专注整理;如果你要的是手机拍完自动上传,Immich 更合适。两者也可以并存。
二、镜像与目录规划
| 项目 | 值 |
|---|---|
| 镜像 | photoprism/photoprism:latest(Docker Hub) |
| Web 端口 | 2342 |
| 原图目录 | ./originals → /photoprism/originals |
| 导入目录 | ./import → /photoprism/import |
| 数据目录 | ./storage → /photoprism/storage |
默认使用 SQLite,几万张照片没问题;超过十万张或多人同时检索,再换 MariaDB。
三、Compose 部署
mkdir -p /opt/photoprism && cd /opt/photoprism
mkdir -p originals import storage
新建 docker-compose.yml:
services:
photoprism:
image: photoprism/photoprism:latest
container_name: photoprism
restart: unless-stopped
ports:
- "2342:2342"
environment:
PHOTOPRISM_ADMIN_USER: "admin"
PHOTOPRISM_ADMIN_PASSWORD: "请替换成强密码"
PHOTOPRISM_SITE_URL: "https://photos.example.com/"
PHOTOPRISM_SITE_TITLE: "家庭相册"
PHOTOPRISM_SITE_CAPTION: "Our Family Photos"
PHOTOPRISM_DEFAULT_LOCALE: "zh"
PHOTOPRISM_ORIGINALS_LIMIT: 100000
PHOTOPRISM_HTTP_COMPRESSION: "gzip"
PHOTOPRISM_LOG_LEVEL: "info"
TZ: "Asia/Shanghai"
# 让容器以宿主机用户身份写文件,避免权限问题
PHOTOPRISM_UID: 1000
PHOTOPRISM_GID: 1000
working_dir: "/photoprism"
volumes:
- "./originals:/photoprism/originals"
- "./import:/photoprism/import"
- "./storage:/photoprism/storage"
docker compose up -d
docker compose logs -f photoprism
浏览器打开 http://服务器IP:2342,用 admin 和你设置的密码登录。
四、导入与索引
- 把照片拷进
./originals(保持原有目录结构),或在 Web 里用「上传 / 导入」。 - 执行索引,让 PhotoPrism 生成缩略图、EXIF、地点和 AI 标签:
docker compose exec photoprism photoprism index
# 只处理新增照片
docker compose exec photoprism photoprism index --cleanup
首次索引几万张照片会跑很久,建议在夜间执行;索引过程可在「库 → 索引」里看进度。

五、反向代理与 HTTPS
server {
listen 443 ssl http2;
server_name photos.example.com;
ssl_certificate /etc/letsencrypt/live/photos.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/photos.example.com/privkey.pem;
client_max_body_size 2000M;
location / {
proxy_pass http://127.0.0.1:2342;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
六、备份与升级
- 备份:
originals(原图)+storage(数据库、缩略图、设置)。只备份 originals 会丢失相册、标签、人脸等元数据。 - 升级:
docker compose pull && docker compose up -d,每次先看官方 Release Notes,跨大版本按升级说明执行。 - 迁移:把三个目录整体拷到新机器,用同样的 Compose 启动即可。
七、常见问题
照片显示「无权限」或无法生成缩略图? 容器内用户 UID 与宿主机文件属主不一致,执行 sudo chown -R 1000:1000 originals import storage,或把 PHOTOPRISM_UID/GID 改成你的用户。
中文界面在哪开? 设置里 PHOTOPRISM_DEFAULT_LOCALE=zh 只影响默认值,登录后可在用户设置里切换。
要不要上 MariaDB? 单人几万张用 SQLite 足够;多人同时搜索、照片超过十万张再换 MariaDB,迁移成本不高。
八、小结
PhotoPrism 的优势是「整理」而不是「自动备份」。把它指向你的老照片硬盘,跑一次索引,多年的照片就能按人、地点、内容重新被看见。
相关阅读:Immich 部署教程 · 2026 开源家庭相册横评


