Деплой Kotlin приложения на VPS: полное пошаговое руководство
Разработка на Kotlin — это только половина дела. Рано или поздно встаёт вопрос: как перенести приложение из локальной среды на реальный сервер? В этой статье мы подробно разберём деплой Kotlin-приложения (на примере Spring Boot) на VPS. Вы узнаете, как подготовить сервер, собрать JAR-файл, настроить автозапуск и обеспечить безопасное соединение через HTTPS. Руководство подойдёт как для новичков, так и для разработчиков, которые хотят систематизировать свои знания.
1. Подготовка VPS и установка необходимого ПО
Прежде чем загружать код, нужно подготовить сервер. Рекомендуем использовать Ubuntu 22.04 LTS или новее. Подключитесь к серверу через SSH:
ssh root@ваш-ip-сервера
Обновите пакетную базу и установите Java (Kotlin компилируется в байт-код JVM, поэтому нам нужна JDK 17 или 21):
sudo apt update && sudo apt upgrade -y
sudo apt install openjdk-17-jdk -y
java -version
Убедитесь, что версия Java соответствует вашей сборке. Также установите Git (если используете репозиторий) и утилиты для работы с архивами:
sudo apt install git unzip curl -y
Для работы с проектом на Kotlin на сервере не обязательно устанавливать сам Kotlin-компилятор — сборку мы выполним локально или через CI/CD. Однако если вы планируете компилировать на сервере, добавьте SDKMAN! и Kotlin:
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install kotlin
Важно: На этом этапе также настройте файрвол (UFW) для базовой безопасности:
sudo ufw allow OpenSSH
sudo ufw allow 8080/tcp # порт приложения
sudo ufw enable
2. Сборка Kotlin-приложения и перенос на сервер
Рассмотрим типовой проект на Spring Boot с Kotlin. Выполните сборку JAR-файла локально (или на сервере, если клонировали репозиторий). В корне проекта выполните:
./gradlew clean bootJar
Или, если используете Maven:
mvn clean package
После сборки в папке build/libs/ (Gradle) или target/ (Maven) появится файл вида app-0.0.1-SNAPSHOT.jar. Скопируйте его на сервер с помощью SCP:
scp build/libs/app-0.0.1-SNAPSHOT.jar root@ваш-ip:/opt/myapp/app.jar
Создайте на сервере директорию для приложения и переместите JAR:
sudo mkdir -p /opt/myapp
sudo mv app.jar /opt/myapp/
Проверьте, что JAR запускается вручную:
cd /opt/myapp
java -jar app.jar --server.port=8080
Если приложение запустилось и отвечает на порту 8080 — всё в порядке. Остановите его (Ctrl+C) и переходите к настройке постоянного запуска.
3. Настройка systemd для автозапуска и мониторинга
Чтобы приложение автоматически стартовало при перезагрузке сервера и восстанавливалось после сбоев, создадим systemd-сервис. Создайте файл:
sudo nano /etc/systemd/system/kotlin-app.service
Вставьте следующий шаблон (замените параметры под своё приложение):
[Unit]
Description=Kotlin Spring Boot Application
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/java -jar /opt/myapp/app.jar --server.port=8080
Restart=on-failure
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
Перечитайте конфигурацию systemd и запустите сервис:
sudo systemctl daemon-reload
sudo systemctl start kotlin-app
sudo systemctl status kotlin-app
Если статус active (running) — всё работает. Добавьте сервис в автозагрузку:
sudo systemctl enable kotlin-app
Теперь приложение будет запускаться при старте системы. Для просмотра логов используйте:
sudo journalctl -u kotlin-app -f
4. Настройка обратного прокси (Nginx) и SSL
Прямой доступ к приложению через порт 8080 неудобен и небезопасен. Настроим Nginx как прокси-сервер и добавим HTTPS через Let's Encrypt.
Установите Nginx:
sudo apt install nginx -y
Создайте конфигурацию для вашего домена (замените example.com):
sudo nano /etc/nginx/sites-available/kotlin-app
Вставьте базовый конфиг:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Активируйте сайт и перезагрузите Nginx:
sudo ln -s /etc/nginx/sites-available/kotlin-app /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Теперь установите SSL-сертификат с помощью Certbot:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.com
Certbot автоматически обновит конфигурацию Nginx и добавит редирект с HTTP на HTTPS. После установки проверьте сайт через браузер — должен открываться ваш Kotlin-бэкенд по защищённому соединению.
Заключение
Мы разобрали полный цикл деплоя Kotlin-приложения на VPS: от установки Java и сборки JAR до настройки systemd, N