请求:支持 S3 备份到 Backblaze 等服务

我希望支持备份到 Backblaze 目的地。

目前我无法设置类似 s3.eu-central-003.backblazeb2.com 的端点。

1 个赞

以防您尚未看到此内容:Configure an S3 compatible object storage provider for uploads

4 个赞

不,我之前没有……现在有了:slight_smile:

不过话说回来,你似乎需要博士学位才能完成一件简单的事情。对于未来的版本,管理员的易用性可能会成为一个问题。

Discourse 拥有许多高级功能——但这些功能对普通用户(比如我)来说也过于复杂了。

顺便说一句,我只希望备份存储在服务器之外的远程位置。

无需像图片等那样上传到 CDN,因为我的论坛规模不大,使用量也不高……

它只是运行在一个简单的 5 美元 Droplet 上……

哦,那应该很简单。不过,如果数据量不大,也许直接用 AWS S3 会更省事?他们的存储价格还算不错,只是带宽费用有点高。

我想你只需要在 app.yml 中填入正确的信息并重新构建即可。教程中关于用户上传的部分会被排除,所以你不需要包含 after_assets_precompile 那部分。

只需以 root 身份 SSH 登录到你的服务器,然后运行:
cd /var/discourse
nano containers/app.yml

使用键盘方向键移动光标,将以下信息粘贴到文件中包含 #DISCOURSE_CDN_URL: https://discourse-cdn.example.com 的部分下方:

  DISCOURSE_S3_REGION: "us-west-002"
  DISCOURSE_S3_INSTALL_CORS_RULE: false
  DISCOURSE_S3_ENDPOINT: https://s3.us-west-002.backblazeb2.com
  DISCOURSE_S3_ACCESS_KEY_ID: myaccesskey
  DISCOURSE_S3_SECRET_ACCESS_KEY: mysecretkey
  DISCOURSE_S3_BACKUP_BUCKET: falcoland-files/backup
  DISCOURSE_BACKUP_LOCATION: s3

请确保区域、端点、访问密钥、秘密密钥和备份桶名称都已填写正确。

按 Ctrl+O 并确认保存,然后按 Ctrl+X 退出。接着运行:
./launcher rebuild app

我相信这应该能正常工作。

不过,既然你使用的是 Digital Ocean,建议在执行此操作前先创建一个备份,这样万一出现问题可以轻松回滚。

2 个赞

感谢你的描述 @markersocial

我访问了 https://secure.backblaze.com/b2_buckets.htm 并创建了一个新的存储桶。

然后我前往 App Keys 页面创建了一个新的应用密钥以进行访问。

创建完成后,你会临时看到如下信息——请注意,你只能看到一次:

基于此,我使用了以下配置:

DISCOURSE_S3_REGION: “s3.eu-central-003”
DISCOURSE_S3_INSTALL_CORS_RULE: false
DISCOURSE_S3_ENDPOINT: https://s3.eu-central-003.backblazeb2.com
DISCOURSE_S3_ACCESS_KEY_ID: myaccesskey
DISCOURSE_S3_SECRET_ACCESS_KEY: mysecretkey
DISCOURSE_S3_BACKUP_BUCKET: my_buckets_Name
DISCOURSE_BACKUP_LOCATION: s3

随后,我在 DigitalOcean 上对我的 Droplet 创建了一个快照,然后执行了重建操作:

./launcher rebuild app

接着我访问了 /admin/backups 并创建了一个备份:

[2020-08-27 09:25:57] 正在创建归档:studmed-dk-2020-08-27-092518-v20200820232017.tar.gz
[2020-08-27 09:25:57] 确保归档尚未存在…
[2020-08-27 09:25:57] pg_dump: 正在执行 SEQUENCE SET topic_allowed_users_id_seq
[2020-08-27 09:25:57] 正在创建空归档…
[2020-08-27 09:25:57] 正在归档数据转储…
[2020-08-27 09:25:59] 正在归档上传文件…
[2020-08-27 09:26:06] 正在删除临时目录 ‘/var/www/discourse/tmp/backups/default/2020-08-27-092518’…
[2020-08-27 09:26:06] 正在对归档进行 gzip 压缩,这可能需要一些时间…
[2020-08-27 09:26:31] 正在上传归档…
[2020-08-27 09:26:41] 正在执行备份的 after_create_hook…
[2020-08-27 09:26:41] 正在删除旧备份…
[2020-08-27 09:26:41] 正在清理…
[2020-08-27 09:26:41] 正在从本地存储中移除归档…
[2020-08-27 09:26:41] 正在清理 ‘.tar’ 残留文件…
[2020-08-27 09:26:41] 正在将备份标记为已完成…
[2020-08-27 09:26:41] 正在刷新磁盘统计信息…
[2020-08-27 09:26:42] 正在通知 ‘frold’ 备份已结束…
[2020-08-27 09:26:53] 完成!

然后我前往 Backblaze 查看是否有任何变化:

我欠你一杯 :beers:

4 个赞

干得漂亮!如果其他人偶然来到这里,我相信如果你提供一个可以创建存储桶的密钥,Discourse 甚至会自动为你创建该存储桶。

1 个赞

关闭,因为按照 使用对象存储进行上传(S3 及克隆) 操作,开箱即可支持。

3 个赞