一、 前言
宝塔面板(aaPanel)官方的 “AWS S3” 插件默认只支持亚马逊 S3 服务,并未提供自定义 Endpoint(端点)的选项,这导致我们无法直接使用其他兼容 S3 API 的第三方对象存储服务。
Backblaze 是一家知名的云存储提供商,其 B2 Cloud Storage 产品提供了 S3 兼容 API,并且每月有 10GB 的免费存储额度。这个额度对于中小型网站的日常备份来说绰绰有余。
本文将引导你通过修改插件的源代码,使其支持 Backblaze B2,从而实现免费、可靠的异地备份。
二、准备工作:获取 Backblaze B2 凭证
在修改插件之前,你需要先从 Backblaze B2 获取必要的配置信息:
- Endpoint URL: 在 B2 创建一个存储桶(Bucket)后,在 “Buckets” 页面找到你的桶,点击桶名,即可看到 S3 Endpoint 地址,例如
s3.us-west-004.backblazeb2.com
。 - Bucket Name: 你创建的存储桶的名称。
- Key ID 和 Application Key: 前往 “Account” -> “App Keys” 页面,生成一个新的 Application Key。请务必记下生成的
keyID
和applicationKey
。
三、 核心步骤:修改插件文件
1.定位文件
使用宝塔面板的文件管理器或 SSH 登录服务器,找到插件的配置文件。路径为:
/www/server/panel/plugin/aws_s3/s3lib/client/aws_s3.py
2.修改代码(建议先备份原文件)
打开 aws_s3.py
文件,搜索定位到 def build_auth(self):
这个方法。在 aws_secret_access_key=self.__secret_key,
这一行(大约在第 101 行)后面,添加一行 endpoint_url
参数,并填入你准备好的 Endpoint URL。
修改前:
session = boto3.session.Session()
client = session.client(
's3',
aws_access_key_id=self.__secret_id,
aws_secret_access_key=self.__secret_key,
region_name=self.__region
)
修改后(以 B2 us-west为例):
session = boto3.session.Session()
client = session.client(
's3',
aws_access_key_id=self.__secret_id,
aws_secret_access_key=self.__secret_key,
endpoint_url='https://s3.us-west-004.backblazeb2.com', # <-- 添加此行
region_name=self.__region
)
3.重启面板
保存文件修改后,在宝塔面板首页或通过 SSH 执行 bt reload
命令来重启面板服务,使修改生效。
四、 配置插件
最后,回到宝塔面板的 AWS S3 插件界面,填写你的 Backblaze B2 信息。对应关系如下:
- S3密钥ID (secret_id): 填写你的
keyID
- S3密钥 (secret_key): 填写你的
applicationKey
- 存储桶名称 (Bucket name): 填写你的 Bucket Name(注意不是 App Key 的名称)
- 存储路径 (Save Path): 在 Bucket 中用于存放备份的目录,例如
backup/
- 区域 (Region): 由于我们已硬编码了 Endpoint,此项可随意填写或保持默认。
填写完毕后,点击保存。你可以尝试手动执行一次备份任务,检查文件是否成功上传到你的 Backblaze B2 存储桶中,以验证配置是否成功。