يمكنني تنزيل النسخ الاحتياطية، لم أواجه أي مشاكل مع هذا على الإطلاق.
مع تضمين تحميلات S3؟
شكرًا لك، مفيد جدًا، فقط عندما أقوم بتحميل الصورة من الحافظة لا تعمل، هل تواجه هذه المشكلة؟ في النهاية تم تحميلها إلى R2 ولكنها غير مرئية في المنشور:
هل نظرت إلى عنوان URL للصورة، كيف يبدو؟
إذًا، لا يزال بإمكاننا تكوين r2 من خلال app.yml؟ فقط من خلال إعدادات الموقع، أي DB_S3_CONFIG؟
استخدم هذه الطريقة، هل يمكنك تحميل التحميلات المحلية القديمة إلى R2، عبر rake uploads : migrate to s3؟
أهلاً، شكراً لكم جميعاً على هذا.
إذا فهمت هذا بشكل صحيح، يمكن أن يكون “DISCOURSE_CDN_URL” هو نفسه “DISCOURSE_S3_CDN_URL”، وهو النطاق العام المخصص المرتبط بالمخزن المؤقت على Cloudflare؟ أم أن هناك حاجة إلى تكوين آخر لهذا؟
نعم، يجب عليك إضافة نفس اسم النطاق إلى ملف discourse container.yml. إليك مثال للاستخدام:
## عنوان CDN عبر HTTP أو HTTPS لهذه النسخة من Discourse (تم تكوينه للسحب)
## انظر https://meta.discourse.org/t/14857 للتفاصيل
#DISCOURSE_CDN_URL: https://discourse-cdn.example.com
#DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: 'auto'
DISCOURSE_S3_ENDPOINT: 'https://45dv544v56x****************************564564.eu.r2.cloudflarestorage.com'
DISCOURSE_S3_ACCESS_KEY_ID: '564dfds4f54sdfs********65564545'
DISCOURSE_S3_SECRET_ACCESS_KEY: 'sddfsdf564564**********6545sd4f54sd56f4s6d5'
DISCOURSE_S3_CDN_URL: 'https://cdn.discourse.com.br'
##DISCOURSE_CDN_URL: 'https://cdn.discourse.com.br'
#DISCOURSE_S3_BUCKET: 'cloudflarebucketname'
#DISCOURSE_S3_BACKUP_BUCKET: 'cloudflarebackupbucketname/backups'
#DISCOURSE_BACKUP_LOCATION: 's3'
DISCOURSE_INCLUDE_S3_UPLOADS_IN_BACKUPS: true
DISCOURSE_S3_INSTALL_CORS_RULE: false
يجب تكوين الإعدادات المعطلة بهذا الحرف عبر لوحة المسؤول؛ يتم تقديم أمثلة في الكود. إذا كنت تفضل ذلك، يمكنك أيضًا تمكين هذه الإعدادات داخل قسم التكوين، الأمر متروك لك.
سيؤدي هذا الخيار إلى تعطل الموقع عند تعيينه في app.yml، حيث لا يتم استضافة جميع الملفات الثابتة مثل JavaScript على R2 لسبب ما.
هذا رائع. لقد اتبعت الدليل في المنشور رقم 39 وعمل كل شيء. لدي اقتراح واحد وسؤالان فقط.
اقتراح:
من ما قرأته، يجب أن تجعل ملفات CDN متاحة للعامة وأن يكون دلو النسخ الاحتياطي خاصًا. لذلك قمت بإنشاء دلوين وتركت دلو النسخ الاحتياطي خاصًا بينما جعلت دلو الملفات عامًا بنطاق مخصص. هذا يعني فقط أنني اضطررت إلى وضع مسارين مختلفين في الصندوقين تحت الإدارة.
لقد رأيت الكثير من الأشخاص يضعون نسخهم الاحتياطية كمسار لدلوهم الرئيسي، هل أفكر بشكل غير صحيح في هذا؟ أم أن هذا مجرد سمة خاصة بـ CF R2؟
س1:
لقد أضفت ‘DISCOURSE_INCLUDE_S3_UPLOADS_IN_BACKUPS: true’ في ملف app.yml الخاص بي وأعدت البناء، ولكن عندما أذهب إلى النسخ الاحتياطي وأضغط على زر النسخ الاحتياطي، ما زلت أحصل على النافذة المنبثقة التي تخبرني أنه لن يتم تضمين التحميلات. هل هذا فقط لأن النافذة المنبثقة لا تحتوي على أي منطق تحتها أم أن هناك خطأ ما؟
س2:
إذا كنت أرغب في نقل التحميلات الحالية إلى R2، فما هي الأوامر المختصرة؟
لقد بحثت وجربت:
./launcher enter app
rake uploads:migrate_to_s3
rake posts:rebake_uncooked_posts
ولكن يبدو أن أمر rake الأول يعمل فقط إذا قمت بتعيين خيارات S3 في ملف app.yml. هل هذا صحيح؟
إذا فعلت ذلك، هل سيستمر R2 في العمل؟
حسنًا، تم اختباره ووجد أنه قاصر.
يبدو أن أمر rake الأول يعمل فقط مع AWS.
rake aborted!
Seahorse::Client::NetworkingError: Failed to open TCP connection to exotics-unlimited.s3.auto.amazonaws.com:443 (getaddrinfo: Name or service not known) (Seahorse::Client::NetworkingError)
هل هناك أمر آخر يقوم بنفس الشيء مع بائعي S3 آخرين؟
هل قمت بأي متابعة لمعرفة ما إذا كان بإمكاننا جعل R2 حلاً يعمل بالكامل؟
R2 يعمل بشكل جيد؛ فقط لا تستخدم أو تعيّن هذا الخيار: DISCOURSE_CDN_URL
R2 يعمل بشكل جيد؛ فقط لا تستخدم أو تعيّن هذا الخيار:
DISCOURSE_CDN_URL
صحيح، مما يعني أنه لا يعمل بالكامل لأن بعض الملفات الثابتة لا يتم دفعها/استضافتها بشكل صحيح.
أنا فقط أتطلع إلى جعل كل شيء يعمل بدلاً من مجرد جزء منه.
لا يمكنني منع DC من الاعتقاد بأنه AWS، بينما هو CF R2، النسخ الاحتياطي لا يتم تحميله. أريد استخدامه فقط لملفات النسخ الاحتياطي المضغوطة، بدلاً من AWS. أعتقد أنني قمت بملء جميع الإعدادات بشكل صحيح وأن رمز الوصول الخاص بي له نطاق “قراءة وكتابة الكائنات” لهذا المستودع المحدد. أضفت أيضًا سياسة CORS تلك من الموضوع.
[2025-09-06 13:56:44] Gzipping archive, this may take a while...
[2025-09-06 13:56:49] Uploading archive...
[2025-09-06 13:56:49] EXCEPTION: Aws::S3::Errors::Forbidden
[2025-09-06 13:56:49] /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/object.rb:559:in `rescue in exists?'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/object.rb:554:in `exists?'
/var/www/discourse/lib/backup_restore/s3_backup_store.rb:46:in `upload_file'
/var/www/discourse/lib/backup_restore/backuper.rb:351:in `upload_archive'
/var/www/discourse/lib/backup_restore/backuper.rb:41:in `run'
/var/www/discourse/script/spawn_backup_restore.rb:9:in `backup'
/var/www/discourse/script/spawn_backup_restore.rb:31:in `block in <main>'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `fork'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `<main>'
[2025-09-06 13:56:49] Deleting old backups...
[2025-09-06 13:56:49] Cleaning stuff up...
[2025-09-06 13:56:49] Removing archive from local storage...
[2025-09-06 13:56:49] Removing '.tar' leftovers...
[2025-09-06 13:56:49] Marking backup as finished...
[2025-09-06 13:56:49] Notifying 'Firsh' of the end of the backup...
[2025-09-06 13:56:54] Finished!
يبدو أن هذا يعمل بشكل جيد بالنسبة لي أيضًا! (تذكر تعيين عنوان URL لشبكة توصيل المحتوى، وإلا ستعمل التحميلات ولكن لن تعمل عمليات الاسترداد)

