Anfrage zur Unterstützung von Discourse für Amazon S3 Storage

Ich möchte eine technische Frage bezüglich der Unterstützung von Amazon S3-Speicher durch Discourse stellen.

Ich bin auf einen Forenbeitrag aus dem Jahr 2013 gestoßen, in dem die S3-Unterstützung von Discourse bereits diskutiert wurde. Ich habe auch einige Threads zum Thema CDN-Offloading gefunden, aber es scheint nicht viele detaillierte Informationen zu diesem Thema zu geben.

Ich habe selbst ein Discourse-Forum aufgebaut und mich sehr darum bemüht, Video-Uploads zu ermöglichen. Ich hatte viele Ideen, aber da ich kein Programmierer bin, war es schwierig, sie in die Praxis umzusetzen – ich brauche immer Hilfe von anderen, um Schritt für Schritt Fortschritte zu machen.

Discourse selbst unterstützt kleine Video-Uploads, und ich habe diese Funktion bereits aktiviert. Die Architektur von Discourse ist jedoch nicht wirklich für die effiziente Handhabung von Video-Uploads geeignet. Nach viel Recherche habe ich herausgefunden, dass es tatsächlich möglich ist, Amazon S3-Speicher zusammen mit CDN-Offloading oder alternativ S3-Speicher mit einer Proxy-Cache-Einrichtung zu verwenden.

Tatsächlich habe ich bereits einen Freund gebeten, mir bei der Konfiguration von S3-Speicher und Proxy-Caching zu helfen. (Zur Klarstellung: Ich habe die Verwendung eines CDN wegen Kostenbedenken nicht in Betracht gezogen – der CDN-Dienst von Amazon S3 kann ziemlich teuer sein.)

Nun stehe ich vor einem Problem: Während der Tests, obwohl der S3-Speicher ordnungsgemäß konfiguriert wurde und theoretisch alle Uploads vom Forum direkt an S3 gehen sollten, können Videodateien immer noch nicht in den S3-Speicher hochgeladen werden.

Könnte mir bitte jemand erklären, was falsch konfiguriert sein könnte oder was dieses Problem verursachen könnte?

Danke

Was passiert stattdessen? Erhalten Sie eine Fehlermeldung?

Sie sollten auch die Einstellungen „max attachment size kb“ und „authorized extensions“ überprüfen, beides in den Site Settings – Files.

Bitte beachten Sie, dass dieses Setup selbst mit CDN und S3 nicht sehr gut für Videos geeignet ist, da keine Transkodierung angeboten wird, um die beste Anpassung an die Bandbreite und Auflösung des Clients zu ermöglichen.

3 „Gefällt mir“


Vielen Dank für Ihre Antwort. Hier ist die Situation:
Derzeit können Bilder aus meinem Forum erfolgreich nach S3 hochgeladen werden, Videos jedoch nicht. Das ist für mich sehr verwirrend.

Obwohl ich verstehe, dass S3 möglicherweise noch nicht ideal für die Handhabung von Videos ist, bestehen die Hauptinhalte des Forums aus Text und Bildern. Die Videofunktion dient lediglich dazu, die Bedürfnisse einiger Benutzer zu erfüllen, und die Videos selbst werden nicht sehr groß sein. Vielen Dank für den Hinweis.

Sie haben vergessen, meine Frage zu beantworten :slight_smile:

3 „Gefällt mir“

Das CDN von Amazon ist günstiger als der Egress von S3-Buckets. Sie möchten auf jeden Fall ein CDN vor Ihrem S3-Bucket haben.

Ich vermute, dass der Fehler, über den Sie uns noch nichts erzählt haben, damit zusammenhängt, dass Videos zu groß sind. Es gibt Einstellungen, um das zu ändern, aber es wäre vielleicht besser, „Direkte S3-Uploads aktivieren“ zu aktivieren.

3 „Gefällt mir“


Wenn ich versuche, ein Video in mein Forum hochzuladen, wird nun direkt die Meldung angezeigt:

