Configurar un proveedor de almacenamiento de objetos compatible con S3 para cargas

:information_source: Este tema cubre cómo configurar algunos proveedores de almacenamiento de objetos compatibles con S3 comunes (clones de S3). Consulta Set up file and image uploads to S3 para más detalles sobre la configuración de Amazon AWS S3, que es oficialmente compatible y utilizada internamente por Discourse para nuestros servicios de alojamiento.

Proveedor Nombre del servicio ¿Funciona con Discourse?
Amazon AWS S3
Digital Ocean Spaces
Linode Object Storage
Google Cloud Storage
Scaleway Object Storage
Vultr Object Storage
BackBlaze Cloud Storage Sí*
Autoalojado MinIO
Azure Blob Storage Flexify.IO
Oracle Cloud Object Storage No [1]
Wasabi Object Storage Quizás
Cloudflare R2 No
Contabo Object Storage No

Si has logrado que funcione un servicio diferente, por favor agrégalo a este wiki.

Configuración

Para almacenar los activos estáticos de Discourse en tu almacenamiento de objetos, agrega esta configuración en tu archivo app.yml bajo la sección hooks:

  after_assets_precompile:
    - exec:
        cd: $home
        cmd:
          - sudo -E -u discourse bundle exec rake s3:upload_assets
          - sudo -E -u discourse bundle exec rake s3:expire_missing_assets

Al usar almacenamiento de objetos, también necesitas una CDN para servir lo que se almacena en el bucket. Usé StackPath CDN en mis pruebas y, aparte de necesitar configurar Dynamic Caching By Header: Accept-Encoding en su configuración, funciona bien.

DISCOURSE_CDN_URL es una CDN que apunta a tu nombre de host de Discourse y almacena en caché las solicitudes. Se utilizará principalmente para activos descargables: CSS y otros activos de temas.

DISCOURSE_S3_CDN_URL es una CDN que apunta a tu bucket de almacenamiento de objetos y almacena en caché las solicitudes. Se utilizará principalmente para activos subibles: JS, imágenes y cargas de usuario.

Recomendamos que sean diferentes y que los administradores configuren ambos.

No usar una CDN (o ingresar la URL del bucket como la URL de la CDN) probablemente cause problemas y no es compatible.

En los siguientes ejemplos, https://falcoland-files-cdn.falco.dev es una CDN configurada para servir los archivos bajo el bucket. El nombre del bucket se estableció en falcoland-files en mis ejemplos.

Se recomienda configurar estos ajustes en variables de entorno en tu app.yml porque así es como lo hace CDCK en su infraestructura, por lo que está bien probado. Además, la tarea de cargar activos ocurre después de que los activos se compilan, lo cual sucede en una reconstrucción. Si quieres iniciar un Discourse que funcione correctamente con almacenamiento de objetos desde el principio, necesitas establecer las variables de entorno para que los activos se carguen antes de que el sitio inicie.

Elige tu proveedor de la lista a continuación y agrega estos ajustes a la sección env de tu archivo app.yml, ajustando los valores en consecuencia:

AWS S3

Lo que oficialmente soportamos y usamos internamente. Su oferta de CDN, Cloudfront, también funciona para frontear los archivos del bucket. Consulta Set up file and image uploads to S3 para saber cómo configurar los permisos correctamente.

  DISCOURSE_USE_S3: true
  DISCOURSE_S3_REGION: us-west-1
  DISCOURSE_S3_ACCESS_KEY_ID: myaccesskey
  DISCOURSE_S3_SECRET_ACCESS_KEY: mysecretkey
  DISCOURSE_S3_CDN_URL: https://falcoland-files-cdn.falco.dev
  DISCOURSE_S3_BUCKET: falcoland-files
  DISCOURSE_S3_BACKUP_BUCKET: falcoland-files/backups
  DISCOURSE_BACKUP_LOCATION: s3

Digital Ocean Spaces

La oferta de DO es buena y funciona sin problemas. Está bien habilitar la restricción de listado de archivos. El único problema es que su oferta de CDN está terriblemente rota, por lo que necesitas usar una CDN diferente para los archivos. Además, no debes instalar la regla CORS, ya que se vuelve a instalar en cada reconstrucción.

