迁移服务器至甲骨文云——discourse迁移服务器、cloudflare R2存储桶设置指南

网站受到大规模攻击

由于本人在nodeseek冲浪,被人盯上,现在被人挂着脚本打,几个月前啥也不懂,买了一个阿里云的小水管,5M带宽,尽管挂着CF,但是总感觉网络访问量大的情况下,还是受到极大影响。
手头正好有一台凤凰城甲骨文,所以把所有主要服务都迁移到甲骨文上。

设置好Cloudflare R2 存储桶,防止甲骨文封号导致数据全丢

有关设置教程已经在这里写过。

其中再次在这里更新一下教训。

1.必须为cloudflare存储桶设置公开域名
设置好公开访问的域名之后,才能享受到cloudflare r2的cdn加速效果

2.设置步骤

设置概述:

  • 平台: Discourse (Bitnami 安装)
  • 存储桶: Cloudflare R2
  • 自定义域名: 已设置用于公开提供文件服务
  • 配置: 完全通过 Discourse 站点设置完成(未触及任何环境变量)

详细步骤:

  1. 创建 Cloudflare R2 存储桶:

    • 登录您的 Cloudflare 账户,并导航至 R2 存储。
    • 创建一个新的存储桶用于存放您的 Discourse 上传文件(例如,forum-uploads)。
    • 记录下存储桶 S3 API URL访问密钥 ID秘密访问密钥
  2. 设置 CDN 自定义域名:

    • 为了公开提供您的 R2 存储桶内容,在 Cloudflare 中创建一个自定义域名。
    • 例如,我使用了 forumfiles.example.in
    • 确保配置 DNS 设置,将其指向 Cloudflare 提供的 CNAME。由于我的域名在 Cloudflare 上,因此它自动完成了配置。
  3. 配置 Discourse 站点设置:

    • s3_bucket: 您的 R2 存储桶名称(例如,forum-uploads)。

    • s3_region: 设置为美国东部(弗吉尼亚北部)。或者auto。

    • s3_endpoint: 使用 Cloudflare 提供的存储桶 S3 API URL(例如,https://<your-bucket-unique-id>.r2.cloudflarestorage.com)。

    • s3_access_key_id: 您的 R2 访问密钥 ID

    • s3_secret_access_key: 您的 R2 秘密访问密钥

    • s3_cdn_url: 您的 CDN 自定义域名(例如,https://forumfiles.example.in)。

    • 确保已勾选 启用 S3 备份启用 S3 上传

  4. 调整权限和 CORS:

    • 将您的 R2 存储桶设置为私有,并配置 CORS 策略:
    [
      {
          "AllowedHeaders": ["*"],
          "AllowedMethods": ["GET", "POST", "PUT", "HEAD"],
          "AllowedOrigins": ["*"],
          "ExposeHeaders": ["ETag"],
          "MaxAgeSeconds": 3000
      }
    ]
    
    • 这确保上传能够正确工作,而不会出现 CORS 问题。
  5. 测试设置:

    • 通过您的 Discourse 论坛上传一个测试文件或图像,以验证上传是否正常工作。
    • 检查文件是否可以通过您的自定义域名访问(例如,https://forumfiles.example.in/original/1X/...)。
    • 检查备份,我已成功执行备份。在 R2 存储桶中进行了交叉检查,并且它也列在站点设置中。

设置cloudflare r2存储桶用于网站备份

记得在管理员设置里,把这个 Backup with uploads取消掉,选这个就会报错,我也不知道为什么。

网站被攻击、服务器中病毒、甲骨文封号怎么办?

去cloudflare存储桶下载备份,按照以下流程恢复备份:

进入 Discourse 容器

使用 SSH 登陆服务器,并进入 Discourse 容器:

cd /var/discourse
./launcher enter app

启用恢复功能

在容器内部运行以下命令以启用恢复功能:

discourse enable_restore

指定恢复来自本地的备份

运行以下命令进行备份恢复:

discourse restore --location local <备份文件名>

参数说明

  • --location local:明确指定从本地目录恢复备份,而不是从 S3 下载。
  • <备份文件名>:替换为您的备份文件的整个文件名,例如 sitename-2025-03-08-054726.tar.gz

恢复完成后的步骤

重建(可选)

完成恢复后,如果需要重新同步所有配置信息和插件,可以选择重建 Discourse 实例:

cd /var/discourse
./launcher rebuild app