Konfigurieren Sie einen S3-kompatiblen Objektspeicheranbieter für Uploads

Hallo @mcwumbly. Das war sehr einfach zu finden, als ich nach „S3-Klon“ suchen konnte. Ich konnte es gerade nicht finden. War mit diesem Titel etwas nicht in Ordnung? Gibt es eine Suche, die es finden wird? Könnten wir etwas hinzufügen (ich weiß nicht mehr, wie es heißt), damit es bei einigen Wörtern automatisch verlinkt, wie es die Standardinstallation tut (aber ich kann mir keine Wörter dafür ausdenken).

3 „Gefällt mir“

Als jemand, der diese Themen mehrmals pro Woche verlinkt, stimme ich irgendwie zu :stuck_out_tongue:

Vielleicht hilft es der Suchfunktion, wenn „S3-Klone“ in den Hauptbeitrag aufgenommen werden?

2 „Gefällt mir“

Ich habe festgestellt, dass „S3-kompatibel“ häufiger vorkommt, weshalb ich ihn bei einer allgemeinen Aktualisierung von Dokumentationstiteln geändert habe, zum Beispiel: AWS S3 Compatible Object Storage | MinIO

Ich denke jedoch, dass der Vorschlag, andere Suchbegriffe in den Hauptbeitrag aufzunehmen, sinnvoll ist. (Ich habe ihn gerade in diesem hier hinzugefügt).

1 „Gefällt mir“

Scheint in Ordnung zu sein. Ich schätze, wir müssen uns mit der Zeit ändern. :person_shrugging:

Ja. Es ist wirklich nicht so schwer. Du schaffst das, @pfaffman!

@falco:

2 „Gefällt mir“

Hallo, hat jemand Contabo Object Storage für S3-kompatible Uploads zum Laufen gebracht? Es scheint, dass beim Hochladen der Repository-Name in der URL vorangestellt wird.

Wenn Sie beispielsweise einen Bucket namens “community” haben, wird eine URL wie https://community.eu2.contabostorage.com erstellt.

Ich habe dieses Verhalten beispielsweise in Duplicati gefunden, aber es kann ausgeschlossen werden, dass der Bucket-Name im Domainnamen vorangestellt wird.

Ich wäre dankbar, wenn jemand die Lösung hätte, um diesen Objektspeicher nutzen zu können, da er sehr gute Preise hat.

Ich habe mehrere Tests durchgeführt, um die Domain als CNAME in meiner Domain von Cloudflare zu konfigurieren, um SSL bereitzustellen, aber für community.cdn.midominio.com wird das SSL-Zertifikat nicht mehr abgedeckt, da sie ein Wildcard verwenden, und wenn ich den Proxy von Cloudflare deaktiviere, beschwert er sich, weil das Zertifikat nicht korrekt ist.

Grüße,

1 „Gefällt mir“

Haben Sie versucht, die S3-CDN-Einstellung auf https://community.eu2.contabostorage.com zu setzen? IMO wird das funktionieren.

Existiert nicht, es ist der Contabo-Endpunkt eu2.contabostorage.com

1 „Gefällt mir“

Ja, aber wie lautet die endgültige URL einer Beispieldatei in einem Bucket?

2 „Gefällt mir“

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

Er meint, wenn Sie selbst eine Datei in den Bucket hochladen (mit welchem Tool auch immer Sie eine Datei hochladen können), welche URL würden Sie verwenden, um auf die Datei zuzugreifen?

2 „Gefällt mir“

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

Die Struktur ist

Host: https://eu2.contabostorage.com/
Benutzer: 9198f3bf2d6e43dd86fab037ebad3aee
Bucket: comunidad
Datei: castopod-1.png

2 „Gefällt mir“

Das ist keine funktionierende URL. Aber ich schätze, sie könnte funktionieren, wenn Sie den Doppelpunkt durch einen Schrägstrich ersetzen?

Das ist nicht so, wie Sie es in Ihrem ersten Beitrag beschrieben haben, also kann er vielleicht jetzt einen anderen Vorschlag machen.

1 „Gefällt mir“

Versuchen Sie also, Folgendes festzulegen

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

und bauen Sie neu.

2 „Gefällt mir“

Cloudflares R2 ist endlich öffentlich verfügbar (es hat anscheinend nur ein Jahr gedauert). (Hier ist die ursprüngliche Ankündigung: Announcing Cloudflare R2 Storage: Rapid and Reliable Object Storage, minus the egress fees)

