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

¿Ha cambiado algo Scaleway? Me funcionaba hasta hace 48 horas, pero ya no funciona.

1 me gusta

¿Está tu factura pagada? ¿Qué ocurre? ¿Funcionan las imágenes? ¿Han desaparecido todas o simplemente no puedes añadir nuevas?

1 me gusta

¿Puede añadir un poco más de soporte? Por ejemplo, Tencent COS de China es más conveniente para los usuarios chinos, y COS de Tencent Cloud tiene nodos CDN en todo el mundo, lo que permite un acceso muy rápido.

¿Lo has probado? ¿Funciona?

Lo he usado en el entorno de prueba, pero solo puedo hacer copias de seguridad en Tencent COS, y espero que la versión oficial de Discourse pueda agregar soporte para Tencent COS para facilitar a los desarrolladores de China.

1 me gusta

Creo que necesitarás compartir lo que has hecho y qué errores o problemas has tenido. Entonces alguien podría sugerir cómo hacerlo funcionar. Podrías mirar los otros ejemplos y ver si puedes usarlos para hacerlo funcionar.

Creo que es poco probable que hagan cambios en el núcleo para soportarlo.

1 me gusta

Backblaze:

  • He configurado un bucket B2 en mi cuenta
  • Añadí detalles a la sección env de app.yml
  • Ejecuté ./launcher rebuild app

…pero no veo ninguna confirmación en el panel de control de mi instancia de Discourse de que esta configuración haya surtido efecto. ¿Dónde debería buscar?

1 me gusta

Hola,

Pude probar y usar Cloudflare R2 con éxito tanto para cargas como para copias de seguridad. Publicación detallada aquí Cloudflare R2: Navigating Setup and Handling Configuration Errors - #40 by kamaljain

Solicitaría que por favor prueben en su extremo y revisen el “Funciona con Discourse” a Sí para Cloudflare R2. De hecho, es más fácil que S3 y más económico, gratis si es <10 GB de almacenamiento.

2 Me gusta

Yo también probé una configuración en multisitio y también creo que está funcionando.

He visto algo que me hace preguntarme si puedes obtener una lista de copias de seguridad. Intentaré comprobar mi configuración.

1 me gusta

Puedo ver las copias de seguridad listadas. Aún no he intentado restaurar.

1 me gusta

Hola hermano, ¿puedo chatear contigo? Tengo algunos problemas al configurar MinIO.
Gracias.

Configuración de iDrive

Solo quería informar que usar la versión E2 de iDrive para almacenamiento s3 funciona perfectamente con estas configuraciones:

Configuración de ENV en el archivo yaml

Asegúrate de que tu bucket tenga al menos permisos Público y Lectura en la configuración de iDrive.

Estas son las configuraciones que uso para un bucket que comparte uploads (cargas) y backups (copias de seguridad).

DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: tu-región
DISCOURSE_S3_ENDPOINT: https://tu-endpoint-de-idrive.dev
DISCOURSE_S3_ACCESS_KEY_ID: tu-clave-de-acceso
DISCOURSE_S3_SECRET_ACCESS_KEY: tu-clave-secreta
DISCOURSE_S3_CDN_URL: https://tu-cdn-personalizado.com/uploads
DISCOURSE_S3_BUCKET: tu-nombre-de-bucket/uploads
DISCOURSE_S3_BACKUP_BUCKET: tu-nombre-de-bucket/backups
DISCOURSE_BACKUP_LOCATION: s3
DISCOURSE_S3_INSTALL_CORS_RULE: false

Por defecto, iDrive tiene Compartir todo en esta región con todos los orígenes… así que debería funcionar directamente sin necesidad de configuraciones adicionales, independientemente de las fuentes. Bloquéalo a tus propios dominios si lo deseas.

Utilizo un certificado de origen de Cloudflare para crear un CNAME que apunta al endpoint de iDrive.

Sincronizar Archivos Adjuntos Existentes

Reconstruir

Reconstruye la aplicación después de cambiar estas configuraciones de ENV.


Cargar y Re-procesar

Luego, ingresa al contenedor y ejecuta

