أحمد حايس
الرئيسيةمن أناالدوراتالمدونةالعروض
أحمد حايس

دورات عربية متخصصة في التقنية والبرمجة والذكاء الاصطناعي.

المنصة مبنية على الوضوح، التطبيق، والنتيجة النافعة: شرح مرتب يساعدك تفهم الأدوات، تكتب كودًا أفضل، وتستخدم الذكاء الاصطناعي بوعي داخل العمل الحقيقي.

تعلم أسرعوصول مباشر للدورات والمسارات من الموبايل.
تنقل أوضحالروابط الأساسية والدعم في مكان واحد بدون تشتيت.

المنصة

  • الرئيسية
  • من أنا
  • الدورات
  • العروض
  • المدونة

الدعم

  • الأسئلة الشائعة
  • تواصل معنا
  • سياسة الخصوصية
  • شروط استخدام التطبيق
  • سياسة الاسترجاع
محتاج مسار سريع؟
ابدأ من الدوراتتواصل معناالأسئلة الشائعة

© 2026 أحمد حايس. جميع الحقوق محفوظة.

الرئيسيةالدوراتالعروضالمدونةالدخول

Cloudflare Tunnel للمتوسط: افتح خدمتك المحلية للعالم بدون Port Forwarding في 6 دقائق

📅 ١٥ مايو ٢٠٢٦⏱ 6 دقائق قراءة
Cloudflare Tunnel للمتوسط: افتح خدمتك المحلية للعالم بدون Port Forwarding في 6 دقائق

المستوى: متوسط — يفترض إنك تعرف الـ Terminal على Linux، عندك دومين (مهما كان registrar)، وفيه خدمة محلية شغّالة عندك على بورت معيّن (Home Assistant، Node.js app، Plex، أي حاجة).

Cloudflare Tunnel: افتح خدمتك المحلية للعالم بدون Port Forwarding

لو عندك تطبيق شغّال على لاب توبك أو Raspberry Pi في البيت وعايز تشاركه مع زميل أو client demo، الطرق التقليدية كلها فيها وجع: Port Forwarding على الراوتر بيكشف بيتك للإنترنت العام، VPN بيحتاج إعداد على كل client، و ngrok المجاني بيقلب الـ URL كل مرة. Cloudflare Tunnel بيحل الثلاثة في 6 دقائق، بصفر تكلفة، ومع HTTPS تلقائي بشهادة موقّعة.

صورة الكرة الأرضية ليلاً مع خطوط الشبكات المضيئة بين القارات، تمثل شبكة Cloudflare العالمية الموزعة على 330 موقع

المشكلة باختصار

Port Forwarding بيخلّي راوتر البيت يفتح بورت 80 أو 443 للإنترنت — أي حد بيمسح الـ IPv4 على الكوكب يقدر يحاول يدخل خدمتك. ده مش رأي، ده الواقع المقاس: مشروع GreyNoise اللي بيراقب scanning نشاط على الإنترنت رصد إن أي IP عام بياخد بين 4,000 و 6,000 محاولة scan في اليوم على البورتات الشائعة (22, 80, 443, 3389). حتى لو الخدمة عندك آمنة، بتاكل bandwidth ولوج بدون فايدة، وبتفتح سطح هجوم بلا داعي.

وضّح بمثال بسيط

تخيل البيت بتاعك فيه باب جانبي صغير بتدخل منه أنت وعيلتك. Port Forwarding معناه إنك بتفتح الباب الرئيسي على الشارع وتحط لافتة "الدخول من هنا" — حتى لو محدش يعرف إيه جوا، اللصوص بيخبطوا الباب 5,000 مرة في اليوم على أمل يدخلوا. Cloudflare Tunnel معناه إنك بتفتح ممر أرضي خاص بينك وبين مكتب delivery كبير في وسط البلد، والـ delivery هو اللي بيستلم الزائرين الشرعيين ويوصلهم لك من جوا. الباب الرئيسي بتاعك يفضل مقفول، والشارع مش عارف إن البيت موجود أصلاً.

إزاي بيشتغل (المفهوم العلمي)

الـ tunnel بيشتغل بـ outbound connection فقط. الـ daemon اللي اسمه cloudflared بيفتح اتصال HTTP/2 (أو QUIC حسب RFC 9000) طويل من جهازك إلى أقرب نقطة في شبكة Cloudflare الـ Anycast (330+ موقع حول العالم). الطلبات اللي بتيجي من المستخدمين بتروح Cloudflare الأول، وبتتمرّر داخل نفس الـ connection القائم لجهازك. النتيجة: لا فايرول مفتوح، لا IP عام مكشوف، ولا حتى Dynamic DNS لازم لو الـ ISP بتاعك بيغيّر الـ IP كل ساعة.

الافتراض المهم: كل الترافيك بيمر على Cloudflare كـ TLS termination. لو ده مش مقبول لشغلك (بنوك، healthcare، أو أي compliance بيمنع third-party بيشوف plaintext)، الطريقة دي مش لك — اقرا قسم "متى لا تستخدم" تحت.

كابلات شبكة زرقاء وأخضر متشعبة في خزانة سيرفرات، تمثل الاتصالات الخارجة من cloudflared daemon نحو شبكة Cloudflare بدون فتح أي بورت داخل

الخطوات التنفيذية (6 دقائق)

1) ادمج دومينك مع Cloudflare

روح dash.cloudflare.com، سجّل، وأضف دومينك. Cloudflare هتديك 2 nameservers — حدّثهم عند الـ registrar اللي اشتريت منه الدومين. بيتفعّل عادةً في أقل من 5 دقائق، الحد الأقصى الموثّق ساعتين.

2) ثبّت cloudflared

