Forum nicht mehr nutzbar

Hallo, ich versuche, S3-Backups auf einem Min.IO-Server zu aktivieren. Wenn ich die app.yml so ändere, wie ich denke, dass sie der Dokumentation entspricht, und dann neu erstelle, erhalte ich am Ende im Browser nur die 4 farbigen Punkte in der Mitte des Bildschirms. Wenn ich in die Konsole schaue, erhalte ich;

Uncaught ReferenceError: I18n is not defined
    at admin?v=103a67b2358b…86c5a58d96d4e91:1:1
wizard?v=ab2295f1774…85b733472935c34a0:1
Uncaught ReferenceError: I18n is not defined
    at wizard?v=ab2295f1774…b733472935c34a0:1:1

Meine Änderungen an der app.yml sehen wie folgt aus:

  DISCOURSE_BACKUP_LOCATION: 's3'
  DISCOURSE_USE_S3: 'true'
  DISCOURSE_S3_REGION: 'off-cloud-backup'
  DISCOURSE_S3_ENDPOINT: 'http://borg....'
  DISCOURSE_S3_ACCESS_KEY_ID: '(my uid here)'
  DISCOURSE_S3_SECRET_ACCESS_KEY: '(my key here)'
  DISCOURSE_S3_CDN_URL: 'http://borg....'
  DISCOURSE_S3_BUCKET: 'assets'
  DISCOURSE_S3_BACKUP_BUCKET: 'discourse-data'
  DISCOURSE_S3_INSTALL_CORS_RULE: 'false'

Auf dem Min-Server habe ich die Region eingerichtet, dann einen öffentlichen Bucket namens ‘assets’ und dann einen privaten Bucket namens ‘discourse-data’ sowie entsprechende Anmeldeinformationen. Ich habe es ohne Anführungszeichen um die Variablen versucht, nur für den Fall, dass einige Beispiele dies tun – keine Änderung.

Wenn ich diese ändere und neu starte, scheinen sie nicht übernommen zu werden. Ich muss neu erstellen, damit sie aktiviert werden, was den Testzyklus ziemlich schmerzhaft macht. Es wäre etwas einfacher, wenn diese Felder alle in den Admin-Einstellungen verfügbar wären, was historisch gesehen der Fall zu sein scheint, oder zumindest auf einigen Screenshots von Leuten erscheinen (? )

Wenn ich alle _S3-Einträge in der app.yml auskommentiere und neu erstelle, funktioniert es einwandfrei. (Ich habe nur keine Backups konfiguriert) (die ENDPOINT- und CDN-URLs lösen lokal zur richtigen IP auf)

Die Einrichtung aller anderen Dinge, einschließlich Abonnements, war relativ einfach, aber hier bin ich auf eine Wand gestoßen. Hat jemand eine Idee, was ich falsch mache?

Möchten Sie nur Backups auf S3? Wenn ja, benötigen Sie nur die Schlüssel und den Backup-Bucket.

Sie haben es für alle Assets in S3 konfiguriert, aber Sie haben wahrscheinlich den Teil am Anfang der Anweisungen ausgelassen, der Rake-Tasks zum Vorabkompilieren von Assets und zum Hochladen auf S3 enthält.

Hallo, danke dafür, ich werde jetzt zwei Dinge versuchen.

  • Neuaufbau mit ACCESS, SECRET und BACKUP_BUCKET (und ich nehme an, Endpoint?)
  • Versuchen, die Rake-Tasks hinzuzufügen und neu aufzubauen

Sie haben Recht, dass ich anfangs nur die Daten wollte, aber wahrscheinlich zu Assets übergegangen wäre, sobald etwas funktionierte.

Das alles gesagt, meine (sehr schlechte) Interpretation der Dokumentation, die die Website effektiv tot erscheinen lässt, scheint für Neulinge potenziell problematisch zu sein. Ich bin mir nicht sicher, warum die Konsole I18n als Problem meldet, aber es sieht aus wie eine kleine Änderung im Code, so etwas wie;

if (I18n && I18n.xxx) 

anstelle von;

if (I18n.xxx)

könnte Neulinge davor schützen, ihre Websites zu zerstören. Sollte ich mich durcharbeiten und versuchen, einen PR zu erstellen, oder ist das etwas, das jemand mit mehr Fachwissen betrachten könnte? Ich bin gerne bereit, es zu versuchen, möchte aber meine Zeit nicht verschwenden, wenn es nicht nützlich ist.

Mmm, Ok, ich habe kleine Fortschritte gemacht, die reduzierten Einstellungen lassen die Seite jetzt rendern, aber ich bekomme jetzt eine ‘schlechte Anfrage’ vom Server zurück. Ich teste den S3-Speicher von der Discourse-Maschine aus mit Min.io’s “mc”-Tool und es scheint gut zu funktionieren und ich kann Buckets auflisten… jedoch in den Logs bekomme ich;

Failed to list backups from S3: Aws::S3::Errors::BadRequest

Und