„Entschuldigung, diese Datei ist zu groß (maximale Größe beträgt 50 MB). Warum laden Sie Ihre große Datei nicht auf einen Cloud-Sharing-Dienst hoch und fügen dann den Link ein?“

Mein Video ist jedoch nur 10 MB groß. Derzeit verwende ich S3-Speicher mit CloudFront CDN für die Auslieferung.

Ich finde die Fehlersuche sehr schwierig. Könnten Sie die richtige Vorgehensweise angeben, unter der Annahme, dass keine vorherigen Vorgänge durchgeführt wurden? Ich werde meinen Freund bitten, die richtigen Schritte zu befolgen und es erneut zu versuchen.

Hallo, vielen Dank für Ihre Antwort.

Ich habe bereits meinen Freund gebeten, von der S+ Speichermethode mit Proxy-Caching auf die S3-Speicher- + CloudFront CDN-Liefermethode umzusteigen. Es scheint jedoch fehlgeschlagen zu sein, und ich kenne den Grund noch nicht. Daher wollte ich fragen, ob Sie die genauen Ausführungsbefehle bereitstellen könnten, damit mein Freund es erneut versuchen kann.

Außerdem lege ich großen Wert auf Videofunktionen in meinem Forum für die Bequemlichkeit meiner Benutzer. Daher hatte ich eine neue Idee und möchte wissen, ob sie machbar ist – ich hoffe wirklich, Ihre Meinung dazu zu hören.

Zuerst sollte ich erklären, dass ich absolut keine Kenntnisse in Programmierung oder Codierung habe. Mein Hauptfach an der Universität war Japanisch, daher habe ich abgesehen vom Erlernen der japanischen Sprache kein Verständnis für Code. Wenn einige meiner Ideen auf den ersten Blick naiv erscheinen, bitte ich um Nachsicht.

Dank des von mir gemieteten Servers für mein Forum, der abgeschaltet wurde, musste ich mich bemühen, ihn wieder aufzubauen, was mir ermöglichte, die Kernpunkte von S3-Speicher und CloudFront CDN zu lernen. Dann habe ich dieses Wissen angewendet und mich gefragt, ob es andere Speicher- und CDN-Dienstleister gibt. Ich habe ChatGPT konsultiert und war froh, die gewünschten Antworten zu erhalten.

Eigentlich wollte ich schon immer eine Video-Website erstellen, habe aber wegen der Festplattenkosten schnell aufgegeben. Jetzt, da ich von der neuen Lösung weiß, habe ich die Idee, eine Video-Website zu erstellen, um die Videos des Discourse-Forums zu unterstützen, wiederbelebt.

Basierend auf der Empfehlung von GPT habe ich erfahren, dass ich entweder PeerTube oder MediaCMS für das Video-Website-System verwenden kann – beide sind ausgezeichnet.

Ich habe derzeit zwei Zweifel:

Erster Punkt: Beide Video-Website-Systeme können Backblaze B2-Speicher mit Cloudflare CDN-Lieferung unterstützen. Da Videos nicht auf meiner eigenen Festplatte gespeichert werden, ruft die Wiedergabe der Video-Website bereits die Backblaze B2 API auf. Was ich möchte, ist, dass das Forum mit der Video-Website verbunden wird, nicht durch das Posten von Links, sondern durch die Verwendung des Upload-Buttons des Forums, um meine MediaCMS (zum Beispiel) Video-Website direkt als Quelle aufzurufen. Dies würde zwei API-Aufrufe bedeuten:

  1. Das Forum ruft die MediaCMS-Video-Website auf.
  2. Die MediaCMS-Video-Website ruft den Backblaze B2-Speicher auf.

Ich möchte wissen, ob solche wiederholten API-Aufrufe technisch machbar sind.

