Guía de despliegue

Desplegar una aplicación Spring Boot en un VPS

Desplegar en un VPS Cloud →

Tutorial

Desplegar una aplicación Spring Boot en un VPS

Desarrollo4 min de lectura5 pasos

Spring Boot sigue siendo el estándar para las API y los microservicios Java en la empresa. En lugar de pagar un PaaS facturado según la memoria de la JVM, un VPS le da el control total sobre el heap, el pool de conexiones y el costo mensual. Veamos cómo desplegar correctamente su artefacto en producción.

Contenido· ¿Por qué autoalojar Spring Boot en un VPS?1/5
  1. 01¿Por qué autoalojar Spring Boot en un VPS?
  2. 02Ventajas concretas de un Spring Boot autoalojado
  3. 03Requisitos de hardware y de software
  4. 04Desplegar Spring Boot paso a paso
  5. 05Desplegar Spring Boot con un clic desde el Marketplace de ServOrbit

¿Por qué autoalojar Spring Boot en un VPS?

Las plataformas gestionadas para Java facturan por la RAM reservada e imponen su versión del JDK, lo que complica la optimización de la JVM y la gestión de las conexiones a PostgreSQL. En un VPS, usted controla toda la pila: OpenJDK 21 LTS con sus Virtual Threads, Maven para la compilación, Nginx como frontal y PostgreSQL 16 para los datos. Usted decide los flags de la JVM, el número de hilos, el ajuste del pool de conexiones y la estrategia de despliegue. Para una aplicación Spring Boot en producción, esta transparencia es decisiva: puede perfilar un endpoint lento, ajustar -Xmx por servicio y desplegar una nueva versión sin sobrecostes ocultos.

Ventajas concretas de un Spring Boot autoalojado

  • Control total de PostgreSQL: índices, VACUUM, pool de conexiones y copias de seguridad pg_dump programadas.
  • Virtual Threads (OpenJDK 21 Loom) para Spring WebMVC: cientos de peticiones concurrentes sin reescritura reactiva.
  • Coste fijo y previsible, sea cual sea el tráfico o el volumen de peticiones de API atendidas.
  • Datos y registros bajo su jurisdicción, útil para el cumplimiento normativo y la auditoría.
  • Libertad de versión del JDK y de dependencias del sistema, sin las restricciones de un buildpack.
  • Despliegues reproducibles: un fat JAR, un java -jar, y la aplicación está en línea.

Requisitos de hardware y de software

Para una aplicación Spring Boot con PostgreSQL, prevea como mínimo 2 vCPU y 2 GB de RAM; apunte a 4 GB si ejecuta varios servicios o un pool de conexiones cargado. El sistema operativo recomendado es Ubuntu 24.04 LTS: OpenJDK 21 está en los repositorios oficiales, sin necesidad de ningún PPA. Un nombre de dominio es opcional: sin dominio, un túnel SSH hacia el puerto 8080 basta para el desarrollo y las pruebas. Calcule 10 GB de disco para la JVM, la aplicación, la base de datos y los registros.

Desplegar Spring Boot paso a paso

  1. Instalar OpenJDK 21 y PostgreSQL

    Conéctese por SSH y ejecute apt-get install -y openjdk-21-jdk maven nginx postgresql postgresql-contrib: en Ubuntu 24.04 no hace falta configurar ningún repositorio adicional. ⚠️ Nombre openjdk-21-jdk de forma explícita: el paquete maven solo depende de default-jre-headless, es decir openjdk-21-jre-headless, un entorno de ejecución sin javac. Por eso java -version muestra 21.x y hace creer que todo está listo, mientras que la primera compilación en el servidor falla con No compiler is provided in this environment. Compruebe: javac -version, mvn -version y psql --version (16.x).

  2. Crear la base de datos y el usuario de PostgreSQL

    Conéctese a PostgreSQL con sudo -u postgres psql y ejecute CREATE USER myapp WITH PASSWORD 'ContraseñaSegura'; CREATE DATABASE myappdb OWNER myapp;. Indique spring.datasource.url=jdbc:postgresql://localhost/myappdb en su application.properties.

  3. Compilar y subir el JAR

    Ejecute mvn clean package -DskipTests en local y transfiera después el fat JAR a /var/www/su-app/app.jar mediante scp. Cree un archivo application.properties con sus credenciales de PostgreSQL, spring.datasource.url y server.port=8080.

  4. Crear un servicio systemd

    Cree /etc/systemd/system/su-app.service con ExecStart=/usr/bin/java -jar /var/www/su-app/app.jar, Restart=always, User=www-data. Ejecute systemctl daemon-reload && systemctl enable --now su-app. Compruébelo con systemctl status su-app y journalctl -u su-app -f.

  5. Configurar Nginx y activar el HTTPS

    Cree un bloque de servidor Nginx con proxy_pass http://127.0.0.1:8080; y las cabeceras X-Forwarded-Proto. Ejecute certbot --nginx -d su-dominio.com para obtener un certificado gratuito de Let's Encrypt. Spring Boot escucha únicamente en el puerto interno; Nginx se encarga del TLS.

Utilice los Virtual Threads de Java 21 con Spring MVC para multiplicar el rendimiento sin pasarse a WebFlux: añada spring.threads.virtual.enabled=true en su application.properties. Cada petición HTTP se ejecuta en un hilo virtual ligero, y miles de ellos pueden estar activos a la vez sin saturar el pool de hilos del sistema. ⚠️ La ganancia sigue estando condicionada en OpenJDK 21: un hilo virtual que se bloquea dentro de un bloque synchronized fija su hilo portador en lugar de liberarlo, y esa limitación solo la levanta la JEP 491, en el JDK 24. Así que, antes de esperar una ganancia en cargas limitadas por E/S (llamadas SQL, REST) en un VPS de 2 GB, compruebe que su controlador JDBC haya pasado a ReentrantLock — el de PostgreSQL lo hizo a partir de la 42.6.0 — y mida el pinning con el evento jdk.VirtualThreadPinned mediante JFR en vez de suponerlo.

Desplegar Spring Boot con un clic desde el Marketplace de ServOrbit

El Marketplace de ServOrbit ofrece una plantilla Spring Boot Stack preconfigurada: OpenJDK 21 LTS, Maven, Nginx y PostgreSQL 16 se instalan automáticamente en su VPS desde el momento del pedido. Sin sesión SSH para la instalación básica: llega directamente al paso de subir su JAR. La ficha del marketplace contiene las especificaciones exactas, los casos de uso y una guía de primera configuración.

Despliegue su Spring Boot Stack en unos minutos

La plantilla Spring Boot Stack de ServOrbit instala OpenJDK 21 LTS, Maven, Nginx y PostgreSQL 16 en su VPS. Suba su JAR y empiece de inmediato.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva