لقد قمت الآن بتثبيت Discourse على جهازي افتراضيين مختلفين.
أستخدم التعليمات الرسمية للتثبيت.
واحد يعمل بنظام Debian 12 في مثيل VMWare Fusion على Mac Pro، والآخر هو Ubuntu 24 في جهاز افتراضي يعمل تحت TrueNAS.
كلاهما على خوادم مخصصة تعمل على شبكتي المحلية مع شبكات مرجوة ولديهما عناوين IP فريدة قابلة للوصول.
يستضيف خادم TN العديد من التطبيقات الأخرى المعبأة في حاويات Docker وجميعها تعمل ومتاحة عبر LAN والإنترنت، ويستضيف Mac Pro بشكل أصليويكيبيديا.
على كلا الجهازين، تكتمل وظيفة التمهيد، لكني لا أحصل على موقع يعمل. فقط تظهر رسالة ‘الخادم لا يستجيب’ في المتصفح.
وفقًا لأمر docker ps، فإن الحاوية “app” قيد التشغيل وتستمع على المنافذ 80 و 443، وتقارير ufw أنها تسمح بتلك المنافذ.
لفترة من الوقت، كان موقع Debian يعرض صفحة ترحيب nginx الافتراضية، ولكن الآن لم يعد ذلك يستجيب أيضًا.
أنا لست مطورًا أو ساحر ويب، لذلك لست متأكدًا من كيفية استكشاف الأخطاء وإصلاحها، وطلبت المساعدة من Grok ولكن حتى الآن لم ينجح شيء.
لدي عنوان IP ثابت متاح للجمهور واسم نطاق يشير إلى ذلك العنوان.
عادةً ما أستخدم سجل A برمز البدل لتوجيه أي مضيف إلى ذلك العنوان ولكن أثناء استكشاف الأخطاء وإصلاحها، صادفت منشورًا يقول إن Discourse قد لا يتوافق بشكل جيد مع العناوين المُقامة في DNS الخاص بكلاودفلير، لذلك أنشأت سجل A مخصصًا وأوقفت الوكيل لهذا السجل.
هل أستخدم مصطلح “وظيفة التمهيد” بشكل صحيح؟
أريد فقط أن أكون متأكدًا من أننا نتحدث عن نفس الشيء.
./discourse-setup هو التمهيد، أليس كذلك؟
لذا إذا قلت إنه يقوم بالتمهيد، والحاوية تعمل، ثم اختبار الاتصال، الذي يحدث في بداية الإعداد، قد نجح.
[اقتباس=“tknospdr، المنشور:5، الموضوع:364284”]
./discourse-setup هو الإقلاع، أليس كذلك؟
[/اقتباس]
حسنًا، نوعًا ما. إنه ينشئ ملف app.yml ثم يشغل ./launcher bootstrap app.
إذا قمت بتشغيله عدة مرات بدون أن يعمل DNS بشكل صحيح، فستصل إلى قيود المعدل مع Let’s Encrypt. الحلول السهلة هي الانتظار أسبوعًا أو استخدام اسم نطاق مختلف.
[اقتباس=“tknospdr، المنشور:3، الموضوع:364284”]
أنشأت سجل A مخصص وأوقفت البروكسي لذلك.
[/اقتباس]
ولا شيء آخر يعمل على ذلك الجهاز؟
وعندما قمت بتشغيل discourse-setup، هل لم يشتك عن عدم القدرة على الاتصال بنفسه؟
{“content”:“[quote="pfaffman, post:6, topic:364284"]\nإذا قمت بتشغيله عدة مرات بدون أن يعمل DNS بشكل صحيح، فقد وصلت إلى حدود المعدل مع Let’s Encrypt. الحلول السهلة هي الانتظار أسبوعًا أو استخدام اسم نطاق مختلف.\n[/quote]\nلقد قمت بتشغيله مرة واحدة فقط على كل جهاز افتراضي، واستخدامت اسم مضيف مختلف لكل منهما.\n\n[quote="pfaffman, post:6, topic:364284"]\nوليس هناك شيء آخر يعمل على تلك الآلة؟\n[/quote]\nأنها أجهزة افتراضية جديدة تمامًا ولا يوجد شيء آخر يعمل عليها. على الأجهزة الفعلية، هناك أشياء أخرى تعمل. ولكن لديها عناوين IP داخلية منفصلة عن مضيفيها.\n\n[quote="pfaffman, post:6, topic:364284"]\nوعند تشغيل discourse-setup، لم يتذمر من عدم القدرة على الاتصال بنفسه؟\n[/quote]\nصحيح.”}
إليك الأخطاء التي وجدتها في مخرجات التثبيت، ولا تبدو أي منها مهددًا للتوقف:
690:M 30 Apr 2025 22:05:22.859 # تحذير: تعذر إنشاء مقبس الاستماع لخادم TCP *:6379: الربط: العنوان مستخدم بالفعل
690:M 30 Apr 2025 22:05:22.859 # فشل في الاستماع على المنفذ 6379 (TCP)، يتم الإلغاء.
109:M 30 Apr 2025 21:59:42.411 # تحذير: يجب تمكين تجاوز الذاكرة! بدون ذلك، قد يفشل الحفظ الخلفي أو التكاثر تحت ظروف ذاكرة منخفضة...
2025-04-30 21:59:41.125 UTC [60] postgres@postgres خطأ: قاعدة البيانات "discourse" موجودة بالفعل
2025-04-30 21:59:41.274 UTC [63] postgres@discourse خطأ: الدور "discourse" موجود بالفعل
تحذير: حالات الطلاء غير محلولة أو غامضة أثناء إعادة تعيين Gem::Specification:
stringio (= 0)
الإصدارات المتاحة/المثبتة من هذا الجوهرة:
- 3.1.7
- 3.1.5
- 3.1.1
تحذير: يتم مسح حالات الطلاء غير المحلولة. جرب 'gem cleanup gem'
يرجى الإبلاغ عن خطأ إذا تسبب ذلك في مشاكل.
الإعداد 'staticAddonTrees' ستصبح الافتراضية للقيمة true في الإصدار القادم من Embroider ولا يمكن إيقافها. للاستعداد لذلك، يجب تعيين 'staticAddonTrees: true' في إعدادات Embroider.
الإعداد 'staticAddonTestSupportTrees' ستصبح الافتراضية للقيمة true في الإصدار القادم من Embroider ولا يمكن إيقافها. للاستعداد لذلك، يجب تعيين 'staticAddonTestSupportTrees: true' في إعدادات Embroider.
حد حجم ذاكرة Heap ل Node.js أقل من 2048MB. تعيين --max-old-space-size=2048 و CHEAP_SOURCE_MAPS=1
-e DISCOURSE_SMTP_DOMAIN=discourse.example.com
[BABEL] ملحوظة: أنشئ المولد رمز خلل في تنسيق ملف /var/www/discourse/app/assets/javascripts/discourse/ember/ember-template-compiler.js لأنه يتجاوز الحد الأقصى 500KB.
[BABEL] ملحوظة: أنشئ المولد رمز خلل في تنسيق ملف /var/www/discourse/app/assets/javascripts/discourse/ember/ember.js لأنه يتجاوز الحد الأقصى 500KB.
لم أكن أفكر في حقيقة أنه بما أن المنفذ 80 قيد الاستخدام بالفعل وأنني أملك عنوان IP خارجي واحد فقط، فبالرغم من أن فحص النطاق كان ناجحًا أثناء عملية الإعداد، اضطررت إلى تغيير منافذ الجانب المضيف لبدء الأمور.
أنا أستخدم NPM داخليًا.
خطوات جعل الأمور تعمل:
تغيير منفذ الجانب المضيف إلى 7080 لبروتوكول http
بما أنني سأمرر المرور عبر مدير البروكسي الخاص بي، قمت بتبسيط الأمر وفصلت سكربتات LE
تحديث التطبيق
مررت ‘IP خارجي:80’ إلى ‘IP داخلي:7080’ في الوكيل العكسي، ثم عكس الحاوية المنافذ… ثم فعلوا رقص الهوكي وتدويروا أنفسهم.