هذه أول مشاركة لي وأردت تقديم دليل قمت بإنشائه مع صديقنا ChatGPT بعد معاناتي لأيام لمعرفة كيفية تشغيل Caddy كوكيل عكسي لـ Discourse المثبت باتباع تعليمات المكتب. لقد استخدمت معلومات وجدتها في منتدى Caddy هنا. إعداد Caddy Discourse. قد يكون هذا مباشرًا ولكن بالنسبة لأولئك منا الذين بدأوا للتو مع Discourse، يتطلب الأمر بعض الجهد لتشغيله.
شكرًا لمجتمع رائع بشكل واضح.
دمج Discourse و Caddy و WordPress مع منافذ Docker للوكيل العكسي
نظرة عامة
يقدم هذا الدليل عملية خطوة بخطوة لإعداد Discourse مع Caddy كوكيل عكسي، جنبًا إلى جنب مع تثبيت WordPress، باستخدام Docker Compose. تم تصميم هذه التعليمات لخادم Ubuntu 22 LTS نموذجي وتوضح كيفية دمج خدمات متعددة مع ضمان إعداد نظيف وقابل للتكرار.
المتطلبات المسبقة
تأكد من استيفاء المتطلبات المسبقة التالية قبل المتابعة:
-
Docker و Docker Compose:
apt update && apt install docker docker-compose -y -
تثبيت Discourse:
- قم بتثبيت Discourse عبر تعليمات التثبيت الرسمية.
-
أسماء النطاقات:
- نطاق أساسي لـ WordPress (على سبيل المثال،
website.com). - نطاق فرعي لـ Discourse (على سبيل المثال،
forum.website.com).
- نطاق أساسي لـ WordPress (على سبيل المثال،
الخطوة 1: تكوين docker-compose.yml
يحدد ملف docker-compose.yml الخدمات لـ Caddy (الوكيل العكسي) و WordPress و MySQL.
موقع الملف
احفظ الملف باسم /etc/docker-services/docker-compose.yml.
التكوين
version: '3.8'
services:
caddy:
image: caddy:latest
container_name: caddy
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
- caddy_config:/config
networks:
- caddy_net
wordpress:
image: wordpress:latest
container_name: wordpress
restart: unless-stopped
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: example_user
WORDPRESS_DB_PASSWORD: example_password
WORDPRESS_DB_NAME: example_db
volumes:
- ./wordpress:/var/www/html
networks:
- caddy_net
db:
image: mysql:5.7
container_name: wordpress_db
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: example_password
MYSQL_DATABASE: example_db
MYSQL_USER: example_user
MYSQL_PASSWORD: example_password
volumes:
- db_data:/var/lib/mysql
networks:
- caddy_net
volumes:
caddy_data:
caddy_config:
db_data:
networks:
caddy_net:
external: true
الخطوة 2: إعداد وكيل Caddy العكسي
يقوم Caddy بتوجيه الطلبات إلى كل من Discourse و WordPress ويدير شهادات HTTPS.
موقع الملف
احفظ التكوين باسم /etc/docker-services/Caddyfile.
التكوين
website.com {
reverse_proxy wordpress:80
}
forum.website.com {
reverse_proxy app:80
}
يضمن هذا التكوين:
- يتم توجيه الطلبات إلى
website.comإلى حاوية WordPress. - يتم توجيه الطلبات إلى
forum.website.comإلى حاوية Discourse.
الخطوة 3: تكوين Discourse
قم بتحديث app.yml لدمج Discourse مع Caddy وشبكة Docker.
موقع الملف
يقع في /var/discourse/containers/app.yml.
تغييرات التكوين
-
كشف المنافذ غير القياسية لـ HTTP:
expose: - "8880:80" # http -
إزالة قوالب SSL:
# - "templates/web.ssl.template.yml" # - "templates/web.letsencrypt.ssl.template.yml" -
تعيين شبكة Docker:
docker_args: - '--network caddy_net' networks: caddy_net: external: true -
إعادة بناء Discourse: قم بتطبيق التغييرات عن طريق إعادة بناء حاوية Discourse:
cd /var/discourse ./launcher rebuild app
الخطوة 4: نشر الخدمات
ابدأ خدمات Docker لـ Caddy و WordPress:
-
انتقل إلى دليل Docker Compose:
cd /etc/docker-services -
قم بتشغيل الحاويات:
docker compose up -d
الخطوة 5: الاختبار والتحقق
-
التحقق من الحاويات قيد التشغيل:
docker ps -
الوصول إلى WordPress: انتقل إلى:
https://website.com -
الوصول إلى Discourse: انتقل إلى:
https://forum.website.com -
التحقق من السجلات:
-
Caddy:
docker logs caddy -
Discourse:
tail -f /var/discourse/shared/standalone/log/rails/production.log
-
استكشاف الأخطاء وإصلاحها
- Discourse لا يستجيب:
-
تأكد من ربط Discourse بالمنفذ
8880. -
تحقق من اتصال الحاوية بـ
caddy_net:docker network inspect caddy_net
-
- أخطاء SSL في Caddy:
- تحقق من سجلات شهادات Caddy في
/data.
- تحقق من سجلات شهادات Caddy في
- مشاكل إعادة البناء:
-
تأكد من أن شبكة
caddy_netنشطة عند إعادة بناء Discourse:docker network ls
-
الخلاصة
يوضح هذا الدليل كيفية دمج Discourse و Caddy و WordPress باستخدام Docker Compose وتكوين وكيل عكسي. باتباع هذه الخطوات، يمكنك تحقيق إعداد معياري وآمن للبنية التحتية لموقعك الخاص.