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

حسنًا ، نجح الأمر أخيرًا:

true | openssl s_client -connect www.starzen.space:443 2>/dev/null \
| openssl x509 -noout -text \
| perl -l -0777 -ne '@names=/\\bDNS:([^\\s,]+)/g; print join("\n", sort @names);'
starzen.space
www.starzen.space

لقد علقت عبارات if في البرنامج النصي letsencrypt لإجبار إعادة الإصدار. هذا ليس حلاً “مصنعياً” ، بالطبع.

ومع ذلك ، يشير هذا إلى وجود مشكلة في “الحالة” بدلاً من الخيارات المقدمة.

يبدو أن البرنامج النصي الحالي يمكن أن يتعثر اعتمادًا على الحالة السابقة ولكن إذا أجبرت على إعادة الإصدار ، يمكنك إصلاحه.

لكن الآن لدي نطاق قمة عامل! :tada:

4 إعجابات

إنه جزء من التثبيت القياسي. انظر User Guide — Certbot 5.1.0 documentation وقم بالتمرير لأسفل إلى إدارة الشهادات وأيضًا مباشرة أسفل ذلك، إعادة إنشاء وتحديث الشهادات الحالية.

سيتم تشغيل هذه الأوامر من المكان الذي شغلت فيه Certbot في البداية.

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

لدي تثبيت قياسي و certbot غير مستخدم. ليس على مستوى الخادم “العادي”، ولا حتى إذا قلت أولاً ./launcher enter app.

أعتقد أنه مفقود بسبب acme.sh.

3 إعجابات

أعتقد أنني أواجه مشكلة مماثلة. اعتقدت أن السبب هو أنني استخدمت نطاقًا فرعيًا فرعيًا (Let's Encrypt with sub-subdomain?) ولكنني جربتها مع نطاق فرعي عادي ولا يزال الشهادة لا يتم إنشاؤها للموقع الجديد.

أحاول معرفة كيف قمت باختراقها لتعمل، لكن لا يبدو أنني أستطيع المتابعة :grimacing:

ماذا فعلت لكي تعمل معك؟

إذا كان هذا هو الحال، فأي من العبارات الشرطية قمت بالتعليق عليها؟

أيضًا، هل لديك فكرة عما قد يسبب هذه المشكلة الجديدة؟

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

كانت مشكلتي متعلقة باسم نطاق منتهي الصلاحية في تكوين مواقعي المتعددة:

إعجابَين (2)

مرحباً @Brahn،

شكراً لك على التحديث الأخير لتعليماتك.

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

4 إعجابات

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

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

شكراً جاي - forum.hinz.org.nz هو النطاق القديم (و ehealthforum.nz هو النطاق الجديد).

لقد قمت بإعادة بناء، (web_only فقط كـ 2-container)، ولكن ذلك لم يبدو أنه يصلح الأمر.

هل قمت أيضًا بتغيير اسم المضيف؟ هل قمت بـ تغيير اسم نطاق Discourse أو إعادة تسميته؟

نصيحة غير مطلوبة: يبدو أن أفضل ممارسة هي استخدام www بدلاً من النطاق الأساسي. المتصفحات التي أستخدمها تجعل من المستحيل تقريبًا معرفة أن www موجود.

تخميني الوحيد هو أن المسافة اللاحقة داخل علامات الاقتباس مهمة وأنك لا تملكها؟

أعتقد أنني سأدخل إلى الحاوية وأستكشف وأحاول تشغيل acme بالطريقة التي يفعلها وأرى ما يحدث؛ لا يمكنني أبدًا تذكر كيفية القيام بذلك أو مكان البحث عن أمر acme؛ يجب أن أكتشف ذلك في كل مرة، لذلك لا يمكنني إخبارك. قد تتمكن من رؤية ذلك من docker logs web_only.

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

سأحاول التحقق من هذا مرة أخرى عندما أحصل على فرصة، ربما الأسبوع المقبل.

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

نعم - فعلت كل ذلك دون مشاكل.

بالفعل - ولكن الأمر يستحق القيام به فقط إذا كنت تخطط لاستخدام شبكة توصيل المحتوى (CDN) أو النطاقات الفرعية (أنا لا أفعل):
https://hostadvice.com/blog/domains/what-is-apex-domain/

حاولت إضافة ذلك، لكنه لم يحدث فرقًا.

هذا أمر مفيد للغاية (انقر للكشف)

> root@forumhinz:/var/discourse# docker logs web_only
> run-parts: executing /etc/runit/1.d/00-ensure-links
> run-parts: executing /etc/runit/1.d/00-fix-var-logs
> run-parts: executing /etc/runit/1.d/01-cleanup-web-pids
> run-parts: executing /etc/runit/1.d/anacron
> run-parts: executing /etc/runit/1.d/cleanup-pids
> Cleaning stale PID files
> run-parts: executing /etc/runit/1.d/copy-env
> run-parts: executing /etc/runit/1.d/letsencrypt
> [Sat 9 Sep 08:19:27 UTC 2023] Domains not changed.
> [Sat 9 Sep 08:19:27 UTC 2023] Skip, Next renewal time is: 2023-10-26T08:24:32Z
> [Sat 9 Sep 08:19:27 UTC 2023] Add ‘–force’ to force to renew.
> [Sat 9 Sep 08:19:29 UTC 2023] Installing key to: /shared/ssl/ehealthforum.nz.key
> [Sat 9 Sep 08:19:29 UTC 2023] Installing full chain to: /shared/ssl/ehealthforum.nz.cer
> [Sat 9 Sep 08:19:29 UTC 2023] Run reload cmd: sv reload nginx
> warning: nginx: unable to open supervise/ok: file does not exist
> [Sat 9 Sep 08:19:29 UTC 2023] Reload error for :
> [Sat 9 Sep 08:19:29 UTC 2023] Domains not changed.
> [Sat 9 Sep 08:19:30 UTC 2023] Skip, Next renewal time is: 2023-10-26T08:24:45Z
> [Sat 9 Sep 08:19:30 UTC 2023] Add ‘–force’ to force to renew.
> [Sat 9 Sep 08:19:31 UTC 2023] Installing key to: /shared/ssl/ehealthforum.nz_ecc.key
> [Sat 9 Sep 08:19:31 UTC 2023] Installing full chain to: /shared/ssl/ehealthforum.nz_ecc.cer
> [Sat 9 Sep 08:19:31 UTC 2023] Run reload cmd: sv reload nginx
> warning: nginx: unable to open supervise/ok: file does not exist
> [Sat 9 Sep 08:19:31 UTC 2023] Reload error for :
> Started runsvdir, PID is 570
> supervisor pid: 578 unicorn pid: 590

هذا يعني أنه إذا لم أجد طريقة لإجبار التجديد، فسيتعين علي الانتظار حتى 2023-10-26T08:24:00Z قبل أن يتم حل المشكلة بنفسها!

سأحاول القيام ببعض الأشياء - تمنوا لي التوفيق.

لاحقًا…

نجاح!

حسنًا، بعد عدة محاولات فاشلة لبدء تجديد الشهادة، انتقلت في النهاية إلى خادم جديد (كان هذا مخططًا له بالفعل).

وبالمفاجأة، قام هذا بتجديد الشهادة بشكل مثالي بالإعدادات الموجودة في المنشور الأصلي. من يدري.

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

إعجابَين (2)

لقد أضفت هذا إلى ملف app.yml الخاص بي. هل يجب أن أعيد البناء؟ أم أنه يعمل فقط؟
أيضًا في
“from: /-d www.first-domain.com/” هل أضع النطاق الذي أريد إعادة توجيهه أم النطاق الفرعي الخاص بي؟

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

نعم، أي تغييرات في app.yml تتطلب عادةً إعادة بناء.

3 إعجابات

لقد قمت بإعادة البناء والآن لا يمكن الوصول إلى موقعي. هل يجب أن أعيد البناء مرة أخرى؟
يقول هذا بعد إعادة البناء

"Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile' failed with return #<Process::Status: pid 3575 exit 134>
Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}
bootstrap failed with exit code 134
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one."
إعجاب واحد (1)