Zweiter Punkt: Ob das Forumssystem und das Video-Website-System das Benutzerkontosystem gemeinsam nutzen können, damit Benutzer dasselbe Konto verwenden können. Dies beeinflusst, wie die API-Aufrufe funktionieren würden.

  • Option 1: Als Administrator der Video-Website registriere ich ein Administratorkonto, das mit dem Forum verknüpft ist. Wenn das Forum ein Video über die API hochlädt, ist es technisch gesehen der Administrator, der es auf die MediaCMS-Website hochlädt.
  • Option 2: Mit einem gemeinsamen Benutzerkontosystem wird der Video-Upload vom eigenen Forum-Konto des Benutzers durchgeführt und über die API mit der MediaCMS-Website synchronisiert. Dann kann der Benutzer das hochgeladene Video unter seinem eigenen Konto auf der Video-Website sehen.

Ich habe GPT zu diesen Ansätzen konsultiert, und GPT hat im Allgemeinen positives Feedback gegeben. Leider habe ich bei wiederholter Nutzung festgestellt, dass GPT zwar Anleitungen und Hilfe bei übergeordneten Entscheidungen geben kann, aber bei detaillierten Antworten manchmal ungenau sein kann. Da ich selbst keine Programmierkenntnisse habe, bin ich mir nicht sicher, ob diese Ideen wirklich machbar sind.

Wenn möglich, wäre ich Ihnen sehr dankbar, wenn Sie mir mitteilen könnten, welche Teile dieser Ideen machbar sind und welche möglicherweise nicht.

Sie sollten wahrscheinlich an diesem Thema teilnehmen. Haben sie Konfigurieren eines S3-kompatiblen Objektspeicheranbieters für Uploads befolgt und die Einstellungen in die ymll-Datei eingetragen und den Teil hinzugefügt, der Assets an S3 pusht?

Vielleicht kommuniziert der Browser die Größe irgendwie nicht richtig.

Haben Sie das versucht?


Hallo. Eigentlich ist hier die Situation:
Videos, die kleiner als 10 MB sind, können auf meinen eigenen Server hochgeladen werden, aber die Videodateien selbst können nicht nach S3 hochgeladen werden.
Beim Hochladen eines Videos erfasst das System automatisch das erste Bild als Miniaturansicht, und das Miniaturbild kann nach S3 hochgeladen werden.

Bei Videos, die größer als 10 MB sind, kann jedoch überhaupt nichts hochgeladen werden.

Wenn Ihr Freund Konfigurieren Sie einen S3-kompatiblen Objektspeicheranbieter für Uploads befolgt hätte, würden Sie enable_s3_uploads nicht sehen. Es ist unklar, ob das Setzen dieser Werte in der Datenbank und nicht in ENV Teil des Problems ist.

Das ist nicht dasselbe wie Direkte S3-Uploads aktivieren. Das ist “Aktivieren Sie direkte S3-Uploads”.

Sie müssen auch Maximale Bildgröße KB und Maximale Anhangsgröße KB ändern.

Aber ich habe meinen maximalen Upload auf 100 MB geändert und versucht, eine 37 MB große Datei hochzuladen, und erhielt die Fehlermeldung “Datei ist zu groß”, also haben Sie vielleicht Recht, dass es einen Fehler gibt. Ich habe die Seite, auf der ich getestet habe, schon eine Weile nicht mehr aktualisiert.

1 „Gefällt mir“

Haben Sie es auch in app.yml geändert?

Vielen Dank für all Ihre Hilfe.
Er sagte, er habe die Anweisungen unter Configure an S3 compatible object storage provider for uploads befolgt, aber es habe nicht funktioniert.
Als er jedoch gerade das Gleiche tat, wie Sie es vorgeschlagen hatten, und die maximale Upload-Dateigröße auf 100 MB änderte, wurde das Video erfolgreich im S3-Speicher hochgeladen.
Vielen Dank!

Dann hat er es falsch gemacht und um Hilfe bitten sollen. Er hat wahrscheinlich den Teil weggelassen, der Assets auf S3 hochlädt.

Schön! Es gibt irgendwo ein Thema darüber, wie man dieses 100-MB-Limit erhöhen kann.

1 „Gefällt mir“