دليل كشف خدمات ServBay المحلية بأمان عبر Cloudflare Tunnel
يعد Cloudflare Tunnel (المعروف سابقًا باسم Argo Tunnel) خدمة شبكة تعتمد على مفهوم Zero Trust، تقدمها Cloudflare وتمكّنك من كشف خوادم الويب أو SSH أو التطبيقات الأخرى التي تعمل محليًا على جهازك إلى الإنترنت بشكل آمن، دون فتح منافذ عامة أو إعداد قواعد جدار ناري معقدة. سيرشدك هذا الدليل خطوة بخطوة في كيفية إعداد نفق آمن باستخدام أداة cloudflared
في بيئة ServBay المحلية القوية، لتمكين وصول الإنترنت إلى خدمات ServBay بسهولة وأمان.
أهم المزايا:
- تعزيز الأمان: الاستفادة القصوى من حماية Cloudflare العالمية مثل الحماية من هجمات DDoS وWAF (جدار الحماية لتطبيقات الويب).
- تبسيط إعدادات الشبكة: لا حاجة لأي تحويل منافذ أو إعدادات NAT أو قواعد جدار ناري معقدة.
- تعتمد على نموذج الثقة الصفرية: جميع الاتصالات صادرة من جهازك، ما يقلل احتمال التعرض للهجمات.
- تكامل مع قدرات Cloudflare: الاستفادة من خدمات التخزين المؤقت والتحسينات والتحليلات من Cloudflare.
نظرة عامة
يوفّر لك ServBay بيئة تطوير محلية متكاملة وسهلة الإدارة، تدعم عدة لغات برمجة (مثل PHP، Node.js، Python، Go، Java، Ruby، Rust) وقواعد بيانات (MySQL، PostgreSQL، MongoDB، Redis) وخوادم ويب (Caddy، Nginx، Apache). غالبًا ما تكون المواقع أو التطبيقات المطورة عبر ServBay متاحة فقط محليًا. باستخدام Cloudflare Tunnel، يمكنك بسهولة مشاركة تقدم العمل مع أعضاء فريقك أو كشف الخدمة لبعض المستخدمين في سيناريوهات معينة، والاستفادة في ذات الوقت من ميزات الأمان والأداء من Cloudflare.
أساسيات التقنية
تعتمد فكرة Cloudflare Tunnel الأساسية على تشغيل عميل cloudflared
على جهازك (حيث يعمل ServBay)، الذي ينشئ اتصالاً واحدًا أو أكثر مشفراً عبر بروتوكول QUIC إلى أقرب نقطة طرفية لشبكة Cloudflare. هذه الاتصالات تُبادر من داخل شبكتك للخارج، ولهذا لا تحتاج إلى إعداد أي قواعد واردة في جهاز التوجيه أو الجدار الناري الخاص بك. عندما يحاول مستخدم زيارة الخدمة عبر اسم النطاق المرتبط بالنفق، تصل الحركة أولًا إلى نقطة Cloudflare الطرفية، ثم تمرر بأمان عبر النفق إلى عميل cloudflared
على جهازك، الذي يعيد تمرير الطلب إلى خدمة ServBay المحلية (كالموقع على https://servbay.local
أو http://localhost:8000
). ويرجع الرد عبر نفس المسار العكسي.
متطلبات البيئة قبل البدء
للبدء في الإعداد، يرجى التأكد من توفر الشروط التالية:
- تثبيت ServBay وتشغيله: يجب أن تكون بيئة ServBay مثبتة ومفعّلة، وأن الموقع أو الخدمة التي ترغب في كشفها تعمل بصورة سليمة (مثلاً تأكد من إمكانية الوصول إلى
servbay.local
افتراضيًا). - حساب Cloudflare: يجب أن تمتلك حسابًا في Cloudflare.
- اسم نطاق مستضاف في Cloudflare: لديك اسم نطاق تمت إضافته إلى Cloudflare ويحكمه DNS التابع لـ Cloudflare.
- تثبيت عميل
cloudflared
: يجب تثبيت أداةcloudflared
على جهاز macOS الذي يعمل عليه ServBay.
1. تثبيت عميل cloudflared
لمستخدمي macOS، يوصى باستخدام Homebrew للتثبيت. إذا لم يكن لديك Homebrew، راجع مستنداته الرسمية للبدء.
التثبيت عبر Homebrew (موصى به):
brew update
brew install cloudflared
2
التثبيت اليدوي (لأجهزة macOS بمعمارية ARM):
# تحميل الملف التنفيذي المناسب لأجهزة Apple Silicon (ARM)
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-darwin-arm64.tgz | tar xz
# نقل الملف التنفيذي إلى مجلد PATH للنظام
sudo mv cloudflared /usr/local/bin/
2
3
4
التحقق من التثبيت: بعد التثبيت، تأكد من نجاح العملية وعرض رقم الإصدار عبر تشغيل:
cloudflared --version
# مثال مخرجات: cloudflared version 2024.5.0 (built 2024-05-01)
2
قد يختلف رقم النسخة، يكفي ظهور رقم الإصدار دليلًا على نجاح التثبيت.
2. تسجيل الدخول إلى حساب Cloudflare
من الطرفية، شغل الأمر التالي لمنح إذن ربط أداة cloudflared بحسابك:
cloudflared tunnel login
سيؤدي هذا إلى فتح متصفحك تلقائيًا على صفحة تسجيل الدخول إلى Cloudflare. اختر الحساب الذي يستضيف نطاقك وامنح إذن الوصول لأداة cloudflared
. بعد النجاح، سترى رسالة تأكيد في المتصفح وتنويه في الطرفية، وستجد ملف cert.pem
الجديد في مجلد الإعدادات الافتراضي (~/.cloudflared/
).
إعداد النفق عمليًا
الآن سنقوم بإنشاء نفق جديد وتوجيه حركة المرور إلى خدمة ServBay المحلية.
الخطوات الأساسية
إنشاء النفق
شغل الأمر التالي في الطرفية لإنشاء نفق جديد، مستبدلاً الاسم بما يناسبك (مثلاً servbay-demo-tunnel):
bashcloudflared tunnel create servbay-demo-tunnel
1بعد التنفيذ، سيتم عرض معرف النفق (UUID) ومسار ملف بيانات الاعتماد. احفظ معرف النفق مثل
a7b8c9d0-e1f2-3a4b-5c6d-7e8f9a0b1c2d
. ستجد ملف بيانات اعتماد بصيغة JSON تم إنشاؤه في~/.cloudflared/
، واسمه يطابق الـ UUID، يحوي رموز المصادقة الهامة. احرص على حفظ هذا الملف بأمان.إعداد سجلات DNS
لربط اسم النطاق بنفق Cloudflare، أضف سجل CNAME عبر الأمر التالي:
bashcloudflared tunnel route dns servbay-demo-tunnel servbay-demo.yourdomain.com
1استبدل
servbay-demo-tunnel
باسم النفق وservbay-demo.yourdomain.com
باسم النطاق الفرعي المطلوب، متأكدًا أنyourdomain.com
تم استضافته في Cloudflare.سينشئ الأمر سجل CNAME في إعدادات DNS بنطاقك، يشير إلى
<معرّف النفق>.cfargotunnel.com
.إعداد ملف التكوين
تستخدم أداة
cloudflared
ملف YAML لإعداد قواعد النفق، وهو عادةً في المسار الافتراضي:~/.cloudflared/config.yml
. أنشئ الملف إذا لم يكن موجودًا.مثال على محتويات الملف:
yaml# tunnel: عرّف UUID الخاص بنفقك (استبدله بالمعرّف الفعلي) tunnel: a7b8c9d0-e1f2-3a4b-5c6d-7e8f9a0b1c2d # credentials-file: مسار ملف بيانات الاعتماد للنفق credentials-file: /Users/yourusername/.cloudflared/a7b8c9d0-e1f2-3a4b-5c6d-7e8f9a0b1c2d.json # عدّل بيانات المسار واسم المستخدم حسب جهازك ingress: # قواعد توجيه الطلبات الواردة للنفق - hostname: servbay-demo.yourdomain.com # اسم النطاق الخارجي (يجب مطابقته مع سجل DNS) service: https://servbay.local # عنوان الخدمة المحلية في ServBay (افتراضيًا https://servbay.local) originRequest: # noTLSVerify: true # إذا كنت تستعمل شهادة SSL ذاتية (مثلاً، صادرة من User CA في ServBay) # إذا كنت تستعمل شهادة موثوقة مثل Let's Encrypt عبر ACME فلا حاجة لهذا الخيار # في بيئات التطوير غالبًا يستخدم User CA مع noTLSVerify: true - service: http_status:404 # قاعدة افتراضية ترجع 404 إذا لم يوجد تطابق مع أي اسم نطاق
1
2
3
4
5
6
7
8
9
10
11
12
13
14تنبيهات هامة:
- استبدل قيمتي
tunnel
وcredentials-file
بالمعرّف الفعلي للنفق والمسار الصحيح للملف. - استبدل قيمة
hostname
بنطاقك المخصص في الخطوة السابقة. service: https://servbay.local
تشير لعنوان الموقع الافتراضي في ServBay عبر HTTPS مع شهادة SSL محلية. إذا كان لديك خدمة تعمل على منفذ أو عنوان آخر (مثلاً تطبيق Node.js علىhttp://localhost:3000
) عدّل القيمة حسب حاجتك.- الخيار
originRequest.noTLSVerify: true
يعطل تحقق TLS من شهادة SSL المحلية، وهو ضروري عند استخدام شهادة موقعة ذاتيًا (User CA). إذا كنت تعتمد شهادة معترف بها رسميًا فلا حاجة له.
- استبدل قيمتي
تشغيل خدمة النفق
بعد كتابة ملف الإعداد، يمكنك بدء النفق بالأمر التالي:
cloudflared tunnel run servbay-demo-tunnel
استبدل servbay-demo-tunnel
باسم نفقك.
ستبدأ أداة cloudflared
في الاتصال بشبكة Cloudflare وإنشاء النفق، وستظهر لك حالات الاتصال والسجلات في الطرفية. طالما بقي الأمر قيد التشغيل، سيظل النفق نشطًا. إذا رغبت بتشغيله في الخلفية باستمرار، يمكنك إعداد النظام ليبدأ الخدمة تلقائيًا (مثلاً باستخدام launchctl في macOS، خارج نطاق هذا الدليل).
التحقق من الخدمة
بعد نجاح التشغيل، يمكنك زيارة موقعك المحلي عبر النطاق الخارجي الذي خصصته.
زيارة اسم النطاق المخصص: من متصفحك، توجه إلى النطاق الذي أعددته مسبقًا، مثل
https://servbay-demo.yourdomain.com
.نقاط تحقق رئيسية:
- يجب أن تظهر لك نفس محتويات الموقع الذي تشاهده عند زيارة
https://servbay.local
محليًا. - تحقق أن عنوان المتصفح يظهر شهادة SSL معتمدة مصدرها Cloudflare، وليست شهادة ServBay المحلية (شهادة ServBay محصورة بالاتصال بين cloudflared والجهاز فقط).
- من أدوات المطور (DevTools)، تحقق من رؤوس استجابة HTTP وابحث عن رؤوس مثل
CF-RAY
، ما يثبت أن الحركة مرّت عبر Cloudflare.
- يجب أن تظهر لك نفس محتويات الموقع الذي تشاهده عند زيارة
نصائح متقدمة
توجيه خدمات متعددة
يمكنك في قسم ingress
من config.yml
إعداد قواعد حسب أسماء النطاقات لتوجيه كل نطاق إلى خدمة ServBay محلية مختلفة (مثل مواقع متعددة أو APIs محلية).
ingress:
- hostname: api.yourdomain.com
service: http://localhost:8080 # لنفرض أن خدمة الـ API تعمل على المنفذ 8080
- hostname: app.yourdomain.com
service: https://servbay.local # الموقع الرئيسي
- service: http_status:404
2
3
4
5
6
مراقبة الحركة والسجلات
توفر أداة cloudflared
عدة أوامر للمراقبة والتشخيص:
- عرض المؤشرات اللحظية:bash
cloudflared tunnel info servbay-demo-tunnel
1 - الحصول على سجلات مفصلة: أمر
cloudflared tunnel run
يطبع السجلات مباشرة للطرفية. ويمكنك تعديل مستوى تفاصيل السجلات أو تصديرها لملف.
دمج Cloudflare Access
لتعزيز الأمان، يمكنك ربط Cloudflare Access لتوفير طبقة تحقق المستخدمين وتفويضهم على الخدمات المكشوفة. Cloudflare Access هو جزء من منصة الأمان الصفرية Zero Trust من Cloudflare ويقدم سيطرة مرنة أفضل من الـ VPN التقليدية. يتم تفعيل ذلك عادة من لوحة تحكم Cloudflare.
استكشاف الأخطاء الشائعة
فيما يلي أكثر المشاكل شيوعًا وحلولها:
الظاهرة | الحلول الممكنة |
---|---|
صفحة 502 Bad Gateway عند زيارة النطاق | تحقق من أن خدمة ServBay المحلية نشطة وتعمل (مثلاً زر https://servbay.local ).راجع عنوان المنفذ في إعداد service داخل config.yml .إذا كان الاتصال عبر HTTPS وتعطيل noTLSVerify مفعّل، تحقق من صلاحية الشهادة أو فعّل noTLSVerify حسب الحاجة. |
خطأ في التحليل DNS | تأكد من إضافة سجل CNAME الصحيح في Cloudflare، يشير إلى <معرّف النفق>.cfargotunnel.com .استعمل أوامر مثل dig أو nslookup للتحقق من التحليل. |
خطأ شهادة عند زيارة النطاق | إذا كان الخطأ من شهادة Cloudflare: تحقق من تطابق hostname مع النطاق في config.yml .إذا كان الخطأ في اتصال cloudflared بالخدمة المحلية عبر TLS: تحقق من عنوان الخدمة واستعمل originRequest.noTLSVerify: true إذا لزم الأمر. |
ظهور خطأ عند تشغيل أمر tunnel | تحقق من وجود ملف ~/.cloudflared/config.yml وصحة بناء ملف YAML.راجع صحة قيمتي tunnel وcredentials-file. تأكد من أن أداة cloudflared تملك صلاحية الوصول للملفات. |
بطء الاتصال أو عدم استقراره | تحقق من جودة اتصالك المحلي بالإنترنت. تأكد من دعم الشبكة لبروتوكول QUIC الخاص بأنفاق Cloudflare. راجع إعدادات منطقة Cloudflare أو تواصل مع الدعم الفني إن لزم الأمر. |
ملخص فوائد الحل
من خلال دمج ServBay مع Cloudflare Tunnel يمكنك تحقيق:
- مشاركة النتائج محليًا بأمان: استعرض تطبيقاتك أو مواقعك الجاري تطويرها مع عملائك أو فريقك بلا مخاطر.
- اختبار خدمات رد النداء الخارجية: جرب webhooks أو اختبارات تتطلب وصولاً عاماً للموقع.
- الاستفادة من الحماية الاحترافية: تمتع بخصائص حماية من Cloudflare مثل WAF، صد الهجمات، وغيرها، حتى لخدماتك المحلية.
- تبسيط إعدادات الشبكة: لا مزيد من تحويل المنافذ أو إعداد الجدر النارية المعقدة.
- تسريع الاعتمادية ووقت الاستجابة: استفد من البنية التحتية العالمية لـ Cloudflare.
يمنحك قدرة ServBay في تطوير بيئة محلية قوية تكاملًا آمنًا وفعالًا مع قوة حماية وأداء Cloudflare Tunnel—لزمن تطوير أسرع وأكثر أمانًا.
الخلاصة
شرح هذا الدليل خطوات تثبيت وتكوين cloudflared
ضمن بيئة ServBay، وإنشاء ثم تشغيل نفق Cloudflare لتوفير وصول آمن لمواقعك المحلية عبر الإنترنت. باتباعك هذه الإرشادات، ستحصل على أقصى استفادة من دعم ServBay للتقنيات المتعددة وأمان Cloudflare Tunnel، مما يعزز الكفاءة في تطويرك وتعاونك. تذكر، Cloudflare Tunnel جزء من منصة Zero Trust الكاملة من Cloudflare، ومن المستحسن التعمق أكثر في خدمات إضافية مثل Cloudflare Access وغيرها لتعزيز الأمن والتحكم.