Grundlegende Anleitung zur Verwendung des MinIO-Speicherservers, der von Ihnen für Ihre Discourse-Instanz betrieben wird

MinIO-Server für S3-kompatiblen Objektspeicher nutzen

MinIO ist eine Objektspeicher-Serverlösung, die S3-kompatibel ist und standardmäßig cloud-nativ konzipiert wurde. Sie lässt sich jedoch problemlos auf lokalen Servern, VPS-Instanzen oder Cloud-Servern bereitstellen und eignet sich als Alternative zu Amazon AWS S3 oder anderen Systemen. Bei korrekter Konfiguration ist sie mit Discourse kompatibel.

Dieser Abschnitt geht davon aus, dass in Ihrer Umgebung folgende Voraussetzungen erfüllt sind:

  1. Sie verfügen über eine vollständig konfigurierte MinIO-Server-Instanz.
  2. Die Unterstützung für Domains ist in der MinIO-Konfiguration aktiviert.
  3. Die DNS-Konfiguration für MinIO ist ordnungsgemäß eingerichtet, sodass Bucket-Subdomains korrekt auf den MinIO-Server aufgelöst werden.
  4. Der Bucket discourse-data existiert auf dem MinIO-Server und verfügt über eine „public“-Richtlinie.
  5. Der Bucket discourse-backups existiert auf dem MinIO-Server und ist ein privater Bucket, in den Uploads abgelegt werden (nicht öffentlich erreichbar – die Standardrichtlinie für neue Buckets).
  6. Ihre S3-CDN-URL ist eine ordnungsgemäß konfigurierte CDN, die auf den Bucket zeigt und Anfragen zwischenspeichert, wie zuvor in diesem Dokument beschrieben.

Wenn alle oben genannten Anforderungen erfüllt sind, können Sie sofort loslegen.

Ein Beispiel für eine Konfiguration sieht wie folgt aus:

DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: anything
DISCOURSE_S3_ENDPOINT: https://minio.example.com
DISCOURSE_S3_ACCESS_KEY_ID: myaccesskey
DISCOURSE_S3_SECRET_ACCESS_KEY: mysecretkey
DISCOURSE_S3_CDN_URL: https://discourse-data-cdn.example.com
DISCOURSE_S3_BUCKET: discourse-data
DISCOURSE_S3_BACKUP_BUCKET: discourse-backups
DISCOURSE_BACKUP_LOCATION: s3

Damit erhalten Sie eine grundlegende MinIO-Konfiguration, bei der ein MinIO-Server anstelle von Amazon S3 verwendet wird.

4 „Gefällt mir“

Es ist großartig zu wissen, dass MinIO jetzt problemlos mit Subdomain-Style-Buckets funktioniert und wieder mit Discourse kompatibel ist.

Könntest du das Wiki Verwendung von Objektspeicher für Uploads (S3 & Klon) bearbeiten und MinIO-Anweisungen hinzufügen?

3 „Gefällt mir“

Es funktioniert seit geraumer Zeit sowohl mit Subdomain- als auch mit Pfad-basierten Buckets. Die DNS-Konfiguration ist jedoch die schmerzhafteste Komponente – sie benötigt spezielle Wildcard-DNS-Regeln oder einen angepassten DNS-Server, der aktiv über alle vorhandenen Buckets Bescheid weiß. Ich habe dies in bind9 mit Wildcard-Zonen umgesetzt, doch bei Diensten wie Cloudflare oder anderen scheitert die Subdomain-Variante hart daran.

Falls du der Ansicht bist, dass das oben Genannte für diesen Abschnitt geeignet ist, kann ich es gerne einfügen. Es würde jedoch den Abschnitt zu ‘Einschränkungen’ enthalten – und ich würde mich über jegliche Vorschläge oder Reviews freuen, die du mir bezüglich der Formulierung usw. machen möchtest. (Hinweis: Ich habe keine CDN-URL aufgenommen, da ich in meiner Bereitstellung kein CDN verwende, weil Geld ($) etwas ist, womit ich nicht experimentieren kann.)

3 „Gefällt mir“

Können Nutzer, die MinIO nur für Discourse betreiben, die DNS-Einträge für die beiden Discourse-Buckets auch manuell erstellen?

Die Einschränkung in diesem Thema sollte ausreichen. Die Konfiguration von MinIO liegt außerhalb des Rahmens dieses Forums, aber vorausgesetzt, MinIO funktioniert, ist die Nutzung durch Discourse ein gültiger Anwendungsfall.

2 „Gefällt mir“

Richtig, aber wie du bereits sagtest, ist die Konfiguration nicht im Geltungsbereich. Daher werde ich lediglich festhalten, dass die Bucket-Subdomain-Pfade aufgelöst werden müssen (und die DNS-Konfiguration den ${ADMINS} der Instanz überlassen).

