(للفريق: هذا لا علاقة له بالاشتراك المستضاف المرتبط بحسابي أيضًا)
لقد قمت بتثبيت Discourse على خادم VPS باستخدام الإرشادات من Run other websites on the same machine as Discourse ولكن مع هذا الاختلاف: قمت بتعديل ملف app.yml قبل التثبيت الأول:
sudo mkdir /var/discourse
sudo git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
sudo cp samples/standalone.yml containers/app.yml
sudo nano containers/app.yml
في ملف YAML، قمت بتعليق قسم المنافذ، وأضفت - "templates/web.socketed.template.yml"، وضعت اسم المضيف + SMTP:
## TODO: اسم النطاق الذي ستستجيب له هذه النسخة من Discourse
## مطلوب. لن يعمل Discourse مع عنوان IP عاري.
DISCOURSE_HOSTNAME: 'discuss.mydomain.community'
## TODO: قائمة من عناوين البريد الإلكتروني المفصولة بفواصل سيتم تعيينها كمسؤولين ومطورين
## عند التسجيل الأولي، مثال 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'someuser@protonmail.com,anotheruser@otherdomain.io'
## TODO: خادم البريد SMTP المستخدم للتحقق من الحسابات الجديدة وإرسال الإشعارات
# عنوان SMTP واسم المستخدم وكلمة المرور مطلوبة
# تحذير: قد يسبب حرف '#' في كلمة مرور SMTP مشاكل!
DISCOURSE_SMTP_ADDRESS: smtp.myprovider.email
DISCOURSE_SMTP_PORT: 465
DISCOURSE_SMTP_USER_NAME: mydomain-no-reply@otherdomain.io
DISCOURSE_SMTP_PASSWORD: pa$$word
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (اختياري، الافتراضي true)
ثم قمت بتهيئة وتشغيل تطبيق Discourse:
sudo ./launcher bootstrap app
sudo ./launcher start app
نجح ذلك. قمت بإيقاف Discourse وقمت بتكوين nginx الخارجي (في /etc/nginx/conf.d/discourse.conf) باستخدام تكوين HTTP فقط المقترح (فقط للاختبار). تمكنت من الوصول إلى http://discuss.mydomain.community.
قمت بإيقاف Discourse مرة أخرى، واستخدمت certbot لتحديث discourse.conf، وأصبحت الآن:
server {
server_name discuss.mydomain.community; # <-- غيّر هذا
location / {
proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock:;
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;
}
listen [::]:443 ssl ipv6only=on; # تم إدارته بواسطة Certbot
listen 443 ssl; # تم إدارته بواسطة Certbot
ssl_certificate /etc/letsencrypt/live/discuss.mydomain.community/fullchain.pem; # تم إدارته بواسطة Certbot
ssl_certificate_key /etc/letsencrypt/live/discuss.mydomain.community/privkey.pem; # تم إدارته بواسطة Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # تم إدارته بواسطة Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # تم إدارته بواسطة Certbot
}
server {
if ($host = discuss.mydomain.community) {
return 301 https://$host$request_uri;
} # تم إدارته بواسطة Certbot
listen 80; listen [::]:80;
server_name discuss.mydomain.community;
return 404; # تم إدارته بواسطة Certbot
}
حتى الآن، كل شيء على ما يرام. يمكنني الوصول إلى Discourse عبر https (لاحقًا قمت بتشغيل ./launcher rebuild app عندما لم تعمل الأشياء، لكن ذلك لم يفرق شيئًا).
في شاشة «إنهاء التثبيت» بعد تقديم نموذج التسجيل، أرى «لقد أرسلنا بريدًا إلكترونيًا تفعيليًا إلى someuser@protonmail.com» .
المشكلة: لا يصل أي بريد إلكتروني.
لا يصل أي بريد إلكتروني إلى صندوق الوارد الخاص بالإدارة. قمت بفحص صندوق البريد الخاص بـ mydomain-no-reply@otherdomain.io، ولم أجد شيئًا هناك أيضًا.
ملاحظة: قد تكون المشكلة بأكملها ناتجة عن أن مستخدم البريد على
otherdomain.ioويجب أن يكون مقيمًا علىmydomain.community. ولكن حسب علمي، هذا ليس شرطًا.
بدأت في استكشاف الأخطاء وإصلاحها، ثم اختبرت بالتغييرات التالية في ملف app.yml (مع إعادة بناء التطبيق في بين):
DISCOURSE_SMTP_ENABLE_START_TLS: false
لم ينجح. واستمريت في:
## إذا كنت ترغب في تعيين عنوان البريد الإلكتروني 'من' للتسجيل الأول، قم بإلغاء التعليق وتغيير:
- exec: rails r "SiteSetting.notification_email='mydomain-no-reply@otherdomain.io"
لذلك تابعت مع Troubleshoot email on a new Discourse install :
- تم ضبط DKIM و SPF بشكل صحيح في DNS لـ
otherdomain.io - استخدام telnet من VPS إلى مزود SMTP يعمل
- استخدام telnet من حاوية Docker (مع
docker execوتثبيت telnet) يعمل أيضًا
شغلت ./discourse-doctor وظهرت جزأان بارزان (باقي النتائج كانت كما هو متوقع):
========================================
إصدار Discourse في discuss.mydomain.community: Discourse 2.6.0.beta2
إصدار Discourse في localhost: غير موجود
==================== مشكلة DNS ====================
يبلغ هذا الخادم عن «غير موجود»، لكن discuss.mydomain.community يبلغ عن Discourse 2.6.0.beta2 .
هذا يشير إلى أن لديك مشكلة في DNS أو أن وكيلًا وسيطًا هو المسؤول.
إذا كنت تستخدم Cloudflare أو CDN، فقد يكون غير مُهيأ بشكل صحيح.
==================== اختبار البريد ====================
لإجراء اختبار قوي، احصل على عنوان من http://www.mail-tester.com/
إرسال البريد إلى REDACTED . .
اختبار الإرسال إلى test-k86jiyqb9@srv1.mail-tester.com باستخدام smtp.myprovider.email:465.
======================================== خطأ ========================================
خطأ غير متوقع
تم الوصول إلى نهاية الملف
====================================== الحل =======================================
هذا ليس خطأ شائعًا. لا يوجد حل موصى به!
يرجى الإبلاغ عن رسالة الخطأ الدقيقة أعلاه إلى https://meta.discourse.org/
(وحل، إذا وجدته!)
جربت مرتين. مرة واحدة بالبريد الإلكتروني المهيأ، ومرة واحدة بعنوان مقدم من mail-tester.com. نفس النتائج. لذا لا يبدو ذلك جيدًا.
ملاحظة: يبدو أن عملية تثبيت Docker تقدم أيضًا إصدارات تجريبية. جيد أن نعرف.
عند النظر في سجل الإنتاج، يظهر:
Started GET "/" for REDACTED-IP at 2020-09-03 06:21:57 +0000
Processing by FinishInstallationController#index as HTML
Rendering finish_installation/index.html.erb within layouts/finish_installation
Rendered finish_installation/index.html.erb within layouts/finish_installation (Duration: 3.2ms | Allocations: 356)
Rendered layouts/_head.html.erb (Duration: 15.7ms | Allocations: 2969)
Completed 200 OK in 323ms (Views: 140.3ms | ActiveRecord: 0.0ms | Allocations: 32137)
Started GET "/finish-installation/register" for REDACTED-IP at 2020-09-03 06:22:01 +0000
Processing by FinishInstallationController#register as HTML
Rendering finish_installation/register.html.erb within layouts/finish_installation
Rendered finish_installation/register.html.erb within layouts/finish_installation (Duration: 7.1ms | Allocations: 1607)
Rendered layouts/_head.html.erb (Duration: 22.3ms | Allocations: 3139)
Completed 200 OK in 107ms (Views: 41.3ms | ActiveRecord: 0.0ms | Allocations: 11760)
Started POST "/finish-installation/register" for REDACTED-IP at 2020-09-03 06:22:22 +0000
Processing by FinishInstallationController#register as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"l1hEEsK/gur5yplJdMIHttZAgYcuzLLkESaAI87IMb88nAFqNwi7l3yJ+3EJBw7leFypVGbH4C5hJl7VnJVYBQ==", "email"=>"someuser@protonmail.com", "username"=>"someusername", "password"=>"[FILTERED]", "commit"=>"Register"}
Redirected to https://discuss.mydomain.community/finish-installation/confirm-email
Completed 302 Found in 48ms (ActiveRecord: 0.0ms | Allocations: 4246)
Rendering layouts/email_template.html.erb
Rendered layouts/email_template.html.erb (Duration: 0.2ms | Allocations: 31)
Started GET "/finish-installation/confirm-email" for REDACTED-IP at 2020-09-03 06:22:22 +0000
Processing by FinishInstallationController#confirm_email as HTML
Rendering finish_installation/confirm_email.html.erb within layouts/finish_installation
Rendered finish_installation/confirm_email.html.erb within layouts/finish_installation (Duration: 2.3ms | Allocations: 418)
Rendered layouts/_head.html.erb (Duration: 7.9ms | Allocations: 1612)
Completed 200 OK in 25ms (Views: 22.1ms | ActiveRecord: 0.0ms | Allocations: 4611)
Delivered mail ea8af868-4a2c-4312-85dd-f57061a3cd90@discuss.mydomain.community (60015.9ms)
Job exception: Net::ReadTimeout
انتظرت قليلًا ثم طلبت عبر المتصفح «إعادة إرسال بريد الإشعار». تم إضافة التالي الآن إلى سجل الإنتاج:
Delivered mail 47ca6f15-cd9e-4c96-a670-6646e2bda585@discuss.mydomain.community (60007.9ms)
Job exception: end of file reached
Rendering layouts/email_template.html.erb
Rendered layouts/email_template.html.erb (Duration: 0.2ms | Allocations: 31)
Delivered mail 02367872-af3a-4df4-9a68-4e5e7c5eda60@discuss.mydomain.community (60007.4ms)
Job exception: end of file reached
Rendering layouts/email_template.html.erb
Rendered layouts/email_template.html.erb (Duration: 0.2ms | Allocations: 31)
Delivered mail ee9ee1fc-6fd1-4970-89fa-260efe2dd04c@discuss.mydomain.community (60014.1ms)
Job exception: end of file reached
Rendering layouts/email_template.html.erb
Rendered layouts/email_template.html.erb (Duration: 0.1ms | Allocations: 31)
Delivered mail 9030f87b-99df-4de2-9a60-2c57f7c752de@discuss.mydomain.community (60007.0ms)
Job exception: end of file reached
Rendering layouts/email_template.html.erb
Rendered layouts/email_template.html.erb (Duration: 0.2ms | Allocations: 31)
Started PUT "/finish-installation/resend-email" for REDACTED-IP at 2020-09-03 06:31:22 +0000
Processing by FinishInstallationController#resend_email as HTML
Parameters: {"authenticity_token"=>"NE21scxxyZz3/DxDkoF8kwi9GXoNKvnstNJdKZjQs7afigDKWcbw4XK/XnvvRHTApqExqUUghybE1oPfyo3aDA=="}
Rendering finish_installation/resend_email.html.erb within layouts/finish_installation
Rendered finish_installation/resend_email.html.erb within layouts/finish_installation (Duration: 0.9ms | Allocations: 163)
Rendered layouts/_head.html.erb (Duration: 2.5ms | Allocations: 269)
Completed 200 OK in 63ms (Views: 6.5ms | ActiveRecord: 0.0ms | Allocations: 6408)
Rendering layouts/email_template.html.erb
Rendered layouts/email_template.html.erb (Duration: 0.2ms | Allocations: 31)
Delivered mail 127cc350-3fb0-4ef1-8759-391fb407b1cb@discuss.mydomain.community (60008.0ms)
Job exception: Net::ReadTimeout
Delivered mail d9c70dfd-5a8b-4f4c-bafa-5a540fc8ed4f@discuss.mydomain.community (60010.0ms)
Job exception: end of file reached
Rendering layouts/email_template.html.erb
Rendered layouts/email_template.html.erb (Duration: 0.1ms | Allocations: 31)
Delivered mail e9e67ed1-d7b1-4e8a-ba11-30501c6fae89@discuss.mydomain.community (60012.4ms)
Job exception: end of file reached
Rendering layouts/email_template.html.erb
Rendered layouts/email_template.html.erb (Duration: 0.2ms | Allocations: 31)
Rendering layouts/email_template.html.erb
Rendered layouts/email_template.html.erb (Duration: 0.1ms | Allocations: 31)
Delivered mail 82d0361e-0349-4a1a-928e-dcb16dcffdbc@discuss.mydomain.community (60008.6ms)
Job exception: end of file reached
تواصلت مع مزود الاستضافة الخاص بي لمعرفة ما إذا كانت المشكلة من جانبهم. قالوا إن هذا التكوين يجب أن يعمل بشكل جيد وفقًا لهم، لكن VPS لم يسبّب أي نشاط على الإطلاق على خادم SMTP.
إذًا هذه هي حالتي الحالية.. أنشر إلى Meta.