تفترض هذه الإرشادات أن لديك تثبيت قياسي مستضاف ذاتيًا. نحن ندعم فقط طريقة التثبيت القياسية هنا، لذا تفترض هذه التعليمات أن لديك تثبيتًا قياسيًا.
تنطبق هذه الإرشادات فقط على مثيلات Discourse المستضافة ذاتيًا. إذا كنت تستخدم خدمة استضافة مُدارة، فإن المكونات الإضافية المتاحة يتم التحكم فيها بواسطة مزود الاستضافة الخاص بك. على سبيل المثال، على الاستضافة الخاصة بنا، تتوفر هذه المكونات الإضافية المحددة حسب مستوى الاستضافة.
اعتبارًا من منتصف عام 2025، تم تجميع العديد من المكونات الإضافية الرسمية الشائعة في نواة Discourse. لم تعد هذه المكونات الإضافية (بما في ذلك Solved و Data Explorer و AI و Assign و Reactions والعديد من المكونات الأخرى) بحاجة إلى التثبيت بشكل منفصل — فهي تأتي مع Discourse ويمكن تمكينها عبر إعدادات الموقع. إذا حاولت إعادة البناء مع وجود مكون إضافي مجمع لا يزال في ملف
app.ymlالخاص بك، فسترى رسالةHINTتخبرك بإزالته. هذا الدليل مخصص للمكونات الإضافية التي ليست مجمعة مع النواة.
في هذا البرنامج التعليمي، سنقوم بتثبيت المكون الإضافي Discourse Shared Edits.
يتطلب هذا البرنامج التعليمي فهم كيفية استخدام مستودعات GitHub، وتحديداً كيفية الحصول على أو نسخ عنوان URL لاستنساخ git وكيفية تعديل ملفات YAML (`.yml`) باستخدام nano عبر الطرفية، وتحديداً كيفية الحفظ والخروج في nano. تتبع ملفات YAML بشدة المسافات البادئة، لذا تأكد من احترامها عند النسخ واللصق وتعديل ملف `.yml` الضروري لمثيل Discourse الخاص بك. استخدم دائمًا المسافات كمسافات بادئة في ملفات .yml، وليس علامات الجدولة.
-
انسخ عنوان URL لاستنساخ git الخاص بالمكون الإضافي من GitHub.
-
قم بالوصول إلى ملف `app.yml` الخاص بالحاوية (الموجود في ` /var/discourse/containers/`)
cd /var/discourse nano containers/app.yml -
أضف عنوان URL لمستودع المكون الإضافي إلى ملف `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-shared-edits.gitأضف عنوان URL لاستنساخ git الخاص بالمكون الإضافي مباشرة أسفل السطر الذي يحتوي على `git clone https://github.com/discourse/docker_manager.git\`)
اتبع التنسيق الحالي لسطر `docker_manager.git`. إذا كان يحتوي على `sudo -E -u discourse`، فقم بتضمين هذا البادئة في السطر الجديد أيضًا.
-
أعد بناء الحاوية:
cd /var/discourse ./launcher rebuild appهذا كل شيء، لقد قمت بتثبيت المكون الإضافي Discourse Shared Edits بنجاح على مثيل Discourse الخاص بك!
إذا كان المكون الإضافي الخاص بك مستضافًا في مستودع خاص
يجب عليك استخدام رمز OAuth:
باستخدام رمز OAuth، يمكنك تثبيت المكون الإضافي الخاص بك بنفس طريقة المستودع العام، ولا تحتاج إلى إنشاء مفتاح SSH.
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://<token>@github.com/owner/repo.git
ننصح بشدة باستخدام رموز OAuth للمكونات الإضافية في المستودعات الخاصة. ومع ذلك، إذا لم تتمكن من ذلك، فراجع أدناه.
خطوات التثبيت الخاص بمفتاح SSH
-
بافتراض أن مستودع git الخاص بك مستضاف على GitHub، تحتاج إلى إضافة مفتاح SSH العام الخاص بمستخدم الخادم الخاص بك إلى مفاتيح النشر في مستودع GitHub (https://github.com/SecretOrg/secret-plugin/settings/keys).
-
قم بتعديل ملف `app.yml` كما هو موضح في المثال أدناه:
run:
- exec: echo "Beginning of custom commands"
- exec: cd /var/www/discourse && sudo -u discourse bundle install --deployment --without test --without development
- exec: echo "Host github.com\n\tStrictHostKeyChecking no\n" >> /user/.ssh/config
- file:
path: /user/.ssh/id_rsa
chmod: 600
contents: |
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEArCQG213utzqE5YVjTVF5exGRCkE9OuM7LCp/FOuPdoHrFUXk
.... إلخ ....
-----END RSA PRIVATE KEY-----
- file:
path: /user/.ssh/id_rsa.pub
chmod: 600
contents: ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tj .... إلخ .... user@discourse
- exec: cd $home/plugins && git clone git@github.com:SecretOrg/secret-plugin.git
- exec: cd $home && sudo -E -u discourse bundle exec rake db:migrate
- exec: cd $home && rm -fr tmp/cache
- exec: cd $home && sudo -E -u discourse bundle exec rake assets:precompile
- exec: rm /user/.ssh/id_rsa
- exec: rm /user/.ssh/id_rsa.pub
- exec: echo "End of custom commands"
- أعد بناء الحاوية:
cd /var/discourse
./launcher rebuild app
يجب تثبيت المكون الإضافي الخاص بك على مثيل Discourse الخاص بك.
كيفية إلغاء تثبيت مكون إضافي
لإزالة مكون إضافي، ما عليك سوى إزالة سطر `- git clone https://github.com/…` من ملف `app.yml` الخاص بك وإعادة بناء موقعك عبر
cd /var/discourse
./launcher rebuild app