[{"data":1,"prerenderedAt":138},["ShallowReactive",2],{"seo-verification":3,"blog-deployer-spring-boot-vps-ma-fr":6,"promo-bar-likely":137},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-deployer-spring-boot-vps-ma-fr",{"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":32,"intro":34,"sections":35,"ctaTitle":78,"ctaBody":79,"ctaButton":80,"ctaUrl":81,"relatedPosts":82},50,"deployer-spring-boot-vps",{"fr":10,"en":12,"ar":13,"es":14},"deploying-a-spring-boot-application-on-a-vps","نشر-تطبيق-spring-boot-على-خادم-vps","desplegar-spring-boot-en-un-vps","Déployer une application Spring Boot sur un VPS","Déployez une application Spring Boot sur un VPS Cloud : fat JAR, service systemd, Nginx et SSL, avec OpenJDK 21 et PostgreSQL 16. Guide complet pour développeurs Java.",4,2,false,"2026-05-01T00:00:00+00:00","2026-11-04T16:30:25+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},"Développement","developpement","bg-warning\u002F10 text-warning","dev",[28],{"id":17,"name":23,"slug":24,"color":25,"icon":26},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fdeployer-spring-boot-vps-poster.svg",{"categorySlug":24,"appSlug":33},"spring-boot-stack","Spring Boot reste le standard pour les API et microservices Java en entreprise. Plutôt que de payer une PaaS facturée à la mémoire JVM, un VPS vous donne le contrôle total sur l'heap, le pool de connexions et le coût mensuel. Voici comment déployer proprement votre artefact en production.",[36,40,50,53,72,75],{"type":37,"title":38,"body":39},"h2","Pourquoi self-héberger Spring Boot sur un VPS ?","Les plateformes managées pour Java facturent à la RAM réservée et imposent leur version de JDK, ce qui complique l'optimisation de la JVM et la gestion des connexions PostgreSQL. Sur un VPS, vous maîtrisez la stack complète : OpenJDK 21 LTS avec ses Virtual Threads, Maven pour le build, Nginx en frontal et PostgreSQL 16 pour les données. Vous décidez des flags JVM, du nombre de threads, du tuning du pool de connexions et de la stratégie de déploiement. Pour une application Spring Boot en production, cette transparence est décisive : vous pouvez profiler un endpoint lent, ajuster `-Xmx` par service et déployer une nouvelle version sans surcoût caché.",{"type":41,"title":42,"items":43},"ul","Bénéfices concrets d'un Spring Boot auto-hébergé",[44,45,46,47,48,49],"Contrôle total de PostgreSQL : index, VACUUM, pool de connexions et sauvegardes pg_dump planifiées.","Virtual Threads (OpenJDK 21 Loom) pour Spring WebMVC : des centaines de requêtes concurrentes sans réécriture réactive.","Coût fixe et prévisible, peu importe le trafic ou le volume de requêtes API traitées.","Données et logs sous votre juridiction, utile pour la conformité et l'audit.","Liberté de version JDK et de dépendances système sans contraintes de buildpack.","Déploiements reproductibles : un fat JAR, un `java -jar`, et l'application est en ligne.",{"type":37,"title":51,"body":52},"Prérequis matériels et logiciels","Pour une application Spring Boot avec PostgreSQL, prévoyez au minimum 2 vCPU et 2 Go de RAM ; visez 4 Go si vous faites tourner plusieurs services ou un pool de connexions chargé. L'OS recommandé est Ubuntu 24.04 LTS — OpenJDK 21 est dans les dépôts officiels, aucun PPA requis. Un nom de domaine est optionnel : sans domaine, un tunnel SSH vers le port 8080 suffit pour le développement et les tests. Comptez 10 Go de disque pour la JVM, l'application, la base et les logs.",{"type":54,"title":55,"steps":56},"steps","Déployer Spring Boot étape par étape",[57,60,63,66,69],{"title":58,"body":59},"Installer OpenJDK 21 et PostgreSQL","Connectez-vous en SSH et exécutez `apt-get install -y openjdk-21-jdk maven nginx postgresql postgresql-contrib` — aucune configuration de dépôt supplémentaire sur Ubuntu 24.04. ⚠️ Nommez `openjdk-21-jdk` explicitement : le paquet `maven` ne dépend que de `default-jre-headless`, c'est-à-dire `openjdk-21-jre-headless`, un environnement d'exécution sans `javac`. C'est pourquoi `java -version` affiche bien 21.x et laisse croire que tout est en place, pendant que le premier build lancé sur le serveur échoue sur `No compiler is provided in this environment`. Vérifiez : `javac -version`, `mvn -version` et `psql --version` (16.x).",{"title":61,"body":62},"Créer la base et l'utilisateur PostgreSQL","Connectez-vous à PostgreSQL en `sudo -u postgres psql` et exécutez `CREATE USER myapp WITH PASSWORD 'MotDePasseFort'; CREATE DATABASE myappdb OWNER myapp;`. Renseignez `spring.datasource.url=jdbc:postgresql:\u002F\u002Flocalhost\u002Fmyappdb` dans votre `application.properties`.",{"title":64,"body":65},"Construire et déposer le JAR","Exécutez `mvn clean package -DskipTests` en local, puis transférez le fat JAR vers `\u002Fvar\u002Fwww\u002Fvotre-app\u002Fapp.jar` via `scp`. Créez un fichier `application.properties` avec vos identifiants PostgreSQL, `spring.datasource.url`, et `server.port=8080`.",{"title":67,"body":68},"Créer un service systemd","Créez `\u002Fetc\u002Fsystemd\u002Fsystem\u002Fvotre-app.service` contenant `ExecStart=\u002Fusr\u002Fbin\u002Fjava -jar \u002Fvar\u002Fwww\u002Fvotre-app\u002Fapp.jar`, `Restart=always`, `User=www-data`. Exécutez `systemctl daemon-reload && systemctl enable --now votre-app`. Vérifiez avec `systemctl status votre-app` et `journalctl -u votre-app -f`.",{"title":70,"body":71},"Configurer Nginx et activer le HTTPS","Créez un bloc serveur Nginx avec `proxy_pass http:\u002F\u002F127.0.0.1:8080;` et les en-têtes `X-Forwarded-Proto`. Exécutez `certbot --nginx -d votre-domaine.com` pour un certificat Let's Encrypt gratuit. Spring Boot écoute uniquement sur le port interne ; Nginx gère le TLS.",{"type":73,"body":74},"tip","Utilisez les Virtual Threads de Java 21 avec Spring MVC pour multiplier le débit sans passer à WebFlux : ajoutez `spring.threads.virtual.enabled=true` dans votre `application.properties`. Chaque requête HTTP s'exécute dans un thread virtuel léger — des milliers peuvent être actifs simultanément sans saturer le pool de threads système. ⚠️ Le gain reste conditionnel sur OpenJDK 21 : un thread virtuel qui se bloque à l'intérieur d'un bloc `synchronized` épingle son thread porteur au lieu de le libérer, et cette limite n'est levée que par JEP 491, dans le JDK 24. Avant d'attendre un gain sur des charges I\u002FO-bound (appels SQL, REST) sur un VPS de 2 Go, vérifiez donc que votre pilote JDBC est passé à `ReentrantLock` — celui de PostgreSQL l'a fait à partir de la 42.6.0 — et mesurez l'épinglage avec l'événement `jdk.VirtualThreadPinned` via JFR au lieu de le supposer.",{"type":37,"title":76,"body":77},"Déployer Spring Boot en un clic depuis le Marketplace ServOrbit","Le Marketplace ServOrbit propose un template Spring Boot Stack préconfiguré : OpenJDK 21 LTS, Maven, Nginx et PostgreSQL 16 sont installés automatiquement sur votre VPS dès la commande. Pas de session SSH pour l'installation de base — vous arrivez directement à l'étape de déposer votre JAR. La fiche marketplace contient les spécifications exactes, les cas d'usage et un guide de première configuration.","Déployez votre Spring Boot Stack en quelques minutes","Le template Spring Boot Stack ServOrbit installe OpenJDK 21 LTS, Maven, Nginx et PostgreSQL 16 sur votre VPS. Déposez votre JAR et commencez immédiatement.","Déployer Spring Boot Stack","\u002Fapplications\u002Fdeveloppement\u002Fspring-boot-stack",[83,101,119],{"id":84,"slug":85,"slugs":86,"title":90,"excerpt":91,"readTime":17,"views":92,"isPinned":19,"noindex":19,"publishedAt":93,"updatedAt":94,"category":95,"categories":96,"featuredImage":29,"bgImage":30,"posterImage":98,"relatedSolution":99},5,"deployer-laravel-vps",{"fr":85,"en":87,"ar":88,"es":89},"deploying-laravel-on-a-vps-a-production-guide","نشر-laravel-على-خادم-vps-دليل-الإنتاج","desplegar-laravel-en-un-vps","Déployer Laravel sur un VPS : guide production","Passez Laravel en production sur VPS : PHP, workers, cache, base de données, reverse proxy et HTTPS proprement configurés.",1,"2026-02-09T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},[97],{"id":17,"name":23,"slug":24,"color":25,"icon":26},"\u002Fblog\u002Fcovers\u002Fdeployer-laravel-vps-poster.svg",{"categorySlug":26,"appSlug":100},"laravel-stack",{"id":102,"slug":103,"slugs":104,"title":108,"excerpt":109,"readTime":110,"views":92,"isPinned":19,"noindex":19,"publishedAt":111,"updatedAt":112,"category":113,"categories":114,"featuredImage":29,"bgImage":30,"posterImage":116,"relatedSolution":117},43,"deployer-nodejs-vps",{"fr":103,"en":105,"ar":106,"es":107},"deploy-a-nodejs-application-on-a-vps","نشر-تطبيق-nodejs-على-vps","desplegar-una-aplicacion-nodejs-en-un-vps","Déployer une application Node.js sur un VPS","Déployez une application Node.js en production sur un VPS : PM2, reverse proxy Nginx, SSL Let's Encrypt et démarrage automatique au boot.",8,"2026-05-08T00:00:00+00:00","2026-11-08T01:13:12+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},[115],{"id":17,"name":23,"slug":24,"color":25,"icon":26},"\u002Fblog\u002Fcovers\u002Fdeployer-nodejs-vps-poster.svg",{"categorySlug":24,"appSlug":118},"nodejs-stack",{"id":120,"slug":121,"slugs":122,"title":126,"excerpt":127,"readTime":128,"views":129,"isPinned":19,"noindex":19,"publishedAt":130,"updatedAt":21,"category":131,"categories":132,"featuredImage":29,"bgImage":30,"posterImage":134,"relatedSolution":135},44,"deployer-django-vps",{"fr":121,"en":123,"ar":124,"es":125},"deploy-a-django-application-on-a-vps","نشر-تطبيق-django-على-vps","desplegar-una-aplicacion-django-en-un-vps","Déployer une application Django sur un VPS","Déployez Django sur un VPS : Gunicorn, Nginx, PostgreSQL, Docker et SSL. Guide complet pour développeurs Python qui veulent self-héberger.",3,7,"2026-05-07T00:00:00+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},[133],{"id":17,"name":23,"slug":24,"color":25,"icon":26},"\u002Fblog\u002Fcovers\u002Fdeployer-django-vps-poster.svg",{"categorySlug":24,"appSlug":136},"django",true,1794270698881]