[{"data":1,"prerenderedAt":180},["ShallowReactive",2],{"seo-verification":3,"blog-انشر-تطبيقاتك-باستخدام-caprover-على-خادم-vps-ar":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"id":7,"slug":8,"slugs":9,"title":12,"excerpt":13,"readTime":14,"views":15,"isPinned":16,"publishedAt":17,"category":18,"categories":23,"featuredImage":25,"bgImage":26,"posterImage":27,"relatedSolution":25,"intro":28,"sections":29,"ctaTitle":133,"ctaBody":134,"ctaButton":135,"ctaUrl":136,"relatedPosts":137},33,"انشر-تطبيقاتك-باستخدام-caprover-على-خادم-vps",{"fr":10,"en":11,"ar":8},"deployer-avec-caprover","deploy-your-applications-with-caprover-on-a-vps","انشر تطبيقاتك باستخدام CapRover على خادم VPS","دليل CapRover الشامل: التثبيت، captain-definition، CI\u002FCD مع GitHub Actions، الكتلة متعددة العقد، النسخ الاحتياطية وإصلاح أخطاء 502 وBuild Failed وDocker API.",10,0,false,"2026-05-18T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":21},3,"النشر","deploiement","bg-success\u002F10 text-success",[24],{"id":19,"name":20,"slug":21,"color":22,"icon":21},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fdeployer-avec-caprover-poster.svg","CapRover هو منصة PaaS مفتوحة المصدر تحوّل خادم VPS يعمل بنظام Ubuntu إلى منصة نشر مستقلة: عمليات نشر عبر `git push` أو واجهة سطر الأوامر، وشهادات SSL تلقائية من Let's Encrypt، وكتالوج تطبيقات بنقرة واحدة. يتجاوز هذا الدليل التثبيت الأساسي — إذ يشمل تنسيق `captain-definition` الإصدار 2، والتكامل مع GitHub Actions، والتوسع إلى كتلة متعددة العقد، وإصلاح الأخطاء الأكثر شيوعًا في مشكلات CapRover.",[30,34,45,48,70,73,76,79,82,91,94],{"type":31,"title":32,"body":33},"h2","لماذا تختار CapRover بدلًا من منصة PaaS سحابية","نشر تطبيق على خادم VPS خام يعني تهيئة Nginx وشهادات TLS وDocker وعمليات إعادة التشغيل يدويًا عند كل إصدار. يزيل CapRover هذا العبء: فهو يعتمد على Docker Swarm لتنسيق حاوياتك، ويولّد شهادات Let's Encrypt تلقائيًا، ويوفّر نشرًا عبر `git push` أو صورة Docker جاهزة. يغطي كتالوجه «One-Click Apps» ووردبريس وPostgreSQL وRedis وMongoDB وGhost وأكثر من مئة خدمة أخرى، كلٌّ منها في حاويتها الخاصة. حيث تفرض Heroku أو Render رسومًا بالـdyno أو بساعة الحوسبة، يعمل CapRover على خادم VPS الخاص بك بالتكلفة الشهرية الثابتة لخادمك — الخيار الطبيعي للمطورين والوكالات التي تريد إنتاجية منصة PaaS دون فاتورة متغيرة.",{"type":35,"title":36,"items":37},"ul","الفوائد الملموسة لـ CapRover",[38,39,40,41,42,43,44],"النشر عبر `git push` أو `caprover deploy` دون إعادة تهيئة الخادم عند كل إصدار.","شهادات SSL تلقائية ومُجدّدة من Let's Encrypt لكل نطاق ونطاق فرعي للتطبيق.","كتالوج One-Click: أكثر من 100 خدمة (قواعد بيانات، CMS، أدوات DevOps) ببضع نقرات.","توسّع أفقي أصيل عبر Docker Swarm: أضِف عُقد worker أثناء التشغيل دون تغيير تطبيقاتك.","واجهة ويب مع سجلّات مباشرة، ومتغيرات بيئة، وحفظ دائم للبيانات، ومراقبة Netdata.","خطافات بناء قابلة للتكامل مع GitHub Actions أو GitLab CI أو Bitbucket من أجل CI\u002FCD كامل.","تحديث CapRover ذاتيًا بنقرة واحدة من لوحة التحكم دون الوصول إلى الخادم.",{"type":31,"title":46,"body":47},"متطلبات الأجهزة والشبكة","يحجز CapRover ذاكرة لـ Docker Swarm ومحرك البناء. خادم VPS بذاكرة 2 غيغابايت من RAM ومعالج vCPU واحد يكفي للمشاريع الشخصية وبضعة تطبيقات صغيرة؛ انتقل إلى 4 غيغابايت من RAM ومعالجَي vCPU بمجرد أن تستضيف عدة تطبيقات مع قواعد بياناتها. خصّص 30 غيغابايت من SSD على الأقل، لأن كل عملية بناء Docker تستهلك مساحة قرص مؤقتة. يُنصح بشدة باستخدام نطاق wildcard — مثل `*.apps.mydomain.com` — حتى يولّد CapRover نطاقات فرعية أثناء التشغيل لكل تطبيق. يجب أن تكون المنافذ 80 و443 و3000 (لوحة الإدارة) مفتوحة. منذ الإصدار 1.14، يتطلب CapRover إصدار Docker API بحد أدنى 1.43؛ وقد أصلح الإصدار 1.14.1 مشكلة التوافق التي أدخلها Docker v29 والتي رفعت هذا الحد إلى 1.44. تحقق من إصدارك بـ `docker version | grep API` قبل أي تحديث.",{"type":49,"title":50,"steps":51},"steps","ثبّت CapRover وانشر تطبيقك الأول",[52,55,58,61,64,67],{"title":53,"body":54},"ابدأ التثبيت بأمر واحد","على نظام Ubuntu نظيف بدون Docker مثبَّت مسبقًا، نفّذ `docker run -p 80:80 -p 443:443 -p 3000:3000 -v \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock -v \u002Fcaptain:\u002Fcaptain caprover\u002Fcaprover`. يهيّئ CapRover نظام Docker Swarm ويبدأ لوحة الإدارة على المنفذ 3000. تثبّت صورة Docker كل شيء تلقائيًا — لا توجد اعتماديات يجب تثبيتها مسبقًا.",{"title":56,"body":57},"هيّئ نطاق wildcard","أنشئ سجل DNS من نوع `A` wildcard يوجّه `*.apps.mydomain.com` إلى IP خادم VPS. في لوحة الإدارة (`http:\u002F\u002FYOUR_IP:3000`)، أدخِل هذا النطاق الجذر. سيستخدمه CapRover كلاحقة لجميع تطبيقاتك وسيفعّل HTTPS عبر Let's Encrypt بنقرة واحدة.",{"title":59,"body":60},"ثبّت واجهة سطر الأوامر وسجّل الدخول","على جهاز التطوير الخاص بك: `npm install -g caprover` ثم `caprover login`. أدخِل الرابط `https:\u002F\u002Fcaptain.apps.mydomain.com` وكلمة المرور التي حددتها في الخطوة السابقة. تحتفظ واجهة سطر الأوامر بالاتصال لعمليات النشر اللاحقة. إذا فعّلت المصادقة الثنائية، استخدم token التطبيق بدلًا من كلمة المرور.",{"title":62,"body":63},"أعدّ ملف captain-definition","أضِف ملف `captain-definition` في جذر مشروعك. تنسيق v2 (الموصى به) لا يعدو سطرين: `{ \"schemaVersion\": 2, \"dockerfilePath\": \".\u002FDockerfile\" }`. لنشر صورة Docker جاهزة بدلًا من البناء من المصدر، استبدل `dockerfilePath` بـ `\"imageName\": \"your-image:tag\"`. يظل تنسيق v1 مع `dockerfileLines` مدعومًا لكنه يُعدّ legacy.",{"title":65,"body":66},"أنشئ التطبيق وانشره","في اللوحة، أنشئ تطبيقًا باسم `my-api`. ثم من مستودع Git الخاص بك: `caprover deploy`. يبني CapRover الصورة وفق `captain-definition`، يرسلها إلى Docker Swarm ويعرض التطبيق على `https:\u002F\u002Fmy-api.apps.mydomain.com`. من أجل النشر دون توقف، لا يبدّل CapRover حركة البيانات إلا بعد أن تجتاز الحاوية الجديدة فحوصات السلامة.",{"title":68,"body":69},"أضِف قاعدة بيانات واحفظ البيانات بشكل دائم","من علامة تبويب One-Click Apps، ثبّت PostgreSQL. ينشئ CapRover قاعدة البيانات في حاوية مخصصة ويولّد متغيرات البيئة (`POSTGRES_PASSWORD`، `POSTGRES_HOST`…). اربط تطبيقك بهذه المتغيرات في تبويب App Configs، ثم فعّل **Persistent Directory** في التبويب المخصص حتى تبقى البيانات بين عمليات إعادة النشر. تُخزَّن الأحجام (volumes) تحت `\u002Fvar\u002Flib\u002Fdocker\u002Fvolumes\u002Fcaptain--VOLUME_NAME\u002F_data` على المضيف.",{"type":31,"title":71,"body":72},"دمج CapRover في مسار CI\u002FCD مع GitHub Actions","يكشف CapRover عن webhook بناء لكل تطبيق، يمكن الوصول إليه في تبويب Deployment لكل تطبيق. يُطلق هذا الـwebhook عملية نشر كاملة عند كل طلب HTTP POST. للتكامل مع GitHub Actions، خزّن ثلاثة أسرار في مستودعك: `CAPROVER_SERVER` (رابط نسختك)، و`APP_NAME` (اسم التطبيق في CapRover)، و`APP_TOKEN` (token النشر المعروض في تبويب Deployment). تتوفر action رسمية على GitHub Marketplace هي `caprover\u002Fdeploy-from-github`: تتولى بناء ملف tar النشر وإرساله إلى CapRover في خطوة واحدة. مثال لمهمة بسيطة: بعد `npm run build` الذي ينتج مجلد `dist\u002F`، أنشئ أرشيفًا يحتوي على `dist\u002F` وملف `captain-definition`، ثم استدعِ الـaction بأسرارك الثلاثة. يُغني الجمع بين webhook وGitHub Actions عن واجهة سطر الأوامر المحلية في الفرق: كل push إلى `main` يُطلق نشرًا تلقائيًا، دون تداول مفاتيح الوصول إلى الخادم بين المطورين.",{"type":31,"title":74,"body":75},"التوسع إلى كتلة متعددة العقد مع Docker Swarm","يعمل CapRover أصلًا على Docker Swarm: إضافة الطاقة الحسابية تتم من اللوحة دون إعادة تهيئة تطبيقاتك. في قائمة Cluster، أدخِل IP العقدة الجديدة ومفتاح SSH الجذر المرتبط بها وIP عقدة القائد كما تراها العقدة الجديدة. يثبّت CapRover Docker على الهدف وينضم به إلى Swarm. قيد مهم: يتطلب وضع الكتلة سجل Docker افتراضيًا، لأن العقدة القائدة يجب أن تدفع الصور المبنية إلى العقد العاملة. يعرض CapRover نشر سجل تلقائيًا. قيد آخر يجب معرفته: التطبيقات التي تمكّن Persistent Directory لا تعمل إلا على عقدة واحدة (Docker Swarm لا يشارك أحجام الملفات بين المضيفين). لتوسيع تطبيق ذي حالة، استخدم قاعدة بيانات خارجية أو خدمة تخزين كائنات.",{"type":31,"title":77,"body":78},"نسخ CapRover احتياطيًا","يوفر CapRover نسخًا احتياطيًا أصليًا من اللوحة: Settings → Export Backup. يحتوي الأرشيف المُنتج على تهيئة جميع تطبيقاتك ومتغيرات البيئة وإعدادات Nginx. **لا يحتوي على بيانات الأحجام الدائمة.** لنسخ قاعدة بيانات PostgreSQL المستضافة عبر One-Click احتياطيًا، الأسلوب الموصى به هو `pg_dump` مجدوَل بـcron مع الأرشفة إلى تخزين خارجي. أحجام Docker متاحة تحت `\u002Fvar\u002Flib\u002Fdocker\u002Fvolumes\u002F`؛ نسخة هذه المجلدات مع إيقاف قاعدة البيانات تُشكّل نسخة احتياطية منخفضة المستوى. اختبر دائمًا الاستعادة على خادم VPS staging قبل الاعتماد على نسخة احتياطية في الإنتاج.",{"type":31,"title":80,"body":81},"استكشاف الأخطاء وإصلاحها: الأخطاء الأكثر شيوعًا","فيما يلي رسائل الخطأ التي واجهها المستخدمون فعليًا في مشكلات GitHub ومنتديات CapRover، مع أسبابها وطرق إصلاحها.",{"type":35,"title":83,"items":84},"الأخطاء الشائعة وطرق إصلاحها",[85,86,87,88,89,90],"**`502 Bad Gateway` على اللوحة أو تطبيق بعد النشر.** السبب الأكثر شيوعًا: التطبيق لا يرتبط بالمنفذ الصحيح. تحقق من حقل `containerHttpPort` في App Configs (يجب أن يطابق المنفذ الذي يستمع إليه تطبيقك). للتطبيقات بطيئة البدء، قد يُفعّل CapRover الحاوية قبل أن تكون جاهزة: زِد تأخير فحص السلامة أو أضِف ملف `CHECKS` في جذر المشروع. إذا كانت بوابة 502 تطال اللوحة ذاتها بعد إعادة تشغيل VPS، انتظر 60 ثانية — يُعاد تهيئة خدمة `captain-captain` عند الإقلاع.","**`App build failed` \u002F `Build took too long`.** أوقف OOM killer عملية بناء Docker (ذاكرة غير كافية). أضِف 2 غيغابايت من swap: `fallocate -l 2G \u002Fswapfile && chmod 600 \u002Fswapfile && mkswap \u002Fswapfile && swapon \u002Fswapfile`. لجعل swap دائمًا، أضِف `\u002Fswapfile swap swap defaults 0 0` إلى `\u002Fetc\u002Ffstab`. لبناءات Node.js، عيّن `NODE_OPTIONS=--max-old-space-size=512` في متغيرات البيئة للحد من استهلاك الذاكرة.","**`Error: minimum supported Docker API is 1.43` (أو 1.44).** رفع Docker v29 الحد الأدنى المطلوب وأوقف نسخ CapRover السابقة للإصدار 1.14.1. حدّث CapRover من اللوحة (Settings → Check for Updates) قبل تحديث Docker، أو حدّث CapRover أولًا إذا كان Docker في الإصدار v29 بالفعل.","**`Verification Failed` أثناء إعداد SSL.** سجلات DNS لم تنتشر بعد، أو المنفذ 80 محجوب بجدار حماية. تحقق من فتح المنافذ بـ `ufw status` وانتظر انتشار DNS بـ `dig +short *.apps.mydomain.com`. وضع Cloudflare بالوكيل البرتقالي يحجب التحقق HTTP-01 من Let's Encrypt: بدّل DNS إلى رمادي (DNS-only) أثناء إنشاء الشهادة، أو استخدم شهادة wildcard عبر DNS-01.","**`caprover login` يفشل بـ `ECONNREFUSED`.** المنفذ 3000 غير متاح من جهازك. تحقق من `ufw allow 3000` على الخادم. إذا لم تهيّئ نطاق captain بعد، وجّه مباشرة إلى IP: `http:\u002F\u002FYOUR_IP:3000`. بمجرد تعيين النطاق الجذر في اللوحة، يصبح رابط CLI هو `https:\u002F\u002Fcaptain.apps.mydomain.com`.","**نشر من GitHub في حلقة إعادة تشغيل لا تنتهي.** ناتج عن `captain-definition` مفقود أو مشوّه، أو ملف Dockerfile لا يخرج بشكل نظيف. تحقق من سجلات البناء عبر اللوحة أو `docker service logs captain--my-app`. الغياب عن `CMD` في Dockerfile يجعل الحاوية تخرج فورًا، وهو ما يفسّره CapRover على أنه عطل.",{"type":92,"body":93},"tip","قيّد المنفذ 3000 على IP الثابتة الخاصة بك: `ufw allow from YOUR_IP to any port 3000 && ufw deny 3000`. فعّل المصادقة الثنائية في اللوحة (Settings → Two-Factor Auth) وأنشئ token تطبيق لكل مشروع من أجل CI\u002FCD — لا تضع كلمة مرور المشرف أبدًا في سر GitHub. للبناءات الثقيلة على RAM، أضِف swap قبل الترقية إلى خطة أعلى: 2 غيغابايت من swap على خادم VPS بـ2 غيغابايت RAM تكفي معظم stacks Node\u002FPython. فعّل Netdata (متاح في One-Click Apps) لمراقبة CPU وRAM والشبكة مباشرة من لوحة CapRover دون أداة خارجية.",{"type":95,"title":96,"headers":97,"rows":102},"comparison","CapRover مقارنةً ببدائل PaaS مفتوحة المصدر",[98,99,100,101],"المعيار","CapRover","Dokku","Coolify",[103,107,111,115,120,125,129],[104,105,106,105],"واجهة ويب","نعم، متكاملة","لا (CLI فقط)",[20,108,109,110],"CLI، webhook، صورة","`git push`","Git، Docker، صورة",[112,113,114,114],"التنسيق","Docker Swarm","Docker (مستقل)",[116,117,118,119],"كتلة متعددة العقد","نعم (Swarm أصيل)","لا","جزئي (تجريبي)",[121,122,123,124],"كتالوج One-Click","أكثر من 100 تطبيق","إضافات CLI","أكثر من 50 قالب",[126,127,128,127],"RAM VPS الدنيا","2 غيغابايت","1 غيغابايت",[130,131,132,131],"التحديث الذاتي من اللوحة","نعم","عبر CLI\u002Fscript","أطلق منصة PaaS الخاصة بك مع CapRover اليوم","مع خادم VPS Cloud من ServOrbit، تحصل على نظام Ubuntu نظيف، ونطاق wildcard قابل للتهيئة، والموارد اللازمة لتشغيل CapRover وجميع تطبيقاتك.","اختر خادم VPS Cloud الخاص بي","\u002Fvps-cloud",[138,151,167],{"id":139,"slug":140,"slugs":141,"title":144,"excerpt":145,"readTime":19,"views":15,"isPinned":16,"publishedAt":146,"category":147,"categories":148,"featuredImage":25,"bgImage":26,"posterImage":150,"relatedSolution":25},34,"انشر-تطبيقاتك-باستخدام-dokku-على-خادم-vps",{"fr":142,"en":143,"ar":140},"deployer-avec-dokku","deploy-your-applications-with-dokku-on-a-vps","انشر تطبيقاتك باستخدام Dokku على خادم VPS","انشر تطبيقاتك باستخدام Dokku، أصغر منصة PaaS في السوق: git push، وbuildpacks الخاصة بـ Heroku، وشهادات SSL تلقائية على خادم VPS خفيف.","2026-05-17T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":21},[149],{"id":19,"name":20,"slug":21,"color":22,"icon":21},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-dokku-poster.svg",{"id":152,"slug":153,"slugs":154,"title":157,"excerpt":158,"readTime":19,"views":15,"isPinned":16,"publishedAt":159,"category":160,"categories":161,"featuredImage":25,"bgImage":26,"posterImage":163,"relatedSolution":164},35,"انشر-تطبيقاتك-باستخدام-portainer-على-خادم-vps",{"fr":155,"en":156,"ar":153},"deployer-avec-portainer","deploy-your-applications-with-portainer-on-a-vps","انشر تطبيقاتك باستخدام Portainer على خادم VPS","أدِر Docker بصريًا باستخدام Portainer على خادم VPS الخاص بك: حاويات، وstacks، وأحجام (volumes)، وشبكات تُدار من واجهة ويب واضحة.","2026-05-16T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":21},[162],{"id":19,"name":20,"slug":21,"color":22,"icon":21},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-portainer-poster.svg",{"categorySlug":165,"appSlug":166},"نشر-التطبيقات-وdevops","portainer",{"id":168,"slug":169,"slugs":170,"title":173,"excerpt":174,"readTime":19,"views":15,"isPinned":16,"publishedAt":175,"category":176,"categories":177,"featuredImage":25,"bgImage":26,"posterImage":179,"relatedSolution":25},36,"انشر-تطبيقاتك-باستخدام-easypanel-على-خادم-vps",{"fr":171,"en":172,"ar":169},"deployer-avec-easypanel","deploy-your-applications-with-easypanel-on-a-vps","انشر تطبيقاتك باستخدام Easypanel على خادم VPS","انشر تطبيقاتك باستخدام Easypanel على خادم VPS: واجهة حديثة، وbuildpacks الخاصة بـ Nixpacks، وشهادات SSL تلقائية، وقواعد بيانات بنقرة واحدة.","2026-05-15T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":21},[178],{"id":19,"name":20,"slug":21,"color":22,"icon":21},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-easypanel-poster.svg",1787580947653]