مرحباً @pfaffman، التعديل على المنشور الأصلي يحتوي على علامة + خاطئة في سطر to:، مما يكسر التعبير النمطي (regex). يجب إزالتها.
بشكل منفصل، الفقرة التالية تحتاج إلى تعديل لأنها لم تعد منطقية:
هناك نمطان يحتاجان إلى استبدال، أحدهما ينتهي بـ --keylength، والآخر ينتهي بـ --fullchainpath (في الملف الفعلي، اسم النطاق الأصلي الخاص بك يأتي قبل كل من هذه المفاتيح). أدخل اسم النطاق الخاص بك (والنطاقات الفرعية الإضافية مسبوقة بـ -d ) ثم أضف ما يلي إلى قسم hooks في ملف app.yml الخاص بك (نحو نهاية الملف):
أقترح:
استخدم domain1 و domain2 في هذا المنشور لإنشاء الكود الذي ستحتاجه. domain1 هو اسم النطاق الأصلي الخاص بك و domain2 هو اسم النطاق الإضافي الذي تريد إضافته. أضف كتلة after_ssl: الناتجة إلى قسم hooks في ملف app.yml الخاص بك وقم بتشغيل launcher rebuild app.
عفوًا. لقد أزلت علامة + وقمت بتعديل النص. سألقي نظرة أخرى لاحقًا عندما أكون أمام جهاز كمبيوتر
مرحبًا @textkit، هذه صفحة ويكي، لذا يمكنك إجراء المزيد من التعديلات إذا أردت.
/etc/runit/1.d/letsencrypt
مفقود في حاوية docker. لذلك لن يتم بناؤه. حل بديل: https://www.forcewww.com/
لذلك توقف هذا عن العمل:
## إضافة شهادة Let's Encrypt لاسم النطاق غير www و www
after_ssl:
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /--keylength/
to: "-d example.de -d www.example.de --keylength"
قبل إزالة مثل هذه الأدوات/الملفات الثنائية من حاوية Docker، سيكون من الجيد تلقي إشعار…
هل هذا تغيير في كيفية تعامل Discourse مع LetsEncrypt أم تغيير في LetsEncrypt نفسها؟
لدي خادم يتأثر حاليًا بهذه المشكلة. في الوقت الحالي، الحل البديل الخاص بي هو التعليق على هذا الجزء من app.yml ولكني أشعر أننا بحاجة إلى طريقة لإضافة هذه الشهادات الإضافية إلى الإعداد في المستقبل.
Errno::ENOENT: لا يوجد مثل هذا الملف أو الدليل @ rb_sysopen - /usr/local/bin/letsencrypt
موقع الفشل: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.3.0/lib/pups/replace_command.rb:11:in `read’
فشل الاستبدال بالمعلمات {“filename”=>“/usr/local/bin/letsencrypt”, “from”=>“/-d spokes.nz/”, “to”=>“-d spokes.nz -d www.spokes.nz”}
فشل التمهيد برمز خروج 1
** فشل التمهيد ** يرجى التمرير لأعلى والبحث عن رسائل خطأ سابقة، قد يكون هناك أكثر من رسالة واحدة.
تخمين مني، ولكن أتساءل عما إذا كان الخطأ الذي تواجهه قد يتعلق بمسافة مفقودة قبل الشرطة المائلة النهائية وعلامة الاقتباس النهائية في الأسطر المعنية من المقطع المقترح في ملف app.yml الخاص بك؟
أستنتج من رسالة الخطأ أن الأسطر المعنية لديك هي (حرفياً)
from: /-d spokes.nz/
to: “-d spokes.nz -d www.spokes.nz”
أقول هذا، لأنه في حالتي، الأسطر هي
from: /-d nzarchitecture.net.nz /
to: "-d nzarchitecture.net.nz -d www.nzarchitecture.net.nz "
ومع وجود مسافات قبل نهاية كل سطر كما هو موضح، يمكنني الآن إعادة بناء Discourse دون طرح هذا الخطأ. (إذا نظرت عن كثب، سترى أن المقطع المحدث لـ @pfaffman المنشور في بداية هذا الموضوع أظهر تلك المسافات الإضافية).
ليس لدي أي ملفات على الإطلاق في الدليل usr/local/bin/ (كما هو مذكور في رسالة الخطأ الخاصة بك) أيضاً، مما جعلني أشك في أن عدم وجود ملف letsencrypt هذا ليس هو ما يؤدي إلى الخطأ.
ومع ذلك، بالنسبة لي، بينما يعمل Discourse بشكل جيد على عنوان URL الخاص به nzarchitecture.net.nz، للأسف ما زلت أواجه خطأ في الشهادة إذا كتبت www.nzarchitecture.net.nz في المتصفح - سواء كان ذلك بسبب عدم وجود هذا الملف، لا أعرف.
أشير فقط إلى أنني أحاول حاليًا دمج هذا في متغيرات البيئة للتعامل معها مباشرة في discourse_docker، شيء مثل قائمة مفصولة بفواصل من أسماء المضيفين البديلة. يبدو أن هذه حالة استخدام شائعة بما يكفي للتعامل معها مباشرة.
سيجعل هذا التكوين أسهل لهذه الحالة، لذلك لن يحتاج أحد إلى إجراء تعديلات على ملفات app.ymls الخاصة بهم.
خطتي الحالية هي مع DISCOURSE_HOSTNAMEwww.domain.com
السماح لبيئة مثل: DISCOURSE_HOSTNAME_ALIASES: domain.com,other.domain.com سيجلب الشهادة، صالحة لجميع أسماء المضيفين.
(بينما أنا هناك، تجديدات Let’s Encrypt التلقائية لا تعمل بشكل صحيح أيضًا، لذا أقوم بإصلاحها أيضًا)
فاتني ذلك! فعلت كما اقترحت، لكن فشل التمهيد لا يزال قائماً:
فشل
Errno::ENOENT: لا يوجد مثل هذا الملف أو الدليل @ rb_sysopen - /usr/local/bin/letsencrypt
مكان الفشل: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.3.0/lib/pups/replace_command.rb:11:in `read’
فشل الاستبدال بالمعلمات {“filename”=>“/usr/local/bin/letsencrypt”, “from”=>“/-d spokes.nz /”, “to”=>"-d spokes.nz -d www.spokes.nz "}
فشل التمهيد برمز خروج 1
** فشل التمهيد ** يرجى التمرير لأعلى والبحث عن رسائل خطأ سابقة، قد يكون هناك أكثر من رسالة واحدة.
ربما ليس هذه هي المشكلة الرئيسية هنا، ولكن في محاولاتي، قمت أيضًا بتحديث إصدار Docker الذي يعمل على Digital Ocean من 20.0.4 (أعتقد) إلى 28.3.3 - ربما ساعد ذلك، على الأقل مع هذا الخطأ. إذا لم يكن هناك شيء آخر، فقد تخلصت من تحذيرات Docker “المهملة” التي كنت أتلقاها في بداية عملية إعادة البناء.
مرحباً بالجميع، للمتابعة، تم دمج نطاقات متعددة - في أحدث إصدار من discourse_docker، يمكنك الآن تضمين قوالب ssl و letsencrypt وإعداد متغيرات البيئة بالشكل DISCOURSE_HOSTNAME_ALIASES: domain.com,other.domain.com لإعداد أسماء مضيفين بديلة.
سيقوم موقعك بالإضافة إلى ذلك بسحب أسماء المضيفين المهيأة مع طلب الشهادة دون أي تغييرات إضافية في التكوين.
[quote=“featheredtoast, post:172, topic:56685”]يمكنك الآن تضمين قوالب ssl و letsencrypt وإعداد متغيرات البيئة بالشكل DISCOURSE_HOSTNAME_ALIASES: domain.com,other.domain.com لإعداد أسماء مضيفين بديلة.
[/quote]
اعذروا جهلي، ولكن هل يمكن تعديل هذا عبر إعداد موقع معين، أم يجب تعديل شيء ما في app.yml؟
إذا كان الأول، فلم أوفق في العثور عليه بعد التحديث إلى الأحدث، وإذا كان الأخير، فما الذي يجب تعديله تحديدًا في app.yml؟
سيكون أفضل إذا كانت هناك طريقة ذكية لـ discourse لكتابة الأسماء المستعارة التي يوفرها المسؤول إلى app.yml نفسها عند التحديث التالي، أو لترك المعلومات حيث يمكن لتعليمات app.yml قراءتها.