Migration von Discourse: Wiederherstellung der Daten fehlgeschlagen

[2026-05-11 02:05:14] Website-Einstellungen werden neu geladen...
[2026-05-11 02:05:14] Ausgehende E-Mails für Nicht-Mitarbeiter werden deaktiviert...
[2026-05-11 02:05:14] Seed-Daten werden initialisiert...
[2026-05-11 02:05:31] Nur-Lese-Modus wird deaktiviert...
[2026-05-11 02:05:31] Kategorien-Cache wird geleert...
[2026-05-11 02:05:31] Übersetzungen werden neu geladen...
[2026-05-11 02:05:31] Hochladungen werden neu zugeordnet...
[2026-05-11 02:05:31] Hochladungen werden wiederhergestellt, dies kann eine Weile dauern...
[2026-05-11 02:05:33] AUSNAHME: Sie können nur eine nicht-standardmäßige Prüfsumme gleichzeitig angeben.
[2026-05-11 02:05:33] /var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-core-3.244.0/lib/seahorse/client/plugins/raise_response_errors.rb:17:in 'Seahorse::Client::Plugins::RaiseResponseErrors::Handler#call'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/plugins/sse_cpk.rb:24:in 'Aws::S3::Plugins::SseCpk::Handler#call'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/plugins/dualstack.rb:21:in 'Aws::S3::Plugins::Dualstack::OptionHandler#call'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/plugins/accelerate.rb:43:in 'Aws::S3::Plugins::Accelerate::OptionHandler#call'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-core-3.244.0/lib/aws-sdk-core/plugins/checksum_algorithm.rb:167:in 'Aws::Plugins::ChecksumAlgorithm::OptionHandler#call'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-core-3.244.0/lib/aws-sdk-core/plugins/jsonvalue_converter.rb:16:in 'Aws::Plugins::JsonvalueConverter::Handler#call'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-core-3.244.0/lib/aws-sdk-core/plugins/invocation_id.rb:16:in 'Aws::Plugins::InvocationId::Handler#call'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-core-3.244.0/lib/aws-sdk-core/plugins/idempotency_token.rb:19:in 'Aws::Plugins::IdempotencyToken::Handler#call'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-core-3.244.0/lib/aws-sdk-core/plugins/param_converter.rb:26:in 'Aws::Plugins::ParamConverter::Handler#call'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-core-3.244.0/lib/seahorse/client/plugins/request_callback.rb:89:in 'Seahorse::Client::Plugins::RequestCallback::OptionHandler#call'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-core-3.244.0/lib/aws-sdk-core/plugins/response_paging.rb:12:in 'Aws::Plugins::ResponsePaging::Handler#call'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-core-3.244.0/lib/seahorse/client/plugins/response_target.rb:24:in 'Seahorse::Client::Plugins::ResponseTarget::Handler#call'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-core-3.244.0/lib/aws-sdk-core/plugins/telemetry.rb:39:in 'block in Aws::Plugins::Telemetry::Handler#call'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-core-3.244.0/lib/aws-sdk-core/telemetry/no_op.rb:29:in 'Aws::Telemetry::NoOpTracer#in_span'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-core-3.244.0/lib/aws-sdk-core/plugins/telemetry.rb:53:in 'Aws::Plugins::Telemetry::Handler#span_wrapper'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-core-3.244.0/lib/aws-sdk-core/plugins/telemetry.rb:39:in 'Aws::Plugins::Telemetry::Handler#call'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-core-3.244.0/lib/seahorse/client/request.rb:72:in 'Seahorse::Client::Request#send_request'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/client.rb:17315:in 'Aws::S3::Client#put_object'
/var/www/discourse/lib/file_store/to_s3_migration.rb:216:in 'block (2 levels) in FileStore::ToS3Migration#migrate_to_s3'
[2026-05-11 02:05:33] Rollback wird versucht...
[2026-05-11 02:05:33] Rollback wird durchgeführt...
[2026-05-11 02:05:34] Aufräumarbeiten...
[2026-05-11 02:05:34] Funktionen aus dem discourse_functions-Schema werden entfernt...
[2026-05-11 02:05:34] Temporäres Verzeichnis '/var/www/discourse/tmp/restores/default/2026-05-11-020447' wird entfernt...
[2026-05-11 02:05:34] Sidekiq wird fortgesetzt...
[2026-05-11 02:05:34] Wiederherstellung wird als abgeschlossen markiert...
[2026-05-11 02:05:34] 'niege' wird über das Ende der Wiederherstellung benachrichtigt...

