إذا تم تعطيل تسجيل الدخول المحلي

مرحباً،

أنا أبدأ منتدى جديداً تماماً، وأنا جديد على منصة Discourse، ويستضاف على DigitalOcean. لسبب ما، أواجه مشكلة تتعلق بـ SMTP أو منفذ الاتصال. الآن، أود معرفة ما إذا كنت قد اعتمدت تسجيل الدخول عبر Google أو وسائل التواصل الاجتماعي، وما إذا كان عدم وجود خيار تسجيل الدخول المحلي في المنتدى يشكل مشكلة بالنسبة لك.

يتم حظر بروتوكول SMTP على DO افتراضيًا. إذا كنت ترغب في استخدام البريد، فستحتاج إلى العثور على وكيل في مكان ما. قال الكثير من الناس إن Mailgun هو ما يعمل بشكل جيد مع Discourse على السحابة، لكن هذا ليس شيئًا لدي خبرة به.

قد يكون هذا ما تبحث عنه:

نعم، يمكنك استخدام تسجيل الدخول عبر الشبكات الاجتماعية (Discord، Google، …) أو معرف Discourse (بدون إعداد) دون الحاجة إلى SMTP. ستفقد ملخصات البريد الإلكتروني وإشعارات البريد، ولكن إذا كان هدفك هو مجرد إنشاء مجتمع، فسيكون ذلك يعمل بشكل جيد حتى مع انخفاض التفاعل (تم تصميم الملخصات للمساعدة في الاحتفاظ بالمستخدمين).

رائع، لقد جربت SendGrid وMailGun وResend. واجهت نفس المشكلة، وقد تكون مشكلة في المنفذ، لذا جربت جميع المنافذ. في الوقت الحالي، أريد التحقق من أن تسجيل الدخول عبر الشبكات الاجتماعية يعمل بشكل صحيح، والتخلص من تسجيل الدخول المحلي.

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

مرحبًا @abeen، أهلاً بك :wave:
لقد قمت بعدد كبير من عمليات التثبيت الذاتي باستخدام Mailgun و Resend على DigitalOcean (وغيرها من خوادم السحابة) — هل يمكنك تقديم المزيد من التفاصيل حول المشكلة التي تواجهها؟ هل تقوم بتعديل ملف app.yml الخاص بك بالإعدادات المناسبة؟ أفترض أن هذا تثبيت قياسي؟

لـ Resend:

  DISCOURSE_HOSTNAME: <forum.yourforum.etc>
  DISCOURSE_DEVELOPER_EMAILS: <your-email@emailaddress.com>
  DISCOURSE_SMTP_ADDRESS: smtp.resend.com
  DISCOURSE_SMTP_PORT: 2525
  DISCOURSE_SMTP_USER_NAME: resend
  DISCOURSE_SMTP_PASSWORD: "xxxx"

لـ Mailgun:

  DISCOURSE_HOSTNAME: <forum.yourforum.etc>
  DISCOURSE_DEVELOPER_EMAILS: <your-email@emailaddress.com>
  DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
  DISCOURSE_SMTP_PORT: 2525
  DISCOURSE_SMTP_USER_NAME: <your.mailgun.acccount.email>
  DISCOURSE_SMTP_PASSWORD: "xxxx"

تقول شركة الاستضافة: «يرجى العلم أنه بالإضافة إلى المنفذ 25 الذي تم حظره سابقًا، تم حظر المنافذ 465 و587 على خوادم Droplets اعتبارًا من 6 مارس 2025. وذلك لضمان عدم استخدام خوادم DigitalOcean لإرسال رسائل البريد الإلكتروني المزعجة.»

وأرى داخل لوحة الإدارة أن هناك 30 مهمة بريد إلكتروني فشلت. يرجى التحقق من ملف app.yml والتأكد من صحة إعدادات خادم البريد. عرض المهام الفاشلة في Sidekiq.

أعدت إنشاء واجهة برمجة التطبيقات الخاصة بـ Resend، وغيرت المنفذ إلى 587، ثم جربت المنفذ 2525. لكن لا شيء يعمل معي.

هذا هو ملف YAML الخاص بي:

LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8
DISCOURSE_HOSTNAME: dobato.au
DISCOURSE_DEVELOPER_EMAILS: myemail@outlook.com
DISCOURSE_SMTP_ADDRESS: smtp.resend.com
DISCOURSE_SMTP_USER_NAME: resend
DISCOURSE_SMTP_PASSWORD: «كلمة المرور هنا»
DISCOURSE_SMTP_PORT: 2525
DISCOURSE_SMTP_ENABLE_START_TLS: true
DISCOURSE_NOTIFICATION_EMAIL: noreply@dobato.au
DISCOURSE_SMTP_DOMAIN: dobato.au
  • على الأرجح، هذه هي المشكلة الرئيسية التي تسبب لك المتاعب: فأنت تستخدم علامات اقتفاء منحنية (curly quotes). ملفات YML لا تحب ذلك وعادةً ما تتعطل بسببه. يجب عليك استخدام علامات اقتفاء مستقيمة مفردة أو مزدوجة مثل 'password' أو "password".
  • هل قمت بتثبيت قياسي على نطاق فرعي أم أن هذا تثبيت على نطاق جذري؟ إذا كان الأمر يتعلق بالنطاق الفرعي، فيجب أن يكون شيئًا مثل forum.dobato.au أو discourse.dobato.au (تحقق مما هو موجود في خادم الأسماء لديك). ما لم تكن تنوي إجراء تثبيت على نطاق جذري، فإن هذا يحتاج إلى تصحيح.
  • هذا السطر غير ضروري، احذفه.
  • بينما يدعم Resend هذا ويجب أن يعمل، فإن المعيار هو 587.
  • هذا السطر غير مطلوب؛ فلا فائدة من إجبار المرسل على بدء STARTTLS - حيث يستخدم مرسل Ruby الأساسي (ActionMailer) enable_starttls_auto: true، مما يعني أنه سيقوم تلقائيًا بترقية الاتصال إلى TLS إذا كان الخادم (Resend) يدعم ذلك. احذف هذا السطر.

