Cloudflare R2 Buckets können zum Speichern statischer Assets wie Bilder und GIFs für die Discourse-Community verwendet werden, jedoch nicht zum Speichern von Community-Backups!
Einleitung:
Cloudflare R2 Object Storage kann als Alternative zu Amazon S3 für die Speicherung von Uploads für Ihr Discourse-Forum verwendet werden. Die folgenden Schritte beschreiben, wie Sie dies konfigurieren.
Konfigurationsschritte:
S3-Uploads aktivieren: Aktivieren Sie das Kontrollkästchen, um S3-Uploads in Ihren Discourse-Einstellungen zu aktivieren.
S3-Zugriffsschlüssel-ID: Geben Sie die API-Schlüssel-ID für Ihren R2-Speicher-Bucket ein. Dies ist die ID, die Sie bei der Erstellung eines API-Tokens für Ihren Bucket erhalten haben.
Geheimer Zugriffsschlüssel: Geben Sie den geheimen Schlüssel ein, der bei der Erstellung des API-Tokens zur Gewährung des Zugriffs auf Ihren Speicher-Bucket bereitgestellt wurde. Wichtig: Dieser geheime Schlüssel wird nur einmal angezeigt. Sichern Sie ihn daher unbedingt.
S3-Region: Sie können eine beliebige Region eingeben, für R2 spielt dies keine Rolle.
S3-Upload-Bucket: Geben Sie den Namen Ihres R2-Speicher-Buckets ein.
S3-Endpunkt: Geben Sie den S3-API-Link für Ihren R2-Bucket ein, der im Format https://xxxxxx.com vorliegt. Diesen Link finden Sie im Cloudflare R2-Dashboard.
S3-CDN-URL: Geben Sie die öffentliche R2.dev-Speicher-Bucket-URL für Ihren Bucket ein. Diese finden Sie ebenfalls in Ihrem Cloudflare R2-Dashboard.
Abschluss:
Sobald diese Einstellungen konfiguriert sind, ist Ihr Discourse-Forum für die Verwendung von Cloudflare R2 zur Speicherung eingerichtet.
Informationen zur kostenlosen Stufe:
Der R2-Dienst von Cloudflare bietet eine kostenlose Stufe, die 10 GB Speicherplatz, 1 Million Uploads und 1 Million Leseoperationen pro Monat umfasst.
Vielen Dank für Ihr Feedback. Ich habe die Anleitung zuvor sorgfältig gelesen und glaube, dass der Rat bezüglich Cloudflare R2 falsch ist. Der Artikel legt nahe, dass die Discourse-Community Cloudflare R2-Buckets nicht unterstützt. In Wirklichkeit ist Cloudflare R2 jedoch sehr gut mit S3 kompatibel und kann Bild- und Dateiuploads und -downloads für die Discourse-Community perfekt verarbeiten. Dies wurde durch praktische Anwendung in meiner Community (starorigin.net) verifiziert.
Und ich vermute, das war zur Zeit der Erstellung richtig.
Es ist viel besser, die S3-Einstellungen in der yml-Datei vorzunehmen, als sie über die Benutzeroberfläche zu konfigurieren und in der Datenbank zu speichern. Haben Sie versucht, Ihre Datenbank auf einen neuen Server wiederherzustellen?
Sobald Sie die Dinge auf die empfohlene Weise eingerichtet haben, können Sie dieses Thema bearbeiten oder einen Kommentar abgeben und jemanden anderen bitten, dies zu tun.
Sie haben Recht, ich verwende einen Cloudflare R2 Storage Bucket, um die Bilder, GIFs und andere Ressourcen meiner Community zu speichern. Dies reduziert die Auslastung des Community-Servers erheblich und beschleunigt das Laden von Seiten.
Ich habe keine automatischen Backups für meine Community eingerichtet, die im Cloudflare R2 Storage Bucket gespeichert werden sollen, da Cloudflare R2 Buckets das Speichern komprimierter Dateien nicht unterstützt. Cloudflare R2 Storage kann jedoch die PDFs, Bilder, GIFs und andere statische Ressourcen der Community speichern, was ebenfalls sehr gut ist.
Vielen Dank für die Erinnerung, ich werde diesen Teil hervorheben.
Cloudflare R2-Buckets können zum Speichern statischer Assets wie Bilder und GIFs für die Discourse-Community verwendet werden, jedoch nicht zum Speichern von Community-Backups!
Nur um diesen Beitrag zu aktualisieren, gab es einige Stolpersteine, die ich einbeziehen musste, bevor Cloudflare für mich funktionierte.
1. Region
Das stimmte nicht, ich musste “auto” oder die von mir gewählte Region verwenden, auto ist einfacher, also verwenden Sie auto.
Wenn Sie wissen müssen, welche Optionen Sie verwenden können, versuchen Sie es mit einer beliebigen zufälligen Zeichenfolge in Ihrer Region und:
Dies gibt einen Fehler für Ihre gültigen Optionen aus
2. API-Berechtigungen
Es ist auch wichtig zu wissen, dass restriktive API-Tokens nicht funktionieren. Sie müssen Admin Read & Write verwenden. Object Read & Write funktionierte nicht
Ich habe auch bestätigt, dass die API-Schlüssel Konto-API-Schlüssel und keine nur auf Buckets beschränkten Schlüssel sind (wie im Beitrag erwähnt). Außerdem zeigt meine Discourse-Instanz Folgendes an:
Ich glaube, das ist alles korrekt.
Stellen Sie sicher, dass die CDN_URL (https://pub-xxx.r2.dev)
öffentlichen Lesezugriff hat, damit anonyme Benutzer die Assets sehen können.
Sie können in den Entwicklertools des Browsers sehen, was vor sich geht. Wenn die Berechtigungen falsch sind, erhalten Sie viele 403er und rote Anfragen im Netzwerk-Tab.
Das ist eine Möglichkeit, es zu tun, aber nicht die empfohlene Methode, und Sie werden Probleme haben.
Angenommen, Sie haben bereits Ihre Domain und Cloudflare ist bereits Ihr DNS:
Cloudflare wird automatisch als Proxy fungieren und Caching für diese Domain durchführen.
Sie können dann CDN_URL zu dieser benutzerdefinierten Domain ändern.
Innerhalb der S3-Bucket-Einstellungen gibt es eine Einstellung für den öffentlichen Zugriff.
Setzen Sie eine eindeutige Subdomain dafür. (Cloudflare erstellt automatisch den DNS-Eintrag sowie das Proxying und Caching für Sie.)
Haben Sie auch Backups für Cloudflare R2 zum Laufen gebracht, und ist es möglich (vorausgesetzt, Backups für Cloudflare R2 sind möglich), es so einzurichten, dass sowohl lokal als auch auf Cloudflare R2 gesichert wird?
Bedeutet das Skript, das alle Assets hochlädt, auch, dass sie lokal gelöscht werden (um Speicherplatz freizugeben)? Oder gibt es ein separates Verfahren, das ich dafür durchführen muss?
Vielen Dank, dass Sie sich die Zeit nehmen, mir dabei zu helfen
Ich habe es persönlich noch nicht ausprobiert.
Mein Forum fällt in die Kategorie „nicht unterstützt“, da meine Datenbank extern ist und ich eine andere Backup-Strategie habe als die pg_dumps, die das Forum verwendet.
Soweit ich höre, funktionieren Backups nicht auf Cloudflare, aber nichts hindert Sie daran, es auszuprobieren.