كيفية أساسية لاستخدام خادم تخزين MinIO الذي تديره بنفسك لمثيل Discourse الخاص بك

استخدام خادم MinIO لتخزين الكائنات المتوافق مع S3

يُعد MinIO حلاً لخادم تخزين الكائنات متوافقًا مع S3، وهو مخصص للسحابة بشكل افتراضي، لكنه سهل النشر على الخوادم المحلية أو خوادم VPS أو خوادم السحابة لاستخدامه كبديل لـ Amazon AWS S3 أو أنظمة أخرى، وهو متوافق مع Discourse عند إعداده بشكل صحيح.

يفترض هذا القسم صحة ما يلي في بيئتك:

  1. لديك مثيل خادم MinIO مُعد بالكامل
  2. تم تمكين دعم النطاقات في تكوين MinIO
  3. تم إعداد تكوين DNS بشكل صحيح لـ MinIO بحيث تحل عناوين النطاقات الفرعية للوعاء بشكل صحيح إلى خادم MinIO
  4. يوجد الوعاء discourse-data على خادم MinIO وتم تعيين سياسة “عامة” عليه
  5. يوجد الوعاء discourse-backups على خادم MinIO وهو وعاء خاص لرفع الملفات إليه (وليس قابلاً للوصول للعامة - السياسة الافتراضية للأوعية الجديدة)
  6. عنوان URL الخاص بـ S3 CDN هو خدمة CDN مُعدة بشكل صحيح تشير إلى الوعاء وتُخزن الطلبات مؤقتًا، كما ذُكر سابقًا في هذه الوثيقة.

إذا كانت جميع المتطلبات المذكورة أعلاه متوفرة، فأنت جاهز للعمل.

إليك مثال على التكوين:

DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: anything
DISCOURSE_S3_ENDPOINT: https://minio.example.com
DISCOURSE_S3_ACCESS_KEY_ID: myaccesskey
DISCOURSE_S3_SECRET_ACCESS_KEY: mysecretkey
DISCOURSE_S3_CDN_URL: https://discourse-data-cdn.example.com
DISCOURSE_S3_BUCKET: discourse-data
DISCOURSE_S3_BACKUP_BUCKET: discourse-backups
DISCOURSE_BACKUP_LOCATION: s3

سيوفر لك هذا تكوينًا أساسيًا لـ MinIO مع خادم MinIO بدلاً من Amazon S3.

4 إعجابات

من الرائع معرفة أن MinIO يعمل الآن بشكل صحيح مع سلات التخزين بنمط النطاقات الفرعية وهو متوافق مرة أخرى مع Discourse.

هل يمكنك تعديل استخدام التخزين الكائني للرفع (S3 والنسخ) في الويكي لتشمل تعليمات MinIO؟

3 إعجابات

لقد عملت بنجاح مع كل من خزانات نمط النطاق الفرعي ونمط المسار لفترة من الوقت. ومع ذلك، يُعد مكون تكوين DNS هو المكون الأكثر إيلامًا — فهو يحتاج إلى قواعد DNS واسعة النطاق (wildcard) خاصة ليعمل، أو إلى خادم DNS مخصص يدرك بفعالية جميع الخزانات الفعلية أو لا. لقد قمت بذلك في bind9 باستخدام مناطق واسعة النطاق، لكن محاولة تطبيق ذلك في Cloudflare أو غيره مع أجزاء نمط النطاق الفرعي تؤدي إلى فشل حاد.

