指南 /

安装

/

Docker镜像

Docker镜像

使用本指南,您将下载一个包含所有必要内容的compose文件,以便使用Docker部署您自己的Piwigo。


本指南假设您已能通过SSH连接到服务器,并且已安装Docker。若非如此,请按照官方Docker文档此处进行操作

步骤1 - 安装容器

连接到您的服务器并创建一个名为Piwigo的文件夹:

  • Piwigo/piwigo-docker下载compose.yaml文件

  • 您可以使用curl在终端内直接下载该文件

    curl -O "https://raw.githubusercontent.com/Piwigo/piwigo-docker/refs/heads/main/compose.yaml"

  • 创建一个名为.env的文件,该文件需包含以下内容,等号后是一个不含引号的强密码。

  • piwigo_port=8080
    db_user_password=
    timezone=
    PIWIGO_UID=
    PIWIGO_GID=

    您可以使用以下命令使用truncate来生成一个有效的密码:

    printf $(tr -dc '[:alnum:]' </dev/urandom | head -c64)"\n"

    你可通过编辑 piwigo_port 文件修改暴露的端口号

    PIWIGO_UIDPIWIGO_GID 字段中,设置你要授权访问Piwigo文件夹的用户UID和用户组GID。

用以下命令启动你的容器 docker compose up -d

步骤2 - 配置反向代理

您需要为Piwigo Docker使用外部反向代理;以下是一些Nginx配置示例:

Piwigo支持在域名、子域名和/或子路径上托管;无论您选择哪种方式,建议不要在网址中使用Piwigo的版本号。

server {
	listen 80;
	server_name my_domain.tld;
	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;
	}
}

如果你打算在子路径上托管Piwigo(例如:my_domain.tld/gallery),你需要通过添加proxy_set_header X-Forwarded-Prefix /my_subpath来将其转发到容器

server {
	listen 80;
	server_name my_domain.tld;
	location /gallery/ {
		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;
		proxy_set_header X-Forwarded-Prefix /gallery;
    }
}

第三步:配置

一旦容器启动且反向代理配置完成,请打开网页浏览器并访问您托管Piwigo的网址。Piwigo会检测到尚未安装任何内容,并自动跳转至安装页面

如果你在.env文件中更改了piwigo_port,那么你也需要相应地修改proxy_pass部分。请记住,Docker会默认忽略所有防火墙规则。

使用以下内容填写MySQL数据库连接设置 :

  • 主机 : piwigo-db:3306
  • 用户 : piwigodb_user
  • 密码 : 使用您在.env文件中写入的密码
  • 数据库名称 : piwigodb
  • Piwigo数据表前缀 : piwigo_

需要输入以下信息以配置管理员账户:

  • 用户名
  • 需要输入两次的密码
  • 你的电子邮件地址,以便访客联系你

点击“开始安装”按钮

安装界面

安装结束后,你会看到安装成功或失败的提示。

安装成功

第四步:首次访问

安装成功后

首次打开Piwigo

还有其他问题吗?

你可以在社区里提问,也可以在文档中寻找答案