[{"data":1,"prerenderedAt":193},["ShallowReactive",2],{"seo-verification":3,"blog-nginx-proxy-manager-على-vps-إعداد-reverse-proxy-ar":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-nginx-proxy-manager-على-vps-إعداد-reverse-proxy-ar",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":27,"featuredImage":29,"bgImage":30,"posterImage":31,"relatedSolution":29,"intro":32,"sections":33,"ctaTitle":134,"ctaBody":135,"ctaButton":136,"ctaUrl":137,"relatedPosts":138},384,"nginx-proxy-manager-على-vps-إعداد-reverse-proxy",{"fr":12,"en":13,"ar":10,"es":14},"nginx-proxy-manager-vps-reverse-proxy","nginx-proxy-manager-vps-reverse-proxy-setup","nginx-proxy-manager-vps-proxy-inverso","Nginx Proxy Manager على VPS: بروكسي عكسي بصري مع SSL تلقائي","أعدّ بروكسياً عكسياً بصرياً على VPS باستخدام Nginx Proxy Manager: شهادات Let's Encrypt تلقائية، توجيه Docker متعدد التطبيقات، دون تعديل nginx.conf.",9,0,false,"2026-09-26T00:00:00+00:00","2026-09-29T14:40:42+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},3,"النشر","deploiement","bg-success\u002F10 text-success",[28],{"id":23,"name":24,"slug":25,"color":26,"icon":25},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fnginx-proxy-manager-vps-reverse-proxy-poster.svg","عندما تعمل عدة تطبيقات على نفس VPS، يستمع كل منها على منفذ مختلف وتصبح إدارة SSL أمراً مرهقاً. يحل Nginx Proxy Manager هذه المشكلة بواجهة ويب تؤتمت شهادات Let's Encrypt، وتوجه النطاقات إلى الحاويات الصحيحة دون الحاجة إلى تعديل أي ملف إعداد nginx. يغطي هذا الدليل التثبيت وإعداد مضيفي البروكسي ومقارنة مع Caddy وTraefik لمساعدتك في اختيار الأداة المناسبة.",[34,38,48,51,67,82,85,88,92,131],{"type":35,"title":36,"body":37},"h2","لماذا تحتاج إلى بروكسي عكسي على VPS","يكشف VPS عن عنوان IP عام واحد فقط. إذا كنت تشغّل ثلاثة تطبيقات Docker — واجهة برمجية، وواجهة أمامية، وأداة إدارة — فكل منها يشغل منفذاً مختلفاً: `3000` و`8080` و`9000`. بدون بروكسي عكسي، يضطر زوارك إلى كتابة المنفذ في الرابط، وتُدار شهادات SSL لكل تطبيق على حدة، مما يزيد من سطح الهجوم.\n\nيُمركز **البروكسي العكسي** دخول حركة المرور: يستقبل جميع الطلبات على المنفذين 80 و443، ويفحص اسم النطاق أو المسار، ثم يعيد توجيه الطلب إلى الحاوية الصحيحة على الشبكة الداخلية. لا تكشف التطبيقات بعد الآن عن منافذ عامة. يتم إنهاء SSL على مستوى البروكسي الذي يعيد التوزيع عبر HTTP العادي على الشبكة الخاصة لـ Docker.\n\nتوفر هذه البنية ثلاث فوائد ملموسة: نقطة إدارة موحدة للشهادات، وعزل الشبكة للتطبيقات، وإمكانية إضافة أو إزالة تطبيق دون المساس بالآخرين.",{"type":39,"title":40,"items":41},"ul","ما يبسّطه Nginx Proxy Manager",[42,43,44,45,46,47],"**واجهة ويب**: إضافة وتعديل وحذف مضيفي البروكسي دون سطر أوامر أو إعادة تحميل يدوية","**SSL من Let's Encrypt بنقرة واحدة**: يطلب NPM الشهادات ويجددها وينشرها تلقائياً عبر HTTP-01 أو DNS-01","**Wildcard DNS**: شهادة واحدة لـ `*.mynomain.com` إذا كان مزود DNS يدعم Certbot API","**قوائم الوصول**: مصادقة HTTP الأساسية أو القائمة البيضاء لعناوين IP مباشرة من الواجهة","**إعادة التوجيه وعناوين URL المخصصة**: HTTP إلى HTTPS وإعادة توجيه 301\u002F302 دون تعديل nginx.conf","**إعادة التحميل دون انقطاع**: يعيد NPM تحميل إعداد nginx في الخلفية دون توقف",{"type":35,"title":49,"body":50},"المتطلبات الأساسية","لمتابعة هذا الدليل، تحتاج إلى VPS يعمل بنظام **Ubuntu 22.04** أو **Debian 12** مع ذاكرة RAM لا تقل عن 1 جيجابايت (يُنصح بـ 2 جيجابايت إذا كانت تعمل عدة تطبيقات في آن واحد). يجب تثبيت Docker Engine وDocker Compose v2.\n\nيجب أن يكون **المنفذان 80 و443** متاحَين من الخارج. تحقق من أن جدار الحماية (`ufw` أو قواعد لوحة التحكم) يسمح بهما. إذا كنت تستخدم جدار حماية سحابياً، افتح هذين المنفذين للحركة الواردة.\n\nأخيراً، يجب أن تمتلك **اسم نطاق أو نطاقاً فرعياً** واحداً على الأقل يشير إلى عنوان IP لـ VPS. يمكن لـ NPM إدارة نطاقات متعددة في نفس الوقت — الحد الأدنى المطلوب وجود سجل DNS A لكل نطاق تريد وضعه خلف البروكسي.",{"type":52,"title":53,"steps":54},"steps","تثبيت NPM باستخدام Docker Compose",[55,58,61,64],{"title":56,"body":57},"إنشاء هيكل المجلدات","أنشئ مجلداً مخصصاً وانتقل إليه:\n\n```bash\nmkdir -p \u002Fopt\u002Fnpm && cd \u002Fopt\u002Fnpm\n```\n\nسيحتوي هذا المجلد على ملف Compose والأحجام الدائمة لـ NPM (قاعدة بيانات SQLite والشهادات والسجلات).",{"title":59,"body":60},"كتابة docker-compose.yml","أنشئ الملف `\u002Fopt\u002Fnpm\u002Fdocker-compose.yml` بالمحتوى التالي:\n\n```yaml\nservices:\n  app:\n    image: jc21\u002Fnginx-proxy-manager:latest\n    restart: unless-stopped\n    ports:\n      - \"80:80\"\n      - \"443:443\"\n      - \"81:81\"\n    volumes:\n      - .\u002Fdata:\u002Fdata\n      - .\u002Fletsencrypt:\u002Fetc\u002Fletsencrypt\n\nnetworks:\n  default:\n    name: proxy-net\n    external: false\n```\n\nالمنفذ `81` هو واجهة الإدارة. ستُشارك شبكة `proxy-net` مع الحاويات الأخرى حتى يمكن الوصول إليها دون كشف منافذ عامة.",{"title":62,"body":63},"تشغيل NPM","أطلق الحاوية في الخلفية:\n\n```bash\ndocker compose up -d\n```\n\nانتظر 30 إلى 60 ثانية حتى يهيئ NPM قاعدة بياناته. تحقق من أن المنافذ الثلاثة تستمع:\n\n```bash\nss -tlnp | grep -E ':(80|81|443)'\n```",{"title":65,"body":66},"تسجيل الدخول الأول وتغيير كلمة المرور","افتح `http:\u002F\u002FIP_VPS:81` في متصفحك. بيانات الاعتماد الافتراضية هي `admin@example.com` \u002F `changeme`.\n\nيجبرك NPM على تغيير عنوان البريد الإلكتروني وكلمة المرور عند تسجيل الدخول الأول. استخدم عنواناً صالحاً: سيُستخدم لإشعارات انتهاء صلاحية شهادات Let's Encrypt.\n\n**تنبيه**: المنفذ 81 مكشوف للعموم. اضبط قائمة وصول فوراً (راجع قسم قوائم الوصول) أو قيّد هذا المنفذ على مستوى جدار الحماية لعنوان IP الخاص بك.",{"type":52,"title":68,"steps":69},"إضافة أول مضيف بروكسي",[70,73,76,79],{"title":71,"body":72},"إنشاء مضيف بروكسي جديد","في واجهة NPM، انقر على **Proxy Hosts** ثم **Add Proxy Host**. اكتب نطاقك في حقل **Domain Names**، مثلاً `app.mynomain.com`. تأكد أن سجل DNS A لهذا النطاق الفرعي يشير بالفعل إلى عنوان IP لـ VPS — سيتحقق Let's Encrypt من هذا الحل.",{"title":74,"body":75},"إعداد الوجهة","في حقلَي **Forward Hostname \u002F IP** و**Forward Port**، أدخل المضيف والمنفذ لتطبيقك. إذا كان التطبيق يعمل في حاوية Docker على نفس شبكة `proxy-net`، استخدم **اسم الخدمة** في Docker كاسم المضيف (مثال: `myapp` والمنفذ `3000`). حدد **Block Common Exploits** لتفعيل قواعد الفلترة الأساسية.",{"title":77,"body":78},"تفعيل Let's Encrypt","انتقل إلى علامة التبويب **SSL** في نفس النافذة. من القائمة المنسدلة، اختر **Request a new SSL Certificate**. حدد **Force SSL** لإعادة توجيه HTTP إلى HTTPS تلقائياً، و**HTTP\u002F2 Support** لتمكين HTTP\u002F2. أدخل عنوان بريدك الإلكتروني، اقبل شروط Let's Encrypt، ثم انقر **Save**.\n\nيبدأ NPM فوراً في طلب الشهادة عبر تحدي HTTP-01. في أقل من دقيقة، يصبح نطاقك متاحاً عبر HTTPS بشهادة صالحة.",{"title":80,"body":81},"التحقق من النتيجة","تعرض قائمة مضيفي البروكسي الآن إدخالك مع شارة **SSL** خضراء. اختبر من متصفحك أو باستخدام curl:\n\n```bash\ncurl -I https:\u002F\u002Fapp.mynomain.com\n```\n\nيجب أن تحتوي الاستجابة على `HTTP\u002F2 200` ورأس `server: nginx`. تجديد الشهادة تلقائي — يعيد NPM الطلب قبل 30 يوماً من انتهاء الصلاحية.",{"type":35,"title":83,"body":84},"إعداد نطاق فرعي مع إعادة توجيه HTTPS إجبارية","إجبار HTTPS ليس مجرد ممارسة جيدة: إنه أساس أمان النقل. عند إنشاء أو تعديل مضيف بروكسي، تكشف علامة التبويب **SSL** عن ثلاثة خيارات تكميلية.\n\n**Force SSL**: يولّد NPM تلقائياً كتلة `return 301 https:\u002F\u002F$host$request_uri;` في إعداد nginx للمضيف الافتراضي. أي طلب HTTP يُعاد توجيهه من جانب الخادم قبل وصوله إلى تطبيقك.\n\n**HSTS** (HTTP Strict Transport Security): بتحديد هذا الخيار، يضيف NPM رأس `Strict-Transport-Security: max-age=63072000; includeSubDomains; preload` إلى استجابات HTTPS. يتذكر المتصفح أن هذا النطاق يجب الاتصال به دائماً عبر HTTPS. لا تفعّل HSTS إلا إذا كنت متأكداً من الحفاظ على SSL.\n\n**HTTP\u002F2 Support**: يفعّل بروتوكول HTTP\u002F2 على جانب العميل دون أي تعديل على جانب التطبيق. يقلل التعدد من وقت الاستجابة المحسوس، خاصة على الصفحات التي تحتوي على موارد كثيرة.",{"type":35,"title":86,"body":87},"حالة متقدمة: بروكسي لتطبيق Docker بدون منفذ مكشوف","إحدى أكثر مزايا NPM التي لا تُقدَّر حق قدرها هي القدرة على عكس الحاويات التي لا تكشف أي منفذ عام. يتم الاتصال فقط عبر الشبكة الداخلية لـ Docker.\n\nلكي تكون الحاوية قابلة للوصول بواسطة NPM بدون كشف عام، يجب أن تتشارك كلا الخدمتين نفس شبكة Docker. مثال مع تطبيق Node.js في `\u002Fopt\u002Fmyapp\u002Fdocker-compose.yml`:\n\n```yaml\nservices:\n  web:\n    image: my-image:latest\n    restart: unless-stopped\n    # لا يوجد قسم 'ports' — الحاوية غير متاحة من المضيف\n    networks:\n      - proxy-net\n\nnetworks:\n  proxy-net:\n    external: true\n```\n\nبالإعلان عن `proxy-net` كشبكة خارجية وإرفاق الخدمة بهذه الشبكة، تصبح حاوية `web` قابلة للوصول من NPM باسم خدمتها. في واجهة NPM، سيكون **Forward Hostname** ببساطة `web` و**Forward Port** منفذ التطبيق الداخلي.",{"type":89,"title":90,"body":91},"tip","قوائم الوصول: حماية لوحة الإدارة بمصادقة","يتيح NPM تقييد الوصول إلى مضيفي بروكسي معينين عبر **قوائم الوصول**. انتقل إلى **Access Lists** ثم **Add Access List**. أعطِ القائمة اسماً، وأضف إدخالات تحت علامة التبويب **Authorization** (اسم مستخدم + كلمة مرور مشفّرة)، و\u002Fأو قيّد بعناوين IP تحت **Access**.\n\nثم حرّر مضيف البروكسي الذي تريد حمايته وحدد هذه القائمة في حقل **Access List**. يضيف NPM تلقائياً كتلة `auth_basic` إلى إعداد nginx للمضيف الافتراضي. هذا مفيد بشكل خاص لكشف أدوات الإدارة دون نشر خادم مصادقة كامل.\n\nلحماية المنفذ 81 نفسه (واجهة NPM)، تمر الحماية عبر جدار الحماية — قيّد الوصول إلى هذا المنفذ على عنوان IP الثابت الخاص بك أو شبكة VPN.",{"type":93,"title":94,"headers":95,"rows":100},"comparison","مقارنة: Nginx Proxy Manager مقابل Caddy مقابل Traefik",[96,97,98,99],"المعيار","Nginx Proxy Manager","Caddy","Traefik",[101,106,111,116,121,126],[102,103,104,105],"الإعداد","واجهة ويب بصرية، لا حاجة لتعديل ملفات","Caddyfile تصريحي، صيغة موجزة","YAML\u002FTOML أو تسميات Docker، منحنى تعلم أكثر حدة",[107,108,109,110],"SSL تلقائي","Let's Encrypt HTTP-01 وDNS-01، واجهة بصرية","مدمج أصلياً، HTTP-01 وDNS-01 بدون إضافات","ACME مدمج، يتطلب إعداد YAML",[112,113,114,115],"الاكتشاف التلقائي لـ Docker","لا، إعداد يدوي لكل مضيف","غير مدمج أصلياً، ممكن عبر تسميات مع caddy-docker-proxy","مدمج أصلياً عبر تسميات Docker، يكتشف الخدمات عند البدء",[117,118,119,120],"حالة الاستخدام المثالية","مطور يدير أقل من 20 تطبيقاً، يفضل الواجهة على الإعداد","مكدس بسيط إلى متوسط، إعداد قابل للقراءة في ملف","الخدمات المصغرة، Kubernetes، البيئات الديناميكية",[122,123,124,125],"التخصيص المتقدم","محدود — مقتطفات nginx مخصصة ممكنة لكن غير مستحسنة","عالٍ عبر الوحدات وتوجيهات Caddyfile","عالٍ جداً، وسيطات قابلة للتسلسل، إضافات غنية",[127,128,129,130],"الموارد","~50 ميجابايت RAM في حالة الخمول","~30 ميجابايت RAM في حالة الخمول","~40 ميجابايت RAM في حالة الخمول، أكثر حسب الإضافات",{"type":35,"title":132,"body":133},"حدود NPM ومتى تنتقل إلى Traefik","يغطي NPM الغالبية العظمى من حالات الاستخدام للمطورين الذين يديرون عشرة تطبيقات على VPS واحد أو اثنين. يبدأ في إظهار حدوده في عدة سيناريوهات.\n\n**إعداد nginx متقدم**: يولّد NPM ملفات إعداده ويعيد توليدها مع كل تعديل من الواجهة. من الممكن تقنياً إضافة مقتطفات مخصصة، لكنها قد تُستبدل أثناء التحديث. إذا احتجت إلى إعدادات nginx دقيقة — تحديد معدل لكل مسار، ذاكرة تخزين مؤقت معقدة، منطق إعادة كتابة متقدم — يصبح NPM طبقة احتكاك بدلاً من مساعدة.\n\n**البيئات الديناميكية**: في بنية الخدمات المصغرة حيث تظهر الحاويات وتختفي بشكل متكرر، يصبح الإعداد اليدوي لكل مضيف في NPM عنق زجاجة. \u003Ca href=\"\u002Fblog\u002Fdeployer-avec-haproxy-vps\">HAProxy\u003C\u002Fa> أو Traefik، اللذان يكتشفان الخدمات تلقائياً عبر تسميات Docker، أكثر ملاءمة لهذا السياق.\n\n**Kubernetes**: لا مكان لـ NPM في مجموعة Kubernetes. يمتلك Traefik وحدة تحكم Ingress أصيلة؛ و`ingress-nginx` هو الخيار الشائع الآخر.\n\n**قاعدة عملية**: إذا كان إعدادك يناسب واجهة NPM ولا يتطلب نصوص أتمتة للبقاء محدثاً، فـ NPM هو الخيار الصحيح. بمجرد أن تجد نفسك تكتب نصوصاً للتفاعل مع API الخاص بـ NPM، فهذه إشارة لتقييم \u003Ca href=\"\u002Fblog\u002Fdeployer-avec-caddy\">Caddy\u003C\u002Fa> أو Traefik.","VPS جاهز لحاويات Docker الخاصة بك","ServOrbit.com يوفر VPS سحابياً ابتداءً من 99 درهم\u002Fشهر، مع شبكة عالية التوفر ونسخ احتياطية ودعم تقني مدمج. انشر Nginx Proxy Manager في دقائق.","انشر على VPS","\u002Fvps-cloud",[139,159,177],{"id":140,"slug":141,"slugs":142,"title":146,"excerpt":147,"readTime":148,"views":149,"isPinned":19,"publishedAt":150,"updatedAt":151,"category":152,"categories":153,"featuredImage":29,"bgImage":30,"posterImage":155,"relatedSolution":156},39,"انشر-تطبيقاتك-باستخدام-caddy-على-خادم-vps",{"fr":143,"en":144,"ar":141,"es":145},"deployer-avec-caddy","deploy-your-applications-with-caddy-on-a-vps","desplegar-con-caddy","Caddy كـ reverse proxy على VPS: دليل شامل","ثبّت Caddy وهيّئه كـ reverse proxy على VPS: HTTPS تلقائي عبر ‎Let's Encrypt‎، تطبيقات متعددة، تأمين الخادم وحل الأخطاء الشائعة.",8,1,"2026-05-12T00:00:00+00:00","2026-09-25T23:43:04+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[154],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-caddy-poster.svg",{"categorySlug":157,"appSlug":158},"نشر-التطبيقات-وdevops","caddy",{"id":160,"slug":161,"slugs":162,"title":166,"excerpt":167,"readTime":23,"views":18,"isPinned":19,"publishedAt":168,"updatedAt":169,"category":170,"categories":171,"featuredImage":29,"bgImage":30,"posterImage":173,"relatedSolution":174},142,"haproxy-على-خادم-vps-موازنة-الأحمال-والتوافر-العالي",{"fr":163,"en":164,"ar":161,"es":165},"deployer-avec-haproxy-vps","haproxy-on-a-vps-load-balancing-and-high-availability","haproxy-en-un-vps-balanceo-de-carga","HAProxy على خادم VPS: موازنة الأحمال والتوافر العالي","ثبّت HAProxy على خادم VPS لتوزيع حركة المرور ومراقبة الخوادم الخلفية (backends) وإعداد بنية ويب أكثر مرونة.","2026-02-03T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[172],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-haproxy-vps-poster.svg",{"categorySlug":175,"appSlug":176},"infra","haproxy",{"id":178,"slug":179,"slugs":180,"title":184,"excerpt":185,"readTime":186,"views":18,"isPinned":19,"publishedAt":187,"updatedAt":188,"category":189,"categories":190,"featuredImage":29,"bgImage":30,"posterImage":192,"relatedSolution":29},229,"docker-compose-في-الإنتاج-قائمة-التحقق-من-10-نقاط",{"fr":181,"en":182,"ar":179,"es":183},"docker-compose-production-checklist","docker-compose-in-production-10-point-checklist","checklist-docker-compose-en-produccion","Docker Compose في الإنتاج: قائمة التحقق من 10 نقاط","‏قائمة تحقق Docker Compose للإنتاج: 10 إعدادات أساسية، فحوصات صحية، أسرار بدون توقف، استراتيجية التراجع، استكشاف الأخطاء الشائعة.",12,"2026-08-06T00:00:00+00:00","2026-09-29T14:40:45+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[191],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Fdocker-compose-production-checklist-poster.svg",1790693181917]