Cloudflare R2: Einrichtung navigieren und Konfigurationsfehler behandeln

Gibt es immer noch keine Entwicklung bei Cloudflare R2? Es sah für mich gut aus..

Hast du die Notiz dazu oben gelesen? Sie ist nicht mit gzip-Dateien kompatibel, und es gab keinen Hinweis darauf, dass eine Änderung geplant war. Vielleicht funktioniert sie mit allem außer Uploads?

Hast du es ausprobiert? Hat es funktioniert?

1 „Gefällt mir“

Ja, ich habe es gelesen, aber das war vor 2 Jahren und einige Dinge haben sich vielleicht geändert.

Ich wollte es heute ausprobieren, ich habe R2 aktiviert und die Seite hinzugefügt. Ich bin mir nur nicht sicher, wie ich das im Discourse-Schritt konfigurieren soll. Denn ich konnte noch nicht herausfinden, wo ich die Schlüssel- oder Geheimcodes von Cloudflare bekomme. Ich experimentiere, vielleicht kann mir ein kleines Detail helfen :slight_smile:

3 „Gefällt mir“

Ebenso :thinking: mein Bucket ist aktiv, aber vielleicht hat Discourse noch keine Unterstützung, aber ich hoffe darauf.

1 „Gefällt mir“

Diese Seite beschreibt, wie Sie die Schlüssel erhalten: Authentication · Cloudflare R2 docs

2 „Gefällt mir“

Ich habe alles versucht, aber ich bekomme immer diesen Fehler:

Aws::S3::Errors::BadRequest

Ich frage mich, was ich übersehe?

Wenn ich ein Bild vom R2-Panel hochlade, wird dieses Bild mit der speziellen CDN-URL geöffnet. Das Problem ist, dass das Bild nicht auf der Website geladen werden kann. Ich habe CORS erstellt und alle Methoden geöffnet.

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

Irgendwelche Ideen?

1 „Gefällt mir“

Das ist möglich, aber die Aussage von Cloudflare vor 2 Jahren war, dass sich dies wahrscheinlich nicht ändern würde. Jemand, der wirklich von R2 begeistert ist, müsste das herausfinden. Dennoch scheint es möglich, dass es für alles außer gz-Dateien funktioniert, was meiner Meinung nach nur Backups bedeutet.

Aber keine S3-Backups zu haben, scheint viel zu sein, worauf man verzichten müsste.

Das klingt, als hättest du nicht den richtigen Schlüssel oder den richtigen Endpunkt.

2 „Gefällt mir“

Ehrlich gesagt, ich nutze derzeit Cloudflare für meine Discourse-Seite und es ist generell gut, alles an einem Ort zu haben. Sich mit Amazon zu beschäftigen, kann also etwas anstrengend sein, wenn man R2 hat. Ich habe eine Weile versucht, Amazon S3 zu installieren, und aus irgendeinem Grund konnte ich die Style-Dateien nicht laden. (Okay, ich werde es noch einmal versuchen), aber es wäre gut, Cloudflare nicht zu ignorieren, besonders wenn man das Cloudflare-Supportforum Discourse nutzt :slight_smile:

1 „Gefällt mir“

Das passiert normalerweise, wenn Sie die Klausel nicht hinzufügen, die Assets nach S3 pusht ( Sie würden sie auch benötigen, damit jeder S3-ähnliche Dienst funktioniert, wenn Sie die Variable use_s3 festlegen).

2 „Gefällt mir“

Hast du also etwas anderes versucht und es zum Laufen gebracht? Was hast du gemacht? Kannst du es so aufschreiben wie die anderen in Konfigurieren Sie einen S3-kompatiblen Objektspeicheranbieter für Uploads?

Funktioniert es für Backups?

Ich habe alles versucht, was ich konnte. Ich habe versucht, es experimentell zu machen, indem ich die Einstellungen geändert habe. Aber jedes Mal erhalte ich diesen Fehler und wenn ich ihn mir ansehe, scheint es, dass das Bild nicht geladen wurde.

Ich konnte auch nichts in den Fehlercodes finden. Es wäre schön, wenn ich es zum Laufen bringen könnte, da alles in einem Panel (Cloudflare) wäre aufregend und effektiv.

Ich habe es als Backup versucht, Entschuldigung. Als ich versagte, wandte ich mich wieder an Amazon. Ich wäre sehr glücklich, wenn es jemanden gäbe, der in dieser Hinsicht erfolgreicher ist :slight_smile:

Ich habe ein Bild vom R2-Panel hochgeladen und kann darauf zugreifen. Ich kann jedoch kein Bild über Discourse hochladen, es gibt den obigen Fehler.

Also, vielleicht funktioniert es nicht so, wie die Dokumentation sagt, dass es nicht funktioniert.