يجب أن يبدو قسم app.yml الصحيح لديك كما يلي:

DISCOURSE_HOSTNAME: dobato.au # (تحقق من ذلك - فقد يكون غير صحيح!)
DISCOURSE_DEVELOPER_EMAILS: myemail@outlook.com
DISCOURSE_SMTP_ADDRESS: smtp.resend.com
DISCOURSE_SMTP_USER_NAME: resend
DISCOURSE_SMTP_PASSWORD: "re_actual_api_key_here" # لاحظ علامات الاقتفاء المستقيمة!
DISCOURSE_SMTP_PORT: 587
DISCOURSE_NOTIFICATION_EMAIL: noreply@dobato.au

ملفات YML صارمة للغاية فيما يتعلق بالبنية النحوية والمسافات، لذا من المهم الاحتفاظ بتنسيق ملف القالب الحالي (انظر discourse_docker/samples/standalone.yml at main · discourse/discourse_docker · GitHub)

لكن DigitalOcean قامت بحجب المنفذ 587، وهذا هو السبب في استخدام المنفذ 2525.

أوه، نسيت DigitalOcean، هههه. :woman_facepalming:t2: لقد انتقلت بعيدًا عنهم منذ فترة. في ذهني كنت أفكر في Resend و Hetzner. لذا نعم، استخدم 2525 (أتذكر الآن أنني قمت بالتبديل إلى ذلك أثناء الترحيل أيضًا).
تعديل: قمت بتصحيح منشوري. شكرًا لك، جيك.

إلى جانب النصائح الممتازة المذكورة أعلاه، من المرجح أن يُسهم تشغيل الأمر rake emails:test (انظر Troubleshoot email on a new Discourse install) في إظهار الخطأ فورًا.

انهار موقعي الآن. إنه موقع جديد به عدد قليل من الأعضاء، ولا أعرف كيفية تنزيل صفحاتي المخصصة وقوائم الأعضاء. لا أريد استخدام SMTP على الإطلاق.

أعتذر عن ما يحدث لك.

نعم، من المرجح أن ملف yml الخاص بك تالف. يُرجى نشره بالكامل هنا (بدون عناوين البريد الإلكتروني وكلمات المرور). لا ينبغي أن يكون تشغيله بهذه الصعوبة.

فقط بدافع الفضول، ما حجم القطرة (Droplet) التي تستخدمها على DigitalOcean؟

هل تمكّنت من التحقق من صحة إعداد خادم الأسماء (Name Server) لديك؟

مرحبًا،

لدي خطة أساسية / 1 معالج / 2 جيجابايت من الذاكرة العشوائية / 50 جيجابايت من القرص

env:
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8
DISCOURSE_HOSTNAME: dobato.au
DISCOURSE_DEVELOPER_EMAILS: ``myemail@outlook.com
DISCOURSE_SMTP_ADDRESS: ``smtp.resend.com
DISCOURSE_SMTP_USER_NAME: resend
DISCOURSE_SMTP_PASSWORD: "re_mypassword"
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_ENABLE_START_TLS: true
DISCOURSE_NOTIFICATION_EMAIL: noreply@dobato.au
DISCOURSE_SMTP_DOMAIN: dobato.au
DISCOURSE_SMTP_AUTHENTICATION: login
DISCOURSE_SMTP_FROM_ADDRESS: noreply@dobato.au
UNICORN_WORKERS: 4

لا أريد استخدام SMTP. أظهرت عملية البحث عن المشكلة باستخدام بعض الأوامر أن Nginx و Unicorn غير قيد التشغيل.

يرجى قراءة منشوري السابق هنا بعناية. ملف الـ YML الخاص بك غير صحيح.

هذا يجب أن يعمل لمنتدى غير نشط. هل لديك ملف تبديل (swap file) على الإطلاق؟ شغّل الأمر free -h في سطر الأوامر ونسخ الإخراج هنا.

curl: (52) استجابة فارغة من الخادم
root@dobato:~# free -h
total used free shared buff/cache available
Mem: 1.9Gi 201Mi 1.2Gi 4.0Mi 507Mi 1.6Gi
Swap: 2.0Gi 0B 2.0Gi

ماذا عن ديسكورد على أمازون لايتسيل؟ لديهم أيضًا خدمة البريد الإلكتروني عبر SMTP من أمازون SES.

@abeen هل قمت باستبدال هذه الأقواس بأقواس عادية؟

جرّب استخدام هذه بدلاً منها:

"

لدي " "، علامة الاقتباس المزدوجة

أفهم. من الممكن استضافة Discourse على Lightsail مع SES (يفعل ذلك بعض المستخدمين هنا). أو يمكنك تجربة المنفذ 2525 إذا لم تكن قد فعلت ذلك بعد. ولكن إذا كنت ترغب في تجنب هذه المشاكل المتعلقة بالمنافذ، فيمكنك الانتقال إلى مُضيف آخر، مثل Hetzner أو Lightsail.

ينتهي إعادة البناء بسرعة كبيرة مع هذا الإعداد.. لا أعرف السبب؟