Деплой Kotlin приложения на VPS: пошаговое руководство

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Деплой 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

Блоги

Рекомендаций по книгам