خادم واحد لمجتمعين من Discourse؟

صحيح. هذا منطقي. وأعتقد أن استخدام Mailgun سيكون جيدًا بالنسبة لي.

سأفهم كل هذا بشكل أفضل إذا بدأت في إعداد موقع متعدد!

3 إعجابات

[quote=“itsbhanusharma, post:28, topic:392692”]سيتعين عليك أولاً أن تقرر ما إذا كنت تريد موقعًا واحدًا متعدد المواقع (multisite) أو خادمًا واحدًا يستضيف مواقع مستقلة متعددة.
[/quote]

أدخل لأنني في وضع مشابه لـ @alltiagocom - لقد قمت بتثبيت Discourse على خادم Hetzner صغير لمجتمعي الرئيسي، ولكن كنت أفكر، في الخلفية، في نقل بضع مجموعات أخرى من فيسبوك إلى Discourse بمجرد أن أتمكن من فهم الأمور.

أنا على دراية بـ «ووردبريس متعدد المواقع (Wordpress multisite)»، ولكني فهمت أن Discourse متعدد المواقع أكثر تعقيدًا. كنت أتساءل عما سيكون صداعًا أقل، تشغيل موقعين مستقلين (أو أكثر) أو موقع متعدد المواقع.

أي رؤى حول هذا؟

قد يكون تعدد المواقع بالتأكيد أقل عبئًا من حيث الصيانة وأقل إزعاجًا، ولكن النتائج تختلف من شخص لآخر (YMMV).

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

للمبتدئين في Discourse، أوصي بتشغيل موقعين فقط.

لقد أنشأت موضوعًا حول كيفية تشغيل مواقع متعددة بدون وكيل عكسي، ولكنه أصبح قديمًا الآن.

أعتقد أن كل ما يحتاج إلى التغيير هو

يمكن استبداله بـ

DISCOURSE_HOSTNAME_ALIASES: domain.com,other.domain.com
إعجابَين (2)

رأيي المتواضع، بعد قضاء اليوم بأكمله في العمل على هذا بمساعدة ملاحظاتي القديمة، وChatGPT، وClaude، وروبوت الذكاء الاصطناعي الخاص بـ Discourse، وبعض المواضيع التي تمت مشاركتها هنا (وبعد تدوين الملاحظات والمزيد من الملاحظات حول العملية برمتها).

بدا كل شيء وكأنه يعمل بشكل جيد تمامًا حتى وصلت إلى النقطة التي احتجت فيها إلى إضافة الوكيل العكسي (reverse proxy). نسختي الأولى، التي كانت تعمل بشكل جيد، توقفت عن العمل. سألت روبوت الذكاء الاصطناعي الخاص بـ Discourse بضعة أسئلة أخرى، ولكن نظرًا لأنه يومي الأول، فقد توقف عن العمل. إنها قيود للمستخدمين الجدد للروبوت. وتوقف Claude، الذي كان متعاونًا للغاية، أيضًا، لأنني أستخدم النسخة المجانية. أما ChatGPT فهو الأقل موثوقية بين الجميع، لذا فإن جميع الردود التي أتلقاها منه تكون دائمًا بقدر كبير من التردد…

ثم عدت إلى المنتدى مرة أخرى وبدأت في قراءة بعض المواضيع حول هذا الأمر، بعضها كتبه @pfaffman. كانت تلك القشة التي قصمت ظهر البعير. معقدة للغاية، والكثير من المصطلحات التقنية التي لا أستطيع حتى فهم ما يجب أن أسأله.

الملخص: نسختي الأولى كانت تعمل، لذا سأعيدها إلى ما كانت عليه (تعديل ملف app.yml إلى ما كان عليه قبل التغييرات. وأقوم بإعادة البناء أثناء الكتابة).

لأكون صادقًا، بالنسبة لكل هذا التعقيد، على الرغم من أنه سيسمح لي بإضافة المزيد من المجتمعات بعد تجاوز العقبة الكبيرة الأولى، لا أعتقد أن توفير 4 دولارات شهريًا لمجتمع إضافي سيكون نهاية العالم. بما أنني أعرف بالفعل كيفية إعداد خادم في Hetzner ثم تثبيت Discourse، فسألتزم بمجتمعين الآن، وأدفع 8 دولارات لكليهما، وأمضي قدمًا. بالنظر إلى أنني كنت أدفع 12 دولارًا مقابل خادم واحد في Digital Ocean قبل بضعة أشهر، يمكنني بذل الجهد لدفع نفس المبلغ لثلاثة مجتمعات إذا أردت.

