什么是 PG Back Web ?
PG Back Web
🐘 使用用户友好的Web
界面轻松进行PostgreSQL
备份!🌐💾。PG Back Web
不仅仅是另一个备份工具。借助PG Back Web
,用户可以通过受PGP
加密保护的直观Web
界面轻松安排和创建备份。功能包括计划备份、状态监控、从Web
即时下载、S3
存储、加密和暗模式。根据该项目的repo
,一键恢复和API
等功能即将推出。
软件特征
- 📦直观的网络界面:轻松管理您的备份,无需数据库专业知识。
- 📅计划备份:设置后即可忘记。
PG Back Web
会处理其余的事情。 - 📈备份监控:通过执行日志可视化备份状态。
- 📤即时下载:在需要时,直接从
Web
界面访问您的备份。 - 🖥多版本支持:兼容
PostgreSQL 13
、14
、15
和16
。 - 📁 S3 存储:根据需要添加任意数量的
S3
存储桶,以获得更大的灵活性。 - 🔒安全第一:
PGP
加密保护您的敏感信息。 - 🛡️开源信任:
MIT
许可下的开源代码,由强大的pg_dump
工具支持。 - 🌚暗黑模式:因为我们都喜欢暗黑模式。
- 🎯为每个人设计:从个人开发者到团队。
- ⏱️节省时间:自动备份,不再需要手动任务。
安装
在群晖上以 Docker 方式安装。
在注册表中搜索 pgbackweb
,选择第一个 eduardolat/pgbackweb
,版本选择 latest
。
最近不知道是调整了算法还是什么原因,总之搜出来都是乱七八糟的
本文写作时,
latest
版本对应为0.1.2
;
docker cli 安装
如果你熟悉命令行,可能用 docker cli
更快捷
步骤1
启动一个 PostgreSQL
容器,这个容器是给 PG Back Web
使用的,用于记录用户信息、数据库连接信息、存储信息、备份计划等
# 新建文件夹 pgbackweb 和 子目录
mkdir -p /volume1/docker/pgbackweb/{data,minio}
# 进入 pgbackweb 目录
cd /volume1/docker/pgbackweb
# 运行容器 PostgreSQL
docker run -d \
--restart unless-stopped \
--name pbw-postgres \
-p 5433:5432 \
-v $(pwd)/data:/var/lib/postgresql/data \
-e POSTGRES_DB=pgbackweb \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=password \
postgres:15
环境变量:
POSTGRES_DB
:数据库库名;POSTGRES_USER
:数据库用户;POSTGRES_PASSWORD
:数据库用户对应的密码;
步骤2
启动一个 MinIO
容器,并创建一个存储桶,用于存储数据库的备份
文章传送门:拥有自己的MinIO对象存储服务器
# 运行容器 MinIO
docker run -d \
--restart unless-stopped \
--name pbw-minio \
--entrypoint sh \
-p 9900:9000 \
-p 9901:9090 \
-v $(pwd)/minio:/data \
-e MINIO_ROOT_USER=root \
-e MINIO_ROOT_PASSWORD=password \
minio/minio \
-c 'minio server /data --console-address ":9090"'
下面👇的命令将在 pbw-minio
容器内部执行 mc
命令,其中:
/usr/bin/mc alias set myminio http://localhost:9000 root password
用于设置MinIO
的别名和凭据。/usr/bin/mc mb myminio/db-backup
用于创建名为db-backup
的存储桶。
# 创建名为 db-backup 的存储桶
docker exec -it pbw-minio sh -c "/usr/bin/mc alias set myminio http://localhost:9000 root password && /usr/bin/mc mb myminio/db-backup"
步骤3
启动 pgbackweb
容器
# 运行容器
docker run -d \
--restart unless-stopped \
--name pbw-pgbackweb \
-p 8085:8085 \
-e PBW_ENCRYPTION_KEY=my_secret_key \
-e PBW_POSTGRES_CONN_STRING="postgresql://postgres:password@192.168.0.197:5433/pgbackweb?sslmode=disable" \
eduardolat/pgbackweb:latest
环境变量:
PBW_ENCRYPTION_KEY
:您的加密密钥。生成一个强密钥并将其存储在安全的地方,因为PG Back Web
会使用它来加密敏感数据,例如:数据库凭证、秘钥等。PBW_POSTGRES_CONN_STRING
:将存储PG Back Web
数据的PostgreSQL
数据库的连接字符串。
docker-compose 安装
采用 docker-compose
安装,将下面的内容保存为 docker-compose.yml
文件
version: '3'
services:
pgbackweb:
image: eduardolat/pgbackweb:latest
container_name: pbw-pgbackweb
ports:
- "8085:8085" # Access the web interface at http://localhost:8085
environment:
PBW_ENCRYPTION_KEY: "my_secret_key"
PBW_POSTGRES_CONN_STRING: "postgresql://postgres:password@postgres:5432/pgbackweb?sslmode=disable"
depends_on:
postgres:
condition: service_healthy
postgres:
image: postgres:15
container_name: pbw-postgres
# ports:
# - "5433:5432"
environment:
POSTGRES_DB: pgbackweb
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
volumes:
- ./data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 5s
timeout: 5s
retries: 5
minio:
image: minio/minio
container_name: pbw-minio
ports:
- "9900:9000"
- "9901:9090"
environment:
MINIO_ROOT_USER: "root"
MINIO_ROOT_PASSWORD: "password"
volumes:
- ./minio:/data
command: minio server /data --console-address ":9090"
然后执行下面的命令
# 新建文件夹 pgbackweb 和 子目录
mkdir -p /volume1/docker/pgbackweb/{data,minio}
# 进入 pgbackweb 目录
cd /volume1/docker/pgbackweb
# 将 docker-compose.yml 放入当前目录
# 一键启动
docker-compose up -d
# 创建名为 db-backup 的存储桶
docker exec -it pbw-minio sh -c "/usr/bin/mc alias set myminio http://localhost:9000 root password && /usr/bin/mc mb myminio/db-backup"
如果你细心的话,会发现 PBW_POSTGRES_CONN_STRING
的值在 docker cli
和 docker-compose
安装时,存在差异,这是
-
docker cli
采用了独立安装的容器,各容器并不在一个网络中,所以PostgreSQL
的地址用了主机IP
+ 本机端口的方式 -
docker-compose
各容器默认在同一个pgbackweb_default
网络中,所以可以用service name
+ 容器端口的方式
运行
在浏览器中输入 http://群晖IP:8085
,第一次会看到注册界面
创建成功后,还需要登录
主界面
创建一个数据库
以
Comentario
的数据库为例
Name
:根据需要填写,主要用于区分不同的数据库;Version
:是指要连接的数据库的版本,Comentario
用的是postgres:16-alpine
;Connection string
:根据Comentario
的设置,连接字符串是postgresql://postgres:postgres@192.168.0.197:5434/comentario
设置完成后点 Test connection
进行测试,如果看到连接成功,就可以点 Save
保存了
接下来需要设置 Destinations
Name
:易于识别就行;Bucket name
:要写入我们前面创建的存储桶的名字;Endpoint
:Minio
的服务器地址;Region
:因为不能为空,可以填us-east-1
;Access key
:如果没有单独创建的话,就用MINIO_ROOT_USER
的值也行;Secret key
:如果没有单独创建的话,就用MINIO_ROOT_PASSWORD
的值也行;
如果测试没问题,点 Save
保存
接下来就可以备份了
Name
:易于识别即可;Database
:从下拉框中选取;Destination
:从下拉框中选取;Cron expression
:示例的cron
表达式意味着任务将在每天的23:00
(即晚上11
点)执行;Time zone
:下拉找到Asia/Shanghai
;Destination directory
:期望保存的路径;Retention days
:备份的天数,如果设置为0
,将无限期保留它们;Activate backup
:是否激活备份;Options
:一些可选项,不知道怎么设,保持默认就行;
点 Save
保存之后
点闪电图标,直接备份
查看执行的状态
参考文档
eduardolat/pgbackweb: 🐘 Effortless PostgreSQL backups with a user-friendly web interface! 🌐💾
地址:https://github.com/eduardolat/pgbackweb