حاوية Discourse-app تبدأ ثم تتوقف بصمت

تمام! لقد طبقت الغباء في الإعدادات في الصفحة المذكورة أعلاه، مقارنة بملفات إعدادات nginx الأخرى ولم أستطع فهم سبب عدم استماع الوكيل إلى 80:443 لـ discourse… :confused:

إليك ما توقعت رؤيته:

server {
	listen 80;
	server_name discourse.mydomain.com;
    return 301 https://$host$request_uri;  # routing to https
}

server {
	listen 443 ssl
	listen [::]:443 ssl;
	server_name discourse.mydomain.com;

	ssl_certificate      /etc/letsencrypt/live/discourse.mydomain.com/fullchain.pem;
	ssl_certificate_key  /etc/letsencrypt/live/discourse.mydomain.com/privkey.pem;

	root /var/www/html;

	# Add index.php to the list if you are using PHP
	index index.html index.htm index.nginx-debian.html;

	location / {
      proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock:; # using socket
      proxy_set_header Host $http_host;
      proxy_http_version 1.1;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Real-IP $remote_addr;
	}
}

NPM: لقد اتبعت نصيحة @pfaffman وقرأت https://meta.discourse.org/t/using-nginx-proxy-manager-to-manage-multiple-sites-with-discourse/206344، لذلك قمت بتقييم خيار تثبيت NPM، ولكن هذا يبدو مبالغًا فيه…

شكراً جزيلاً لكل من ساعد!

للإشارة، فإن npm و nginx proxy manager شيئان مختلفان. أنت تخلط بين مصطلحاتك، وبالتالي الأشخاص الذين يحاولون مساعدتك.

إعجابَين (2)

إذًا، تحتاج إلى تكوين nginx هذا لتوجيه الطلبات إلى Discourse.

أوصي بتشغيل جهاز افتراضي جديد تمامًا لـ Discourse فقط.

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

عذرًا ستيفن على الارتباك، لقد استخدمت للتو اسم الأداة المشار إليها في المقال. أفهم أن NPM ومدير وكيل nginx (كـ) هما شيئان مختلفان، ولهذا السبب استخدمت الأحرف الكبيرة…

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

لا أستطيع ذلك يا جاي: أنا أحاول مساعدة صديق في نشر التطبيق ولا يمكنني تعديل تكوين خادمه. لهذا السبب يجب عليّ إصلاح مشكلة nginx…

بالمناسبة، فهمي هو:

  • يستمع Discourse إلى المنافذ 80/443.
  • يلعب nginx دور المحول، حيث يوزع الطلبات على تطبيقات مختلفة، بناءً على اسم النطاق الخاص بها:
    • netxcloud.mydomain.com يحاول الوصول إلى المنفذ 80 → يتم توجيه الطلب إلى server_IP:8000
    • crm.mydomain.com يحاول الوصول إلى المنفذ 80 → يتم توجيه الطلب إلى server_IP:9000
    • discourse.mydomain.com يحاول الوصول إلى المنفذ 80 → يتم توجيه الطلب إلى http://unix:/var/discourse/shared/standalone/nginx.http.sock: (آمل ألا يكون النقطتان في النهاية خطأ إملائي) حيث قام البرنامج النصي للإعداد بتكوين Discourse للاستماع إلى هذا المقبس.

هل أنا على حق في هذا؟

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

هذا مزعج ومربك إلى حد ما، ولكن لكي نكون منصفين لـ @jlgarnier، تم استخدام هذا الاختصار لأول مرة إما بواسطة @tophee أو @pfaffman في استخدام مدير وكيل Nginx لإدارة مواقع متعددة مع Discourse للإشارة إلى مدير وكيل Nginx. لا أحب ذلك، ولكن إذا كان “خاطئًا”، فهذه ليست حقًا غلطة OP.

على سبيل المثال، يحتوي الموضوع على قسم يسمى تثبيت NPM يركز بالكامل على مدير وكيل Nginx.

واو، لقد خدعني ذلك أيضًا.
من المزعج كيف استولت تلك المشروع على اختصار موجود بعد ثماني سنوات من الأصل.

إعجابَين (2)

لست متأكدًا من ذلك؛ لقد تصفحت موقعهم على الويب ولم أرهم يستخدمون الاختصار بأنفسهم.

إنهم يستخدمونه في إعدادات Docker الخاصة بهم. nginx-proxy-manager/docker/docker-compose.dev.yml at develop · NginxProxyManager/nginx-proxy-manager · GitHub

services:
  npm:
    image: nginxproxymanager:dev
    container_name: npm_core
إعجاب واحد (1)

آه، أوه! لم أكن أدرك ذلك. :slightly_smiling_face:

مرحباً بالجميع،

سأحاول إعداد nginx مرة أخرى بعد ظهر اليوم. هل يمكن لأي شخص تأكيد الصيغة الدقيقة للمقبس: http://unix:/var/discourse/shared/standalone/nginx.http.sock:؟ أريد التأكد من أن النقطتين في النهاية ليستا خطأ إملائيًا…

شكراً مقدماً على أي مساعدة!

لا أعتقد أن هذه النقطتين الرأسيتين يجب أن تكونا هنا، لا.

بالتأكيد… لقد طبقت في discourse.conf التعديلات التي اقترحتها يوم الجمعة الماضي ويعمل Discourse الآن بشكل جيد! على الأقل يمكنني الوصول إلى صفحة الترحيب ولكنني لا أتلقى البريد الإلكتروني للتفعيل، وهذا لا يتعلق بـ Discourse (أشك في أن صديقي لم ينشئ حساب البريد الإلكتروني المطلوب :blush:).