Ich habe einen Bucket erstellt.

Ich habe einen Token erstellt, der Folgendes beinhaltet: „Bearbeiten: Bearbeitungszugriff auf alle Objekte und List-, Schreib- und Löschvorgänge aller Buckets zulassen“

Hier ist, was ich versucht habe:

  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

Aber das Hochladen von Assets schlägt mit Folgendem fehl:

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

Und dann erinnerte ich mich, den Bucket wie unter Public buckets · Cloudflare R2 docs beschrieben öffentlich zu machen.

Aber es funktionierte immer noch nicht.

S3 API compatibility · Cloudflare R2 docs zeigt, dass x-amz-acl nicht implementiert ist.

Wenn man sich den Discourse-Code ansieht, ist mir nicht klar, ob es möglich ist, R2 ohne Änderungen am Kern zum Laufen zu bringen.

Nachdem ich das Hochladen deaktiviert hatte, funktionierten Backups, sodass R2 eine sehr günstige Möglichkeit zu sein scheint, S3-Backups zu haben. Aber da ich diesen Bucket öffentlich gemacht hatte, war das Backup auch öffentlich (wenn man den Dateinamen erraten kann). Wenn dies also geklärt wird, möchten Sie separate Buckets für Backups und Uploads haben.

Ich habe diese Zeile entfernt und konnte sehen, dass eine Datei hochgeladen wurde und ich sie über eine benutzerdefinierte Domain als s3_cdn_url darauf zugreifen konnte. (Und eine ähnliche Bearbeitung der S3-Rake-Aufgabe ermöglicht das Hochladen von Assets.)

5 „Gefällt mir“

Also fügen wir sie vorerst als nicht kompatibel in den OP ein, bis sie objektbezogene ACLs implementieren. Danke, dass du es ausprobiert hast!

2 „Gefällt mir“

Ja. Die erforderlichen Änderungen am Kern, um das Überspringen des ACL-Setzens zu ermöglichen, scheinen ziemlich knifflig zu sein. Man könnte sagen, dass es nur für Backups in Ordnung ist. Wenn Sie keine Umstände machen, um den Bucket öffentlich zu machen, sollte es in Ordnung sein.

1 „Gefällt mir“

Das Problem ist der S3-Endpunkt

1 „Gefällt mir“

Ich habe R2 gerade getestet, aber es scheint, dass sie unsere “Content-Encoding”-Informationen nicht respektieren, obwohl ihre Dokumentation besagt, dass sie es tun werden. Vielleicht ist es in einem Jahr nutzbar.

3 „Gefällt mir“

Dies benötigt eine Warnmeldung, die den MinIO- oder allgemeinen Abschnitten hinzugefügt wird. Wir benötigen hier einen Hinweis, dass „Discourse den DNS-Modus für Pfade auf S3-kompatiblen Speichersystemen verwendet. Wenn das Backend nur den Pfadmodus und nicht den DNS-Modus für Bucket-Pfade unterstützt, ist es nicht mit Discourse kompatibel.“ Deshalb war MinIO ursprünglich nicht auf der Liste und wurde später hinzugefügt.

Ich benötige auch die Aktualisierung des Abschnitts „MinIO Storage Server“ – ich benötige, dass die Einschränkung Nr. 2 Folgendes besagt:

  1. Sie haben die Domain-Unterstützung in der MinIO-Konfiguration für domänengesteuerte Bucket-Pfade aktiviert. Dies ist zwingend erforderlich, da Discourse keine Bucket-Pfade unterstützt, die nicht domänengesteuert sind, mit S3-Speichermechanismen.

EDIT: Sieht so aus, als hätte ich mit diesem Beitrag den Mitgliedsstatus (Vertrauensstufe 2) erhalten, sodass ich den Wiki-Beitrag jetzt bearbeiten konnte. Es sind keine Maßnahmen von den Moderatoren erforderlich, auch wenn ich sie gebeten habe, die Bearbeitungen vorzunehmen.

4 „Gefällt mir“

Großartig! Vielen Dank für deine Hilfe, die Dinge auf dem neuesten Stand zu halten. Das sieht nach einer Warnung aus, mit der ich gerne leben würde.

:clinking_glasses: :palms_up_together:

2 „Gefällt mir“