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

Hola @mcwumbly. Fue muy fácil encontrar esto cuando podía buscar “clon S3”. No pude encontrarlo ahora. ¿Había algo malo con ese título? ¿Hay alguna búsqueda que lo encuentre? ¿Podríamos agregar algo (no recuerdo cómo se llama) para que pueda enlazar automáticamente algunas palabras como lo hace la instalación estándar (pero no se me ocurren qué palabras usar)?

3 Me gusta

Como alguien que enlaza esos temas varias veces a la semana, estoy algo de acuerdo :stuck_out_tongue:

¿Quizás añadir “clones de s3” al cuerpo del OP ayuda a la búsqueda?

2 Me gusta

He encontrado “compatible con S3” más común en la práctica, por eso lo cambié durante una revisión general de la actualización de los títulos de los documentos, por ejemplo: AWS S3 Compatible Object Storage | MinIO

Sin embargo, creo que la sugerencia de incluir otros términos de búsqueda en el cuerpo del OP tiene sentido. (Acabo de añadirlo en este).

1 me gusta

Parece bien. Supongo que tendremos que adaptarnos a los tiempos. :person_shrugging:

Sí. Realmente no es tan difícil. ¡Puedes hacerlo, @pfaffman!

@falco:

2 Me gusta

Hola, ¿alguien ha conseguido que Contabo Object Storage funcione para subidas compatibles con S3? Parece que al subir, antepone el nombre del repositorio en la URL.

Por ejemplo, si tienes un bucket llamado community, crea una URL como https://community.eu2.contabostorage.com

He encontrado este comportamiento en Duplicati, por ejemplo, pero se puede excluir que anteponga el nombre del bucket en el dominio.

Agradecería si alguien tiene la solución para poder utilizar este Object Storage porque tiene muy buenos precios.

He hecho varias pruebas para configurar el dominio como CNAME en mi dominio desde Cloudflare para proporcionar el SSL, pero para community.cdn.midominio.com el certificado SSL ya no se cubre porque utilizan un comodín y si desactivo el proxy de Cloudflare se queja porque el certificado no es correcto.

Saludos,

1 me gusta

¿Has intentado configurar el ajuste de S3 CDN en https://community.eu2.contabostorage.com? En mi opinión, eso funcionará.

No existe, es el punto final de Contabo eu2.contabostorage.com

1 me gusta

Sí, pero ¿cuál será la URL final de un archivo de ejemplo en un bucket?

2 Me gusta

