أحاول إجراء تثبيت جديد باستخدام التطبيق ذي النقرة الواحدة من Digital Ocean.
هذا هو المحاولة الثالثة التي أقوم فيها بإنشائه من البداية، وأنا أواجه نفس المشكلة.
عند التحقق من إعدادات DNS، أرى أن النطاق يشير إلى عنوان IP الخاص بالـ Droplet، لكن Discourse لا يظهر على النطاق الخاص بي.
شغلت أداة discourse-doctor، لكنها تتوقف/تعلق قبل عرض معلومات “هل يتم خدمة النطاق أم لا”.
المشكلة عادةً هي أن إعدادات 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 هو المسار خارج الحاوية.
@pfaffman نعم، يبدو الأمر معقولاً! ومع ذلك، لا يمكنني إنشاؤه حاليًا، لكن يمكنني إنشاؤه على نطاق آخر. نظرًا لأن بحث DNS يُظهر أنني متصل بالخادم الصحيح وما إلى ذلك، أفترض أن الحالة هي ما وصفته. سأنتظر بضعة أيام أخرى ثم أحاول مرة أخرى. شكرًا
ببساطة، أضف أي نطاق آخر. لذا، إذا كان منتدى المنتدى هو forum.example.com، فأضف سجل DNS لـ cheat.example.com يشير إلى خادمك وأضفه كما هو موضح هناك. نظرًا لأنه سيكون طلب شهادة مختلف، فسيتم السماح لك بطلبه.
أو يمكنه إضافة نطاق أو نطاق فرعي واحد باستخدام هذا. طريقة سهلة للتغلب على المشكلة عند الوصول إلى حد المعدل. ولكن لتجنب الوصول إلى حدود المعدل، فمن الأفضل دائمًا استخدام بيئة الاختبار --dryrun. (لاحظ أن Let’s Encrypt في عملية إعادة تسمية محتملة لـ --dryrun إلى شيء أسهل للمتحدثين بلغات غير الإنجليزية للتعرف عليه، مثل --test أو --testrun. من المرجح ألا يحدث ذلك حتى يناير 2021 أو لاحقًا. كما أنهم يعملون على إعادة كتابة أدلتهم بالكامل.
الطريقة الموصى بها لإضافة نطاق جديد إلى شهادة موجودة هي بالفعل إعادة استخدام سطر الأوامر الأصلي، وإضافة النطاق الجديد مع علامة -d أخرى، وإضافة --expand لإخبار certbot بعدم إنشاء خط سلالي جديد (وهو ما سيؤدي إلى إنشاء مجلد فرعي جديد في /etc/letsencrypt/live).
هذا أحد الأسباب التي دفعتهم (في Let’s Encrypt) إلى إعادة كتابة أدلتهم… لجعلها أكثر وضوحًا. بمجرد إعدادك للحصول على شهادة تجريبية (وهمية) باستخدام بيئة الاختبار، يمكن للمرء تشغيل Certbot في وضع الإنتاج والحصول على جهة التوثيق (CA) الخاصة به. بعد ذلك، يمكن تثبيت Discourse، وعندها يجب أن يجلب جهة التوثيق الجديدة (الموسعة).
الأمر ليس كذلك. بل إن تحديد كيفية إضافة قسم إلى ملف app.yml لإضافة هذا المفتاح - مهما كان ذلك واضحًا - أصعب بحوالي 3 أضعاف (أو ربما 10 أضعاف) من تثبيت Discourse. هل تحتاج إلى تعديل ملف app.yml وإضافة شيء معقد مع التأكد من أن جميع المسافات صحيحة تمامًا؟ فقط انتظر أسبوعًا أو اختر اسمًا جديدًا.
@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"
في النهاية، مرّت أسبوع وتمكّنت من استخدام نطاقي مرة أخرى. على الأرجح كان هناك خطأ ما في الإعدادات لجعله يعمل مع النطاق الفرعي، لأنني متأكد تماماً بعد قراءة معلومات من Let’s Encrypt أيضاً أن هذا هو الحل.
شكراً جزيلاً مرة أخرى لـ @pfaffman و @JimPas على المساعدة والإجابات المفيدة!