部署实战3 分钟0 次阅读

Piwigo 部署教程:给全家人用的老牌开源相册

Piwigo 的强项是相册管理与权限模型。本文用官方 Compose 部署,走完安装向导、成员分组、相册授权与反代配置。

Piwigo 部署教程:给全家人用的老牌开源相册

Piwigo 从 2002 年维护至今,是开源相册里的老牌项目。它不靠 AI 吸引人,而是靠扎实的相册管理、用户组权限和 200 多个插件主题。如果你们家是「一个相册,多个成员,各看各的」,Piwigo 的权限模型比大多数新项目都细。

一、镜像与端口

项目值
应用镜像piwigo/piwigo:latest(Docker Hub)
数据库docker.io/library/mariadb:lts
Web 端口容器 80,宿主机默认 8080
数据目录./piwigo-data/piwigo、./piwigo-data/mysql

二、下载官方 Compose 与 .env

mkdir -p /opt/piwigo && cd /opt/piwigo
curl -O https://raw.githubusercontent.com/Piwigo/piwigo-docker/refs/heads/main/compose.yaml
mv compose.yaml docker-compose.yml

新建 .env(密码用随机字符串,别用示例值):

piwigo_port=8080
db_user_password=请替换成随机强密码
timezone=Asia/Shanghai
PIWIGO_UID=1000
PIWIGO_GID=1000

Compose 内容很直接:

services:
  piwigo-main:
    image: piwigo/piwigo:latest
    restart: always
    environment:
      - TZ=${timezone}
      - PIWIGO_UID=${PIWIGO_UID}
      - PIWIGO_GID=${PIWIGO_GID}
    ports:
      - ${piwigo_port}:80
    depends_on:
      - piwigo-db
    volumes:
      - ./piwigo-data/piwigo:/var/www/html/piwigo/
      - ./piwigo-data/scripts:/usr/local/bin/scripts/

  piwigo-db:
    image: docker.io/library/mariadb:lts
    restart: always
    environment:
      - MARIADB_RANDOM_ROOT_PASSWORD=true
      - MARIADB_USER=piwigodb_user
      - MARIADB_DATABASE=piwigodb
      - MARIADB_PASSWORD=${db_user_password}
      - TZ=${timezone}
    volumes:
      - ./piwigo-data/mysql:/var/lib/mysql

三、启动与安装向导

docker compose up -d
docker compose logs -f piwigo-main

打开 http://服务器IP:8080,Piwigo 会检测到尚未安装,跳转到安装页。数据库填写:

字段值
主机piwigo-db:3306
用户piwigodb_user
密码.env 里的 db_user_password
数据库名piwigodb
表前缀piwigo_

再填管理员账号、密码和邮箱,点「开始安装」。完成后用管理员登录,进入管理面板。

四、建立相册与权限

  1. 「相册 → 添加相册」,建立「2026 春节」「孩子成长」等目录。
  2. 上传照片:网页上传,或把文件放进服务器目录后用「工具 → 同步」批量导入。
  3. 「用户 → 添加用户」创建家庭成员,把用户加入组。
  4. 「相册 → 管理 → 权限」按组授权:谁能看、谁能上传。
  5. 安装主题(如 Bootstrap Darkroom)和水印、地图等插件,按需开启。
Piwigo 相册首页
Piwigo 的相册首页与浏览视图

五、反向代理与 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:8080/;
        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;
    }
}

如果放在子路径(如 /gallery),加 proxy_set_header X-Forwarded-Prefix /gallery;,官方文档有完整示例。

六、备份与升级

  • 备份 piwigo-data/piwigo(程序与上传图片)和 piwigo-data/mysql(数据库)。
  • 升级:先备份,再 docker compose pull && docker compose up -d;跨大版本按官方 Docker Update 文档执行数据库升级。
  • 照片多时建议把 ./piwigo-data/piwigo/_data 放到独立磁盘。

七、常见问题

上传大照片失败? 检查 PHP 的 upload_max_filesize、post_max_size 和反代的 client_max_body_size。

中文界面? 安装后在「管理 → 语言」里启用中文并设为默认。

有没有手机自动备份? Piwigo 本身没有官方自动备份 App,可用 FTP 同步、Web 上传或第三方客户端;要自动备份优先选 Immich。

八、小结

Piwigo 的强项是「管理」:成员、相册、权限、插件都能细调。它更像一个家庭内部的照片门户,而不是手机相册的云端备份盘。

相关阅读:Lychee 部署教程 · 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