![](upload://u6BBQfNFGrA4yuaLeqABnVkt87U.png)

Significa que si subes un archivo al bucket tú mismo (usando cualquier herramienta que puedas usar para subir un archivo), ¿qué URL usarías para acceder al archivo?

2 Me gusta

https://eu2.contabostorage.com/9198f3bf2d6e43dd86fab037ebad3aee:comunidad/castopod-1.png

La estructura es
Host: https://eu2.contabostorage.com/
Usuario: 9198f3bf2d6e43dd86fab037ebad3aee
Bucket: comunidad
Archivo: castopod-1.png

2 Me gusta

Esa no es una URL que funcione. Pero supongo que podría serlo si reemplazas esos dos puntos por una barra inclinada.

Esa no es la forma en que lo describiste en tu primera publicación, así que tal vez ahora pueda hacer otra sugerencia.

1 me gusta

Así que intenta configurar

  DISCOURSE_S3_CDN_URL: "https://eu2.contabostorage.com/9198f3bf2d6e43dd86fab037ebad3aee:comunidad"

y reconstruir.

2 Me gusta

La R2 de Cloudflare finalmente está disponible públicamente (tardó solo un año, al parecer). (Aquí está el anuncio original: Announcing Cloudflare R2 Storage: Rapid and Reliable Object Storage, minus the egress fees)

Creé un bucket.

Creé un token que incluye: “Editar: Permitir acceso de edición a todos los objetos y operaciones de Listar, Escribir y Eliminar de todos los buckets”

Aquí está lo que he intentado:

  DISCOURSE_USE_S3: true
  DISCOURSE_S3_REGION: auto
  DISCOURSE_S3_ACCESS_KEY_ID: redacted
  DISCOURSE_S3_SECRET_ACCESS_KEY: redacted
  DISCOURSE_S3_CDN_URL: https://pub-72eaa03782c542edbe00598fd1666be1.r2.dev
  DISCOURSE_S3_BUCKET: lc-testing
  DISCOURSE_S3_BACKUP_BUCKET: lc-testing/backups
  DISCOURSE_BACKUP_LOCATION: s3
  DISCOURSE_S3_ENDPOINT: https://cb46accbfcc3db1bdbba2bce07f8b509.r2.cloudflarestorage.com
  DISCOURSE_S3_INSTALL_CORS_RULE: false
  DISCOURSE_S3_CONFIGURE_TOMBSTONE_POLICY: false
  FORCE_S3_UPLOADS: 1

Pero la carga de activos falla con esto:

Aws::S3::Errors::NotImplemented: Header 'x-amz-acl' with value 'public-read' not implemented

Y entonces recordé hacer el bucket público como se describe en Public buckets · Cloudflare R2 docs

Pero todavía no funcionó.

S3 API compatibility · Cloudflare R2 docs muestra que x-amz-acl no está implementado.

Al echar un vistazo al código de Discourse, no me queda claro que sea posible hacer que R2 funcione sin cambios en el núcleo.

Después de deshabilitar las cargas, las copias de seguridad funcionan, por lo que R2 parece ser una forma muy económica de tener copias de seguridad S3. Pero como había hecho público ese bucket, la copia de seguridad también era pública (si puedes adivinar el nombre del archivo), así que si esto se resuelve, querrás buckets separados para copias de seguridad y cargas.

Eliminé esta línea y pude ver que subió un archivo, y pude acceder a él usando un dominio personalizado como s3_cdn_url. (Y una edición similar en la tarea rake de s3 permite que los activos se carguen).

5 Me gusta

Así que supongo que lo añadimos como no compatible en el OP hasta que implementen ACL a nivel de objeto. ¡Gracias por probarlo!

2 Me gusta

Sí. Los cambios necesarios en el núcleo para permitirle omitir el establecimiento de la ACL parecen bastante complicados. Se podría decir que está bien solo para copias de seguridad. Si no te esfuerzas para hacer pública la bucket, debería estar bien.

1 me gusta

El problema es el endpoint de s3

1 me gusta

Acabo de probar R2, pero parece que no respetan nuestra información de “Content-Encoding”, a pesar de que sus documentos dicen que lo harán. Quizás en un año será utilizable.

3 Me gusta

Es necesario agregar una advertencia a las secciones de MinIO o generales. Necesitamos incluir una nota que diga: “Discourse utiliza el modo DNS para las rutas en sistemas de almacenamiento compatibles con S3. Si el backend solo admite el modo de ruta y no el modo DNS para las rutas de los buckets, entonces no es compatible con Discourse”. Es por eso que MinIO originalmente no estaba en la lista y se agregó más tarde.

También necesito actualizar la sección del servidor de almacenamiento MinIO: la advertencia n.º 2 debe indicar lo siguiente:

  1. Tienes habilitado el Soporte de Dominio en la configuración de MinIO para rutas de bucket basadas en dominio. Esto es obligatorio, ya que Discourse no admite rutas de bucket basadas en rutas no basadas en dominio con mecanismos de almacenamiento S3.

EDITAR: Parece que con esta publicación obtuve el estado de Miembro (nivel de confianza 2), por lo que ahora pude editar la publicación wiki. No se necesita ninguna acción por parte de los moderadores, a pesar de que les pedí que hicieran las ediciones.

4 Me gusta

¡Impresionante! Gracias por tu ayuda para mantener las cosas actualizadas. Esa parece ser el tipo de advertencia con la que estaría feliz de contar.

:clinking_glasses: :palms_up_together:

2 Me gusta