لأغراض الأمان، أعتقد أنه سيكون من الأفضل إذا لم تكن منتديات Discourse مرئية افتراضيًا عند التنقل مباشرة إلى عنوان IP في المتصفح.
بعض الأسباب:
يسمح باستخدام الموقع بدون HTTPS، للمستخدمين وكذلك للإعداد الأولي من قبل المسؤول.
يكشف عنوان الخادم الأصلي، وهو أمر سيء إذا كنت تستخدم Cloudflare أو ما شابه لحماية عنوان IP الأصلي من هجمات DDoS أو محاولات اختراق الخادم، خاصة إذا اعتبر المخترقون الخادم ذا قيمة عالية. هناك أشخاص يديرون برامج روبوتات تفحص جميع نطاقات عناوين IP المملوكة لموفري خدمات الاستضافة.
أيضًا، يقوم الآن مثبت Discourse بتأكيد أن النطاق أو النطاق الفرعي مُهيأ بشكل صحيح، وإلا فلن يستمر في التثبيت.
كل ما يحتاج إلى إضافته في أسفل ملف /etc/nginx/conf.d/discourse.conf (داخل حاوية Docker) هو:
حيث أن 1.1.1.1 هو عنوان IP العام الخاص بخادمك. ربما توجد طريقة أكثر أناقة لتضمين عنوان IP بدلاً من كتابته بشكل ثابت. جربت عدة طرق لكن لم أستطع جعلها تعمل.
يعمل هذا بشكل جيد بالنسبة لي (بما في ذلك عند استخدام وسيط Cloudflare)، ولا أستطيع التفكير في حالات كثيرة حيث يكون السماح بالوصول المباشر عبر IP مفيدًا أو ضروريًا. يبدو أن منع هذا الأمر ممارسة شائعة إلى حد ما. يسعدني سماع أي أسباب لعدم القيام بذلك!
من الناحية الموضوعية، هذا غير دقيق. الموقع ليس حصريًا عبر HTTPS، حيث يمكنك الوصول إليه مباشرةً عبر عنوان IP الذي لا يستخدم HTTPS.
الفرق يكمن في منع الاتصال غير الآمن دون استخدام HTTPS وتجنب كشف عنوان IP الأصلي للخادم. ولا أدرك أي فوائد لذلك.
إذا قمت بإجراء بحث DNS لأهم 50 موقعًا في العالم، سيبدو وكأنه لا يمكن الوصول إلى أي منها بشكل غير آمن مباشرةً عبر عنوان IP. ولا أعتقد أنه من غير المعقول افتراض أن أهم 50 موقعًا في العالم يتبعون أفضل الممارسات.
من أصل 8 تثبيتات، تم تثبيت جميعها باستخدام صورة Digital Ocean، حيث تم تثبيت Communiteq (المعروفة سابقًا باسم DiscourseHosting) ثم نقلها، وكذلك تم التثبيت يدويًا باستخدام هذا الدليل discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub. جميعها قابلة للوصول بشكل غير آمن عبر عنوان IP افتراضيًا. تم تثبيت اثنتين منها خلال الأسبوع الماضي (باستخدام دليل GitHub المذكور أعلاه).
هل هناك خطوة إضافية ربما أغفلتها؟ أعتقد أن رسالة خطأ 404 أفضل من إعادة التوجيه 301، خاصةً أن معظم الأشخاص الذين يتصفحون عناوين IP على الأرجح لا ينوون شيئًا جيدًا. لكن إعادة التوجيه 301 أفضل من الوصول غير الآمن.
لذلك جربت حذف قالب Cloudflare الرسمي على أحد هذه التثبيتات ثم إعادة بنائه، لكن للأسف لم يحدث أي فرق. لا يزال يمكن الوصول إليه بشكل غير آمن عبر عنوان IP.
لا أستطيع التفكير في أي شيء غير عادي آخر بين هذه التثبيتات. كانت الإضافات الوحيدة على هذه النسخة هي مدير Docker الافتراضي المرفق وإضافة الإعلانات الرسمية. وهي على الفرع المستقر، لكن المواقع الأخرى التي تظهر نفس السلوك تعمل على مزيج من الفروع المستقرة واختبارية وتلك التي تجاوزت الاختبارات بنجاح.
ليس الأمر خاصًا بأي إعداد معين أو بـ Cloudflare، بل هو مجرد نقطة بيانات ورؤية أخرى:
يمكننا إعداد وكيل (proxy) لإعادة توجيه “عنوان IP عاري على المنفذ 80” (كمثال) إلى أي اسم نطاق كامل (FQDN) آخر بعدة طرق باستخدام كل من Apache2 وNginx.
هناك طرق عديدة للقيام بذلك (إعادة كتابة وإعادة توجيه، استضافة افتراضية وإعادة توجيه، إلخ).
على سبيل المثال، يمكننا إنشاء استضافة افتراضية على وكيل عكسي يستمع إلى عنوان IP على المنفذ 80، وإعادة توجيه جميع تلك الطلبات إلى أي FQDN (أو عنوان IP) نختاره.
كما يمكننا القيام بذلك باستخدام وكيل عكسي مع mod_rewrite في Apache2 وقواعد إعادة الكتابة في Nginx.
في جميع إعدادات Discourse لدينا (في العمليات)، نستخدم وكيلًا عكسيًا أمام Discourse (بعضها Apache2 وبعضها Nginx)، ومن السهل التخفيف من هذه الأنواع من المشكلات (عند ظهورها) عن طريق تكوين الوكيل العكسي للتعامل مع هذه القضايا والحالات الخاصة.
ومع ذلك، لا أستخدم الحالة الخاصة لـ Cloudflare كوكيل، لكن يبدو أن أي وكيل يمكن تكوينه لإدارة هذه الأنواع من المشكلات، تمامًا كما يمكن تكوين أي وكيل عكسي لإعادة توجيه “تقريبًا أي شيء إلى أي شيء آخر”.
إذا انتقلنا خطوة إلى الأمام، فلو كنت مستخدمًا تجاريًا لخدمة وكيل (مثل Cloudflare) ولدي عنوان IP أو اسم نطاق محدد أرغب في إعادة توجيهه (أو حجب توجيهه)، فسأقوم بتكوين (أو طلب) من الوكيل (في هذه الحالة Cloudflare) لإعادة توجيه “عنوان IP العاري على المنفذ 80” إلى FQDN (أو أي مكان آخر) أختاره.
هذا النوع من الأمور صُممت الوكالات للتعامل معه (بشكل افتراضي)؛ وكما ذُكر، فإن هذا النوع من إعادة التوجيه سهل التنفيذ باستخدام Apache2 أو Nginx، لذا أفترض (ولست مستخدمًا لـ Cloudflare) أن خدمة تجارية مثل Cloudflare يمكنها إدارة هذا النوع من إعادة التوجيه التافهة بسهولة.
لكنني أتفق مع الآخرين في أنني لا أستطيع إعادة إنتاج الوصول عبر عنوان IP لم forum الخاص بي أيضًا. أحصل على إعادة التوجيه. وليس لدي أي إعدادات خاصة، ولا أستخدام لـ Cloudflare، وأنا أعمل فعليًا على خادم افتراضي مجاني تمامًا (بدون تكلفة شهرية) لا يقدم أي ميزات إضافية.
نعم، هذا يشير إلى أن هذه المواقع على الأرجح غير قابلة للاستخدام عبر الويب بأي عنوان IP مباشر. على أي حال، لا يبدو أن أحدًا يدعم السماح بالوصول غير الآمن عبر عنوان IP مباشر على الويب.
لقد اختبرت للتو تشغيل نسختين من Discourse على Digital Ocean باستخدام تطبيق سوقهم الخاص لإطلاقها بسرعة.
أردت اختبار ذلك مع إعداد مخصص شبه معدوم، فقط بتعديل smtp و dev email و discourse_hostname بتفاصيل وهمية (للسماح بإعادة البناء).
توقفت أداة التثبيت بسبب أن النطاق/النطاق الفرعي الوهمي الذي قمت بإعداده لم يجتز خطوة التحقق من النطاق (وتوصي بتعديل ملف app.yml يدوياً ثم إعادة البناء).
بعد تعديل ملف app.yml وإعادة البناء (smtp و dev email و discourse_hostname فقط)، أصبح الموقع متاحاً بشكل غير آمن على عنوان IP دون أي تدخل من Cloudflare. ولم يعاد توجيهه إلى discourse_hostname المحدد.
معظم عمليات التثبيت الخاصة بي لم تستخدم تطبيق سوق Digital Ocean للإعداد، بل تم إجراؤها يدوياً باستخدام دليل تثبيت Docker القياسي.
لاحظ أن توقف أداة التثبيت بسبب عدم القدرة على التحقق من النطاق حدث أيضاً في عمليتي تثبيت حديثتين استخدمتا Cloudflare، ربما بسبب التوجيه الوسيط. أما باقي عمليات التثبيت فقد تمت قبل إضافة خطوة التحقق من النطاق في أداة التثبيت.
تعديل: لاحظ أن عمليتي تثبيت من أصل 8 عمليات تثبيت لـ Discourse فقط واجهتا أي مشكلة في التحقق من النطاق أثناء التثبيت الأولي (دون احتساب نسختي الاختبار المذكورتين أعلاه). تقترح سكريبت إعداد Discourse على المستخدم تعديل ملف app.yml يدوياً وإعادة البناء عند حدوث خطأ في التحقق من النطاق. لا مشكلة إذا لم يكن هذا مفيداً، فهذا لم يكن حلاً لي.
تعديل: بشكل عام نستخدم SSL المرن من Cloudflare، وليس letsencrypt (الذي سيكون أفضل). شكراً @neounix.