بغض النظر عن ذلك، أجد دائمًا هذه المغامرات مثيرة للاهتمام، لأنني أتعلم شيئًا جديدًا على طول الطريق، وفي النهاية، يمكنني على الأقل أن أقول لماذا لا أريد القيام بذلك، بدلاً من مجرد القول “لن أفعل ذلك، لأنني لا أعرف ما إذا كان بإمكاني القيام بذلك”.

أقدر الوقت والمساعدة التي شاركها الجميع هنا، وآمل أن يساعد هذا الموضوع الآخرين الذين يرغبون في تحقيق ما كنت أحاول تحقيقه.

:raising_hands:
انتهى الإرسال!

8 إعجابات

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

أوصي بمواصلة التجريب في وقت فراغك إذا كنت ترغب في معرفة المزيد عن كيفية عمل الخطاب، فهذه هي الطريقة التي تعلمها معظمنا هنا.

9 إعجابات

لقد استغرق الأمر مني وقتًا أطول مما أود الاعتراف به لأفهم الأمر (في الغالب)!

6 إعجابات

تم تقسيم 6 مشاركات إلى موضوع جديد: حاويات تطبيقات متعددة لموقع Discourse واحد

أنا أوثق تثبيت Discourse متعدد المواقع مدعوم كـ دليل تشغيل خطوة بخطوة بالأوامر.

لقد جربت سابقًا نهج “تثبيتات مستقلة متعددة على خادم واحد”، ولكن هذا التكوين غير مدعوم. يركز هذا المنشور فقط على بنية متعدد المواقع المدعومة، مُعاد كتابتها بتنسيق خطي للأشخاص الذين يفضلون خطوات صريحة.


ما هذا (مدعوم)

  • حاوية تطبيق Discourse واحدة (app)
  • تم تمكين تعدد المواقع عبر multisite.yml
  • Postgres و Redis مشتركان (تتم إدارتهما بواسطة Discourse)
  • الاتصال عبر مآخذ توصيل يونكس (unix sockets) (لا حاجة لشبكة Docker)
  • توجيه أسماء مضيفين متعددة إلى مواقع منفصلة داخليًا

ما هذا ليس

  • حاويات Discourse مستقلة متعددة خلف HAProxy
  • عمليات إعادة البناء المتجددة عن طريق تصريف عقد التطبيق
  • بيانات اعتماد SMTP خاصة بكل موقع (يتم مشاركة SMTP)

ملاحظات تشغيلية (لضمان صحة التوقعات)

عمليات إعادة البناء / التوقف عن العمل

في تعدد المواقع، توجد حاوية تطبيق واحدة فقط، لذا فإن ./launcher rebuild app سيعيد تشغيل العقدة الوحيدة. وهذا يعني توقع توقف قصير لجميع المواقع.

الشهادات / التحقق من المضيف

أضف جميع أسماء المضيفين إلى DISCOURSE_HOSTNAME_ALIASES لكي تعمل Let’s Encrypt والتحقق من المضيف بشكل موثوق.

النسخ الاحتياطي / الترحيل لاحقًا

يقوم كل موقع بإنشاء نسخة احتياطية خاصة به في /admin/backups. يعد استعادة نسخة احتياطية لموقع ما على تثبيت مستقل لاحقًا هو المسار الطبيعي للترحيل.


دليل التشغيل الكامل لتعدد المواقع المدعوم (أمرًا تلو الآخر)

0) المتطلبات الأساسية للمضيف

الخطوة الأمر
تحديث النظام apt-get update && apt-get upgrade -y
تثبيت التبعيات apt-get install -y git curl sudo

1) تثبيت Docker الخاص بـ Discourse

الخطوة الأمر
استنساخ المستودع git clone https://github.com/discourse/discourse_docker.git /var/discourse
الدخول إلى الدليل cd /var/discourse