2 „Gefällt mir“

Ja, und ich habe das Wiki entsprechend bearbeitet. Allerdings betreibt MinIO (sofern mir bekannt ist) keinen Cloud-Service, daher habe ich den Eintrag „Dienstname" im Inhaltsverzeichnis des Wikis am Anfang leer gelassen. Passe ihn bei Bedarf entsprechend an.

2 „Gefällt mir“

Toll! Vielen Dank für deinen Beitrag!

1 „Gefällt mir“

Gern geschehen!

Ich habe es ebenfalls angepasst: Der Anbieter ist selbst gehostet, aber der Abschnitt zu MinIO ist weiterhin verlinkt. Das sollte das Problem lösen, dass ich derzeit keine Cloud-Lösung des Anbieters finden konnte. (Du kannst diesen Thread jetzt schließen, wenn du möchtest, da er in den Wiki-Beitrag integriert ist.)

3 „Gefällt mir“

Zusätzlich wurde entdeckt (danke an den Open-Source-Code und die gute Dokumentation von MinIO!), dass CORS standardmäßig für alle MinIO-HTTP-Aktionsverben aktiviert ist – es müssen also keine CORS-Regeln installiert werden, da diese bereits vorhanden sind. Der Abschnitt zum selbst gehosteten MinIO wurde ebenfalls aktualisiert, sowie einige Grammatikverbesserungen vorgenommen.

Vielen Dank an @Falco für die Unterstützung bei der Fehlersuche in dem Problem, das mir während des Build- bzw. Rebuild-Vorgangs der App aufgefallen ist, sowie für die grundlegenden Hinweise zur CDN-Konfiguration mit StackPath (da ich einen voll funktionsfähigen Test durchführen wollte und ohnehin ein StackPath-CDN für etwas anderes nutze, konnte ich mit dem CDN-Stack verifizieren, dass alles funktioniert hat!)

2 „Gefällt mir“

Ich verstehe nicht, wie ich den Force Path Style einrichte. Wenn ich Version 2.6.8 mit Minio über die S3-Einstellungen konfiguriere, wird der Bucket-Name immer dem S3-Endpunkt vorangestellt, obwohl er als Pfad nach dem S3-Endpunkt angehängt werden sollte.

Es sieht auch aus den Konfigurationsbeispielen auf GitHub so aus, als ob die Option s3_force_path_style entfernt wurde. Übersehe ich etwas? Vielen Dank.

@ceelian
Discourse verwendet den DNS-Modus, nicht den Pfadmodus, für S3. Das ist schon SEIT EINER GANZEN WEILE so, deshalb erwähne ich nichts über den Pfadmodus in der Anleitung ODER auf der S3-Speicher-Anleitungsseite. Du solltest auch lernen, wie man neue Threads erstellt, anstatt einen alten Thread für etwas Unrelated wiederzubeleben.

1 „Gefällt mir“

@teward Danke für das Feedback. Entschuldigung für das Necromancing, ich bin den GitHub Issues gewohnt :slight_smile: Ich werde einen neuen Thread starten, wie wir Discourse S3 im Pfadmodus verwenden können.

Zu Ihrer Information: Das können Sie nicht. Ich glaube nicht, dass der Pfadmodus noch unterstützt wird, weshalb die Option, den Pfadmodus für Discourse zu erzwingen, verschwunden ist. Das ist auch der Grund, warum der Abschnitt, den ich ursprünglich zur Anleitung für S3-kompatiblen Objektspeicher hinzugefügt habe jetzt unter Hinweisen und Anforderungen besagt:

  1. Sie haben Domain Support in der MinIO-Konfiguration aktiviert, für Domain-gesteuerte Bucket-URLs. Dies ist zwingend erforderlich und keine Option, es gibt keine pfadbasierten Unterstützung in Discourse für Bucket-Pfade.

Vor langer Zeit, als ich zum ersten Mal mit Discourse gearbeitet habe, gab es diese Option, dann wurde sie entfernt und ich musste MinIO als Backend nicht mehr verwenden. JETZT, da es in MinIO Dokumentationen gibt, wie man den DNS-Modus zum Laufen bringt (d. h. Bucket[.]server[.]com-Pfade jetzt wie S3), funktioniert es, wenn Sie MinIO richtig konfigurieren. (Vielen Dank an das Personal/die Moderatoren/das System, dass mein Vertrauenslevel erhöht wurde, um die Wiki selbst bearbeiten zu können.)

2 „Gefällt mir“

Vielen Dank für die Klärung und den Hinweis, wie das Problem behoben werden kann!

Dieses Thema wurde 24 Stunden nach der letzten Antwort automatisch geschlossen. Neue Antworten sind nicht mehr möglich.