/var/www/discourse/lib/backup_restore/s3_backup_store.rb:140:in `rescue in unsorted_files' 
/var/www/discourse/lib/backup_restore/s3_backup_store.rb:131:in `unsorted_files' 
/var/www/discourse/lib/backup_restore/backup_store.rb:23:in `files' 

Ich habe mir die Mühe gemacht, die Einstellungen von app.yml in die “mc”-Konfiguration zu kopieren, um sicherzustellen, dass keine Tippfehler vorhanden sind… daher bin ich für einen Moment etwas ratlos. Vielleicht versuche ich es morgen noch einmal…

Es versucht, den Inhalt des Buckets aufzulisten.

Sie benötigen die Rake-Aufgabe, die mit Assets zu tun hat, nicht.

Es versucht, den Inhalt des Buckets aufzulisten.
Sie benötigen keine Rake-Aufgabe, die mit Assets zu tun hat.

Ok, danke für deine Hilfe. Ich habe das bemerkt, aber es hilft nicht wirklich. Ich habe Min.io und SeaweedFS ausprobiert, beide habe ich lokal so konfiguriert, dass ich mit einem Befehlszeilentool von der Discourse-Maschine aus eine Datei nach S3 schreiben konnte. Keine der beiden Optionen scheint innerhalb von Discourse zu funktionieren. Nach Überprüfung der aufgewendeten Zeit, schätze ich, wenn Backups online und S3 verfügbar sind, kann ich verstehen, wie großartig die Option ist, direkt nach S3 zu sichern. Wenn Ihre Backups jedoch “off cloud” sind und Sie nur die Option nutzen zu können, S3-Speicher emulieren müssen, ist das für mich in Bezug auf die Zeit ein wenig zu teuer geworden.

Nebenbei bemerke ich, dass jemand sagt, dass CloudFlare S3 jetzt funktioniert, was für manche Leute gut sein könnte. CloudFlare scheint 10 GB S3 zu seinem kostenlosen Tarif hinzugefügt zu haben, aber für mich sind meine Backups normalerweise off-cloud auf einem Borg-Backup-Server.

Was ich stattdessen getan habe, ist, die Discourse-Host-Maschine zu meinem Backup-VPN hinzuzufügen, borg und borgmatic für /var/discourse/shared/standalone/backups und /var/discourse/shared/standalone/log auf dem Host zu installieren und dies dann 30 Minuten nach der geplanten lokalen Sicherung zu cron hinzuzufügen.

F: Können Sie klären, ob die lokalen Backups alles abdecken oder benötige ich mehr, um Uploads abzudecken? (Sind die zusätzlichen Rake-Aufgaben nur für S3?)

Mein paranoiden Ich vertraut Cloud-Anbietern nicht mit Live-Systemen UND Backups. Jedes Mal, wenn ich denke, dass ich mir vielleicht zu viele Sorgen mache, erinnere ich mich an die Zeit, als ich zu einem Kunden kam, weil mein Server nicht funktioniert und feststellte, dass er vom Blitz getroffen worden war - in dem Serverraum.

Haben Sie die Minio-spezifischen Anweisungen hier befolgt? Configure an S3 compatible object storage provider for uploads

Wenn Sie nur diese Umgebungsvariablen ändern, können Sie Folgendes tun:

  ./launcher destroy app;./launcher start app

Wenn Sie dort Assets und nicht nur Backups speichern möchten, verpassen Sie nicht die Rake-Aufgabe, die die Assets dorthin verschiebt.

1 „Gefällt mir“

Haben Sie die Minio-spezifischen Anweisungen hier befolgt?

Ja, das habe ich. Ich gebe gerne zu, dass ich Fehler gemacht haben könnte und nicht alles gelesen/behalten habe, aber die Suche nach geeigneten Dokumenten gehörte nicht dazu.. :wink:

./launcher destroy app;./launcher start app

Ok, das ist nützlich für zukünftige Referenzzwecke. Ich habe versucht, zu stoppen/starten, und bin nicht sehr vertraut damit, wie Docker Umgebungsvariablen beim Booten erstellt.

Wenn Sie dort Assets und nicht nur Backups ablegen, dann verpassen Sie nicht die Rake-Aufgabe, die dort Assets hochlädt.

Sicher, das war der Teil, über den ich etwas verwirrt war, ich werde sie hinzufügen. Ich habe mich nur gefragt, warum diese nicht Teil des Standard-Backups wären. Ich weiß, dass es ein Speicherplatzproblem gibt, aber meine Erwartung wäre, dass die Leute im Allgemeinen ein Backup aller ihrer Inhalte wünschen? (und da die meisten Leute ihre Inhalte anscheinend nicht überprüfen, ist es vielleicht sicherer, auf alles zu setzen?)

Hmm, ich habe es zuerst auf meiner Testinstanz ausprobiert (!) .. Ich habe zwei Zeilen aus der Dokumentation kopiert und eingefügt .. ist irgendwo etwas veraltet?

I, [2023-09-04T18:39:51.544973 #1]  INFO -- : cd /var/www/discourse/plugins & sudo -E -u discourse bundle exec rake s3:upload_assets
bundler: Befehl konnte nicht geladen werden: rake (/var/www/discourse/vendor/bundle/ruby/3.2.0/bin/rake)
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/definition.rb:524:in `materialize': Konnte css_parser-1.16.0, oj-3.16.1, rotp-6.3.0, globalid-1.2.0, google-protobuf-3.24.2-x86_64-linux nicht in lokal installierten Gems finden (Bundler::GemNotFound)
        from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/definition.rb:197:in `specs'
        from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/definition.rb:254:in `specs_for'
        from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/runtime.rb:18:in `setup'
        from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler.rb:162:in `setup'
        from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/setup.rb:23:in `block in <top (required)>'
        from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/ui/shell.rb:159:in `with_level'
        from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/ui/shell.rb:111:in `silence'
        from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/setup.rb:23:in `<top (required)>'
        from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/cli/exec.rb:56:in `require_relative'
        from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/cli/exec.rb:56:in `kernel_load'
        from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/cli/exec.rb:23:in `run'
        from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/cli.rb:492:in `exec'
        from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
        from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
        from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
        from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/cli.rb:34:in `dispatch'
        from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
        from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/cli.rb:28:in `start'
        from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/exe/bundle:45:in `block in <top (required)>'
        from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors'
        from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bundler-2.4.13/exe/bundle:33:in `<top (required)>'
        from /usr/local/bin/bundle:25:in `load'
        from /usr/local/bin/bundle:25:in `<main>'