2) تثبيت الموقع الأول (موقع واحد أولاً)

الخطوة الأمر
تشغيل الإعداد ./discourse-setup

ينشئ هذا /var/discourse/containers/app.yml ويشغل اسم المضيف الأول (على سبيل المثال، forum1.example.com).


3) تمكين تعدد المواقع

الخطوة الأمر
إنشاء دليل الإعداد mkdir -p /var/discourse/config
تحرير ملف تعدد المواقع nano /var/discourse/config/multisite.yml

مثال على multisite.yml:

forum1:
  host_names:
    - forum1.example.com

forum2:
  host_names:
    - forum2.example.com

4) تحرير app.yml لتمكين تعدد المواقع وعناوين أسماء المضيفين البديلة

الخطوة الأمر
تحرير app.yml nano /var/discourse/containers/app.yml

أضف:

  • DISCOURSE_MULTISITE: true
  • DISCOURSE_HOSTNAME_ALIASES: forum1.example.com,forum2.example.com

5) إعادة البناء

الخطوة الأمر
إعادة البناء ./launcher rebuild app

6) ترحيل قواعد بيانات تعدد المواقع

الخطوة الأمر
الدخول إلى الحاوية ./launcher enter app
تشغيل ترحيل تعدد المواقع rails multisite:migrate
الخروج exit
الخطوة الأمر
إعادة التشغيل ./launcher restart app

7) التحقق

قم بزيارة:

  • https://forum1.example.com
  • https://forum2.example.com

كل موقع له مسؤولو ومستخدمون وتحميلات ونسخ احتياطية خاصة به.


8) النسخ الاحتياطي / الترحيل لاحقًا

مسؤول كل موقع:

  • /admin/backups

استعد تلك النسخة الاحتياطية على تثبيت مستقل لاحقًا إذا كنت ترغب في فصل الموقع إلى خادم خاص به.


إذا كان أي مما سبق يتعارض مع أفضل الممارسات الحالية، فسأكون سعيدًا بتحديث دليل التشغيل هذا - فالهدف هو توفير قائمة تحقق خطية لتعدد المواقع المدعوم تقلل من التجربة والخطأ.

إعجابَين (2)

رائع! هذا هو الدليل الواضح الذي كنت أحتاجه للحصول على بعض الوضوح في عالم المواقع المتعددة الغامض!! يبدو الأمر قابلاً للتنفيذ وأبسط بكثير مما تخيلت.

من المؤسف أنه لا يمكن القيام بذلك إلا في حاوية واحدة، ولكن يمكنني أن أرى بشكل حدسي سبب ضرورة ذلك. ونتيجة لذلك، سيكون الأنسب للعديد من المنتديات الصغيرة والهادئة المستضافة ذاتيًا.

من المؤكد أن ردك يستحق موضوعًا (ويكي) خاصًا به، ويجب الإشارة إليه جيدًا.

إعجابَين (2)

قد يكون هذا شيئًا لي :heart_eyes:

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

هل ينطبق هذا أيضًا عندما يعمل Discourse بالفعل كـ “موقع واحد” ويرغب المرء في تحويله إلى مواقع متعددة؟

شكراً جزيلاً على العمل!

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

شكراً! هذا لا يزال متوافقاً مع ممارسة المواقع المتعددة المدعومة الحالية - لا يتعارض أي شيء هنا مع كيفية عمل ديسكورس متعدد المواقع اليوم.

نعم، تنطبق نفس الخطوات عند تحويل تثبيت موقع واحد موجود إلى مواقع متعددة: الموقع الواحد هو في الأساس موقع متعدد مع موقع افتراضي واحد. يمكنك تمكين DISCOURSE_MULTISITE، وإضافة multisite.yml (بما في ذلك الموقع الحالي)، وإعادة البناء مرة واحدة، وتشغيل rails multisite:migrate في مكانه.

إذا كان هناك أي شيء هنا لم يعد يعكس أفضل الممارسات، فسأكون سعيدًا جدًا بتحديث دليل التشغيل - الهدف هو قائمة تحقق خطية مدعومة تتجنب التجربة والخطأ.

3 إعجابات