أرغب في تثبيت الإصدار المجتمعي من Rocket.Chat على موقعي ثم استخدام تكامل Discourse Chat لـ Rocket.Chat. لقد قمت بإنشاء هذا الدليل من خلال مناقشة مع OpenAI O3. هل يمكن لأحد تأكيد أن هذه الخطوات صحيحة لنشر نسخة Docker Rocket.Chat؟ أحاول فقط عدم التسبب في عواقب غير متوقعة لعدم معرفة كيفية القيام بذلك بشكل صحيح.
شكرا!
الخطوة 1: تكوين DNS الخاص بك في Cloudflare
- قم بتسجيل الدخول إلى Cloudflare وأضف سجل A (أو CNAME) لـ chat.website.com يشير إلى عنوان IP الخاص بخادمك.
- تأكد من تمكين وكيل Cloudflare إذا كنت ترغب في استخدام ميزات الأمان والأداء الخاصة بهم.
الخطوة 2: إعداد نشر Rocket.Chat
- قم بالاتصال بخادمك عبر SSH وأنشئ دليلاً لـ Rocket.Chat (إذا لم تكن قد قمت بذلك بالفعل):
bash
Copy
mkdir -p /opt/rocket.chat
cd /opt/rocket.chat - أنشئ ملف 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 الاحتياطية
- ابدأ مكدس Rocket.Chat:
bash
Copy
docker-compose up -d - احصل على معرف الحاوية أو اسم MongoDB:
bash
Copy
docker ps - اتصل بـ MongoDB:
bash
Copy
docker exec -it <mongo_container_id_or_name> mongo - في واجهة أوامر Mongo، قم بتشغيل:
js
Copy
rs.initiate() - اخرج من الواجهة باستخدام 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 والتحقق من الإعداد
- إعادة تحميل Caddy:
إذا كنت تقوم بتشغيل Caddy عبر Docker، فأعد تشغيل الحاوية حتى تلتقط تكوين Caddyfile الجديد:
bash
Copy
docker restart <caddy_container_name> - اختبار النشر الخاص بك:
افتح متصفح ويب وانتقل إلى http://chat.website.com. (سيتولى Cloudflare إدارة شهادة HTTPS.) يجب أن ترى صفحة إعداد Rocket.Chat. - إكمال الإعداد:
اتبع التعليمات التي تظهر على الشاشة لإنهاء تكوين Rocket.Chat.
تخصيص إضافي
إذا كنت بحاجة إلى إضافة متغيرات بيئة إضافية (على سبيل المثال، إعدادات SMTP أو وحدات تخزين مخصصة) أو لديك متطلبات شبكة محددة، فأخبرني حتى يمكن تحسين الدليل بشكل أكبر.
يجب أن يساعدك هذا الدليل في نشر الإصدار المجتمعي من Rocket.Chat باستخدام Docker Compose على اسم نطاق فرعي تديره Cloudflare، باستخدام Caddy (في حاويته الخاصة) كوكيل عكسي.