[{"data":1,"prerenderedAt":117},["ShallowReactive",2],{"seo-verification":3,"blog-deployer-spring-boot-vps-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":21,"featuredImage":23,"bgImage":24,"posterImage":25,"relatedSolution":26,"intro":28,"sections":29,"ctaTitle":72,"ctaBody":73,"ctaButton":74,"ctaUrl":75,"relatedPosts":76},50,"deployer-spring-boot-vps","نشر تطبيق Spring Boot على خادم VPS","انشر تطبيق Spring Boot على خادم VPS Cloud مع Docker وملفّ JAR قابل للتنفيذ وNginx وSSL. دليل شامل لمطوّري Java.",8,250,false,"2026-05-01T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":20},4,"التطوير","developpement","bg-warning\u002F10 text-warning","dev",[22],{"id":16,"name":17,"slug":18,"color":19,"icon":20},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fdeployer-spring-boot-vps-poster.svg",{"categorySlug":18,"appSlug":27},"spring-boot","يظلّ Spring Boot المعيار لواجهات برمجة التطبيقات (API) والخدمات المصغّرة بلغة Java في المؤسسات. فبدلًا من دفع رسوم منصّة PaaS تُحتسب بحسب ذاكرة JVM، يمنحك خادم VPS تحكّمًا كاملًا في الكومة (heap) ومجمّع الاتصالات والتكلفة الشهرية. إليك كيفية نشر أثرك (artifact) في بيئة الإنتاج بشكل نظيف.",[30,34,44,47,69],{"type":31,"title":32,"body":33},"h2","لماذا الاستضافة الذاتية لـ Spring Boot على خادم VPS","يتضمّن تطبيق Spring Boot خادمه الخاص (Tomcat أو Undertow) ويُسلَّم على هيئة ملفّ JAR قابل للتنفيذ ومستقلّ. وهذا مثالي لخادم VPS: ملفّ `app.jar` واحد، وآلة JVM واحدة، وأنت جاهز للعمل. تفرض منصّات PaaS مثل Heroku أو الحاويات المُدارة رسومًا على كلّ شريحة 512 ميجابايت من الذاكرة، في حين أنّ JVM شرهة عند الإقلاع. على خادم VPS، تضبط `-Xmx` بنفسك، وتشارك قاعدة بيانات PostgreSQL وواجهة API على الآلة نفسها، وتتحكّم في الإحماء البارد دون مهلة زمنية مفروضة. كما تحتفظ بالسيطرة على إصدار JDK المحدّد (Temurin 21 LTS وGraalVM) وعلى معاملات GC، وهو أمر نادرًا ما يكون ممكنًا في بيئة مُدارة.",{"type":35,"title":36,"items":37},"ul","الفوائد الملموسة",[38,39,40,41,42,43],"تحكّم كامل في كومة JVM (`-Xmx` و`-Xms`) وفي جامع المهملات وفقًا لحملك الفعلي","قاعدة بيانات PostgreSQL وواجهة API في الموقع نفسه: زمن استجابة شبكي شبه معدوم بين التطبيق والبيانات","تكلفة شهرية ثابتة وقابلة للتوقّع، دون فرض رسوم على شريحة الذاكرة أو زمن الحوسبة","حرّية اختيار JDK: Temurin 21 LTS أو GraalVM native-image أو Azul Zulu حسب احتياجاتك","لا إقلاع بارد مفروض: تبقى خدمتك ساخنة على مدار الساعة طوال الأسبوع لأزمنة استجابة مستقرّة","Actuator وMicrometer وPrometheus مكشوفة بحرّية لمراقبة دقيقة دون تكلفة إضافية",{"type":31,"title":45,"body":46},"المتطلّبات العتادية والبرمجية","تعمل واجهة Spring Boot مع قاعدة بيانات بارتياح على خادم VPS بمعالجين افتراضيين (2 vCPU) و4 جيجابايت من الذاكرة (احسب 1 إلى 1.5 جيجابايت لـ JVM، والباقي لـ PostgreSQL والنظام). أمّا لخدمة مصغّرة خفيفة دون ORM ثقيل، فإنّ 2 جيجابايت تكفي لكنّها تبقى ضيّقة عند الإقلاع. ثبّت Docker وDocker Compose، وJDK 21 إذا كنت تُصرّف على الخادم (وإلّا فابنِ ملفّ JAR في CI وأرسل الأثر فقط)، ووجّه اسم نطاق من نوع `api.mydomain.com` نحو عنوان IP الخاص بخادم VPS عبر سجلّ A. جهّز 10 جيجابايت من القرص كحدّ أدنى لصور Docker والسجلّات.",{"type":48,"title":49,"steps":50},"steps","النشر خطوة بخطوة",[51,54,57,60,63,66],{"title":52,"body":53},"بناء ملفّ JAR القابل للتنفيذ","شغّل `.\u002Fmvnw clean package -DskipTests` (أو `.\u002Fgradlew bootJar`). تحصل على ملفّ في `target\u002Fapp.jar` يتضمّن Tomcat وجميع التبعيات. تحقّق محليًا باستخدام `java -jar target\u002Fapp.jar` قبل أيّ إرسال.",{"title":55,"body":56},"الحوسبة في حاوية عبر ملفّ Dockerfile متعدّد المراحل","استخدم `eclipse-temurin:21-jre-alpine` كصورة نهائية وانسخ ملفّ JAR فقط. يقلّص البناء متعدّد المراحل (`maven:3.9-eclipse-temurin-21` للتصريف، وJRE للتنفيذ) حجم الصورة من 700 ميجابايت إلى نحو 250 ميجابايت. اكشف المنفذ 8080.",{"title":58,"body":59},"تنسيق التطبيق + PostgreSQL باستخدام Docker Compose","صرّح عن خدمتين في `docker-compose.yml`: `app` و`db` (الصورة `postgres:16`). مرّر بيانات الاعتماد عبر متغيّرات البيئة (`SPRING_DATASOURCE_URL` و`SPRING_DATASOURCE_USERNAME`) واربطهما عبر شبكة داخلية. شغّل `docker compose up -d`.",{"title":61,"body":62},"إعداد Nginx كوكيل عكسي","ثبّت Nginx وأنشئ مضيفًا افتراضيًا يقوم بـ `proxy_pass http:\u002F\u002F127.0.0.1:8080;`. أضف الترويستين `X-Forwarded-For` و`X-Forwarded-Proto` كي يكتشف Spring بشكل صحيح HTTPS خلف الوكيل (`server.forward-headers-strategy=framework`).",{"title":64,"body":65},"تفعيل HTTPS باستخدام Certbot","شغّل `certbot --nginx -d api.mydomain.com` للحصول على شهادة Let's Encrypt وتثبيتها. يتولّى مؤقّت systemd الخاص بـ Certbot التجديد التلقائي. افرض إعادة التوجيه من HTTP إلى HTTPS في المضيف الافتراضي.",{"title":67,"body":68},"جعل إعادة التشغيل موثوقة","أضف `restart: unless-stopped` إلى خدمات Compose الخاصة بك واضبط فحص السلامة الخاص بـ Actuator (`\u002Factuator\u002Fhealth`) كمِسبار لـ Docker. وبهذا يُعيد التطبيق تشغيل نفسه بعد إعادة إقلاع خادم VPS أو تعطّل JVM.",{"type":70,"body":71},"tip","صرّف تطبيقك إلى صورة أصلية (native) باستخدام GraalVM (`.\u002Fmvnw -Pnative native:compile` عبر Spring Boot 3): يبدأ الملفّ الثنائي في أقل من 100 ms ويستهلك ذاكرة أقل بثلاث إلى خمس مرّات من JVM التقليدية. وهذا أمر حاسم على خادم VPS صغير حيث تُحسب كلّ مئة ميجابايت. كما يجدر بك تحديد الكومة صراحةً باستخدام `JAVA_OPTS=-Xmx512m` في Compose لمنع JVM من المطالبة بكامل الذاكرة المتاحة.","انشر واجهة Spring Boot الخاصة بك في بضع دقائق","يوفّر خادم VPS Cloud من ServOrbit بيئة Docker جاهزة للاستخدام، مع موارد مخصّصة وعنوان IP ثابت، لتشغيل ملفّ JAR الخاص بـ Spring Boot في بيئة الإنتاج دون إعداد نظام مُرهق.","اكتشف خادم VPS Cloud","\u002Fvps-cloud",[77,91,104],{"id":78,"slug":79,"title":80,"excerpt":81,"readTime":82,"views":83,"isPinned":13,"publishedAt":84,"category":85,"categories":86,"featuredImage":23,"bgImage":24,"posterImage":88,"relatedSolution":89},5,"deployer-laravel-vps","نشر Laravel على خادم VPS: دليل الإنتاج","انقل Laravel إلى بيئة الإنتاج على خادم VPS: PHP وworkers والذاكرة المؤقتة وقاعدة البيانات وreverse proxy وHTTPS مُهيّأة بشكل نظيف.",7,2840,"2026-02-09T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":20},[87],{"id":16,"name":17,"slug":18,"color":19,"icon":20},"\u002Fblog\u002Fcovers\u002Fdeployer-laravel-vps-poster.svg",{"categorySlug":20,"appSlug":90},"laravel-stack",{"id":92,"slug":93,"title":94,"excerpt":95,"readTime":11,"views":96,"isPinned":13,"publishedAt":97,"category":98,"categories":99,"featuredImage":23,"bgImage":24,"posterImage":101,"relatedSolution":102},43,"deployer-nodejs-vps","نشر تطبيق Node.js على VPS","انشر تطبيق Node.js في بيئة الإنتاج على VPS: PM2 وبروكسي عكسي Nginx وشهادة SSL من Let's Encrypt وبدء تشغيل تلقائي عند الإقلاع.",591,"2026-05-08T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":20},[100],{"id":16,"name":17,"slug":18,"color":19,"icon":20},"\u002Fblog\u002Fcovers\u002Fdeployer-nodejs-vps-poster.svg",{"categorySlug":18,"appSlug":103},"nodejs",{"id":105,"slug":106,"title":107,"excerpt":108,"readTime":11,"views":109,"isPinned":13,"publishedAt":110,"category":111,"categories":112,"featuredImage":23,"bgImage":24,"posterImage":114,"relatedSolution":115},44,"deployer-django-vps","نشر تطبيق Django على VPS","انشر Django على VPS: Gunicorn وNginx وPostgreSQL وDocker وSSL. دليل كامل لمطوّري Python الراغبين في الاستضافة الذاتية.",628,"2026-05-07T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":20},[113],{"id":16,"name":17,"slug":18,"color":19,"icon":20},"\u002Fblog\u002Fcovers\u002Fdeployer-django-vps-poster.svg",{"categorySlug":18,"appSlug":116},"django",1785097282863]