Wie löse ich dieses Problem?

Ich vermute, es könnte ein Problem mit der S3-Kompatibilität geben?

Ist die Instanz, auf die Sie wiederherstellen, auf dem neuesten Stand der aktuellen Discourse-Version?

Ich denke, hier liegt ein Problem vor:
/var/www/discourse/lib/file_store/to_s3_migration.rb
Vielleicht mit dem Payload, der in Zeile 216 an put_object gesendet wird.

Ich bin mir nicht sicher, was die vollständige Lösung ist, aber um es zum Laufen zu bringen, müssen Sie möglicherweise S3 deaktivieren (enable_s3_uploads: false), die Wiederherstellung und Extraktion lokal durchführen und dann S3 erneut aktivieren, indem Sie den Befehl rake uploads:migrate_to_s3 verwenden.

@Lilly

Da die Serverlaufzeit abgelaufen ist, muss auf einen neuen Server migriert werden. Ich habe zunächst die Discourse-Daten gesichert.

Synchronisiere die app.yml-Datei auf den neuen Server und führe dann auf dem neuen Server folgenden Befehl aus:

./launcher rebuild app

Lade anschließend die gesicherten Daten auf den neuen Server unter /var/discourse/shared/standalone/backups/default hoch.

Verwende dazu folgende Befehle:

./launcher enter app
discourse enable_restore
discourse restore xxxxxxxxxxxxxxxxxxxxx.tar.gz

Die Wiederherstellung ist fehlgeschlagen. Nach dem Neuaufbau eines neuen Discourse-Systems und der Wiederherstellung über das Backend ist dies ebenfalls fehlgeschlagen. Im Anhang findest du das Wiederherstellungsprotokoll:
log.txt (124,0 KB)

Erzählen Sie uns von Ihrer Umgebung, zum Beispiel welchen Objektspeicher Sie verwenden?

Ubuntu 24.04.4 LTS (x86_64)

Cloudflare R2

@supermathie Ist die Nutzung von Cloudflare R2 inkompatibel?

Ja, es scheint eine Inkompatibilität mit R2 zu geben.

Nicht getestet, aber Sie könnten es damit versuchen:

Umweltvariablen werden in Ihrer Container-Datei app.yml im Block env festgelegt – genau dort, wo Sie bereits Einstellungen wie DISCOURSE_S3_ACCESS_KEY_ID haben. Fügen Sie einfach die beiden Variablen dort hinzu:

env:
  LANG: en_US.UTF-8
  # ... Ihre vorhandenen Variablen ...
  DISCOURSE_S3_BUCKET: your-r2-bucket
  DISCOURSE_S3_ACCESS_KEY_ID: ...
  DISCOURSE_S3_SECRET_ACCESS_KEY: ...
  DISCOURSE_S3_ENDPOINT: https://<account>.r2.cloudflarestorage.com

  # Fix für Cloudflare R2-Prüfsummen-Inkompatibilität mit aws-sdk-s3
  AWS_REQUEST_CHECKSUM_CALCULATION: when_required
  AWS_RESPONSE_CHECKSUM_VALIDATION: when_required

Starten Sie dann den Container neu:

./launcher rebuild app

@gerhard
Ich habe es mit dieser Methode versucht, aber es funktioniert immer noch nicht.
Das Problem ist jetzt, dass mein Server bereits heruntergefahren ist. Ich habe nur noch die Sicherungsdaten und die app.yml.

Diese Werte sind in unserem Leitfaden aufgeführt.

Kannst du den geschwärzten ENV-Block hier posten, damit wir prüfen können, ob noch etwas anderes falsch ist?

Versuchen Sie jetzt, die Daten wiederherzustellen, aber rake uploads:migrate_to_s3 schlägt weiterhin fehl.