部署实战3 分钟0 次阅读

PhotoPrism 部署教程:Docker 三步搭好 AI 相册

PhotoPrism 用 Go 编写,擅长把杂乱照片整理成可检索的相册。本文用官方镜像完成部署、索引、反代与备份。

PhotoPrism 部署教程:Docker 三步搭好 AI 相册

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 和你设置的密码登录。

四、导入与索引

  1. 把照片拷进 ./originals(保持原有目录结构),或在 Web 里用「上传 / 导入」。
  2. 执行索引,让 PhotoPrism 生成缩略图、EXIF、地点和 AI 标签:
docker compose exec photoprism photoprism index
# 只处理新增照片
docker compose exec photoprism photoprism index --cleanup

首次索引几万张照片会跑很久,建议在夜间执行;索引过程可在「库 → 索引」里看进度。

PhotoPrism 照片网格
PhotoPrism 的图片网格、筛选与搜索

五、反向代理与 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 开源家庭相册横评

MORE / 03

继续阅读

ChronoFrame Docker Deployment: A One-Command Self-Hosted Portfolio
部署实战

ChronoFrame Docker Deployment: A One-Command Self-Hosted Portfolio

2026.11.14 · 3 分钟

Piwigo Docker Deployment: The Veteran Open-Source Family Gallery
部署实战

Piwigo Docker Deployment: The Veteran Open-Source Family Gallery

2026.11.14 · 3 分钟

Lychee Docker Deployment: A Beautiful Family Photo Album
部署实战

Lychee Docker Deployment: A Beautiful Family Photo Album

2026.11.14 · 3 分钟

星河码客

发现和分享优质开源项目,传承互联网精神,为开发者服务。

关于本站

联系我们

微信/广告合作:ITcloub(备注星河码客)

免责声明:本站资源版权归原作者所有,仅供学习与交流。如有侵权,请通过「关于我们 - 侵权投诉」联系删除。

Powered by Nuxt · Deployed on Cloudflare