التثبيت لا يعمل!

أحاول إجراء تثبيت جديد باستخدام التطبيق ذي النقرة الواحدة من Digital Ocean.
هذا هو المحاولة الثالثة التي أقوم فيها بإنشائه من البداية، وأنا أواجه نفس المشكلة.
عند التحقق من إعدادات DNS، أرى أن النطاق يشير إلى عنوان IP الخاص بالـ Droplet، لكن Discourse لا يظهر على النطاق الخاص بي.

شغلت أداة discourse-doctor، لكنها تتوقف/تعلق قبل عرض معلومات “هل يتم خدمة النطاق أم لا”.

هل كان هناك تحديث قد أدخل هذا السلوك؟

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

لا يدعم التثبيت بنقرة واحدة.

يرجى استخدام عملية التثبيت الرسمية البسيطة بشكل ملحوظ.

ثم، إذا واجهت أي مشاكل مع ذلك، يمكنك نشرها هنا والحصول على الدعم.

6 إعجابات

@merefield لقد أنشأتُ قطرة (droplet) جديدة وقمت بتشغيل التثبيت كما هو موصوف في دليل التثبيت الرسمي. لا تزال أعاني من نفس المشكلة بالضبط.

discourse-doctor يتعطل

ولا يتم تقديم أي شيء على النطاق الخاص بي.

هذا تثبيت نظيف تمامًا وفقًا للدليل الرسمي. لا أستطيع معرفة ما الذي يحدث هنا. هل لديك أي تلميحات؟

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

@merefield في سجلات ./launcher logs app أرى:

nginx: [emerg] لا يمكن تحميل الشهادة "/shared/ssl/mydomainname.de.cer": فشل PEM_read_bio_X509_AUX() (SSL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)

غير متأكد مما يعنيه ذلك.

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

إذن أرى أنه يحاول النظر إلى /shared/ssl، لكن في الواقع يقع ملف SSL في shared/standalone/ssl. كيف يمكنني إصلاح هذا؟

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

المشكلة عادةً هي أن إعدادات DNS غير صحيحة أو أن التحديث لم يكتمل بعد. إذا شاركت رابط موقعك، يمكن لأحد التحقق من الأمر.

غالبًا ما أستخدم https://dnschecker.org/#A/example.com للتحقق.

ولكن إذا جربت الأمر عدة مرات، فمن المرجح أنك استنفدت عدد المرات التي تسمح فيها خدمة Let’s Encrypt بإرسال شهادة لك. أعتقد أن هذه هي مشكلتك الحالية بنسبة 90%. يمكنك “التحايل” باتباع الخطوات في https://meta.discourse.org/t/setting-up-let-s-encrypt-with-multiple-domains/56685/53، لكن الإعداد يصبح أكثر تعقيدًا، ولن تتمكن من تحقيق الإعداد البسيط. أفضل خيار لك هو الانتظار بضعة أيام ثم المحاولة مرة أخرى.

ليست هذه هي المشكلة. /shared/ssl هو المسار داخل الحاوية، بينما shared/standalone/ssl هو المسار خارج الحاوية.

4 إعجابات

@pfaffman نعم، يبدو الأمر معقولاً! ومع ذلك، لا يمكنني إنشاؤه حاليًا، لكن يمكنني إنشاؤه على نطاق آخر. نظرًا لأن بحث DNS يُظهر أنني متصل بالخادم الصحيح وما إلى ذلك، أفترض أن الحالة هي ما وصفته. سأنتظر بضعة أيام أخرى ثم أحاول مرة أخرى. شكرًا :metal:

إعجابَين (2)

@pfaffman هل يمكنك مساعدتي في التحايل؟ لقد راجعت إعدادها مع نطاقات متعددة، لكنني لست متأكدًا مما تقصده. هل تقصد استخدام خطاف after_ssl بطريقة ما؟

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

ببساطة، أضف أي نطاق آخر. لذا، إذا كان منتدى المنتدى هو forum.example.com، فأضف سجل DNS لـ cheat.example.com يشير إلى خادمك وأضفه كما هو موضح هناك. نظرًا لأنه سيكون طلب شهادة مختلف، فسيتم السماح لك بطلبه.

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

@pfaffman أنا أستخدم Digital Ocean. أضفت cheat.example.com كسجل A، لكنها لا تُقبل كاسم نطاق عند الإعداد.

(تحذير: يبدو أن المنفذ 443 على الجهاز غير متاح)

اتبعت التعليمات وأعدت البناء، لكن لا يزال يظهر “لا يمكن الوصول إلى الموقع”. :thinking:

أما باقي الإعدادات، فقد أضفت فقط

  after_ssl:
    - replace:
        filename: "/etc/runit/1.d/letsencrypt"
        from: /--keylength/
        to: "-d cheat.example.com"

داخل hooks: في ملف app.yml الخاص بي.