أدين لك بجزيل الشكر على المساعدة التي قدمتها وآمل ألا أعود إلى هذا المنتدى قريبًا! :wink:

إعجابَين (2)

أخيرًا، عدت أسرع مما كان متوقعًا ولكن ربما ستتمكن من مساعدتي باقتراحاتك الرائعة! :grin:

الوضع هو:

  • ديسكورس يعمل، دوكر (أو بورتينر) يشير إلى أن الحاوية سليمة ويمكنني الوصول إلى صفحة الترحيب forums.mydomain.com.
  • لا أتلقى أي بريد تفعيل، على الرغم من إنشاء حساب البريد التقني بشكل صحيح (مزود الاستضافة = OVH).
  • لقد اختبرت إرسال بريد إلكتروني من هذا الحساب التقني (بالتكوين أدناه) = موافق.
  • تكوين البريد الحالي هو:
DISCOURSE_SMTP_ADDRESS: ssl0.ovh.net
DISCOURSE_SMTP_PORT: 465
DISCOURSE_SMTP_USER_NAME: forums@mydomain.com
DISCOURSE_SMTP_PASSWORD: "Str0ngPassw0rd"
DISCOURSE_SMTP_ENABLE_START_TLS: false
DISCOURSE_SMTP_DOMAIN: mydomain.com
DISCOURSE_NOTIFICATION_EMAIL: noreply-forums@mydomain.com

لا أعرف حقًا من أين يجب أن أبدأ التحقيق وسأكون سعيدًا بأي نصيحة!

شكرًا مقدمًا على مساعدتك!

أول شيء سأتحقق منه هو ما إذا كان forums@mydomain.com قد تم تكوينه لإرسال البريد نيابة عن noreply-forums@mydomain.com، ويجب التحقق من ذلك لدى مزود البريد الإلكتروني الخاص بك.

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

لست متأكدًا مما إذا كان هذا العنوان يمكنه الإرسال “بالنيابة عن”، لذلك قمت بتحديث app.yml لتعيين نفس العنوان:

DISCOURSE_SMTP_ADDRESS: ssl0.ovh.net
DISCOURSE_SMTP_PORT: 465
DISCOURSE_SMTP_USER_NAME: forums@mydomain.com
DISCOURSE_SMTP_PASSWORD: "Str0ngPassw0rd"
DISCOURSE_SMTP_ENABLE_START_TLS: false
DISCOURSE_SMTP_DOMAIN: mydomain.com
DISCOURSE_NOTIFICATION_EMAIL: forums@mydomain.com

حاولت telnet ssl0.ovh.net 465 = OK

ومع ذلك، يبلغ discourse-doctor عن:

========================================
Discourse 2.9.0.beta9
Discourse version at forums.mydomain.com: Discourse 2.9.0.beta9
Discourse version at localhost: NOT FOUND
==================== DNS PROBLEM ====================
This server reports NOT FOUND, but forums.mydomain.com reports Discourse 2.9.0.beta9 .
This suggests that you have a DNS problem or that an intermediate proxy is to blame.

[... ]

Testing sending to myprivatemail@yahoo.fr using ssl0.ovh.net:465, username:forums@mydomain.com with plain auth.
======================================== ERROR ========================================
                                    UNEXPECTED ERROR

Net::ReadTimeout

====================================== SOLUTION =======================================

هل يمكن أن تكون مشكلة البريد مرتبطة بمشكلة DNS المزعومة؟ ليس لدي “خادم وكيل وسيط”، فقط أقوم بتشغيل nginx كخادم ويب وكيل…

هذه على الأرجح مشكلتك. هل يمكنك تجربة منفذ مختلف؟ لقد رأيت أفضل النتائج مع المنفذ 587 إذا كان مدعومًا من قبل مزود البريد الإلكتروني الخاص بك.

ستحتاج إلى التعليق على هذا أو تعيينه على true إذا قمت بتغيير المنفذ إلى 587.

لا، مزود البريد الإلكتروني الخاص بي (وهو نفس مزود الاستضافة) يسمح فقط بالمنفذ 465. بالمناسبة، قرأت أنني بحاجة إلى تعيين سجلات SPF و DKIM للنطاق (هل هذا نطاق فرعي؟) ولم أقم بتعيين أي من هذه السجلات حتى الآن: هل يمكن أن يكون لهذا أي تأثير؟

راجع استكشاف أخطاء البريد الإلكتروني وإصلاحها في تثبيت Discourse جديد

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

أتصفح المنشور ولكني نسيت بعض المعلومات:

  • تتم إدارة نظام أسماء النطاقات (DNS) بواسطة مزود الاستضافة الخاص بنا (لبعض الخدمات)، ولنقل على الخادم ServerA.
  • يعمل Discourse على خادم آخر (ServerB) مستضاف بواسطة مزود مختلف.

فهمي إذن هو: يتصل Discourse على الخادم ServerB بالخادم البريدي على الخادم ServerA، مصادقًا باستخدام البريد الإلكتروني/كلمة المرور لاستخدام خدمة SMTP التي يوفرها مزود استضافة الخادم ServerA.

هل هذا إعداد غير طبيعي أم لا يزال بإمكاني استخدام إعداد البريد الإلكتروني العادي في ملف app.yml هنا؟