هل تمت عملية إعادة البناء بسلاسة ودون أي أخطاء؟

إعجابَين (2)

يرجى القيام بذلك، ومشاركة رسائل الخطأ.

إعجابَين (2)
110:M 10 Dec 2023 13:32:18.543 # تم تهيئة الخادم
110:M 10 Dec 2023 13:32:18.543 # تحذير يجب تمكين تجاوز الذاكرة! بدون ذلك، قد يفشل الحفظ في الخلفية أو النسخ المتماثل في ظل ظروف الذاكرة المنخفضة. كونه معطلاً، يمكن أن يتسبب أيضًا في فشل بدون ظروف الذاكرة المنخفضة، انظر https://github.com/jemalloc/jemalloc/issues/1328. لإصلاح هذه المشكلة، أضف 'vm.overcommit_memory = 1' إلى /etc/sysctl.conf ثم أعد التشغيل أو قم بتشغيل الأمر 'sysctl vm.overcommit_memory=1' ليصبح ساري المفعول.
110:M 10 Dec 2023 13:32:18.544 * تحميل RDB تم إنتاجه بواسطة الإصدار 7.0.7

حصلت على هذه التحذيرات، لست متأكدًا مما إذا كانت مهمة.

تحذير "@glint/environment-ember-loose@1.1.0" لديه تبعية نظير غير ملباة "@glimmer/component@^1.1.2".
تحذير "@glint/environment-ember-template-imports@1.1.0" لديه تبعية نظير غير ملباة "ember-template-imports@^3.0.0".
تحذير حقل الدقة "unset-value@2.0.1" غير متوافق مع الإصدار المطلوب "unset-value@^1.0.0"
تحذير النمط ["wrap-ansi@^7.0.0"] يحاول فك ضغطه في نفس الوجهة "/home/discourse/.cache/yarn/v6/npm-wrap-ansi-cjs-7.0.0-67e145cff510a6a6984bdf1152911d69d2eb9e43-integrity/node_modules/wrap-ansi-cjs" مثل النمط ["wrap-ansi-cjs@npm:wrap-ansi@^7.0.0"]. قد يؤدي هذا إلى سلوك غير محدد، يتم تخطيه.
تحذير "> discourse-markdown-it@1.0.0" لديه تبعية نظير غير ملباة "xss@*".
تحذير "workspace-aggregator-68bace53-129d-4a2d-85c3-4685b91c92ee > discourse > @ember/legacy-built-in-components@0.5.0" لديه تبعية نظير غير صحيحة "ember-source@>= 4.8".
تحذير "workspace-aggregator-68bace53-129d-4a2d-85c3-4685b91c92ee > discourse > @uppy/aws-s3@3.0.6" لديه تبعية نظير غير صحيحة "@uppy/core@^3.1.2".
تحذير "workspace-aggregator-68bace53-129d-4a2d-85c3-4685b91c92ee > discourse > @uppy/aws-s3-multipart@3.1.3" لديه تبعية نظير غير صحيحة "@uppy/core@^3.1.2".
تحذير "workspace-aggregator-68bace53-129d-4a2d-85c3-4685b91c92ee > discourse > @uppy/xhr-upload@3.1.1" لديه تبعية نظير غير صحيحة "@uppy/core@^3.1.2".
تحذير "workspace-aggregator-68bace53-129d-4a2d-85c3-4685b91c92ee > discourse-plugins > ember-this-fallback@0.4.0" لديه تبعية نظير غير ملباة "ember-source@^3.28.11 || ^4.0.0".
تحذير "workspace-aggregator-68bace53-129d-4a2d-85c3-4685b91c92ee > discourse > @uppy/aws-s3 > @uppy/xhr-upload@3.3.0" لديه تبعية نظير غير صحيحة "@uppy/core@^3.2.1".
<--- آخر عمليات جمع القمامة --->

