غير قادر على تضمين Discourse محلي في مثيل Ghost محلي

مرحبًا بك،
أردت تجربة Discourse على تثبيت محلي لـ Ghost.

بشكل عام، قمت بإعداد كل شيء بأبسط طريقة ممكنة؛ لقد اتبعت “دليل المبتدئين لتثبيت Discourse للتطوير باستخدام Docker” وقمت بإعداد Ghost باستخدام واجهة سطر الأوامر (CLI) الخاصة به.

يعمل Ghost على localhost:2368، ويعمل Discourse على localhost:9292.

لقد أضفت localhost:2368 إلى قائمة المضيفين المسموح بهم في قسم التخصيص/التضمين (Customize/Embedding) (دون أي إعدادات مثل اسم الفئة أو قائمة السماح بالمسارات أو نشر التصنيف).

بعد إضافة مقتطف الكود (وبالطبع استبدال العناصر النائبة بشكل صحيح)، لدي تضمين لـ Discourse يقول “جاري تحميل المناقشة…”، ولكن بعد بضع ثوانٍ يسجل خطأ في وحدة التحكم:

فشل تنفيذ ‘postMessage’ على ‘DOMWindow’: الأصل المستهدف المقدم (‘http://localhost:9292’) لا يتطابق مع أصل نافذة المستلم (‘http://localhost:2368’).

ما الذي أغفلته؟

شكرًا!

إعجابَين (2)

(ليس خبيرًا ولا عضوًا في الفريق)

ستظهر لك هذه الرسالة إذا لم يتم تحميل إطار الصفحة (iframe).

عند إضافة localhost:2368 إلى المضيفين المسموح بهم، جرب مع أو بدون شرطة مائلة في النهاية، وكذلك باستخدام الأحرف البدائية.

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

ومع ذلك، كنت مهتمًا جدًا بتجربة Ghost قريبًا. لذا سأتابع هذا الموضوع وأتمنى أن تكون هذه هي المشكلة الوحيدة التي تواجهها معه. :slight_smile:

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

للأسف، لم أجد حلاً حتى الآن :frowning:

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

يبدو أنك تحاول تشغيل مثيل إنتاجي على منفذ غير قياسي؟ هذا غير مدعوم في Discourse.

إعجابَين (2)

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

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

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

إعجابَين (2)

أظن أنني سأحاول إعداد وكيل باستخدام nginx، شكرًا لك.

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

لقد جربت إضافة وكيلين nginx، واحد لـ Ghost وواحد لـ Discourse، يعملان على ghost.localhost و discourse.localhost. بعد تغيير جميع عناوين URL لتوجيهها إلى الوكلاء، تحولت الرسالة إلى الخطأ التالي:

فشل تنفيذ ‘postMessage’ على ‘Window’: أصل الهدف غير صالح ‘’ في استدعاء ‘postMessage’.

عند استخدام http://localhost:9292/ بدلاً من http://discourse.localhost/ في متغير discourseUrl، يختفي الخطأ، لكن التعليقات تعلق في حلقة لا نهائية (تظهر رسالة “جاري تحميل النقاشات” إلى الأبد وتقوم ببعض الطلبات كل بضع ثوانٍ).

تكوينات nginx بسيطة نسبيًا:

server {
  listen 80;
  server_name discourse.localhost;

  access_log /var/log/nginx/discourse.localhost-access.log;
  error_log /var/log/nginx/discourse.localhost-error.log;
  
  location / {
    proxy_pass         http://127.0.0.1:9292;
    proxy_set_header   X-Forwarded-For $remote_addr;
    proxy_set_header   Host $http_host;
  }
}

وبالمثل، استبدل discourse بـ ghost في تكوين Ghost.