Cloudflare R2 : Configuration initiale et gestion des erreurs de configuration

Y a-t-il toujours aucun développement sur Cloudflare R2 ? Cela me semblait bien…

Avez-vous lu la note à ce sujet ci-dessus ? Il est incompatible avec les fichiers gzip, et rien n’indiquait qu’il y avait un plan pour les changer. Peut-être fonctionne-t-il avec tout sauf les téléchargements ?

L’avez-vous essayé ? Cela a-t-il fonctionné ?

1 « J'aime »

Oui, je l’ai lu, mais c’était il y a 2 ans et certaines choses ont pu changer.

Je voulais l’essayer aujourd’hui, j’ai activé R2 et ajouté le site. Je ne suis juste pas sûr de la façon de configurer cela dans l’étape discourse. Parce que je n’ai pas encore réussi à trouver où obtenir les codes de clé ou secrets de Cloudflare. J’expérimente, peut-être qu’un petit détail peut m’aider :slight_smile:

3 « J'aime »

Idem :thinking: mon bucket est actif mais peut-être que Discourse n’a pas encore le support mais j’espère pour ça.

1 « J'aime »

Cette page décrit comment obtenir les clés : Authentication · Cloudflare R2 docs

2 « J'aime »

J’ai tout essayé mais j’obtiens toujours cette erreur :

Aws::S3::Errors::BadRequest

Je me demande ce qui me manque ?

Lorsque je télécharge une image depuis le panneau R2, cette image s’ouvre avec l’URL CDN spéciale. Le problème est que l’image ne peut pas être chargée sur le site. J’ai créé des CORS et ouvert toutes les méthodes.

[
  {
    "AllowedOrigins": [
      "https://SITENAME.com"
    ],
    "AllowedMethods": [
      "GET",
      "POST",
      "HEAD",
      "DELETE",
      "PUT"
    ]
  }
]

Des idées ?

1 « J'aime »

C’est possible, mais d’après Cloudflare il y a 2 ans, il était peu probable que cela change, donc quelqu’un qui est vraiment enthousiasmé par R2 devra trouver une solution. Cela dit, il semble possible que cela fonctionne pour tout sauf les fichiers gz, ce qui signifie, je pense, uniquement les sauvegardes.

Mais ne pas avoir de sauvegardes S3 semble être beaucoup à abandonner.

Cela ressemble à un problème de clé ou de point de terminaison incorrect.

2 « J'aime »

Franchement, j’utilise actuellement Cloudflare sur mon site Discourse et c’est généralement bien d’avoir tout au même endroit. Donc, traiter avec Amazon peut être un peu fatigant quand on a r2. J’ai essayé d’installer Amazon S3 pendant un certain temps et pour une raison quelconque, je n’ai pas pu faire charger les fichiers de style. (ok, je vais réessayer) mais ce serait bien de ne pas ignorer Cloudflare, d’autant plus lorsque l’on utilise le forum de support Discourse de Cloudflare :slight_smile:

1 « J'aime »

C’est généralement lorsque vous n’ajoutez pas la strophe qui pousse les actifs vers s3 (vous en auriez également besoin pour que tout service de type s3 fonctionne si vous définissez la variable use_s3).

2 « J'aime »

Alors, avez-vous essayé autre chose et cela a-t-il fonctionné ? Qu’avez-vous fait ? Pouvez-vous le décrire comme les autres dans Configurer un fournisseur de stockage d’objets compatible S3 pour les téléchargements ?

Est-ce que cela fonctionne pour les sauvegardes ?

J’ai tout essayé. J’ai essayé de le faire expérimentalement en modifiant les paramètres. Mais à chaque fois, j’obtiens cette erreur et quand je la regarde, il semble que l’image n’ait pas été chargée.

Je n’ai rien pu trouver dans les codes d’erreur non plus. Ce serait formidable si je pouvais le faire fonctionner, avoir la plupart des choses dans un seul panneau (Cloudflare) serait passionnant et efficace.

Je l’ai essayé pour la sauvegarde, désolé. Quand j’ai échoué, je suis retourné vers Amazon. Je serais très heureux s’il y avait quelqu’un de plus expérimenté que moi à cet égard :slight_smile:

J’ai téléchargé une image depuis le panneau R2 et je peux y accéder. Cependant, je ne peux pas télécharger d’image via le discourse, cela me donne l’erreur ci-dessus.

Alors, peut-être que cela ne fonctionne pas comme la documentation l’indique.

1 « J'aime »

Ou peut-être que je vous dois des excuses. Il semble que j’aie réussi à le faire fonctionner, bien que je n’aie pas le temps de promettre que je pourrai écrire des instructions qui vous permettront de le faire fonctionner.

  DISCOURSE_USE_S3: true
  DISCOURSE_S3_REGION: 'auto'
  DISCOURSE_S3_ENDPOINT: https://=ACCOUNT_ID=.r2.cloudflarestorage.com
  DISCOURSE_S3_ACCESS_KEY_ID: '=ACCESS_KEY_ID='
  DISCOURSE_S3_SECRET_ACCESS_KEY: '=SECRET_ACCESS_KEY'
  DISCOURSE_S3_CDN_URL: '=S3_CDN_URL='
  DISCOURSE_CDN_URL: '=CDN_URL='
  DISCOURSE_S3_BUCKET: '=BUCKET='
  DISCOURSE_S3_BACKUP_BUCKET: '=BUCKET=/backups'
  DISCOURSE_BACKUP_LOCATION: 's3'

