Cloudflare R2: Navegando por la configuración y gestionando errores de configuración

Puedo descargar copias de seguridad, nunca he tenido ningún problema con esto.

¿Incluye las cargas de S3?

Muy útil, solo que cuando subo la imagen desde el portapapeles no funciona, ¿te pasa este problema? Al final se subió a R2 pero no es visible en la publicación:

¿Miraste la URL de la imagen, cómo se ve?

Entonces, ¿todavía no podemos configurar r2 a través de app. yml? ¿Solo a través de la configuración del sitio web, es decir, DB_S3_CONFIG?

¿Puedes usar este método para subir las cargas locales antiguas a R2, a través de rake uploads : migrate to s3?

Hola, gracias a todos por esto.

Si entiendo esto correctamente, “DISCOURSE_CDN_URL” puede ser el mismo que “DISCOURSE_S3_CDN_URL”, que es el dominio público personalizado vinculado al bucket en Cloudflare? ¿O se necesita alguna otra configuración para esto?

Sí, debes agregar el mismo nombre de dominio al archivo container.yml del contenedor de Discourse. Aquí tienes un ejemplo de uso:

  ## La dirección HTTP o HTTPS de la CDN para esta instancia de Discourse (configurada para extraer)
  ## Ver https://meta.discourse.org/t/14857 para más detalles
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com
  #DISCOURSE_USE_S3: true
  DISCOURSE_S3_REGION: 'auto'
  DISCOURSE_S3_ENDPOINT: 'https://45dv544v56x****************************564564.eu.r2.cloudflarestorage.com'
  DISCOURSE_S3_ACCESS_KEY_ID: '564dfds4f54sdfs********65564545'
  DISCOURSE_S3_SECRET_ACCESS_KEY: 'sddfsdf564564**********6545sd4f54sd56f4s6d5'
  DISCOURSE_S3_CDN_URL: 'https://cdn.discourse.com.br'
  ##DISCOURSE_CDN_URL: 'https://cdn.discourse.com.br'
  #DISCOURSE_S3_BUCKET: 'cloudflarebucketname'
  #DISCOURSE_S3_BACKUP_BUCKET: 'cloudflarebackupbucketname/backups'
  #DISCOURSE_BACKUP_LOCATION: 's3'
  DISCOURSE_INCLUDE_S3_UPLOADS_IN_BACKUPS: true
  DISCOURSE_S3_INSTALL_CORS_RULE: false

La configuración deshabilitada con este carácter debe configurarse a través del panel de administración; se proporcionan ejemplos en el código. Si lo prefieres, también puedes habilitar estas configuraciones dentro de la sección de configuración, tú decides.

1 me gusta

Esta opción romperá el sitio cuando se establezca en app.yml, ya que no todos los archivos estáticos como JavaScript están alojados en R2 por alguna razón.

1 me gusta

Esto es genial. Acabo de seguir la guía del post #39 y todo funcionó. Solo tengo una sugerencia y 2 preguntas.

Sugerencia:
Por lo que he leído, deberías hacer que el bucket de archivos CDN sea públicamente accesible y el bucket de copias de seguridad privado. Así que creé 2 buckets y dejé el de copias de seguridad privado mientras hacía el bucket de archivos público con un dominio personalizado. Solo significó que tuve que poner 2 rutas diferentes en las 2 casillas debajo de admin.
He visto a mucha gente poner sus copias de seguridad como una ruta de su bucket de nivel superior, ¿estoy pensando incorrectamente sobre esto? ¿O es solo una peculiaridad de CF R2?

P1:
Agregué ‘DISCOURSE_INCLUDE_S3_UPLOADS_IN_BACKUPS: true’ en mi app.yml y reconstruí, pero cuando voy a copias de seguridad y hago clic en el botón de copia de seguridad, todavía recibo el mensaje emergente que me dice que las cargas no se incluirán. ¿Es solo porque el mensaje emergente no tiene ninguna lógica debajo o algo no está bien?

P2:
Si quiero mover las cargas actuales a R2, ¿cuáles son los comandos concisos?
He buscado y probado:

./launcher enter app
rake uploads:migrate_to_s3
rake posts:rebake_uncooked_posts

Pero parece que ese primer comando rake solo funciona si configuro las opciones de S3 en el archivo app.yml. ¿Es correcto?

Si hago eso, ¿seguirá funcionando R2?

1 me gusta

Okay, probado y encontrado deficiente.
Parece que el primer comando rake solo funciona para AWS.

rake aborted!
Seahorse::Client::NetworkingError: Failed to open TCP connection to exotics-unlimited.s3.auto.amazonaws.com:443 (getaddrinfo: Name or service not known) (Seahorse::Client::NetworkingError)

¿Hay otro comando que haga lo mismo con otros proveedores de S3?

1 me gusta

¿Has hecho algún seguimiento para ver si podemos conseguir que R2 sea una solución completamente funcional?

R2 funciona bien; simplemente no uses ni establezcas esta opción: DISCOURSE_CDN_URL

Correcto, lo que significa que no funciona completamente porque algunos archivos estáticos no se están enviando/alojando correctamente.
Solo busco hacer que todo funcione en lugar de que solo funcione una parte.

1 me gusta

No puedo evitar que DC piense que es AWS, cuando es CF R2, las copias de seguridad simplemente no se suben. Solo quiero usarlo para zips de copia de seguridad, en lugar de AWS. Creo que he completado correctamente todas las configuraciones y mi token de acceso es de ámbito “lectura y escritura de objetos” para este bucket específico. Añadí también la política cors del hilo.

[2025-09-06 13:56:44] Comprimiendo archivo, esto puede tardar un tiempo...
[2025-09-06 13:56:49] Subiendo archivo...
[2025-09-06 13:56:49] EXCEPCIÓN: Aws::S3::Errors::Forbidden
[2025-09-06 13:56:49] /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/object.rb:559:in `rescue in exists?'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/object.rb:554:in `exists?'
/var/www/discourse/lib/backup_restore/s3_backup_store.rb:46:in `upload_file'
/var/www/discourse/lib/backup_restore/backuper.rb:351:in `upload_archive'
/var/www/discourse/lib/backup_restore/backuper.rb:41:in `run'
/var/www/discourse/script/spawn_backup_restore.rb:9:in `backup'
/var/www/discourse/script/spawn_backup_restore.rb:31:in `block in <main>'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `fork'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `<main>'
[2025-09-06 13:56:49] Eliminando copias de seguridad antiguas...
[2025-09-06 13:56:49] Limpiando cosas...
[2025-09-06 13:56:49] Eliminando archivo del almacenamiento local...
[2025-09-06 13:56:49] Eliminando restos de '.tar'...
[2025-09-06 13:56:49] Marcando copia de seguridad como finalizada...
[2025-09-06 13:56:49] Notificando a 'Firsh' el fin de la copia de seguridad...
[2025-09-06 13:56:54] ¡Terminado!

¡Esto parece estar funcionando bien para mí también! (recuerda configurar la URL del cdn, de lo contrario las cargas funcionarán pero las obtenciones no)