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é.
Bénéfices concrets d'un Spring Boot auto-hébergé
- 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.
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.
Déployer Spring Boot étape par étape
Installer OpenJDK 21 et PostgreSQL
Connectez-vous en SSH et exécutez apt-get install -y maven nginx postgresql postgresql-contrib. Maven tire OpenJDK 21 LTS comme dépendance — aucune configuration de dépôt supplémentaire sur Ubuntu 24.04. Vérifiez : java -version (21.x), mvn -version et psql --version (16.x).
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://localhost/myappdb dans votre application.properties.
Construire et déposer le JAR
Exécutez mvn clean package -DskipTests en local, puis transférez le fat JAR vers /var/www/votre-app/app.jar via scp. Créez un fichier application.properties avec vos identifiants PostgreSQL, spring.datasource.url, et server.port=8080.
Créer un service systemd
Créez /etc/systemd/system/votre-app.service contenant ExecStart=/usr/bin/java -jar /var/www/votre-app/app.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.
Configurer Nginx et activer le HTTPS
Créez un bloc serveur Nginx avec proxy_pass http://127.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.
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. Idéal pour les workloads I/O-bound (appels SQL, REST) sur un VPS de 2 Go.
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.