N’oubliez pas la section qui effectue la tâche rake pour pousser les téléchargements vers S3.

Essayez ceci et voyez si cela fonctionne pour vous. Un test rapide montre que cela fonctionne pour les téléchargements, les actifs et les sauvegardes. Donc, je suppose que le problème avec les fichiers gzip ne s’applique plus.

4 « J'aime »

Après avoir corrigé la région (auto) et la dernière URL, cela a fonctionné. Cependant, il y a un problème. Lorsque je le recrée, les fichiers de style ne sont pas chargés et naturellement le site ne s’ouvre pas. Cependant, lorsque je l’ouvre uniquement pour le téléchargement, je peux télécharger des images du site et nous pouvons y accéder via l’URL du CDN. Le seul problème est que je veux que les fichiers de style soient servis depuis le CDN. Comment pouvons-nous faire cela ? Je pense que c’est notre seul problème.

Vous devez suivre les instructions pour pousser les assets vers S3 :

Qu’avez-vous utilisé pour le CDN ? Si c’était cloudflare, comment l’avez-vous configuré ?

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

J’ai ajouté ceci. Lorsque je recompile, tous les liens du site changent avec l’URL du cdn. Cependant, ces fichiers de style ne sont pas téléchargés sur cloudflare. J’ai donc simplement ajouté le paramètre de région de téléchargement au fichier app.yml et compilé de cette façon. Lorsque j’active S3 depuis l’administration, les images nouvellement téléchargées sont téléchargées sur cloudflare R2 et l’accès est fourni.

Le seul problème est que lorsque j’ajoute les paramètres S3 avant de compiler le fichier app.yml, les fichiers de style nouvellement créés ne semblent pas être chargés. Mais les URL et les URL cdn changent sur le site.

CORS :

[
  {
    "AllowedOrigins": [
      "https://domain.com"
    ],
    "AllowedMethods": [
      "GET",
      "POST",
      "PUT",
      "HEAD",
      "DELETE"
    ]
  }
]

Ce problème pourrait-il avoir quelque chose à voir avec Argo ? Cependant, les images se chargent actuellement sans aucun problème.

Pour déboguer, vous pouvez entrer dans le conteneur et essayer d’exécuter les tâches rake là-bas et voir ce qui se passe.

J’ai passé environ 4 heures là-dessus hier, donc j’ai peur que mon support gratuit sur ce projet soit bientôt terminé.

Je ne sais rien du CORS. Je permettrais tout de partout pour m’assurer que ce n’est pas le problème. Je n’ai rien fait avec le CORS sur mon site de test.

Vous exécutez ceci sous k8s ?

1 « J'aime »

Désolé de prendre votre temps. Si je pouvais aider financièrement, je le ferais. Je respecte votre temps.

Je ne sais pas ce qu’est k8s. Je travaille sur mon propre serveur. et j’ai activé argo. R2 est également actif. Tout fonctionne très bien maintenant, seulement après la nouvelle compilation, il ne charge pas les fichiers de style (js, css etc.) dans R2. Je relancerai les tests nécessaires plus tard et les ajouterai ici. Si j’y parviens, j’expliquerai en détail comment trouver le problème ou le faire fonctionner.

1 « J'aime »

Qu’est-ce qu’Argo ?

S’il s’agit d’une installation standard, vous pouvez exécuter la commande rake à l’intérieur du conteneur

./launcher enter app
rake ...

Êtes-vous sûr d’inclure la partie USE_S3 ? (Je suppose que oui, car je pense que c’est ce qui fait que les actifs sont attendus sur le CDN)

Argo : Overview · Cloudflare Argo Smart Routing docs

J’ai ajouté le paramètre USE_S3 avant la compilation, exemple ci-dessous :

  DISCOURSE_USE_S3: true
  DISCOURSE_S3_REGION: 'auto'
  DISCOURSE_S3_ENDPOINT: 'https://xxxxxxxxxxxxxxxxx.eu.r2.cloudflarestorage.com'
  DISCOURSE_S3_ACCESS_KEY_ID: 'xxxxxxxxxxxxxxxxx'
  DISCOURSE_S3_SECRET_ACCESS_KEY: 'xxxxxxxxxxxxxxxxx'
  DISCOURSE_S3_CDN_URL: 'https://cdn.domain.com'
  DISCOURSE_CDN_URL: 'https://cdn.domain.com'
  DISCOURSE_S3_BUCKET: 'cloudflaredomain'
  DISCOURSE_S3_BACKUP_BUCKET: 'cloudflaredomain/backups'
  DISCOURSE_BACKUP_LOCATION: 's3'

Après recompilation, toutes les URL changent comme prévu. URL CDN. Le seul problème est que ces actifs ne sont pas chargés dans R2. J’avais déjà ajouté ce paramètre :

  after_code:
     - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git

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

Voici le début de app.yml :

templates:
  #- "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  ## Uncomment the next line to enable the IPv6 listener
  #- "templates/web.ipv6.template.yml"
  #- "templates/web.ratelimited.template.yml"
  ## Uncomment these two lines if you wish to add Lets Encrypt (https)
  # - "templates/web.ssl.template.yml"
  # - "templates/web.letsencrypt.ssl.template.yml"
  - "templates/cloudflare.template.yml"

## which TCP/IP ports should this container expose?
## If you want Discourse to share a port with another webserver like Apache or nginx,
## see https://meta.discourse.org/t/17247 for details
expose:
  - "80:80"   # http
  - "443:443" # https

Je vais maintenant essayer d’entrer dans le conteneur et de télécharger les actifs vers S3.