Configuración de ejemplo:

  DISCOURSE_USE_S3: true
  DISCOURSE_S3_REGION: whatever
  DISCOURSE_S3_ENDPOINT: https://nyc3.digitaloceanspaces.com
  DISCOURSE_S3_ACCESS_KEY_ID: myaccesskey
  DISCOURSE_S3_SECRET_ACCESS_KEY: mysecretkey
  DISCOURSE_S3_CDN_URL: https://falcoland-files-cdn.falco.dev
  DISCOURSE_S3_BUCKET: falcoland-files
  DISCOURSE_S3_BACKUP_BUCKET: falcoland-files/backups
  DISCOURSE_BACKUP_LOCATION: s3
  DISCOURSE_S3_INSTALL_CORS_RULE: false 

Linode Object Storage

Se requiere un parámetro de configuración adicional, HTTP_CONTINUE_TIMEOUT, para Linode.

Configuración de ejemplo:

  DISCOURSE_USE_S3: true
  DISCOURSE_S3_REGION: us-east-1
  DISCOURSE_S3_HTTP_CONTINUE_TIMEOUT: 0
  DISCOURSE_S3_ENDPOINT: https://us-east-1.linodeobjects.com
  DISCOURSE_S3_ACCESS_KEY_ID: myaccesskey
  DISCOURSE_S3_SECRET_ACCESS_KEY: mysecretkey
  DISCOURSE_S3_CDN_URL: https://falcoland-files-cdn.falco.dev
  DISCOURSE_S3_BUCKET: falcoland-files
  DISCOURSE_S3_BACKUP_BUCKET: falcoland-files/backup
  DISCOURSE_BACKUP_LOCATION: s3

Google Cloud Platform Storage

El listado de archivos está roto, por lo que necesitas una variable de entorno adicional para omitirlo para que los activos funcionen. También omite CORS y configúralo manualmente.

:warning: Dado que no puedes listar archivos, no podrás listar copias de seguridad y las copias de seguridad automáticas fallarán; no recomendamos usarlo para copias de seguridad. Sin embargo, algunos sugieren que si cambias el rol de Storage Legacy Object Owner a Storage Legacy Bucket Owner, las copias de seguridad funcionan correctamente. Consulta este tema para discusión específica de Google Cloud.

Existe un plugin de terceros para mejorar la integración en Discourse GCS Helper.

Configuración de ejemplo:

  DISCOURSE_USE_S3: true
  DISCOURSE_S3_REGION: us-east1
  DISCOURSE_S3_INSTALL_CORS_RULE: false
  FORCE_S3_UPLOADS: 1
  DISCOURSE_S3_ENDPOINT: https://storage.googleapis.com
  DISCOURSE_S3_ACCESS_KEY_ID: myaccesskey
  DISCOURSE_S3_SECRET_ACCESS_KEY: mysecretkey
  DISCOURSE_S3_CDN_URL: https://falcoland-files-cdn.falco.dev
  DISCOURSE_S3_BUCKET: falcoland-files
  #DISCOURSE_S3_BACKUP_BUCKET: falcoland-files/backup
  #DISCOURSE_BACKUP_LOCATION: s3

Scaleway Object Storage

La oferta de Scaleway también es muy buena y, en su mayor parte, todo funciona bien.

:warning: Las cargas multipart de Scaleway solo admiten un máximo de 1.000 partes. Esto no coincide con Amazon S3, que admite un máximo de 10.000 partes. Para instancias más grandes, esto hará que las copias de seguridad de Discourse fallen y es posible que la carga incompleta necesite ser borrada manualmente antes de realizar nuevos intentos. Para instancias pequeñas, esto no es un problema. Scaleway parece bastante abierto a comentarios, así que si quieres que este límite se cambie, debes contactarlos.

Ten en cuenta que para el parámetro DISCOURSE_S3_ENDPOINT, Discourse usa el endpoint de toda la región: https://s3.{region}.scw.cloud. El „endpoint del bucket


  1. Oracle Cloud carece de soporte para el acceso a buckets con estilo de host virtual y no funcionará ↩︎