rake uploads:migrate_to_s3

Observa cómo se carga, luego ejecuta

rake posts:rebake_uncooked_posts

Sal del contenedor.


Añadir a la sección hooks del archivo yaml

En 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

Esto asegura que los archivos js/css se carguen en iDrive después de tus archivos adjuntos, de lo contrario, obtendrás muchos errores en la consola del navegador ya que faltarán todos.


Reconstruir

Reconstruye de nuevo después de que el comando de assets se ejecute.

¡Todo debería estar bien!

2 Me gusta

¿Quizás el servicio Hetzner Object Storage debería añadirse a la tabla?

2 Me gusta

Conseguí usar Contabo para subir archivos. Tanto los archivos antiguos (migrados) como las nuevas subidas funcionaron perfectamente. En mi caso, la URL del bucket era https://eu2.contabostorage.com/mybucket.
El truco fue establecer EU2 como nombre del bucket y https://contabostorage.com/mybucket como endpoint.
El único problema es que al cargar el sitio también solicita otros archivos como los js de los plugins del bucket y no se cargan al no estar disponibles los archivos. Bueno, entendí que esto se debe a que he configurado la URL de la CDN igual que el bucket. Esto no me queda muy claro todavía, ¿alguien puede decirme cómo configurarlo? Por lo que entendí, tengo que crear una dirección cname que apunte al dominio principal (servidor de discourse) y proxyzarlo con cloudflare, ¿es esto correcto?

1 me gusta

Te perdiste esta parte:

1 me gusta

Estoy seguro de que lo hice, pero quizás cometí un error. Al final, restauré una copia de seguridad, así que voy un poco de memoria… Pero entonces, me pregunto, ¿por qué se desaconseja configurar una CDN como el Bucket? ¿Qué problemas puede causar? Lo intentaré de nuevo mañana.
Gracias

1 me gusta

No creo que el problema que describes se deba a que estableciste la URL de la CDN como la URL del bucket (es decir, si las cargas funcionan, pero los activos no).

2 Me gusta

Te actualizaré mañana, gracias

1 me gusta

Y funcionó :partying_face:
Paso a paso de lo que hice esperando ayudar a otros:

editado app.yml y añadido

  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

después de hooks: (justo después de git clone plugins…)
y

  DISCOURSE_USE_S3: true
  DISCOURSE_S3_REGION: EU
  DISCOURSE_S3_ENDPOINT: https://contabostorage.com/bucketname
  DISCOURSE_S3_ACCESS_KEY_ID: accesskey
  DISCOURSE_S3_SECRET_ACCESS_KEY: secretaccesskey
  DISCOURSE_S3_CDN_URL: https://eu2.contabostorage.com/randomlettersthatcontaboaddstothelinks:bucketname
  DISCOURSE_S3_BUCKET: eu2
  DISCOURSE_BACKUP_LOCATION: s3
  DISCOURSE_S3_INSTALL_CORS_RULE: false

después de la configuración del correo electrónico
luego he establecido los mismos valores en el menú de discourse y habilitado las cargas S3.
Reconstruí la aplicación con

cd /var/discourse
sudo ./launcher rebuild app

luego

./launcher enter app
rake uploads:migrate_to_s3

Esto lleva un tiempo, en mi caso unas pocas horas (80k archivos, 100GB)

Cuando termine

rake posts:rebake_uncooked_posts
4 Me gusta

Actualización: algunos usuarios no pudieron cargar el sitio (recursos y archivos). Descubrimos que el dominio contabostorage.com estaba presente en algunas listas negras como un sitio de phishing. La solución fue simple:

configurar un subdominio files.mydomain.com como se describe aquí Can I Setup a Custom Domain for My Object Storage? : Contabo

Actualizado DISCOURSE_S3_CDN_URL: https://files.mydomain.com en app.yml

Luego

cd /var/discourse
sudo ./launcher rebuild app

y para completar el trabajo

./launcher enter app
rake posts:rebake

Ahora todos los recursos y cargas se cargan desde https://files.mydomain.com/pathtofile/file.ext

Hecho

2 Me gusta