إذا كنت تعتقد أن ما سبق مناسب للوضع في هذا القسم، فسأكون سعيدًا بإدراجه. لكنه سيتضمن قسم ‘التحذيرات’، وسأقدّر أي تعديلات أو مراجعات تود أن أقوم بها أولاً من حيث الصياغة وما إلى ذلك. (ولاحظ أنني لم أدرج عنوان URL لشبكة CDN لأنني لا أمتلك شبكة CDN في نشراتي (لأن $$$ ليست شيئًا يمكنني تجربته).

3 إعجابات

يمكن للمستخدمين الذين يشغّلون MinIO لغرض Discourse فقط أيضًا إنشاء إدخالات DNS للدلاء (buckets) الخاصة بـ Discourse يدويًا، أليس كذلك؟

يجب أن يكون التحذير المذكور في هذا الموضوع كافيًا. فإعداد MinIO يقع خارج نطاق هذا المنتدى تمامًا، ولكن بالنظر إلى وجود MinIO يعمل بشكل صحيح، فإن جعل Discourse يستخدمه يُعد حالة استخدام صالحة.

إعجابَين (2)

صحيح، ولكن كما ذكرت، فإن الإعدادات خارج نطاق العمل، لذا سأكتفي بالإشارة إلى أنه يجب أن تحل عناوين فرعية للحاويات (وأترك إعدادات DNS لمسؤولي ${ADMINS} للنسخة)

إعجابَين (2)

نعم، وقد قمت بتعديل الويكي وفقًا لذلك. ومع ذلك، لا تعمل MinIO (بحسب علمي) كخدمة سحابية، لذا تركت حقل “اسم الخدمة” في جدول محتويات الويكي في البداية فارغًا. يمكنك تعديله وفقًا لاحتياجاتك إذا رغبت في ذلك.

إعجابَين (2)

رائع! شكرًا لمساهمتك!

إعجاب واحد (1)

أهلاً وسهلاً!

لقد قمت أيضًا بتعديله، حيث أن المزوّد هو ذاتي الاستضافة، لكن قسم MinIO لا يزال مرتبطًا. يجب أن يحل هذا المشكلة المتعلقة بعدم وجود حل سحابي مقدم من المزوّد، وهو ما لم أستطع العثور عليه حتى الآن. (يمكنك إغلاق هذا الموضوع الآن إذا رغبت، حيث تم دمجه في منشور الويكي)

3 إعجابات

تم اكتشاف أيضًا (شكرًا لكود المصدر المفتوح والوثائق الجيدة لـ MinIO!) أن CORS مفعّل افتراضيًا بالفعل على جميع أفعال HTTP الخاصة بـ MinIO، لذا لا حاجة لتثبيت قواعد CORS، فهي موجودة مسبقًا. كما تم تحديث قسم MinIO المستضاف ذاتيًا، بالإضافة إلى بعض التعديلات النحوية.

شكرًا لـ @Falco على المساعدة في تتبع المشكلة التي لاحظتها أثناء بناء/إعادة بناء التطبيق، وعلى التوجيه الأساسي بشأن إعداد CDN مع StackPath (لأنني أردت اختبارًا وظيفيًا بالكامل، ولدي بالفعل CDN من StackPath لاستخدام آخر، لذا استخدمت مكدس CDN للتأكد من أن كل شيء يعمل بشكل صحيح!)

إعجابَين (2)

لا أفهم كيفية ضبط نمط المسار الإجباري. عندما أقوم بإعداد الإصدار 2.6.8 مع minio عبر إعدادات S3، فإنه يضيف دائمًا اسم الحاوية إلى نقطة نهاية S3، حيث يجب أن يلحقها كمسار بعد نقطة نهاية S3.

يبدو أيضًا من عينة التكوين على github أنه تمت إزالة الخيار s3_force_path_style. هل فاتني شيء؟ شكرا لك.

@ceelian
يستخدم Discourse وضع DNS، وليس وضع المسار، لـ S3. لقد كان كذلك لفترة طويلة، ولهذا السبب لا أحدد أي شيء عن وضع المسار في كيفية القيام بذلك أو صفحة كيفية تخزين S3. يجب عليك أيضًا تعلم كيفية إنشاء مواضيع جديدة بدلاً من إحياء موضوع قديم لشيء غير ذي صلة.

إعجاب واحد (1)

@teward شكراً على ملاحظاتك. آسف على إحياء الموضوع، أنا معتاد على طريقة كتابة GitHub issues :slight_smile: سأبدأ موضوعًا جديدًا حول كيفية استخدام discourse S3 في وضع المسار.

للعلم: لا يمكنك. لا أعتقد أن وضع المسار مدعوم بعد الآن، ولهذا السبب اختفى خيار فرض وضع المسار لـ Discourse. هذا هو السبب أيضًا في أن القسم الذي أضفته في الأصل إلى صفحة كيفية تكوين موفر تخزين كائنات متوافق مع S3 يقول الآن تحت التحذيرات والمتطلبات:

  1. لديك دعم النطاق ممكّن في تكوين MinIO، لعناوين URL الخاصة بالحاويات التي تعتمد على النطاق. هذا إلزامي وليس خيارًا، لا يوجد دعم قائم على المسار في Discourse لمسارات الحاويات.

منذ فترة طويلة عندما كنت أعمل مع Discourse لأول مرة، كان لديهم هذا الخيار، ثم تمت إزالته، واضطررت إلى التوقف عن استخدام MinIO كواجهة خلفية. الآن، نظرًا لوجود وثائق في MinIO حول كيفية عمل وضع DNS (أي مسارات الحاويات[.]الخادم[.]com الآن مثل S3)، فإنه يعمل عند تكوين MinIO بشكل صحيح. (شكرًا للموظفين/المشرفين/النظام لرفع مستوى الثقة لدي لتعديل الويكي نفسه الآن).

إعجابَين (2)

شكراً على التوضيح والإشارة إلى كيفية حل المشكلة!

تم إغلاق هذا الموضوع تلقائيًا بعد 24 ساعة من آخر رد. لم يعد يُسمح بالردود الجديدة.