دسكورس شات - تكامل Rocket.Chat

أرغب في تثبيت الإصدار المجتمعي من Rocket.Chat على موقعي ثم استخدام تكامل Discourse Chat لـ Rocket.Chat. لقد قمت بإنشاء هذا الدليل من خلال مناقشة مع OpenAI O3. هل يمكن لأحد تأكيد أن هذه الخطوات صحيحة لنشر نسخة Docker Rocket.Chat؟ أحاول فقط عدم التسبب في عواقب غير متوقعة لعدم معرفة كيفية القيام بذلك بشكل صحيح.

شكرا!


الخطوة 1: تكوين DNS الخاص بك في Cloudflare

  1. قم بتسجيل الدخول إلى Cloudflare وأضف سجل A (أو CNAME) لـ chat.website.com يشير إلى عنوان IP الخاص بخادمك.
  2. تأكد من تمكين وكيل Cloudflare إذا كنت ترغب في استخدام ميزات الأمان والأداء الخاصة بهم.

الخطوة 2: إعداد نشر Rocket.Chat

  1. قم بالاتصال بخادمك عبر SSH وأنشئ دليلاً لـ Rocket.Chat (إذا لم تكن قد قمت بذلك بالفعل):
    bash
    Copy
    mkdir -p /opt/rocket.chat
    cd /opt/rocket.chat
  2. أنشئ ملف docker-compose.yml في هذا الدليل بالمحتوى التالي:
    yaml
    Copy
    version: “3.8”

services:
rocketchat:
image: rocket.chat:latest
restart: unless-stopped
environment:
- PORT=3000
- ROOT_URL=http://chat.website.com
- MONGO_URL=mongodb://mongo:27017/rocketchat?replicaSet=rs0
- MONGO_OPLOG_URL=mongodb://mongo:27017/local?replicaSet=rs0
depends_on:
- mongo
ports:
- “3000:3000”
volumes:
- rocketchat_data:/app/uploads
networks:
- common

mongo:
image: mongo:4.0
restart: unless-stopped
command: mongod --smallfiles --oplogSize 128 --replSet rs0
volumes:
- mongo_data:/data/db
networks:
- common

volumes:
rocketchat_data:
mongo_data:

networks:
common:
external: false
ملاحظات:
• تم تعيين ROOT_URL إلى اسم النطاق الفرعي الخاص بك (باستخدام HTTP هنا لأن Cloudflare و Caddy سيتعاملان مع TLS خارجيًا).
• تتم إضافة كلا الخدمتين إلى شبكة مخصصة تسمى common. هذا يضمن أن حاوية Caddy الخاصة بك يمكنها حل اسم الخدمة rocketchat عند توجيه الطلبات.


الخطوة 3: تهيئة مجموعة نسخ MongoDB الاحتياطية

  1. ابدأ مكدس Rocket.Chat:
    bash
    Copy
    docker-compose up -d
  2. احصل على معرف الحاوية أو اسم MongoDB:
    bash
    Copy
    docker ps
  3. اتصل بـ MongoDB:
    bash
    Copy
    docker exec -it <mongo_container_id_or_name> mongo
  4. في واجهة أوامر Mongo، قم بتشغيل:
    js
    Copy
    rs.initiate()
  5. اخرج من الواجهة باستخدام exit.
    تقوم هذه الخطوة بتهيئة مجموعة النسخ الاحتياطي التي يستخدمها Rocket.Chat للعمليات في الوقت الفعلي.

الخطوة 4: تحديث تكوين Caddy الخاص بك
نظرًا لأن Caddy يعمل بالفعل في حاويته الخاصة، فقم بتحديث ملف Caddyfile الخاص به لتضمين كتلة موقع جديدة لـ Rocket.Chat. قم بتحرير ملف Caddyfile الخاص بك (على سبيل المثال، الموجود في /path/to/your/Caddyfile) وأضف:
caddy
Copy
http://chat.website.com {
reverse_proxy rocketchat:3000
}
مهم:
• يستخدم التوجيه reverse_proxy اسم الخدمة rocketchat - وهذا يتطلب أن تكون حاوية Caddy على نفس شبكة Docker مثل حاويات Rocket.Chat.
• إذا تمت إدارة حاوية Caddy الخاصة بك عبر Docker Compose، يمكنك إرفاقها بنفس الشبكة common. على سبيل المثال، في ملف docker-compose الخاص بحاوية Caddy، أضف:
yaml
Copy
networks:

  • common
    وتأكد من الإعلان عن الشبكة (أو إرفاق الحاوية يدويًا).
    نظرًا لأنك تستخدم Cloudflare لنظام DNS و Let’s Encrypt، ولديك بالفعل التكوين العامل الخاص بك بدون توجيه بريد إلكتروني، فلا حاجة إلى تغييرات فيما يتعلق بـ TLS.

الخطوة 5: إعادة تحميل Caddy والتحقق من الإعداد

  1. إعادة تحميل Caddy:
    إذا كنت تقوم بتشغيل Caddy عبر Docker، فأعد تشغيل الحاوية حتى تلتقط تكوين Caddyfile الجديد:
    bash
    Copy
    docker restart <caddy_container_name>
  2. اختبار النشر الخاص بك:
    افتح متصفح ويب وانتقل إلى http://chat.website.com. (سيتولى Cloudflare إدارة شهادة HTTPS.) يجب أن ترى صفحة إعداد Rocket.Chat.
  3. إكمال الإعداد:
    اتبع التعليمات التي تظهر على الشاشة لإنهاء تكوين Rocket.Chat.

تخصيص إضافي
إذا كنت بحاجة إلى إضافة متغيرات بيئة إضافية (على سبيل المثال، إعدادات SMTP أو وحدات تخزين مخصصة) أو لديك متطلبات شبكة محددة، فأخبرني حتى يمكن تحسين الدليل بشكل أكبر.


يجب أن يساعدك هذا الدليل في نشر الإصدار المجتمعي من Rocket.Chat باستخدام Docker Compose على اسم نطاق فرعي تديره Cloudflare، باستخدام Caddy (في حاويته الخاصة) كوكيل عكسي.