[3710:0x6291170]   681247 مللي ثانية: Scavenge 942.0 (1034.0) -> 940.8 (1034.0) ميجابايت، 62.9 / 0.0 مللي ثانية (متوسط mu = 0.704، حالي mu = 0.878) فشل تخصيص؛
[3710:0x6291170]   681616 مللي ثانية: Scavenge 942.4 (1034.0) -> 941.4 (1034.0) ميجابايت، 18.3 / 0.0 مللي ثانية (متوسط mu = 0.704، حالي mu = 0.878) فشل تخصيص؛
[3710:0x6291170]   681911 مللي ثانية: Scavenge 943.0 (1034.0) -> 942.0 (1038.0) ميجابايت، 46.8 / 0.0 مللي ثانية (متوسط mu = 0.704، حالي mu = 0.878) فشل تخصيص؛
خطأ فادح: تم الوصول إلى حد الكومة فشل التخصيص - نفاد الذاكرة في كومة JavaScript
 1: 0xb83f50 node::Abort() [ember]
 2: 0xa94834  [ember]
 3: 0xd647c0 v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [ember]
 4: 0xd64b67 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [ember]
 5: 0xf42265  [ember]
 6: 0xf5474d v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [ember]
 7: 0xf2ee4e v8::internal::HeapAllocator::AllocateRawWithLightRetrySlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [ember]
 8: 0xf30217 v8::internal::HeapAllocator::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [ember]
 9: 0xf113ea v8::internal::Factory::NewFillerObject(int, v8::internal::AllocationAlignment, v8::internal::AllocationType, v8::internal::AllocationOrigin) [ember]
10: 0x12d674f v8::internal::Runtime_AllocateInYoungGeneration(int, unsigned long*, v8::internal::Isolate*) [ember]
11: 0x17035b9  [ember]
تم الإجهاض (تم تفريغ النواة)
خطأ فشل الأمر برمز الخروج 134.

وموقعي يقول

لا يمكن الوصول إلى هذا الموقع

forum.mysite.ca رفض الاتصال.

جرب:

  • التحقق من الاتصال
  • [التحقق من الوكيل وجدار الحماية]

ERR_CONNECTION_REFUSED

هذا ما يبدو عليه ملف app.yml الخاص بي

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-zoom.git
  after_ssl:
    - replace:
        filename: "/etc/runit/1.d/letsencrypt"
        from: "-d www.mysite.ca/"
        to: "-d www.mysite.ca -d mysite.ca "
## أي أوامر مخصصة لتشغيلها بعد البناء
إعجاب واحد (1)

ما مقدار الذاكرة التي يمتلكها الخادم الخاص بك، وهل لديك مساحة مبادلة مفعلة (free -h لرؤية ذلك)؟

               total        used        free      shared  buff/cache   available
Mem:             957         190         371           3         395         613
Swap:           2047          79        1968

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

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