DiscourseコミュニティのCloudflare R2の設定方法

マルチサイト環境では、私の理解では、すでに実行されている処理について、R2 を使用するのはインスタンス 1 つだけということになります。設定が管理設定にある場合、RAILS_DB=default と一緒に USE_DB_S3_CONFIG=true を使用する必要があります。これにより、問題なく動作するようになります。

hooks:
  after_assets_precompile:
    - exec:
        cd: $home
        cmd:
          - sudo -E -u discourse RAILS_DB=default USE_DB_S3_CONFIG=true bundle exec rake s3:upload_assets
          - sudo -E -u discourse RAILS_DB=default USE_DB_S3_CONFIG=true bundle exec rake s3:expire_missing_assets

アップロードの移行には、以下のようにこれらの環境変数をエクスポートする必要があります(すべてまとめて、または 1 つずつ)。

RAILS_DB=default \
DISCOURSE_S3_REGION=auto \
DISCOURSE_S3_ENDPOINT=https://<account-id>.r2.cloudflarestorage.com \
DISCOURSE_S3_BUCKET=discourse-files \
DISCOURSE_S3_ACCESS_KEY_ID=<your-access-key> \
DISCOURSE_S3_SECRET_ACCESS_KEY=<your-secret-key> \
rake uploads:migrate_to_s3

app.yml に設定する場合は、DISCOURSE_S3_BUCKET を使用するよう注意してください。Configure an S3 compatible object storage provider for uploads の R2 セクションに誤字があるためです。