فشل استعادة البيانات بعد نقل Discourse

[2026-05-11 02:05:14] إعادة الاتصال بقاعدة البيانات...
[2026-05-11 02:05:14] إعادة تحميل إعدادات الموقع...
[2026-05-11 02:05:14] تعطيل البريد الإلكتروني الصادر للمستخدمين غير الموظفين...
[2026-05-11 02:05:14] تشغيل بذور fu...
[2026-05-11 02:05:31] تعطيل وضع القراءة فقط...
[2026-05-11 02:05:31] مسح ذاكرة التخزين المؤقت للفئات...
[2026-05-11 02:05:31] إعادة تحميل الترجمات...
[2026-05-11 02:05:31] إعادة تعيين خرائط التحميلات...
[2026-05-11 02:05:31] استعادة التحميلات، قد يستغرق هذا بعض الوقت...
[2026-05-11 02:05:33] استثناء: يمكنك تحديد ملخص تحقق واحد غير افتراضي فقط في كل مرة.
[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] محاولة التراجع...
[2026-05-11 02:05:33] التراجع جاري...
[2026-05-11 02:05:34] تنظيف الأشياء...
[2026-05-11 02:05:34] إسقاط الدوال من مخطط discourse_functions...
[2026-05-11 02:05:34] إزالة المجلد المؤقت '/var/www/discourse/tmp/restores/default/2026-05-11-020447'...
[2026-05-11 02:05:34] إلغاء إيقاف sidekiq مؤقتًا...
[2026-05-11 02:05:34] تحديد الاستعادة على أنها منتهية...
[2026-05-11 02:05:34] إشعار 'niege' بنهاية الاستعادة...

كيف يمكن حل هذه المشكلة؟

أعتقد أن هناك مشكلة في توافق S3؟

هل النسخة التي تقوم باستعادتها محدثة بأحدث إصدار من Discourse؟

أعتقد أن هناك مشكلة هنا في
/var/www/discourse/lib/file_store/to_s3_migration.rb
ربما تتعلق بالحمولة المرسلة إلى put_object في السطر 216

لست متأكدًا من الحل الكامل، لكن أعتقد أنه لتحقيق ذلك قد تحتاج إلى تعطيل S3 (enable_s3_uploads: false) وإجراء الاستعادة والاستخراج محليًا. ثم إعادة تمكين S3 باستخدام أمر rake uploads:migrate_to_s3؟

@Lilly
نظرًا لانتهاء صلاحية الخادم، نحتاج إلى الانتقال إلى خادم جديد. قمت أولًا بنسخ بيانات discourse احتياطيًا.
قم بمزامنة ملف app.yml مع الخادم الجديد، ثم في الخادم الجديد:

./launcher rebuild app

بعد ذلك، قم برفع بيانات النسخ الاحتياطي إلى المسار التالي في الخادم الجديد: /var/discourse/shared/standalone/backups/default
استخدم الأمر:

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

فشل الاستعادة. بعد إعادة بناء discourse من جديد، حاولت الاستعادة من لوحة التحكم ولكن فشلت مرة أخرى. المرفق هو سجل الاستعادة:
log.txt (124.0 KB)

أخبرنا عن بيئتك، على سبيل المثال، أي مستودع كائنات تستخدم؟

أوبونتو 24.04.4 LTS (x86_64)

كلاودفلير R2

@supermathie هل Cloudflare R2 غير متوافق؟

نعم، يبدو أن هناك عدم توافق مع R2.

غير مُختبر، لكن يمكنك تجربة هذا:

تُحدَّد متغيرات البيئة في ملف app.yml الخاص بالحاوية الخاصة بك ضمن كتلة env — نفس المكان الذي توجد فيه بالفعل عناصر مثل DISCOURSE_S3_ACCESS_KEY_ID. فقط أضف المتغيرين هناك:

env:
  LANG: en_US.UTF-8
  # ... متغيراتك الحالية ...
  DISCOURSE_S3_BUCKET: your-r2-bucket
  DISCOURSE_S3_ACCESS_KEY_ID: ...
  DISCOURSE_S3_SECRET_ACCESS_KEY: ...
  DISCOURSE_S3_ENDPOINT: https://<account>.r2.cloudflarestorage.com

  # إصلاح لعدم توافق مجموع التحقق من Cloudflare R2 مع aws-sdk-s3
  AWS_REQUEST_CHECKSUM_CALCULATION: when_required
  AWS_RESPONSE_CHECKSUM_VALIDATION: when_required

ثم أعد بناء الحاوية:

./launcher rebuild app

@gerhard
لقد جربت هذه الطريقة لكنها لا تزال لا تعمل.
المشكلة الآن هي أن خادمي قد توقف، وأمتلك فقط بيانات النسخ الاحتياطي وملف app.yml.

هذه القيم مُدرجة في دليلنا.

هل يمكنك نشر كتلة ENV المحذوفة منها المعلومات الحساسة هنا حتى نتمكن من التحقق مما إذا كان هناك خطأ آخر؟

حاولنا الآن استعادة البيانات، لكن أمر rake uploads:migrate_to_s3 يفشل باستمرار.