Despliegue de una aplicación Kotlin en VPS: guía paso a paso de principio a fin

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Despliegue de una aplicación Kotlin en VPS: paso a paso de principio a fin



Has escrito una aplicación genial en Kotlin (Ktor, Spring Boot o simplemente un servicio de consola), y ahora necesitas ejecutarla en un servidor real. En este artículo, analizaremos el ciclo completo de despliegue de una aplicación Kotlin en VPS: desde la compra del servidor y la configuración de SSH hasta la ejecución mediante systemd y la conexión de un dominio con HTTPS. Todos los ejemplos son funcionales, probados en Ubuntu 22.04.



1. Preparación del VPS y conexión



Lo primero es alquilar un VPS (por ejemplo, en Timeweb, Selectel o DigitalOcean). Requisitos mínimos: 1 vCPU, 1 GB RAM, 20 GB SSD. Sistema operativo: Ubuntu 22.04 LTS.



Después de obtener la dirección IP y la contraseña de root, nos conectamos por SSH:



ssh root@tu_ip_del_servidor


Actualizamos el sistema inmediatamente y creamos un usuario no privilegiado (trabajar como root es una mala práctica):



apt update && apt upgrade -yadduser kotlinuserusermod -aG sudo kotlinusersu - kotlinuser


Configura las claves SSH para un acceso cómodo y seguro:



ssh-keygen -t ed25519 -C "tu_email@example.com"ssh-copy-id kotlinuser@tu_ip_del_servidor


Ahora desactiva el acceso por contraseña en /etc/ssh/sshd_config (línea PasswordAuthentication no) y reinicia SSH: sudo systemctl restart sshd.



2. Instalación de Java (JRE/JDK) y compilación de la aplicación



Las aplicaciones Kotlin se ejecutan en la JVM. Instala OpenJDK 17 o 21 (recomendado para proyectos modernos):



sudo apt install openjdk-17-jdk -yjava -version


Ahora, en tu computadora local (donde desarrollas), compila la aplicación en un archivo JAR. Para Gradle (Ktor o Spring Boot):



./gradlew clean build


El archivo JAR listo estará en build/libs/. Por ejemplo, myapp-1.0.0.jar. Cárgalo al servidor:



scp build/libs/myapp-1.0.0.jar kotlinuser@tu_ip_del_servidor:~/app/


Crea la estructura de carpetas en el servidor:



mkdir -p ~/app/logs ~/app/config


Coloca los archivos de configuración (application.conf, application.yml) en ~/app/config/. Verifica que la aplicación se inicie manualmente:



cd ~/appjava -jar myapp-1.0.0.jar --spring.config.location=file:./config/


Si todo funciona, pasamos al inicio automático.



3. Configuración de systemd para inicio automático



Para que la aplicación se inicie automáticamente después de reiniciar el servidor y no se caiga ante errores, crearemos un servicio systemd.



Crea el archivo /etc/systemd/system/kotlin-app.service:



sudo nano /etc/systemd/system/kotlin-app.service


Inserta el siguiente contenido (reemplaza las rutas con las tuyas):



[Unit]Description=Servicio de Aplicación KotlinAfter=network.target

[Service]Type=simpleUser=kotlinuserWorkingDirectory=/home/kotlinuser/appExecStart=/usr/bin/java -jar /home/kotlinuser/app/myapp-1.0.0.jar --spring.config.location=file:/home/kotlinuser/app/config/Restart=on-failureRestartSec=10StandardOutput=append:/home/kotlinuser/app/logs/app.logStandardError=append:/home/kotlinuser/app/logs/error.log

[Install]WantedBy=multi-user.target


Explicación de los parámetros clave:

  • User — desde qué usuario ejecutar (no root);
  • ExecStart — comando completo de inicio con la configuración indicada;
  • Restart=on-failure — reinicio automático en caso de fallo;
  • StandardOutput/Error — registro en archivos.


Activamos el servicio:



sudo systemctl daemon-reloadsudo systemctl enable kotlin-app.servicesudo systemctl start kotlin-app.service


Verificamos el estado:



sudo systemctl status kotlin-app.service

Blogs

Book Recommendations