69 Me gusta
Defining DISCOURSE_S3_CDN_URL links to assets in S3 CDN URL
Backblaze S3 issue: duplicated uploads after delete
Migrate from AWS to Digital Ocean with 2 containers, spaces and 2 CDNs
Using Scaleway s3-compatible object storage
Extend S3 configuration for other s3 API compatible cloud storage solutions
Set up BackBlaze S3 with BunnyCDN
Can not access backup page and related error when restoring using GCP Object Storage
Setting up backup and image uploads to Backblaze B2
Upload assets to S3 after in-browser upgrade
What are the right settings to use S3 bucket (with non-Amazon URL)?
Use WebTorrent to load media objects
Issues with changing File/Image upload location to S3 Server from local storage
Hosting Optimization with Digital Ocean
Hosting Optimization with Digital Ocean
Theme modifiers: A brief introduction
Configure automatic backups for Discourse
Problem with Backblaze for backup- Failed to list backups from S3: Signature validation failed
Move from BackBlaze B2 to Digital Ocean Spaces
Which free storage for many images? also to be used for thumbnails etc
Migrate from AWS to Digital Ocean with 2 containers, spaces and 2 CDNs
Restore Failure - S3 (compatible) backup
Restore Failure - S3 (compatible) backup
Digitalocean block storage VS amazon S3
Digitalocean block storage VS amazon S3
Custom emoji don't use CDN for S3 stored assets in a few pages
Admin upgrade page doesn't load with a CDN
Install Discourse for Production Environment on Windows Server
Running Discourse on Azure Web Sites vs. Azure VM?
How to turn off S3 storage?
Access Denied error message when trying to upload images
What are the right settings to use S3 bucket (with non-Amazon URL)?
REQ: Support S3 backup to a service like Backblaze
REQ: Support S3 backup to a service like Backblaze
Using Scaleway s3-compatible object storage
Overwrite meta og:image image source to use externally public loaded images on topics?
How to store uploads with multiple web_only servers?
Can not edit topics with picture with S3 backend
Finding UI generated backup and restoring site
Looking for doc to connect discourse with digital ocean spaces
Looking for doc to connect discourse with digital ocean spaces
Looking for doc to connect discourse with digital ocean spaces
403 Error with digital ocean cdn
Link to headers (anchor links)
NoMethodError downcase s3_bucket_name absolute_base_url
What should I enter in the S3 CDN settings if I don't have a CDN?
Backing up files in Object Storage
Minio: A header you provided implies S3 functionality that is not implemented
Configure automatic backups for Discourse
S3 OVH Object Storage
File directory system
Unable to backup or navigate to backups
Uploads to AWS S3 and Configured CDN
Migration to a Self-Hosted solution from Kubernetes
How to develop discourse in a team?
Images didn't load after configuring S3 uploads
Need Azure blob storage
Use Google Cloud Storage Instead of S3
Run Discourse as docker swarm service
Move discourse uploads to free space on server
Strange behavior with Digital Ocean Spaces/S3 and lots of duplicated CORS rules for `example.com`
Can't upload PDF to S3
"canned acl" error when uploading images
AWS S3 Object Ownership
What’s your server configurations?
How to debug S3 uploads
Problems with Patreon Login, Force HTTPS, and S3 CDN (three) Issues
Cron task to sync local backups to DigitalOcean Spaces
Cron task to sync local backups to DigitalOcean Spaces
Problems with Patreon Login, Force HTTPS, and S3 CDN (three) Issues
Help restoring - system hung at midnight
Help restoring - system hung at midnight
Image upload error: The bucket does not allow ACL's
Make s3_region a string value
How can I set s3_force_path to true?
Install Discourse on a residential internet with Cloudflare Tunnel
S3 assets folder, is a cleanup needed?
BunnyCDN storage for automatic backups
BunnyCDN storage for automatic backups
Move Uploads and Backups to DigitalOcean Block Storage
Required local storage for URL referenced images vs. uploaded images?
Is DO Spaces CDN still broken? Any workarounds?
Is DO Spaces CDN still broken? Any workarounds?
Is DO Spaces CDN still broken? Any workarounds?
Basic How-To for Using MinIO storage server run by you for your Discourse Instance
Minio instead of S3?
Configure automatic backups for Discourse
S3 image bandwidth costs are getting annoying
S3 image bandwidth costs are getting annoying
Support for ImgBB image upload service
Install Discourse on Amazon Web Services (AWS)
Account creation not working with discourse_encrypt
Cannot load any images “Uncaught (in promise) no-response: no-response”
Tips on Google Cloud S3
Enable a CDN for your Discourse
Invalid URL for markdown-it-bundle
Not using volumes (or automatically using S3) when hosting with Docker
Configuring automatic backups
I have a problem with my proxy status
Inline PDF Previews
My images are not working
Getting error 422 invalid argument when configure S3 upload with GCS
SSL_connect returned=1 errno=0 peeraddr=162.243.189.2:443 state=error: certificate verify failed (Hostname mismatch)
SSL_connect returned=1 errno=0 peeraddr=162.243.189.2:443 state=error: certificate verify failed (Hostname mismatch)
Strange behavior with Digital Ocean Spaces/S3 and lots of duplicated CORS rules for `example.com`
My install broke after updating, how can I fix it?
Uploads Subdomain For Cloudflare
[PAID] Configure an S3 compatible object storage provider for uploads
Hetzner deleted my account, my server and I was left with nothing. What to do?
SSL_connect returned=1 errno=0 peeraddr=162.243.189.2:443 state=error: certificate verify failed (Hostname mismatch)
SSL_connect returned=1 errno=0 peeraddr=162.243.189.2:443 state=error: certificate verify failed (Hostname mismatch)
SSL_connect returned=1 errno=0 peeraddr=162.243.189.2:443 state=error: certificate verify failed (Hostname mismatch)
SSL_connect returned=1 errno=0 peeraddr=162.243.189.2:443 state=error: certificate verify failed (Hostname mismatch)
SSL_connect returned=1 errno=0 peeraddr=162.243.189.2:443 state=error: certificate verify failed (Hostname mismatch)
Understanding Uploads, Images, and Attachments
S3, Assets & CDN Error
Capacity planning / Resource requirements
Migrate assets to s3 rake tasks
Best option for DB and file Storage
Forum rendered unusable
Forum rendered unusable
Configure automatic backups for Discourse
Migrate Discourse broke S3 images
Configure automatic backups for Discourse
Cloud storage and cdn
Migrating uploads from S3 to local
Another discourse offline "bootstrap failed with exit code 5"
Another discourse offline "bootstrap failed with exit code 5"
AI Plugin Build Error - 'bundle exec rake db:migrate' failed
Your Docker installation is not working correctly - no space left on device - safe to use ./launcher cleanup?
Uncaught SyntaxError: forum spins nonstop and never loads
Why is my upload limit 100mb?It's set to 500mb
Trouble with Google Bucket for backup
Did I overwrite my site settings with a cross-instance backup/restore?
S3 and Cloudfront - Setup Not Working
S3 and Cloudfront - Setup Not Working
Need tips on making my forum faster
What should be the server requirements
SSL_connect returned=1 errno=0 peeraddr=162.243.189.2:443 state=error: certificate verify failed (Hostname mismatch)
Why you should use Discourse internally for your company/team instead of Slack (4 years use case)
Make s3_region a string value
Decoupled Discourse Application - Managed Redis, Managed Postgres, and DIgital Ocean Volume with Discourse
S3 and Cloudfront - Setup Not Working
Cannot upload images in mobile discourse
Cloudflare R2: Navigating Setup and Handling Configuration Errors
Cloudflare R2: Navigating Setup and Handling Configuration Errors
Cloudflare R2: Navigating Setup and Handling Configuration Errors
S3 assets broken after moving forum
Colored loading dots because assets not uploaded
Backup request via FTP
Error when doing "bundle exec rake s3:upload_assets" - Could not locate Gemfile or .bundle/ directory
Separate S3 access keys for backups and uploads?
Secure Uploads
Topic List Previews (legacy)
Disk usage spike during backup, Discourse crashed hard :-(
Make s3_region a string value
Favicon setup: "To work correctly over a CDN it must be a png"
Change image folder to symlinked folder
Migrating uploads from S3 to local
S3 Upload Confusion: Dashboard vs. app.yml
Old installation failing upgrade
Where are Images and uploads stored?
Rebuild issue: [Cannot set dual-stack in combination with a custom endpoint.]
Problem updating data in the separate database
Backup Files Not Showing in Discourse Backend After Uploading to Cloudflare R2
Resizing images off server
Unable to setup S3 bucket
Discourse Stuck on Loading (Logs)
Discourse Stuck on Loading (Logs)
Unable to setup S3 bucket
Rebuild failure - skipping "after_assets_precompile" section of app.yml
How to add AWS Cloudfront as a Discourse CDN
Unable to setup S3 bucket
Configured s3, but i want asset to serve locally
Configured s3, but i want asset to serve locally
Set up BackBlaze S3 with BunnyCDN
Discourse s3 backup folder
SSO broken after rebuild with stable v3.3.3
How to Configure Cloudflare R2 for your Discourse Community
如何批量修改文件链接地址
Can't migrate uploads to S3
Backup discourse from the command line
Stuck and lost updating forum, problems with PG migration
Can't rebuild due to AWS SDK gem bump and new AWS Data Integrity Protections
Can't rebuild due to AWS SDK gem bump and new AWS Data Integrity Protections
S3 (not AWS) backups stopped working, presumably since an update
Troubleshooting S3 Uploads: Site hangs after rebuild, JS assets fail to load with net::ERR_... on both R2 and GCS
Inquiry About Discourse’s Support for Amazon S3 Storage
Setting up backup and image uploads to Backblaze B2
Inquiry About Discourse’s Support for Amazon S3 Storage
Inquiry About Discourse’s Support for Amazon S3 Storage
Cloudflare R2 Storage Issues
Hetzner S3 support
Can the /var/discourse and /var/lib/docker folders be on different volumes?
An AWS S3 Integration with Discourse Tutorial would be nice
Issues with AWS CDN and S3
Digital Ocean Spaces (S3) "unable to sign request without credentials set"
Issues with AWS CDN and S3
Digital Ocean Spaces (S3) "unable to sign request without credentials set"
Digital Ocean Spaces (S3) "unable to sign request without credentials set"
Digital Ocean Spaces (S3) "unable to sign request without credentials set"
Digital Ocean Spaces (S3) "unable to sign request without credentials set"
为啥我的七牛云s3附件上传成功后,论坛中无法加载出来?
Imgur upload built into the post buttons
Backup discourse from the command line
Is Scaleway a good option for object storage?
Blackblaze&Cloudflare: image uploading works, but not showing in post
SMF2 Conversion and Rake to S3 Help
Backing up your forum
What causes rake uploads:fix_relative_upload_links
Running 2 hosts behind haproxy fails with random 404s
Site Blank After Rebuild
Rebuild goes into a loop
Backblaze S3 issue: duplicated uploads after delete
Migrate_to_S3 Fails on Rebake
Downloads coming from S3 even with DISCOURSE_S3_CDN_URL set
Errors trying to use custom S3 storage
Moving from one S3 bucket to another
S3 image bandwidth costs are getting annoying
Basic How-To for Using MinIO storage server run by you for your Discourse Instance
SSL error - can't upload images
Digital Ocean Spaces don’t implement the AWS S3 API for the CORS rule
Extend S3 configuration for other S3 API compatible services
How to separate uploaded files to another server
Storing Images in the cloud
Migrate_to_S3 Fails on Rebake
Cannot rebake after setting up CDN
High Availability 3 Server setup
Enable hidden setting to include S3 uploads in the backups
S3 error, when updating to 2.9.0.beta1
Azure Blob Storage Plugin
How might we better structure #howto?
Migrating uploaded files from DO to S3
Discourse as a closed wiki
Using multiple containers - what needs to be shared?
Virus scanning of uploaded files
Imgur images broken
Admin role conflates server admin and board admin
Error in rebuilding using minio as object store

Hola a todos,

He estado usando almacenamiento S3 durante varios años sin una CDN.

Siguiendo el consejo que me dieron en otro hilo, hoy he configurado la CDN de CloudFront.

Antes de agregar la URL de la CDN a mi panel de control y rebakear más de 230,000 publicaciones solo para descubrir que tengo una configuración de CloudFront incorrecta y romper todo, ¿alguien puede confirmar que este es el comportamiento esperado para mí, por favor? :bowing_man:t2:

Actualmente, esta es una URL de ejemplo para una imagen que un usuario ha subido:

https://greyarrows.s3.dualstack.eu-west-2.amazonaws.com/original/3X/8/3/8335cab232f512f4a979c7f0c8562e149c01b212.png

La cual se muestra:

Mi “Nombre de dominio” de CloudFront es: d1q8cepst0v8xp.cloudfront.net

Si edito manualmente mi URL de ejemplo anterior y reemplazo la parte existente de S3 del nombre de dominio con el nombre de dominio de mi CloudFront, obtengo:

https://d1q8cepst0v8xp.cloudfront.net/original/3X/8/3/8335cab232f512f4a979c7f0c8562e149c01b212.png

Y efectivamente, la imagen sigue cargándose correctamente:

Por lo tanto, ¿es correcto pensar que simplemente necesito agregar una URL de CDN de S3 de d1q8cepst0v8xp.cloudfront.net a mi panel de control de Discourse, rebakear todas las publicaciones y simplemente relajarme y esperar a que ocurra la magia?

Gracias de antemano, la CDN es todo nuevo para mí y no tengo un entorno de desarrollo en el que pueda probar esto de forma segura :grimacing:

4 Me gusta

También tengo habilitada la configuración s3 configure tombstone policy:

Screen Shot 2021-02-14 at 21.08.39

¿Esto será un problema? ¿Ahora que estoy usando una CDN en su lugar? ¿O las operaciones en segundo plano siguen verificando el bucket original de S3, en lugar de una URL de CDN?

Naturalmente pienso que es lo segundo, pero de nuevo, no puedo permitirme arruinar las subidas de fotos de cientos de miles de mis usuarios :scream:

:blush:

2 Me gusta

La respuesta es sí.

Para probar esta teoría, antes de rebakear cientos de miles de publicaciones, realicé las siguientes verificaciones de sentido común:

  • Subí una imagen
  • Cambié la configuración de la URL de CDN de S3
  • Reconstruí el HTML en mi publicación de prueba (a través de la interfaz de usuario)
  • Actualicé la página en el navegador
  • Verifiqué la pestaña de Red de la consola del navegador para confirmar que la imagen se estaba cargando a través de CloudFront
  • Subí una nueva imagen de prueba a una nueva publicación
  • Verifiqué la pestaña de Red de la consola del navegador para confirmar que la imagen se estaba cargando a través de CloudFront

Ahora estoy rebakeando todas las publicaciones en este momento :+1:t2:

14 Me gusta

Gracias por el informe, Richie. Yo también he estado usando almacenamiento de imágenes en AWS S3 durante varios años y llegué a este post a través del mensaje de la consola. Sin embargo, la descripción de arriba no menciona el caso en el que ya tienes S3 y solo necesitas un CDN.

Por si acaso, esto es lo que hice:

  1. Fui a la consola de AWS, en la sección de Red y entrega de contenido, seleccioné CloudFront.
  2. Hice clic en el botón “Crear distribución”.
  3. Completé el formulario, bastante intuitivo; lo único que realmente necesitas hacer es seleccionar tu bucket de AWS S3 donde están las imágenes desde el menú desplegable.
  4. Esperé un poco a que terminara la configuración de CloudFront.
  5. Apareció un dominio <gibberish>.cloudfront.net en la columna “Nombre de dominio” de la lista de distribuciones de CloudFront.
  6. Copié y pegué ese dominio en el campo s3 cdn url en la configuración de archivos del panel de administración de mi sitio.
  7. Realicé algunas pruebas:
    a. Creé una nueva publicación con una subida de imagen y efectivamente estaba en CloudFront.
    b. Ejecuté “Reconstruir HTML” en algunas publicaciones existentes con imágenes y vi que también se reconstruyeron con imágenes de cloudfront.net.
  8. Como todo parecía correcto, entré y ejecuté un rebake, lo cual tomó varias horas ya que ahora tengo alrededor de medio millón de publicaciones:
./launcher enter app
# rake posts:rebake
  1. Todo parece funcionar bien. Se generó una gran cantidad de trabajos en la cola de Sidekiq, uno por publicación, al parecer, los cuales tardarán unos días en procesarse, pero ya están avanzando por lotes.
18 Me gusta

¿Estás seguro de que ese es el caso? Este sitio utiliza activos desde un CDN y no tuvimos que borrar la caché. Además, es un cambio de EmberCli que no debería afectar a producción :thinking:

5 Me gusta

¡Ah, esos malditos optimizadores! Te diría que los desactives si es posible, ya que Discourse ya incluye configuraciones óptimas para cada recurso. Esos optimizadores son geniales cuando alojas un software web de caja negra de los años 2000, pero fallan estrepitosamente con lo moderno. Además, incluso el optimizador más famoso de Cloudflare suele romper Discourse, así que no tengo muchas esperanzas en los demás. Podrían funcionar un día y fallar al siguiente, dejando a todos tus visitantes con una página en blanco. Todo eso por cero beneficios.

6 Me gusta

¿Hay alguna posibilidad de que hayas habilitado secure_uploads en la configuración del sitio?

También parece que esto fue reportado y solucionado hoy debido a la compatibilidad con Discourse:

6 Me gusta

¿Hay alguna manera de desactivar esta advertencia para que no aparezca en mi panel de administración?

El servidor está configurado para subir archivos a S3, pero no hay una CDN de S3 configurada.

Tuve problemas para configurar una CDN de S3, pero no me cuesta un ojo de la cara, así que me conformo con usar S3 directamente. Sin embargo, me encantaría que esta notificación desapareciera, ya que soy plenamente consciente de las consecuencias.

2 Me gusta

Hola.

Solo quería dar una actualización. Ahora podremos configurar copias de seguridad usando GCS. También publiqué en otro hilo. Espero que esto ayude a otras personas que han estado buscando esta solución con dificultad.

¿Cómo se hace?
Habilita la configuración predeterminada para las copias de seguridad (o puedes configurarla desde el panel de administración).

DISCOURSE_S3_BACKUP_BUCKET: falcoland-files/backup
DISCOURSE_BACKUP_LOCATION: s3

Luego, configura los permisos del bucket como Storage Legacy Object Owner:

  1. Ve a tu proyecto en la Consola de Google Cloud.
  2. Selecciona Almacenamiento.
  3. Selecciona tu bucket.
  4. Ve a la pestaña de permisos.
  5. Agrega un nuevo permiso, ingresa el correo electrónico de tu cuenta de servicio con tu cuenta. Para los roles, selecciona Storage Legacy Object Owner.
  6. Guarda y listo.

Perdón por la duplicación de la publicación, solo quería compartir esta buena actualización.
Gracias.

5 Me gusta

Sería genial si también pudieras agregar Wasabi

1 me gusta

He usado Wasabi para copias de seguridad durante un tiempo. En cuanto a la configuración, simplemente funcionó, así que puedes probarlo si quieres.

Sin embargo, con cierta frecuencia las copias de seguridad fallaban en silencio y se quedaban en la máquina local, llenando el disco. Revisé los errores de Wasabi y de Discourse, pero nunca encontré una explicación que permitiera a cualquiera de los dos lados “arreglar” nada.

No lo recomiendo, ya que no estoy seguro de que sea “excelente”.

2 Me gusta

¡Gracias!
Voy a comprobar cómo funciona esta vez.
La frecuencia de copia de seguridad predeterminada es de 7 días entre copias y un máximo de 5 copias.
Te contaré cómo va.

1 me gusta

Estaba realizando copias de seguridad diarias; no recuerdo cuántas intentaba conservar, pero el disco duro local solo tenía espacio para un par.

2 Me gusta

¿Qué almacenamiento recomendarías personalmente?
No creo que AWS y Azure sean asequibles para proyectos personales.
No estoy seguro sobre Azure, pero AWS parece confuso e impredecible…

1 me gusta

Esperaba que Wasabi fuera al menos una buena opción para copias de seguridad. Backblaze S3 es asequible. No creo que lo haya usado para subir archivos, pero sí para copias de seguridad (creo). Creo que el único problema con Backblaze es que (la última vez que lo probé) había que usar una clave global (así que no podía usarla para clientes que pudieran ver la clave). Creo que alguien publicó recientemente una solución para eso (algo sobre “legacy”, en algún lugar). Para un proyecto personal, eso es lo que probaría a continuación, creo. (Y si estás en Digital Ocean, Spaces está bien, creo.)

3 Me gusta

Estoy en DO, pero en cuanto a costos, Blackblaze/Wasabi es más barato. ¿Qué usaste para las subidas?

1 me gusta

Lo siento, no lo entiendo. ¿Por qué tenemos que especificar la configuración en app.yml, si podemos ingresar esta información directamente desde Discourse → Configuración?

1 me gusta

Probablemente se deba a la forma en que gestiona la creación de activos al compilar el contenedor. Es bastante confuso que el comportamiento varíe según si la configuración está en las variables de entorno o en la base de datos, pero así es como funciona. Además, es una forma mejor de manejarlo, ya que permite compilar y restaurar un nuevo sitio desde la línea de comandos.

4 Me gusta

¿Dónde debo configurarlo? No lo encuentro en la configuración de administración de Discourse.

1 me gusta