[{"data":1,"prerenderedAt":116},["ShallowReactive",2],{"seo-verification":3,"blog-deployer-avec-kamal-ar":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"id":7,"slug":8,"title":9,"excerpt":10,"readTime":11,"views":12,"isPinned":13,"publishedAt":14,"category":15,"categories":20,"featuredImage":22,"bgImage":23,"posterImage":24,"relatedSolution":25,"intro":27,"sections":28,"ctaTitle":71,"ctaBody":72,"ctaButton":73,"ctaUrl":74,"relatedPosts":75},40,"deployer-avec-kamal","انشر تطبيقاتك باستخدام Kamal على خادم VPS","انشر تطبيقاتك باستخدام Kamal على خادم VPS: بلا توقف (zero-downtime)، وDocker، وشهادات SSL تلقائية تُدار من جهازك، دون Kubernetes.",8,480,false,"2026-05-11T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":18},3,"النشر","deploiement","bg-success\u002F10 text-success",[21],{"id":16,"name":17,"slug":18,"color":19,"icon":18},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fdeployer-avec-kamal-poster.svg",{"categorySlug":18,"appSlug":26},"kamal","Kamal (المعروف سابقًا باسم MRSK)، من منظومة Rails\u002F37signals، ينشر التطبيقات المحوّلة إلى حاويات على خادم VPS واحد أو عدة خوادم من جهازك المحلي، دون منسّق ثقيل. يجمع بناء Docker، والدفع إلى سجل (registry)، والنشر بلا توقف، ووكيلًا عكسيًا بشهادة SSL تلقائية في أمر واحد: `kamal deploy`.",[29,33,43,46,68],{"type":30,"title":31,"body":32},"h2","لماذا تنشر باستخدام Kamal على خادم VPS بدلًا من Kubernetes؟","Kubernetes مفرط الحجم لغالبية التطبيقات المستضافة على خادم VPS واحد أو عنقود صغير. يستهدف Kamal هذا الميدان بالضبط: فهو يأخذ ملف Dockerfile الخاص بك، ويبني الصورة، ويرسلها إلى خوادمك عبر SSH، ويبدّل حركة المرور دون انقطاع بفضل وكيله المدمج (kamal-proxy). تتّسع كامل التهيئة في ملف `config\u002Fdeploy.yml` مُدار بالإصدارات مع شفرتك: لا مستوى تحكم (control plane) لصيانته، ولا YAML لا نهائي. تحتفظ ببساطة خادم VPS مع سير عمل نشر احترافي.",{"type":34,"title":35,"items":36},"ul","ما يقدّمه لك Kamal",[37,38,39,40,41,42],"عمليات نشر بلا توقف (zero-downtime) عبر فحوصات السلامة والتبديل التدريجي لحركة المرور","بناء صورة Docker ودفعها، ثم النشر على الخوادم، في أمر واحد","شهادات SSL تلقائية من Let's Encrypt يديرها kamal-proxy، دون تهيئة يدوية","تراجع فوري (rollback) إلى النسخة السابقة بـ `kamal rollback`","إدارة مركزية ومشفَّرة للأسرار ومتغيرات البيئة","نشر متعدد الخوادم (web، وjobs، وملحقات مثل Postgres أو Redis) من ملف واحد",{"type":30,"title":44,"body":45},"المتطلبات","من ناحية خادم VPS، لا يتطلب Kamal سوى وصول SSH بالمفتاح وDocker (الذي يمكنه حتى تثبيته عبر `kamal setup` عند أول نشر). خادم VPS بمعالجَي vCPU و2 إلى 4 غيغابايت من RAM يناسب تطبيق ويب قياسيًا مع قاعدة بياناته. من ناحية الجهاز المحلي، ثبّت Kamal (حزمة gem الخاصة بـ Ruby أو صورة Docker)، وجهّز سجل حاويات (Docker Hub، أو GitHub Container Registry، أو سجلًا خاصًا) بالإضافة إلى نطاق يشير إلى خادم VPS.",{"type":47,"title":48,"steps":49},"steps","انشر تطبيقًا باستخدام Kamal",[50,53,56,59,62,65],{"title":51,"body":52},"هيّئ التهيئة الأولية","في مشروعك، نفّذ `kamal init`. يولّد هذا `config\u002Fdeploy.yml` و`.kamal\u002Fsecrets`. أدخِل اسم الخدمة، والصورة (`votreuser\u002Fmonapp`)، وقائمة الخوادم (`servers.web`) مع عنوان IP الخاص بخادم VPS والسجل المستخدم.",{"title":54,"body":55},"حدّد الأسرار والمتغيرات","ضع القيم الحساسة في `.kamal\u002Fsecrets` (لا تُودَع أبدًا في المستودع): `KAMAL_REGISTRY_PASSWORD` أو `RAILS_MASTER_KEY` أو مفاتيح تطبيقك. أشِر إليها في `deploy.yml` تحت `env.secret`. أما المتغيرات غير الحساسة فتوضع تحت `env.clear`.",{"title":57,"body":58},"فعّل الوكيل وSSL","في قسم `proxy` من `deploy.yml`، حدّد `host` الخاص بك (`app.yourdomain.com`) وفعّل `ssl: true`. سيحصل kamal-proxy تلقائيًا على شهادة Let's Encrypt وينهي TLS أمام حاويتك. تأكد من أن DNS يشير بالفعل إلى خادم VPS قبل النشر.",{"title":60,"body":61},"هيّئ الخادم","نفّذ `kamal setup`. يتصل Kamal عبر SSH، ويثبّت Docker عند الحاجة، ويسجّل الدخول إلى السجل، ويبدأ kamal-proxy ثم ينشر النسخة الأولى. هذه هي خطوة الإقلاع الوحيدة: ستكون عمليات النشر اللاحقة أسرع.",{"title":63,"body":64},"انشر وتحقق","عند كل تحديث، نفّذ `kamal deploy`. يبني Kamal الصورة، ويدفعها، ويبدأ الحاويات الجديدة، وينتظر نجاح فحوصات السلامة، ثم يبدّل حركة المرور ويوقف القديمة. اطّلع على الحالة بـ `kamal app logs -f` و`kamal app details`.",{"title":66,"body":67},"أدِر الملحقات (قاعدة بيانات، ذاكرة مؤقتة)","أعلن Postgres أو Redis تحت مفتاح `accessories` في `deploy.yml`، مع صورتها ومنفذها وأحجامها. `kamal accessory boot db` يبدأ الخدمة. بهذا تحتفظ بالمكدّس بأكمله موصوفًا في ملف واحد مُدار بالإصدارات.",{"type":69,"body":70},"tip","إذا أدخل نشرٌ ما تراجعًا في الأداء، فلا تلمس الشفرة: نفّذ `kamal rollback [VERSION]` للعودة فورًا إلى الصورة السابقة، التي ما زالت موجودة على خادم VPS. فكّر أيضًا في استخدام `kamal app exec` لتشغيل مهام عابرة (عمليات ترحيل، أو وحدة تحكم) مباشرةً في الحاوية العاملة، دون فتح جلسة SSH يدوية.","قُد عمليات نشر Kamal الخاصة بك على خادم VPS Cloud من ServOrbit","هيّئ خادم VPS Cloud مع قالب النشر ووصول SSH بالمفتاح: يثبّت Kamal عليه Docker وينشر تطبيقك بلا توقف منذ الأمر الأول.","اطّلع على خوادم VPS Cloud","\u002Fvps-cloud",[76,90,103],{"id":77,"slug":78,"title":79,"excerpt":80,"readTime":81,"views":82,"isPinned":13,"publishedAt":83,"category":84,"categories":85,"featuredImage":22,"bgImage":23,"posterImage":87,"relatedSolution":88},33,"deployer-avec-caprover","انشر تطبيقاتك باستخدام CapRover على خادم VPS","حوّل خادم VPS الخاص بك إلى منصة PaaS مع CapRover: عمليات نشر عبر Git بدفعة واحدة، وشهادات SSL تلقائية، وكتالوج تطبيقات بنقرة واحدة.",7,221,"2026-05-18T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":18},[86],{"id":16,"name":17,"slug":18,"color":19,"icon":18},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-caprover-poster.svg",{"categorySlug":18,"appSlug":89},"caprover",{"id":91,"slug":92,"title":93,"excerpt":94,"readTime":81,"views":95,"isPinned":13,"publishedAt":96,"category":97,"categories":98,"featuredImage":22,"bgImage":23,"posterImage":100,"relatedSolution":101},34,"deployer-avec-dokku","انشر تطبيقاتك باستخدام Dokku على خادم VPS","انشر تطبيقاتك باستخدام Dokku، أصغر منصة PaaS في السوق: git push، وbuildpacks الخاصة بـ Heroku، وشهادات SSL تلقائية على خادم VPS خفيف.",258,"2026-05-17T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":18},[99],{"id":16,"name":17,"slug":18,"color":19,"icon":18},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-dokku-poster.svg",{"categorySlug":18,"appSlug":102},"dokku",{"id":104,"slug":105,"title":106,"excerpt":107,"readTime":81,"views":108,"isPinned":13,"publishedAt":109,"category":110,"categories":111,"featuredImage":22,"bgImage":23,"posterImage":113,"relatedSolution":114},35,"deployer-avec-portainer","انشر تطبيقاتك باستخدام Portainer على خادم VPS","أدِر Docker بصريًا باستخدام Portainer على خادم VPS الخاص بك: حاويات، وstacks، وأحجام (volumes)، وشبكات تُدار من واجهة ويب واضحة.",295,"2026-05-16T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":18},[112],{"id":16,"name":17,"slug":18,"color":19,"icon":18},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-portainer-poster.svg",{"categorySlug":18,"appSlug":115},"portainer",1785097280649]