أو يمكنه إضافة نطاق أو نطاق فرعي واحد باستخدام هذا. طريقة سهلة للتغلب على المشكلة عند الوصول إلى حد المعدل. ولكن لتجنب الوصول إلى حدود المعدل، فمن الأفضل دائمًا استخدام بيئة الاختبار --dryrun. (لاحظ أن Let’s Encrypt في عملية إعادة تسمية محتملة لـ --dryrun إلى شيء أسهل للمتحدثين بلغات غير الإنجليزية للتعرف عليه، مثل --test أو --testrun. من المرجح ألا يحدث ذلك حتى يناير 2021 أو لاحقًا. كما أنهم يعملون على إعادة كتابة أدلتهم بالكامل. :slightly_smiling_face:


الطريقة الموصى بها لإضافة نطاق جديد إلى شهادة موجودة هي بالفعل إعادة استخدام سطر الأوامر الأصلي، وإضافة النطاق الجديد مع علامة -d أخرى، وإضافة --expand لإخبار certbot بعدم إنشاء خط سلالي جديد (وهو ما سيؤدي إلى إنشاء مجلد فرعي جديد في /etc/letsencrypt/live).

3 إعجابات

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

هذا ما كنت أحاول إيصاله.

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

هذا أحد الأسباب التي دفعتهم (في Let’s Encrypt) إلى إعادة كتابة أدلتهم… لجعلها أكثر وضوحًا. بمجرد إعدادك للحصول على شهادة تجريبية (وهمية) باستخدام بيئة الاختبار، يمكن للمرء تشغيل Certbot في وضع الإنتاج والحصول على جهة التوثيق (CA) الخاصة به. بعد ذلك، يمكن تثبيت Discourse، وعندها يجب أن يجلب جهة التوثيق الجديدة (الموسعة).

:+1:

الأمر ليس كذلك. بل إن تحديد كيفية إضافة قسم إلى ملف app.yml لإضافة هذا المفتاح - مهما كان ذلك واضحًا - أصعب بحوالي 3 أضعاف (أو ربما 10 أضعاف) من تثبيت Discourse. هل تحتاج إلى تعديل ملف app.yml وإضافة شيء معقد مع التأكد من أن جميع المسافات صحيحة تمامًا؟ فقط انتظر أسبوعًا أو اختر اسمًا جديدًا.

إعجابَين (2)

@pfaffman لقد اخترت اسمًا جديدًا كما وصفت. كانت إحدى المشكلات أن cheat.example.com يجب أن يكون سجل CNAME بدلاً من سجل A.

ومع ذلك، لا يزال الأمر لا يعمل. سأمنحه بعض الوقت الإضافي.

تعديل: للمرجعية، إليك ملف app.yml الخاص بي:


templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## قم بإلغاء التعليق عن هذين السطرين إذا كنت ترغب في إضافة Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"

expose:
  - "80:80"   # http
  - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  ## قم بتعيين db_shared_buffers إلى أقصى 25% من إجمالي الذاكرة.
  ## سيتم تعيينها تلقائيًا بواسطة التمهيد بناءً على الذاكرة المكتشفة، أو يمكنك تجاوزها
  db_shared_buffers: "256MB"

  ## يمكن أن يحسن أداء الفرز، لكنه يضيف استخدام الذاكرة لكل اتصال
  #db_work_mem: "40MB"

  ## أي إصدار Git يجب أن يستخدم هذا الحاوية؟ (الافتراضي: tests-passed)
  #version: tests-passed

env:
  LANG: en_US.UTF-8
  # DISCOURSE_DEFAULT_LOCALE: en
  # DISCOURSE_RELATIVE_URL_ROOT: /forum
  ## كم عدد طلبات الويب المتزامنة المدعومة؟ يعتمد على الذاكرة وأنوية المعالج.
  ## سيتم تعيينها تلقائيًا بواسطة التمهيد بناءً على وحدات المعالجة المركزية المكتشفة، أو يمكنك تجاوزها
  UNICORN_WORKERS: 4

  ## TODO: اسم النطاق الذي ستستجيب له هذه النسخة من Discourse
  ## مطلوب. لن يعمل Discourse مع رقم IP عاري.
  DISCOURSE_HOSTNAME: cheat.example.com

  ## قم بإلغاء التعليق إذا كنت تريد بدء الحاوية بنفس اسم النطاق (-h option) المذكور أعلاه (الافتراضي "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: قائمة عناوين البريد الإلكتروني المفصولة بفواصل سيتم تعيينها كمسؤول ومطور
  ## عند التسجيل الأولي مثال 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'emails@emails.com'

  ## TODO: خادم البريد SMTP المستخدم للتحقق من الحسابات الجديدة وإرسال الإشعارات
  ## مطلوب عنوان SMTP واسم المستخدم وكلمة المرور
  ## تحذير: قد تسبب علامة '#' في كلمة مرور SMTP مشاكل!
  DISCOURSE_SMTP_ADDRESS: smtpout.secureserver.net
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: some@email.com
  DISCOURSE_SMTP_PASSWORD: "apassword"
  #DISCOURSE_SMTP_ENABLE_START_TLS: true           # (اختياري، الافتراضي true)

  ## إذا أضفت قالب Lets Encrypt، قم بإلغاء التعليق أدناه للحصول على شهادة SSL مجانية
  LETSENCRYPT_ACCOUNT_EMAIL: me@example.com

  ## عنوان CDN http أو https لهذه النسخة من Discourse (مُهيأ للسحب)
  ## انظر https://meta.discourse.org/t/14857 للتفاصيل
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com

## حاوية Docker لا تحتوي على حالة؛ تُخزن جميع البيانات في /shared
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## توضع الإضافات هنا
## انظر https://meta.discourse.org/t/19157 للتفاصيل
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
  after_ssl:
    - replace:
        filename: "/etc/runit/1.d/letsencrypt"
        from: /--keylength/
        to: "-d cheat.example.com --expand"
 
إعجاب واحد (1)

في النهاية، مرّت أسبوع وتمكّنت من استخدام نطاقي مرة أخرى. على الأرجح كان هناك خطأ ما في الإعدادات لجعله يعمل مع النطاق الفرعي، لأنني متأكد تماماً بعد قراءة معلومات من Let’s Encrypt أيضاً أن هذا هو الحل.

شكراً جزيلاً مرة أخرى لـ @pfaffman و @JimPas على المساعدة والإجابات المفيدة!

3 إعجابات

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.