Logré que R2 funcionara correctamente usando este conjunto de reglas:
## Este conjunto de líneas permite que los archivos alojados en R2 S3 se suban y descarguen.
DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: auto
DISCOURSE_S3_ACCESS_KEY_ID: access-key-id
DISCOURSE_S3_SECRET_ACCESS_KEY: access-key
DISCOURSE_S3_CDN_URL: https://eufiles.technospider.com
DISCOURSE_S3_BUCKET: exotics-unlimited
DISCOURSE_S3_BACKUP_BUCKET: exotics-unlimited-backups
DISCOURSE_BACKUP_LOCATION: s3
# DISCOURSE_CDN_URL: https://eufiles.technospider.com
DISCOURSE_S3_ENDPOINT: https://71*****5d4976.r2.cloudflarestorage.com
# DISCOURSE_INCLUDE_S3_UPLOADS_IN_BACKUPS: true
DISCOURSE_S3_INSTALL_CORS_RULE: false
Una vez que comenté la línea CDN_URL, las cosas funcionaron. Supongo que por la naturaleza del hecho de que R2 crea automáticamente la CDN, no necesitas esa línea y, de hecho, agregarla estropea las cosas.
Comenté la línea para incluir imágenes solo para mantener bajos mis tamaños de respaldo. Estoy usando el nivel gratuito en R2 y no quiero exceder mi límite.