إعداد Let's Encrypt مع عدة نطاقات / تحويلات

مرحباً @pfaffman، التعديل على المنشور الأصلي يحتوي على علامة + خاطئة في سطر to:، مما يكسر التعبير النمطي (regex). يجب إزالتها.

بشكل منفصل، الفقرة التالية تحتاج إلى تعديل لأنها لم تعد منطقية:

هناك نمطان يحتاجان إلى استبدال، أحدهما ينتهي بـ --keylength، والآخر ينتهي بـ --fullchainpath (في الملف الفعلي، اسم النطاق الأصلي الخاص بك يأتي قبل كل من هذه المفاتيح). أدخل اسم النطاق الخاص بك (والنطاقات الفرعية الإضافية مسبوقة بـ -d ) ثم أضف ما يلي إلى قسم hooks في ملف app.yml الخاص بك (نحو نهاية الملف):

أقترح:

استخدم domain1 و domain2 في هذا المنشور لإنشاء الكود الذي ستحتاجه. domain1 هو اسم النطاق الأصلي الخاص بك و domain2 هو اسم النطاق الإضافي الذي تريد إضافته. أضف كتلة after_ssl: الناتجة إلى قسم hooks في ملف app.yml الخاص بك وقم بتشغيل launcher rebuild app.

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

عفوًا. لقد أزلت علامة + وقمت بتعديل النص. سألقي نظرة أخرى لاحقًا عندما أكون أمام جهاز كمبيوتر
مرحبًا @textkit، هذه صفحة ويكي، لذا يمكنك إجراء المزيد من التعديلات إذا أردت.

منذ آخر تحديث إلى 3.5.0.beta8-dev

/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، سيكون من الجيد تلقي إشعار…

4 إعجابات

هل هذا تغيير في كيفية تعامل Discourse مع LetsEncrypt أم تغيير في LetsEncrypt نفسها؟

لدي خادم يتأثر حاليًا بهذه المشكلة. في الوقت الحالي، الحل البديل الخاص بي هو التعليق على هذا الجزء من app.yml ولكني أشعر أننا بحاجة إلى طريقة لإضافة هذه الشهادات الإضافية إلى الإعداد في المستقبل.

إعجابَين (2)

لقد نقلت Discourse ذلك إلى ملف آخر. إنه قيد العمل حاليًا. سأحاول إلقاء نظرة في الأيام القليلة القادمة لمعرفة ما هو مطلوب لدعم نطاقات فرعية متعددة.

إعجابَين (2)

لقد قمت بتحرير OP بقالب جديد، لكنني لم أختبره بعد.

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

لا، هذا لا يعمل:

فشل

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
** فشل التمهيد ** يرجى التمرير لأعلى والبحث عن رسائل خطأ سابقة، قد يكون هناك أكثر من رسالة واحدة.

إعجابَين (2)

يبدو أن الوقت مبكر جدًا.

ربما حاول وضع الاستبدال في المقطع الموجود في الأسفل حيث كانت توجد إعدادات ssh إذا كان ذلك منطقيًا (أنا على هاتفي، سأحاول إلقاء نظرة غدًا)

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

مرحباً @nathank

تخمين مني، ولكن أتساءل عما إذا كان الخطأ الذي تواجهه قد يتعلق بمسافة مفقودة قبل الشرطة المائلة النهائية وعلامة الاقتباس النهائية في الأسطر المعنية من المقطع المقترح في ملف 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 في المتصفح - سواء كان ذلك بسبب عدم وجود هذا الملف، لا أعرف.

إعجابَين (2)

أشير فقط إلى أنني أحاول حاليًا دمج هذا في متغيرات البيئة للتعامل معها مباشرة في discourse_docker، شيء مثل قائمة مفصولة بفواصل من أسماء المضيفين البديلة. يبدو أن هذه حالة استخدام شائعة بما يكفي للتعامل معها مباشرة.

سيجعل هذا التكوين أسهل لهذه الحالة، لذلك لن يحتاج أحد إلى إجراء تعديلات على ملفات app.ymls الخاصة بهم.

