أنا أواجه صعوبة في إنشاء تكامل بين Ghost و Discourse.
Discourse: الإصدار 2.8.0.beta1، يعمل عبر Docker على نظام Ubuntu - بدون nginx.
أستخدم Traefik على نظام مستقل خلف موجه IP واحد في شبكة منزلية محمية بتقنية NAT. يسمح Traefik بتوجيه HTTP/HTTPS.
تم تكوين Traefik باستخدام ملف traefik_dynamic.toml بدلاً من تسميات Docker. لا توجد شبكة Docker مشتركة. (إذا كان أي شخص مهتمًا بتكوين Traefik، يرجى مراسلتي - فهو يعمل بشكل جيد جدًا كوسيط عكسي).
Ghost أيضًا في أحدث إصدار (4.6.4) ويعمل على مضيف منفصل (كلا المضيفين هما آلات افتراضية تعمل بنظام Ubuntu - الإصدار "20.04.2 LTS (Focal Fossa)، وتعمل على Proxmox).
لقد اتبعت مجموعة من صفحات الدروس المتاحة على موقع Ghost Doc ومناقشات Discourse.
توضح أدوات مطوري الويب في Firefox أن الصفحة تُرجع مصدر الصفحة التالي:
<div class="comment container small">
<div class="discourse-comments"></div>
<script type="text/javascript">
if (window.location.pathname.indexOf('/p/') < 0) {
DiscourseEmbed = { discourseUrl: 'https://discourse.mydomain/', discourseEmbedUrl: 'https://ghost.mydomain/testing-new-stuff/' };
(function() {
var d = document.createElement('script'); d.type = 'text/javascript'; d.async = true;
d.src = DiscourseEmbed.discourseUrl + 'javascripts/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(d);
})();
}
</script>
</div>
ولكن لا يتم إرجاع أي تعليقات فعلية. يمكنني رؤية أن مضيف Discourse يُرجع ملف embed.js، لكن لا شيء يظهر على الصفحة. (آسف، لست خبيرًا في تطوير الويب).
يبدو إذن أن السكربت يصل بنجاح لكنه لا يُرجع أي شيء.
هذا تثبيت جديد لـ Discourse ولا يزال في مرحلة التدريب (وضع التمهيد). لذا لا توجد مواضيع كثيرة حتى الآن.
ملف app.yml مرفق أدناه.
أعتقد أن إعدادات المضيف المضمنة صحيحة، حيث تم استخدام اسم مستخدم مشرف Discourse لإنشاء المواضيع، وقائمة السماح بالمسارات هي حاليًا “”.
لقد أنشأت فئة تجريبية وتمت إضافتها إلى “النشر في الفئة”.
كما أضفت DISCOURSE_ENABLE_CORS: true إلى ملف app.yml لأن ذلك قد يساعد. أضفت الوسيط و http://ghost.mydomain و http://ghost.mydomain إلى أصول CORS.
هل يمكن لأي شخص تقديم نصيحة حول كيفية تصحيح هذا الخطأ؟
app.yml:
#
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
## قم بإلغاء التعليق عن هذين السطرين إذا كنت ترغب في إضافة Let's Encrypt (https)
# - "templates/web.ssl.template.yml"
# - "templates/web.letsencrypt.ssl.template.yml"
## أي منافذ TCP/IP يجب أن يعرضها هذا الحاوية؟
## إذا كنت تريد أن يشارك Discourse منفذًا مع خادم ويب آخر مثل Apache أو nginx،
## راجع https://meta.discourse.org/t/17247 للحصول على التفاصيل
expose:
- "8081:80" # http
# - "443:443" # https
params:
db_default_text_search_config: "pg_catalog.english"
## تعيين db_shared_buffers إلى أقصى 25% من إجمالي الذاكرة.
## سيتم تعيينها تلقائيًا بواسطة التمهيد بناءً على الذاكرة المكتشفة، أو يمكنك تجاوزها
db_shared_buffers: "2048MB"
## يمكن أن يحسن أداء الفرز، لكنه يضيف استخدام الذاكرة لكل اتصال
#db_work_mem: "40MB"
## أي إصدار Git يجب أن تستخدمه هذه الحاوية؟ (الافتراضي: tests-passed)
#version: tests-passed
env:
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
DISCOURSE_ENABLE_CORS: true
## كم عدد طلبات الويب المتزامنة المدعومة؟ يعتمد على الذاكرة ونوى المعالج.
## سيتم تعيينها تلقائيًا بواسطة التمهيد بناءً على المعالجات المكتشفة، أو يمكنك تجاوزها
UNICORN_WORKERS: 2
## TODO: اسم النطاق الذي ستستجيب له هذه النسخة من Discourse
## مطلوب. لن يعمل Discourse مع عنوان IP مجرد.
DISCOURSE_HOSTNAME: mydiscoursehost.mydomain
## قم بإلغاء التعليق إذا كنت تريد تشغيل الحاوية بنفس اسم النطاق (-h option) المحدد أعلاه (الافتراضي "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: قائمة عناوين البريد الإلكتروني المفصولة بفواصل سيتم تعيينها كمسؤول ومطور
## عند التسجيل الأولي مثال 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'myemailaddress@mydomain'
## TODO: خادم البريد SMTP المستخدم للتحقق من الحسابات الجديدة وإرسال الإشعارات
## عنوان SMTP واسم المستخدم وكلمة المرور مطلوبة
# WARNING قد يسبب حرف '#' في كلمة مرور SMTP مشاكل!
DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: postmaster@mydomain
DISCOURSE_SMTP_PASSWORD: "mypostmasterpassword7"
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (اختياري، الافتراضي true)
DISCOURSE_SMTP_DOMAIN: mydomain
DISCOURSE_NOTIFICATION_EMAIL: noreply@mydomain
## إذا أضفت قالب Let's Encrypt، قم بإلغاء التعليق أدناه للحصول على شهادة SSL مجانية
# LETSENCRYPT_ACCOUNT_EMAIL: notused
## عنوان CDN http أو https لهذه النسخة من Discourse (مُهيأ للسحب)
## راجع https://meta.discourse.org/t/14857 للحصول على التفاصيل
#DISCOURSE_CDN_URL: https://discourse-cdn.example.com
## مفتاح عنوان IP الخاص بـ Maxmind الجغرافي للبحث عن عناوين IP
## راجع https://meta.discourse.org/t/-/137387/23 للحصول على التفاصيل
#DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456
## حاوية Docker خالية من الحالة؛ تُخزن جميع البيانات في /shared
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared
- volume:
host: /var/discourse/shared/standalone/log/var-log
guest: /var/log
## تذهب الإضافات هنا
## راجع https://meta.discourse.org/t/19157 للحصول على التفاصيل
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
## أي أوامر مخصصة لتشغيلها بعد البناء
run:
- exec: echo "Beginning of custom commands"
## إذا كنت تريد تعيين عنوان البريد الإلكتروني 'من' للتسجيل الأول، قم بإلغاء التعليق وتغييره:
## بعد الحصول على أول بريد إلكتروني للتسجيل، قم بإعادة التعليق على السطر. يجب تشغيله مرة واحدة فقط.
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
- exec: echo "End of custom commands"