[{"data":1,"prerenderedAt":214},["ShallowReactive",2],{"seo-verification":3,"blog-انشر-تطبيقاتك-باستخدام-dokku-على-خادم-vps-ma-ar":6,"promo-bar-likely":213},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-انشر-تطبيقاتك-باستخدام-dokku-على-خادم-vps-ma-ar",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":27,"featuredImage":29,"bgImage":30,"posterImage":31,"relatedSolution":29,"intro":32,"sections":33,"ctaTitle":156,"ctaBody":157,"ctaButton":158,"ctaUrl":159,"relatedPosts":160},34,"انشر-تطبيقاتك-باستخدام-dokku-على-خادم-vps",{"fr":12,"en":13,"ar":10,"es":14},"deployer-avec-dokku","deploy-your-applications-with-dokku-on-a-vps","desplegar-aplicaciones-con-dokku-en-un-vps","انشر تطبيقاتك باستخدام Dokku على خادم VPS","دليل ‏Dokku‏ v0.35 الشامل: التثبيت، buildpacks، المتغيرات البيئية، الرجوع للإصدار السابق، إضافات postgres\u002Fredis\u002Fletsencrypt، وحلول المشكلات الشائعة.",11,1,false,"2026-05-17T00:00:00+00:00","2026-10-18T21:57:59+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\u002Fdeployer-avec-dokku-poster.svg","يقدّم ‏Dokku‏ نفسه بوصفه «أصغر منصة ‏PaaS‏ في العالم». مبنيٌّ حول ‏Docker‏ و‏buildpacks‏ الخاصة بـ ‏Heroku‏، ويوفّر تجربة نشر عبر ‏`git push`‏ على خادم ‏VPS‏ متواضع دون واجهة ثقيلة أو منسّق مضمّن. يتجاوز هذا الدليل التثبيت الأساسي؛ إذ يشمل المتغيرات البيئية، والرجوع بلا توقف (‏rollback‏)، والإضافات الأساسية، وحلول الأخطاء الأكثر شيوعاً.",[34,38,50,53,75,78,81,84,147,150,153],{"type":35,"title":36,"body":37},"h2","لماذا تختار Dokku لخادم VPS الخاص بك","حيث تُضمّن حلول ‏PaaS‏ الأخرى واجهة ويب ومنسّقاً كاملاً، يبقى ‏Dokku‏ بسيطاً عن قصد: إذ هو مجموعة سكربتات ‏shell‏ تقود ‏Docker‏. تدفع شفرتك بـ ‏`git push dokku main`‏، فيكتشف ‏Dokku‏ اللغة عبر ‏buildpacks‏ الخاصة بـ ‏Heroku‏ أو ‏Dockerfile‏، ويبني الصورة ويضع التطبيق على الإنترنت. تُدار كل الأمور من سطر الأوامر ما يجعله خفيفاً للغاية وقابلاً للتنبؤ.\n\n‏CapRover‏ و‏Coolify‏ و‏Easypanel‏ توفّر جميعها واجهة رسومية لكن بكلفة ذاكرة أعلى بكثير: ‏CapRover‏ يحتاج إلى 2 غيغابايت من ‏RAM‏ كحدٍّ أدنى، و‏Coolify‏ 4 كذلك بسبب ‏PostgreSQL‏ المضمّنة، أما ‏Easypanel‏ فيستهلك 2 غيغابايت حين يكون البناء نشطاً. ‏Dokku‏ بالمقابل يعمل من ‏512‏ ميغابايت من ‏RAM‏ لتطبيق خفيف ولا يُضيف أيّ مكوّن مراقبة دائم.",{"type":39,"title":40,"items":41},"ul","نقاط قوة Dokku الملموسة",[42,43,44,45,46,47,48,49],"بصمة ذاكرة ضئيلة: يعمل من ‏512‏ ميغابايت من ‏RAM‏ لتطبيق خفيف، و1 غيغابايت بأريحية.","النشر عبر ‏`git push`‏، تماماً كما في ‏Heroku‏، مع اكتشاف تلقائي للغة عبر ‏buildpacks‏.","دعم أصيل لـ ‏buildpacks‏ الخاصة بـ ‏Heroku‏ (‏Node‏ و‏Python‏ و‏Ruby‏ و‏Go‏ و‏PHP‏...) ولملفات ‏Dockerfile‏.","إضافات رسمية لـ ‏PostgreSQL‏ و‏MySQL‏ و‏Redis‏ و‏MongoDB‏، تُدار بالكامل عبر سطر الأوامر.","إضافة ‏Let's Encrypt‏ لتفعيل ‏HTTPS‏ تلقائياً مع التجديد عبر ‏cron‏.","عمليات نشر بلا توقف (‏zero-downtime‏) بفضل فحوصات السلامة القابلة للتهيئة قبل تبديل الحاوية.","رجوع فوري (‏rollback‏) عبر ‏`dokku tags`‏ و‏`dokku deploy`‏ على صورة سابقة.","حقن تلقائي لمتغيرات الاتصال (‏`DATABASE_URL`‏ و‏`REDIS_URL`‏) عند ‏`plugin:link`‏.",{"type":35,"title":51,"body":52},"المتطلبات الرقمية لـ Dokku","‏Dokku‏ هو أكثر منصات ‏PaaS‏ اقتصاداً في الموارد ضمن هذه السلسلة.\n\n**‏RAM‏.** 512 ميغابايت تكفي لتطبيق خفيف. خصّص 1 غيغابايت للاستخدام اليومي، و2 غيغابايت حين تستخدم ‏buildpacks‏ أو تستضيف قاعدة بيانات على الخادم نفسه. لعدة تطبيقات مع ‏PostgreSQL‏ في آنٍ واحد، استهدف 4 غيغابايت.\n\n**المعالج.** ‏vCPU‏ واحد يكفي للتطبيقات الخفيفة. مراحل بناء ‏buildpack‏ تستهلك الكثير من المعالج لكنها لا تمنع التشغيل.\n\n**القرص.** 20 غيغابايت من ‏SSD‏ كحدٍّ أدنى. صور ‏Docker‏ الخاصة بـ ‏buildpacks‏ قد تزن مئات الميغابايتات.\n\n**‏Swap‏.** على خادم ‏VPS‏ بذاكرة 1 أو 2 غيغابايت، أضِف 2 غيغابايت من ‏swap‏ دوماً لتفادي ‏OOM killer‏.\n\n**النظام.** ‏Ubuntu 22.04 LTS‏ أو ‏24.04 LTS‏ مثبَّت حديثاً، بدون ‏Docker‏ أو ‏Nginx‏ مسبق التثبيت. المنافذ ‏22‏ (‏SSH‏) و‏80‏ و‏443‏ يجب أن تكون مفتوحة.\n\n**‏DNS‏.** هيّئ إمّا نطاقاً لكل تطبيق أو نطاق ‏wildcard‏ ‏`*.your-domain.com`‏ يشير إلى عنوان ‏IP‏ الخادم.",{"type":54,"title":55,"steps":56},"steps","ثبّت Dokku v0.38.x وانشر تطبيقاً أولاً",[57,60,63,66,69,72],{"title":58,"body":59},"تنزيل سكربت الاستدعاء الرسمي وتشغيله","على نظام ‏Ubuntu 22.04‏ أو ‏24.04 LTS‏ نظيف، نزّل سكربت التثبيت وشغّله:\n\n```\nwget -NP . https:\u002F\u002Fdokku.com\u002Fbootstrap.sh\nsudo DOKKU_TAG=v0.38.x bash bootstrap.sh\n```\n\nيثبّت السكربت ‏Docker‏ (إن لم يكن موجوداً) و‏Nginx‏ و‏Dokku‏.",{"title":61,"body":62},"تهيئة النطاق العام وإضافة مفتاح SSH","حدّد النطاق الجذر الذي سيستخدمه ‏Dokku‏ لبناء النطاقات الفرعية للتطبيقات:\n\n```\ndokku domains:set-global your-domain.com\n```\n\nثم أضِف مفتاح ‏SSH‏ العام الخاص بك:\n\n```\ncat ~\u002F.ssh\u002Fid_ed25519.pub | ssh root@your-domain.com \"dokku ssh-keys:add admin\"\n```",{"title":64,"body":65},"إنشاء تطبيق وتهيئة المستودع البعيد (Git remote)","على الخادم، أنشئ التطبيق المستهدف:\n\n```\ndokku apps:create my-app\n```\n\nعلى جهازك المحلي، أضِف ‏Dokku‏ كـ ‏remote‏ في مستودعك:\n\n```\ngit remote add dokku dokku@your-domain.com:my-app\n```\n\nسينشئ ‏Dokku‏ تلقائياً النطاق الفرعي ‏`my-app.your-domain.com`‏.",{"title":67,"body":68},"تزويد قاعدة بيانات PostgreSQL","ثبّت الإضافة الرسمية لـ ‏PostgreSQL‏ (مرة واحدة لكل خادم):\n\n```\ndokku plugin:install https:\u002F\u002Fgithub.com\u002Fdokku\u002Fdokku-postgres.git\n```\n\nأنشئ قاعدة بيانات واربطها بالتطبيق:\n\n```\ndokku postgres:create my-db\ndokku postgres:link my-db my-app\n```\n\nيحقن أمر ‏`link`‏ تلقائياً المتغير ‏`DATABASE_URL`‏ في حاوية التطبيق.",{"title":70,"body":71},"نشر التطبيق للمرة الأولى","من مستودعك المحلي، ادفع إلى ‏Dokku‏:\n\n```\ngit push dokku main\n```\n\nيكتشف ‏Dokku‏ اللغة، ويُنزّل ‏buildpack‏ المناسب، ويبني صورة ‏Docker‏، ثم يُشغّل الحاوية. تُعرض العملية في الوقت الفعلي على الطرفية.",{"title":73,"body":74},"تفعيل HTTPS مع Let's Encrypt","ثبّت إضافة ‏Let's Encrypt‏ (مرة واحدة لكل خادم):\n\n```\ndokku plugin:install https:\u002F\u002Fgithub.com\u002Fdokku\u002Fdokku-letsencrypt.git\n```\n\nحدّد البريد الإلكتروني لإشعارات انتهاء الصلاحية، ثم فعّل الشهادة للتطبيق:\n\n```\ndokku letsencrypt:set my-app email admin@your-domain.com\ndokku letsencrypt:enable my-app\n```\n\nفعّل التجديد التلقائي:\n\n```\ndokku letsencrypt:cron-job --add\n```",{"type":35,"title":76,"body":77},"إدارة تطبيقات متعددة ومتغيرات البيئة","يدير ‏Dokku‏ كل تطبيق في حاوية معزولة. يمكنك استضافة أكبر عدد من التطبيقات بحسب قدرة خادم ‏VPS‏ الخاص بك.\n\n**المتغيرات البيئية.** استخدم ‏`dokku config:set`‏ لحقن الأسرار أو معاملات الضبط:\n\n```\ndokku config:set my-app NODE_ENV=production \\\n  SECRET_KEY=changeme\n```\n\n**الاختبار مقابل الإنتاج.** الممارسة الشائعة هي إنشاء تطبيقَين على الخادم نفسه:\n\n```\ndokku apps:create my-app-staging\ndokku apps:create my-app-production\n```\n\n**النطاقات المخصصة.** لربط نطاق موجود بتطبيق:\n\n```\ndokku domains:add my-app your-domain.com\n```",{"type":35,"title":79,"body":80},"التحديثات بلا توقف والرجوع للإصدار السابق","يتعامل ‏Dokku‏ مع ‏zero-downtime‏ عبر آلية فحص الصحة قبل التبديل. يمكنك ضبط هذا السلوك بملف ‏`CHECKS`‏ في جذر مشروعك:\n\n```\nWAIT=10\nTIMEOUT=60\n\u002Fhealthz Application is up\n```\n\n**التاجات والرجوع للإصدار السابق.** يحتفظ ‏Dokku‏ بصور ‏Docker‏ للنشرات السابقة كتاجات. للرجوع:\n\n```\ndokku tags:list my-app\ndokku tags:deploy my-app v3\n```\n\nلإنشاء تاج نسخة احتياطية قبل نشر محفوف بمخاطر:\n\n```\ndokku tags:create my-app stable-before-migration\n```",{"type":35,"title":82,"body":83},"الإضافات الأساسية","**‏PostgreSQL‏.** الأكثر استخداماً. أوامر إضافية مفيدة: ‏`dokku postgres:backup my-db`‏ لنسخة يدوية، ‏`dokku postgres:connect my-db`‏ للوصول التفاعلي.\n\n**‏Redis‏.**\n\n```\ndokku plugin:install https:\u002F\u002Fgithub.com\u002Fdokku\u002Fdokku-redis.git\ndokku redis:create my-cache\ndokku redis:link my-cache my-app\n```\n\nيحقن المتغير ‏`REDIS_URL`‏ في الحاوية.\n\n**‏Cron‏ (المجدول).** أنشئ ملف ‏`app.json`‏ في جذر مشروعك:\n\n```json\n{\n  \"cron\": [\n    { \"command\": \"php artisan schedule:run\", \"schedule\": \"* * * * *\" }\n  ]\n}\n```",{"type":85,"title":86,"headers":87,"rows":92},"comparison","Dokku مقابل CapRover مقابل Easypanel — مقارنة 2026",[88,89,90,91],"‏المعيار‏","‏Dokku 0.35‏","‏CapRover 1.x‏","‏Easypanel 2.x‏",[93,98,103,108,113,118,123,128,133,137,142],[94,95,96,97],"‏RAM‏ عند الخمول","‏~100 ميغابايت‏","‏~400 ميغابايت‏","‏~350 ميغابايت‏",[99,100,101,102],"واجهة رسومية","لا — سطر أوامر فقط","نعم (لوحة تحكم ويب)","نعم (لوحة تحكم حديثة)",[104,105,106,107],"‏Buildpacks‏","‏Heroku buildpacks (CNB)‏","‏captain-definition \u002F Docker‏","‏Nixpacks‏ أو ‏Dockerfile‏",[109,110,111,112],"نشر ‏Git‏","‏git push‏ أصيل","‏caprover CLI‏ + ‏webhook‏","‏webhook GitHub \u002F GitLab‏",[114,115,116,117],"الإضافات \u002F السوق","‏~100 إضافة رسمية‏","كتالوج ‏One-Click‏ (~150 تطبيق)","سوق مدمجة (~200 تطبيق)",[119,120,121,122],"‏Zero-downtime‏","نعم (ملف ‏CHECKS‏)","نعم (‏Docker Swarm rolling‏)","نعم (‏Traefik labels‏)",[124,125,126,127],"الرجوع للإصدار السابق","‏dokku tags:deploy‏","إعادة بناء من الصورة","إعادة نشر من ‏Git‏",[129,130,131,132],"متعدد الخوادم","ليس أصيلاً","نعم (‏Docker Swarm‏ متعدد العقد)","نعم (وكلاء بعيدون)",[134,135,136,135],"‏Kubernetes‏","لا","لا (‏Docker Swarm‏ فقط)",[138,139,140,141],"الترخيص","‏MIT‏","‏Apache 2.0‏","مملوك (خطة مجانية)",[143,144,145,146],"منحنى التعلم","منخفض (سطر أوامر بسيط)","متوسط","منخفض (واجهة بديهية)",{"type":148,"body":149},"tip","**‏Swap‏ موصى به من 1 غيغابايت ‏RAM‏.** على خادم ‏VPS‏ خفيف، أضِف 2 غيغابايت من ‏swap‏ قبل أي شيء آخر: بناء ‏Node‏ أو ‏Python‏ بدون ‏swap‏ يُوقفه ‏OOM killer‏ بانتظام.\n\n**ملف ‏CHECKS‏.** بدونه، يبدّل ‏Dokku‏ بمجرد بدء تشغيل الحاوية قبل أن يكون التطبيق جاهزاً للاستجابة.\n\n**تدوير السجلات.** تنمو سجلات ‏Docker‏ بلا حدود افتراضياً. هيّئ التدوير في ‏`\u002Fetc\u002Fdocker\u002Fdaemon.json`‏:\n\n```json\n{\n  \"log-driver\": \"json-file\",\n  \"log-opts\": { \"max-size\": \"50m\", \"max-file\": \"3\" }\n}\n```",{"type":35,"title":151,"body":152},"حل المشكلات الشائعة","**‏`error: failed to push some refs`‏ — رفض الأذونات.**\nتحقق من تسجيل مفتاح ‏SSH‏: ‏`dokku ssh-keys:list`‏. إن كان غائباً، أضِفه بـ ‏`dokku ssh-keys:add admin \u003C ~\u002F.ssh\u002Fid_ed25519.pub`‏.\n\n**‏`! [remote rejected]`‏ — رُفض ‏hook‏ الاستقبال المسبق.**\nهذا الخطأ يشير إلى فشل في البناء على جانب ‏Dokku‏. راجع السجلات التفصيلية بـ ‏`dokku logs my-app`‏.\n\n**التطبيق يرجع ‏502 Bad Gateway‏.**\nتحقق من حالة العملية: ‏`dokku ps:report my-app`‏. السبب الشائع: التطبيق لا يستمع على المنفذ المعلن في ‏`Procfile`‏.\n\n**فشل ‏`letsencrypt:enable`‏ — انتهاء مهلة تحدي ‏HTTP-01‏.**\nيتطلب تحدي ‏ACME‏ أن يُحلّ النطاق إلى ‏IP‏ الخادم قبل التفعيل. تحقق من انتشار ‏DNS‏: ‏`dig +short my-app.your-domain.com`‏.\n\n**قتل البناء من قِبل النواة (‏OOM‏) — ‏`Killed`‏.**\nتدخّل ‏OOM killer‏ بسبب نقص الذاكرة. أضِف ‏swap‏ أو انتقل إلى خادم ‏VPS‏ بـ 2 غيغابايت من ‏RAM‏.",{"type":35,"title":154,"body":155},"للمزيد","يغطي ‏Dokku‏ نشر تطبيقات ذات حاوية واحدة على خادم ‏VPS‏. إذا تطوّرت بنيتك نحو خدمات متعددة مترابطة، تكمّل عدة بدائل من نفس الفصيلة هذا النهج: ‏CapRover‏ يضيف واجهة رسومية ووضع ‏Docker Swarm‏ متعدد العقد. ‏Easypanel‏ يبسّط إدارة الخدمات المتعددة مع ‏Nixpacks‏ وسوق تطبيقات. لكل هذه الأدوات تعمل على خادم ‏VPS Cloud‏ من ‏ServOrbit‏ بنظام ‏Ubuntu LTS‏.","ضع Dokku في الإنتاج على خادم VPS الخاص بك","خادم VPS Cloud من ServOrbit يعمل بنظام Ubuntu LTS، خفيف وبأسعار معقولة، هو الأرضية المثالية لـ Dokku وسير عمل النشر لديه عبر git push.","ابدأ مع خادم VPS Cloud","\u002Fvps-cloud",[161,181,197],{"id":162,"slug":163,"slugs":164,"title":168,"excerpt":169,"readTime":170,"views":171,"isPinned":19,"noindex":19,"publishedAt":172,"updatedAt":173,"category":174,"categories":175,"featuredImage":29,"bgImage":30,"posterImage":177,"relatedSolution":178},33,"انشر-تطبيقاتك-باستخدام-caprover-على-خادم-vps",{"fr":165,"en":166,"ar":163,"es":167},"deployer-avec-caprover","deploy-your-applications-with-caprover-on-a-vps","desplegar-aplicaciones-con-caprover-en-un-vps","انشر تطبيقاتك باستخدام CapRover على خادم VPS","دليل CapRover الشامل: التثبيت، captain-definition، CI\u002FCD مع GitHub Actions، الكتلة متعددة العقد، النسخ الاحتياطية وإصلاح أخطاء 502 وBuild Failed وDocker API.",10,2,"2026-05-18T00:00:00+00:00","2026-11-04T16:30:25+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[176],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-caprover-poster.svg",{"categorySlug":179,"appSlug":180},"نشر-التطبيقات-وdevops","caprover",{"id":182,"slug":183,"slugs":184,"title":188,"excerpt":189,"readTime":170,"views":18,"isPinned":19,"noindex":19,"publishedAt":190,"updatedAt":173,"category":191,"categories":192,"featuredImage":29,"bgImage":30,"posterImage":194,"relatedSolution":195},35,"انشر-تطبيقاتك-باستخدام-portainer-على-خادم-vps",{"fr":185,"en":186,"ar":183,"es":187},"deployer-avec-portainer","deploy-your-applications-with-portainer-on-a-vps","desplegar-aplicaciones-con-portainer-en-un-vps","انشر تطبيقاتك باستخدام Portainer على خادم VPS","أدِر Docker بصريًا باستخدام Portainer على خادم VPS الخاص بك: حاويات، وstacks، وأحجام (volumes)، وشبكات تُدار من واجهة ويب واضحة.","2026-05-16T00:00:00+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[193],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-portainer-poster.svg",{"categorySlug":179,"appSlug":196},"portainer",{"id":198,"slug":199,"slugs":200,"title":204,"excerpt":205,"readTime":170,"views":206,"isPinned":19,"noindex":19,"publishedAt":207,"updatedAt":208,"category":209,"categories":210,"featuredImage":29,"bgImage":30,"posterImage":212,"relatedSolution":29},36,"انشر-تطبيقاتك-باستخدام-easypanel-على-خادم-vps",{"fr":201,"en":202,"ar":199,"es":203},"deployer-avec-easypanel","deploy-your-applications-with-easypanel-on-a-vps","desplegar-con-easypanel","انشر تطبيقاتك باستخدام Easypanel على خادم VPS","دليل Easypanel الشامل: متطلبات مفصّلة، تثبيت، Traefik، TLS، قواعد بيانات، نسخ احتياطية، استكشاف الأخطاء، ومقارنة مع Coolify وDokploy.",4,"2026-05-15T00:00:00+00:00","2026-11-08T01:13:13+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[211],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-easypanel-poster.svg",true,1794270257553]