Despliegue de una aplicación Kotlin en VPS: guía completa paso a paso
Desarrollar en Kotlin es solo la mitad del trabajo. Tarde o temprano surge la pregunta: ¿cómo trasladar la aplicación del entorno local a un servidor real? En este artículo, analizaremos en detalle el despliegue de una aplicación Kotlin (usando Spring Boot como ejemplo) en un VPS. Aprenderá cómo preparar el servidor, compilar el archivo JAR, configurar el inicio automático y garantizar una conexión segura a través de HTTPS. La guía es adecuada tanto para principiantes como para desarrolladores que deseen sistematizar sus conocimientos.
1. Preparación del VPS e instalación del software necesario
Antes de cargar el código, debe preparar el servidor. Recomendamos usar Ubuntu 22.04 LTS o superior. Conéctese al servidor a través de SSH:
ssh root@su-ip-del-servidorActualice la base de paquetes e instale Java (Kotlin se compila a bytecode de JVM, por lo que necesitamos JDK 17 o 21):
sudo apt update && sudo apt upgrade -ysudo apt install openjdk-17-jdk -yjava -versionAsegúrese de que la versión de Java coincida con su compilación. También instale Git (si usa un repositorio) y utilidades para trabajar con archivos:
sudo apt install git unzip curl -yPara trabajar con un proyecto Kotlin en el servidor, no es necesario instalar el compilador Kotlin en sí; realizaremos la compilación localmente o a través de CI/CD. Sin embargo, si planea compilar en el servidor, agregue SDKMAN! y Kotlin:
curl -s "https://get.sdkman.io" | bashsource "$HOME/.sdkman/bin/sdkman-init.sh"sdk install kotlinImportante: En esta etapa, también configure el firewall (UFW) para la seguridad básica:
sudo ufw allow OpenSSHsudo ufw allow 8080/tcp # puerto de la aplicaciónsudo ufw enable2. Compilación de la aplicación Kotlin y transferencia al servidor
Consideremos un proyecto típico de Spring Boot con Kotlin. Realice la compilación del archivo JAR localmente (o en el servidor, si ha clonado el repositorio). En la raíz del proyecto, ejecute:
./gradlew clean bootJarO, si usa Maven:
mvn clean packageDespués de la compilación, en la carpeta build/libs/ (Gradle) o target/ (Maven) aparecerá un archivo con el nombre app-0.0.1-SNAPSHOT.jar. Cópielo al servidor usando SCP:
scp build/libs/app-0.0.1-SNAPSHOT.jar root@su-ip:/opt/myapp/app.jarCree un directorio para la aplicación en el servidor y mueva el JAR:
sudo mkdir -p /opt/myappsudo mv app.jar /opt/myapp/Verifique que el JAR se inicie manualmente:
cd /opt/myappjava -jar app.jar --server.port=8080Si la aplicación se inicia y responde en el puerto 8080, todo está bien. Deténgala (Ctrl+C) y pase a configurar el inicio permanente.
3. Configuración de systemd para inicio automático y monitoreo
Para que la aplicación se inicie automáticamente al reiniciar el servidor y se recupere después de fallos, crearemos un servicio systemd. Cree el archivo:
sudo nano /etc/systemd/system/kotlin-app.serviceInserte la siguiente plantilla (reemplace los parámetros según su aplicación):
[Unit]Description=Kotlin Spring Boot ApplicationAfter=network.target
[Service]Type=simpleUser=rootWorkingDirectory=/opt/myappExecStart=/usr/bin/java -jar /opt/myapp/app.jar --server.port=8080Restart=on-failureRestartSec=10StandardOutput=journalStandardError=journal
[Install]WantedBy=multi-user.targetVuelva a cargar la configuración de systemd e inicie el servicio:
sudo systemctl daemon-reloadsudo systemctl start kotlin-appsudo systemctl status kotlin-appSi el estado es active (running), todo funciona. Agregue el servicio al inicio automático:
sudo systemctl enable kotlin-app