1 „Gefällt mir“

Oder vielleicht schulde ich Ihnen eine Entschuldigung. Es scheint mir gelungen zu sein, es zum Laufen zu bringen, obwohl ich keine Zeit habe, Ihnen Anweisungen zu geben, wie Sie es zum Laufen bringen können.

  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'

Vergessen Sie nicht die Zeile, die die Rake-Aufgabe zum Hochladen nach S3 durchführt.

Probieren Sie es aus und sehen Sie, ob es für Sie funktioniert. Ein schneller Test zeigt, dass es für Uploads, Assets und Backups funktioniert. Ich schätze, das Problem mit Gzip-Dateien besteht also nicht mehr.

4 „Gefällt mir“

Nachdem ich die Region (auto) und die letzte URL korrigiert hatte, funktionierte es. Es gibt jedoch ein Problem. Wenn ich es neu erstelle, werden die Style-Dateien nicht geladen und die Website wird natürlich nicht geöffnet. Wenn ich sie jedoch nur zum Hochladen öffne, kann ich Bilder von der Website hochladen und wir können über die CDN-URL darauf zugreifen. Das einzige Problem ist, dass ich möchte, dass die Style-Dateien vom CDN bereitgestellt werden. Wie können wir das tun? Ich denke, das ist unser einziges Problem.

Sie müssen die Anweisungen befolgen, um die Assets an S3 zu senden:

Was haben Sie für CDN verwendet? Wenn es Cloudflare war, wie haben Sie es konfiguriert?

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

Ich habe dies hinzugefügt. Wenn ich neu kompiliere, ändern sich alle Links auf der Website mit der CDN-URL. Diese Style-Dateien werden jedoch nicht auf Cloudflare hochgeladen. Daher habe ich nur die Upload-Region-Einstellung in die Datei app.yml aufgenommen und auf diese Weise kompiliert. Wenn ich S3 aus der Administration aktiviere, werden die neu hochgeladenen Bilder auf Cloudflare R2 hochgeladen und der Zugriff wird bereitgestellt.

Das einzige Problem ist, dass die neu erstellten Style-Dateien nicht geladen zu werden scheinen, wenn ich die S3-Einstellungen vor der Kompilierung der Datei app.yml hinzufüge. Aber die URLs und CDN-URLs ändern sich auf der Website.

CORS:

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

Könnte dieses Problem etwas mit Argo zu tun haben? Bilder werden jedoch derzeit problemlos geladen.

Um zu debuggen, können Sie in den Container wechseln und versuchen, die Rake-Aufgaben dort auszuführen und zu sehen, was passiert.

Ich habe gestern etwa 4 Stunden damit verbracht, daher fürchte ich, dass meine kostenlose Unterstützung für dieses Projekt bald aufgebraucht ist.

Ich weiß nichts über die CORS-Sachen. Ich würde alles von überall zulassen, um sicherzustellen, dass das nicht das Problem ist. Ich habe auf meiner Testseite nichts mit CORS gemacht.

Führen Sie dies unter k8s aus?

1 „Gefällt mir“

Es tut mir leid, Ihre Zeit in Anspruch zu nehmen. Wenn ich finanziell helfen könnte, würde ich es tun. Ich respektiere Ihre Zeit.

Ich weiß nicht, was k8s ist. Ich arbeite an meinem eigenen Server und habe Argo aktiviert. R2 ist ebenfalls aktiv. Alles funktioniert jetzt sehr gut, nur nach der neuen Kompilierung werden die Style-Dateien (js, css etc.) nicht in R2 geladen. Ich werde die notwendigen Tests später erneut durchführen und sie hier hinzufügen. Wenn ich erfolgreich bin, werde ich im Detail erklären, wie man das Problem findet oder es zum Laufen bringt.

1 „Gefällt mir“

Was ist Argo?

Wenn dies eine Standardinstallation ist, können Sie den Rake-Befehl innerhalb des Containers ausführen

./launcher enter app
rake ...

Sind Sie sicher, dass Sie den USE_S3-Teil einschließen? (Ich schätze schon, da ich denke, dass dies die Assets macht, die im CDN erwartet werden)

Argo: Overview · Cloudflare Argo Smart Routing docs

Ich habe die Einstellung USE_S3 vor dem Kompilieren hinzugefügt, Beispiel unten:

  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'

Nach dem erneuten Kompilieren ändern sich alle URLs wie erwartet. CDN-URL. Das einzige Problem ist, dass diese Assets nicht in R2 geladen werden. Ich hatte diese Einstellung bereits hinzugefügt:

  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

Hier ist der Anfang von 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

Jetzt werde ich versuchen, in den Container zu gehen und die Assets nach S3 hochzuladen.