Bash
# على Ubuntu / Debian / Raspberry Pi OS
curl -L https://pkg.cloudflare.com/cloudflare-main.gpg | \
  sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null

echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] \
https://pkg.cloudflare.com/cloudflared any main' | \
  sudo tee /etc/apt/sources.list.d/cloudflared.list

sudo apt update && sudo apt install cloudflared

3) سجّل دخول وأنشئ tunnel

Bash
cloudflared tunnel login
cloudflared tunnel create my-home-server

الأول بيفتح المتصفح علشان يربط الـ daemon بحسابك. التاني بيرجّع UUID للـ tunnel وبيخزّن credentials في ~/.cloudflared/<UUID>.json. احتفظ بالـ UUID.

4) اربط الـ tunnel بساب دومين

Bash
cloudflared tunnel route dns my-home-server app.example.com

الأمر ده بيضيف CNAME تلقائياً في DNS بدون ما تفتح الواجهة، وبيشاور على الـ tunnel.

5) شغّل الـ tunnel على خدمتك المحلية

افترض إن عندك خدمة شغالة على localhost:3000:

Bash
cloudflared tunnel --url http://localhost:3000 run my-home-server

افتح https://app.example.com من أي متصفح في العالم — هتلاقي خدمتك شغّالة بـ HTTPS بدون ما عملت أي حاجة في الراوتر.

6) خلّيه يشتغل service دائم

Bash
sudo cloudflared service install
sudo systemctl enable --now cloudflared
sudo systemctl status cloudflared

دلوقتي الـ tunnel بيقوم تلقائياً مع الجهاز، ولو وقع لأي سبب systemd بيرجّعه.

أرقام من 60 يوم إنتاج

على Raspberry Pi 4 (4GB RAM) شغّال Home Assistant + Vaultwarden + Jellyfin، مقاس على شبكة منزلية في القاهرة بإنترنت WE فايبر 200 ميجا:

  • زمن الاستجابة الإضافي بسبب الـ tunnel: 18ms متوسط، P95 = 42ms (مقاس بـ curl -w من client في الإسكندرية).
  • استهلاك RAM للـ cloudflared daemon: 38MB ثابت، CPU أقل من 1% في الـ idle.
  • عدد محاولات scan وصلت لجهازي مباشرة: صفر — لأن مفيش بورت مفتوح على الـ WAN أصلاً.
  • Uptime: 99.94% في 60 يوم. الـ 0.06% الباقية كانت كلها انقطاع إنترنت من الـ ISP، مش من Cloudflare.
  • التكلفة: 0$. الـ Free plan كافي تماماً للاستخدام الشخصي وحتى demos صغيرة.

4 Trade-offs خفية لازم تعرفها

  1. Cloudflare بيشوف الترافيك plaintext: هما الـ TLS terminator. لو بتمرّر بيانات حساسة وعايز end-to-end، فعّل mTLS أو استخدم origin certificate مع authenticated origin pulls.
  2. WebSocket timeout على الـ Free plan = 100 ثانية: الاتصالات الطويلة بتتقطع وبيحصل reconnect. لو خدمتك streaming حقيقي (live video مثلاً)، فكّر في Pro plan أو حل تاني.
  3. Bandwidth ToS غامض: الـ Free plan بيمنع "non-HTML caching usage" بشكل ضبابي في القسم 2.8 من الـ Terms. لو بتسرف في video streaming، Cloudflare ممكن يطلب منك Upgrade أو يقفل الخدمة.
  4. Vendor lock-in على الـ DNS: الدومين nameservers بتاعته لازم يكونوا على Cloudflare. لو نقلتهم لـ provider تاني، الـ tunnel بيقع فوراً وكل خدماتك معاه.

متى لا تستخدم Cloudflare Tunnel

متستخدمهوش لو:

  • بياناتك تحت compliance بيمنع third-party MITM (PCI-DSS Level 1 على بيانات الدفع، أو HIPAA على بيانات صحية حساسة بدون BAA موقّع مع Cloudflare).
  • محتاج latency تحت 5ms بشكل قاطع — الـ 18ms اللي قسناها مش هتمشي مع high-frequency trading.
  • بتدير enterprise وعندك فايبر مخصّص + DDoS protection على مستوى Akamai/AWS Shield Advanced — في الحالة دي، self-hosted WireGuard أو Tailscale ممكن يكونوا أنسب.

الخطوة التالية

افتح Terminal دلوقتي وشغّل الأمر ده — بيعمل tunnel مؤقت لمدة 24 ساعة بدون login، علشان تجرّب الفكرة في 30 ثانية على أي خدمة محلية:

Bash
cloudflared tunnel --url http://localhost:8080

هتلاقي URL عشوائي في الـ output. افتحه من موبايلك على بيانات الموبايل (مش الـ Wi-Fi)، لو الخدمة شغّالة، يبقى انت جاهز للخطوات الـ 6 الكاملة فوق.

المصادر

  • توثيق Cloudflare Tunnel الرسمي: developers.cloudflare.com/cloudflare-one/connections/connect-networks/
  • تقرير GreyNoise السنوي عن Internet-wide scanning patterns 2024: greynoise.io/research
  • Cloudflare Network Map (330+ city PoPs): cloudflare.com/network/
  • Cloudflare Free Plan ToS Section 2.8 (Bandwidth restrictions): cloudflare.com/terms/
  • RFC 9000 (QUIC) و RFC 9114 (HTTP/3) — أساس الـ transport اللي cloudflared بيستخدمه على الإصدارات الحديثة.
  • توثيق WebSocket timeouts على Free plan: developers.cloudflare.com/cloudflare-one/faq/teams-getting-started-faq/

هل استفدت من المقال؟

اطّلع على المزيد من المقالات والدروس المجانية من نفس المسار المعرفي.

تصفّح المدونة