I, [2023-09-04T18:39:52.163459 #1]  INFO -- : 
I, [2023-09-04T18:39:52.164462 #1]  INFO -- : Beende asynchrone Prozesse

Meine Hooks sehen so aus;

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - sudo -E -u discourse bundle exec rake s3:upload_assets
          - sudo -E -u discourse bundle exec rake s3:expire_missing_assets
          - sudo -E -u discourse git clone https://github.com/discourse/docker_manager.git
          - sudo -E -u discourse git clone https://github.com/discourse/discourse-whos-online
          - sudo -E -u discourse git clone https://github.com/discourse/discourse-solved.git
          - sudo -E -u discourse git clone https://github.com/discourse/discourse-reactions.git
          - sudo -E -u discourse git clone https://github.com/discourse/discourse-subscriptions.git
          - sudo -E -u discourse git clone https://github.com/discourse/discourse-topic-voting.git
          - sudo -E -u discourse git clone https://github.com/discourse/discourse-calendar.git
          - sudo -E -u discourse git clone https://github.com/sylque/discourse-home-page.git
          - sudo -E -u discourse git clone https://github.com/sylque/discpage.git
          - sudo -E -u discourse git clone https://github.com/discourse/discourse-onboarding-banner.git

Diese Rake-Aufgaben gehören nicht dorthin.

Wenn Ihre Uploads auf S3 liegen, verlassen Sie sich darauf, dass der S3-Manager es zum Laufen bringt, sodass Sie keine Backups benötigen. Es gibt eine versteckte Einstellung, um Assets von S3 herunterzuladen und in das Backup aufzunehmen, aber das möchten Sie mit ziemlicher Sicherheit nicht tun.

Mmm, ich hatte zuvor angemerkt, dass jemand anderes darüber gesprochen hatte, Dinge in die falsche Sektion zu stellen, dann habe ich dasselbe trotzdem getan, igitt (!).

Nachdem ich sorgfältiger gelesen habe, scheine ich immer noch ein Problem zu haben. Ich habe:

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-whos-online
          - git clone https://github.com/discourse/discourse-solved.git
          - git clone https://github.com/discourse/discourse-reactions.git
          - git clone https://github.com/discourse/discourse-subscriptions.git
          - git clone https://github.com/discourse/discourse-topic-voting.git
          - git clone https://github.com/discourse/discourse-calendar.git
          - git clone https://github.com/sylque/discourse-home-page.git
          - git clone https://github.com/sylque/discpage.git
          - git clone https://github.com/discourse/discourse-onboarding-banner.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

Es heißt, ich soll das in app.yml im Abschnitt hooks einfügen. Sieht das richtig aus oder bin ich immer noch am falschen Ort? Die Fehlermeldung, die ich jetzt bekomme, ist:

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse &amp;&amp; sudo -E -u discourse bundle exec rake s3:upload_assets failed with return #&lt;Process::Status: pid 1845 exit 1&gt;
Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "cmd"=>["sudo -E -u discourse bundle exec rake s3:upload_assets", "sudo -E -u discourse bundle exec rake s3:expire_missing_assets"]}
bootstrap failed with exit code 1

Ich schaue mir die Protokolle noch einmal an, um weitere Details zu erfahren, aber ich sehe nichts. Leider habe ich nie in Ruby programmiert, daher weiß ich nicht wirklich, was ich mir ansehe / wonach ich suchen soll. Irgendwelche Ideen?

Hinweis: Es wurde empfohlen, ./discourse-doctor auszuführen, was ich getan habe, aber es schien mir nichts Neues zu sagen.