خطتي الحالية هي مع DISCOURSE_HOSTNAMEwww.domain.com

السماح لبيئة مثل:
DISCOURSE_HOSTNAME_ALIASES: domain.com,other.domain.com سيجلب الشهادة، صالحة لجميع أسماء المضيفين.

(بينما أنا هناك، تجديدات Let’s Encrypt التلقائية لا تعمل بشكل صحيح أيضًا، لذا أقوم بإصلاحها أيضًا)

8 إعجابات

هذا رائع! شكراً جزيلاً. هذا بالتأكيد سيسهل الأمور!

3 إعجابات

فاتني ذلك! فعلت كما اقترحت، لكن فشل التمهيد لا يزال قائماً:

فشل

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
** فشل التمهيد ** يرجى التمرير لأعلى والبحث عن رسائل خطأ سابقة، قد يكون هناك أكثر من رسالة واحدة.

رائع!!!

3 إعجابات

ربما ليس هذه هي المشكلة الرئيسية هنا، ولكن في محاولاتي، قمت أيضًا بتحديث إصدار Docker الذي يعمل على Digital Ocean من 20.0.4 (أعتقد) إلى 28.3.3 - ربما ساعد ذلك، على الأقل مع هذا الخطأ. إذا لم يكن هناك شيء آخر، فقد تخلصت من تحذيرات Docker “المهملة” التي كنت أتلقاها في بداية عملية إعادة البناء.

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

تحتاج إلى إزالة الجزء الذي يحاول تعديل ملف lets encrypt والانتظار حتى يتم قبول طلب السحب.

إعجابَين (2)

لقد اكتشفت ذلك! لحسن الحظ، أنا في تثبيت حاويتين لذلك لا يمثل ذلك مشكلة كبيرة.

هل هناك أي تقدم في هذا حتى الآن؟

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

نعم، لدي طلب سحب مفتوح هنا في انتظار المراجعة:

4 إعجابات

مرحباً بالجميع، للمتابعة، تم دمج نطاقات متعددة - في أحدث إصدار من discourse_docker، يمكنك الآن تضمين قوالب ssl و letsencrypt وإعداد متغيرات البيئة بالشكل DISCOURSE_HOSTNAME_ALIASES: domain.com,other.domain.com لإعداد أسماء مضيفين بديلة.

سيقوم موقعك بالإضافة إلى ذلك بسحب أسماء المضيفين المهيأة مع طلب الشهادة دون أي تغييرات إضافية في التكوين.

4 إعجابات

[quote=“featheredtoast, post:172, topic:56685”]يمكنك الآن تضمين قوالب ssl و letsencrypt وإعداد متغيرات البيئة بالشكل DISCOURSE_HOSTNAME_ALIASES: domain.com,other.domain.com لإعداد أسماء مضيفين بديلة.

[/quote]

اعذروا جهلي، ولكن هل يمكن تعديل هذا عبر إعداد موقع معين، أم يجب تعديل شيء ما في app.yml؟

إذا كان الأول، فلم أوفق في العثور عليه بعد التحديث إلى الأحدث، وإذا كان الأخير، فما الذي يجب تعديله تحديدًا في app.yml؟

يتم وضعه في app.yml. لا يتعامل معه Discourse، بل يتعامل معه NGINX في الحاوية ولا يمكنه الوصول إلى قاعدة بيانات Discourse.

يتم وضعه في قسم ENV

env:
   DISCOURSE_HOSTNAME_ALIASES: domain.com,other.domain.com

ستقوم بتضمين المجالات الإضافية فقط التي ترغب في أن يتمكن الأشخاص من الارتباط بها وإعادة توجيههم إلى اسم المضيف الفعلي لموقعك.

3 إعجابات

مثالي - كل شيء يعمل، شكرًا!

سيكون أفضل إذا كانت هناك طريقة ذكية لـ discourse لكتابة الأسماء المستعارة التي يوفرها المسؤول إلى app.yml نفسها عند التحديث التالي، أو لترك المعلومات حيث يمكن لتعليمات app.yml قراءتها.

إعجابَين (2)