Implantação de aplicação Kotlin em VPS: passo a passo do A ao Z
Você escreveu uma aplicação incrível em Kotlin (Ktor, Spring Boot ou apenas um serviço de console), e agora precisa executá-la em um servidor real. Neste artigo, vamos abordar o ciclo completo de implantação de uma aplicação Kotlin em VPS: desde a compra do servidor e configuração SSH até a execução via systemd e conexão do domínio com HTTPS. Todos os exemplos são funcionais, testados no Ubuntu 22.04.
1. Preparação do VPS e conexão
Primeiro, alugue um VPS (por exemplo, na Timeweb, Selectel ou DigitalOcean). Requisitos mínimos: 1 vCPU, 1 GB RAM, 20 GB SSD. Sistema operacional — Ubuntu 22.04 LTS.
Após receber o endereço IP e a senha root, conecte-se via SSH:
ssh root@seu_ip_do_servidorAtualize o sistema imediatamente e crie um usuário não privilegiado (trabalhar como root é uma má prática):
apt update && apt upgrade -yadduser kotlinuserusermod -aG sudo kotlinusersu - kotlinuserConfigure chaves SSH para acesso conveniente e seguro:
ssh-keygen -t ed25519 -C "seu_email@exemplo.com"ssh-copy-id kotlinuser@seu_ip_do_servidorAgora desative o login por senha em /etc/ssh/sshd_config (linha PasswordAuthentication no) e reinicie o SSH: sudo systemctl restart sshd.
2. Instalação do Java (JRE/JDK) e compilação da aplicação
Aplicações Kotlin rodam na JVM. Instale o OpenJDK 17 ou 21 (recomendado para projetos modernos):
sudo apt install openjdk-17-jdk -yjava -versionAgora, no seu computador local (onde você desenvolve), compile a aplicação em um arquivo JAR. Para Gradle (Ktor ou Spring Boot):
./gradlew clean buildO arquivo JAR pronto estará em build/libs/. Por exemplo, myapp-1.0.0.jar. Envie-o para o servidor:
scp build/libs/myapp-1.0.0.jar kotlinuser@seu_ip_do_servidor:~/app/Crie a estrutura de pastas no servidor:
mkdir -p ~/app/logs ~/app/configColoque os arquivos de configuração (application.conf, application.yml) em ~/app/config/. Verifique se a aplicação inicia manualmente:
cd ~/appjava -jar myapp-1.0.0.jar --spring.config.location=file:./config/Se tudo funcionar — vamos para a inicialização automática.
3. Configuração do systemd para inicialização automática
Para que a aplicação inicie automaticamente após a reinicialização do servidor e não pare em caso de erros, vamos criar um serviço systemd.
Crie o arquivo /etc/systemd/system/kotlin-app.service:
sudo nano /etc/systemd/system/kotlin-app.serviceInsira o seguinte conteúdo (substitua os caminhos pelos seus):
[Unit]Description=Serviço da Aplicação 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.targetExplicação dos parâmetros principais:
- User — de quem executar (não root);
- ExecStart — comando completo de inicialização com indicação do config;
- Restart=on-failure — reinicialização automática em caso de falha;
- StandardOutput/Error — registro em arquivos de log.
Ativamos o serviço:
sudo systemctl daemon-reloadsudo systemctl enable kotlin-app.servicesudo systemctl start kotlin-app.serviceVerificamos o status:
sudo systemctl status kotlin-app.service