Bereitstellung einer Kotlin-Anwendung auf einem VPS: Schritt für Schritt von A bis Z
Sie haben eine tolle Anwendung in Kotlin (Ktor, Spring Boot oder einfach einen Konsolendienst) geschrieben, und jetzt muss sie auf einem echten Server ausgeführt werden. In diesem Artikel behandeln wir den gesamten Bereitstellungszyklus einer Kotlin-Anwendung auf einem VPS: vom Kauf des Servers und der SSH-Konfiguration bis zum Start über systemd und der Verbindung einer Domain mit HTTPS. Alle Beispiele sind funktionsfähig und auf Ubuntu 22.04 getestet.
1. VPS-Vorbereitung und Verbindung
Mieten Sie zunächst einen VPS (z. B. bei Timeweb, Selectel oder DigitalOcean). Mindestanforderungen: 1 vCPU, 1 GB RAM, 20 GB SSD. Betriebssystem: Ubuntu 22.04 LTS.
Nachdem Sie die IP-Adresse und das Root-Passwort erhalten haben, verbinden Sie sich per SSH:
ssh root@your_server_ipAktualisieren Sie sofort das System und erstellen Sie einen unprivilegierten Benutzer (Arbeiten als Root ist eine schlechte Praxis):
apt update && apt upgrade -yadduser kotlinuserusermod -aG sudo kotlinusersu - kotlinuserRichten Sie SSH-Schlüssel für eine bequeme und sichere Anmeldung ein:
ssh-keygen -t ed25519 -C "your_email@example.com"ssh-copy-id kotlinuser@your_server_ipDeaktivieren Sie nun die Passwortanmeldung in /etc/ssh/sshd_config (Zeile PasswordAuthentication no) und starten Sie SSH neu: sudo systemctl restart sshd.
2. Installation von Java (JRE/JDK) und Erstellung der Anwendung
Kotlin-Anwendungen laufen auf der JVM. Installieren Sie OpenJDK 17 oder 21 (empfohlen für moderne Projekte):
sudo apt install openjdk-17-jdk -yjava -versionErstellen Sie nun auf Ihrem lokalen Computer (auf dem entwickelt wird) die Anwendung als JAR-Datei. Für Gradle (Ktor oder Spring Boot):
./gradlew clean buildDie fertige JAR-Datei befindet sich in build/libs/. Zum Beispiel myapp-1.0.0.jar. Laden Sie sie auf den Server hoch:
scp build/libs/myapp-1.0.0.jar kotlinuser@your_server_ip:~/app/Erstellen Sie auf dem Server die Ordnerstruktur:
mkdir -p ~/app/logs ~/app/configLegen Sie die Konfigurationsdateien (application.conf, application.yml) in ~/app/config/ ab. Überprüfen Sie, ob die Anwendung manuell startet:
cd ~/appjava -jar myapp-1.0.0.jar --spring.config.location=file:./config/Wenn alles funktioniert, fahren Sie mit dem automatischen Start fort.
3. Konfiguration von systemd für den Autostart
Damit die Anwendung nach einem Neustart des Servers automatisch startet und bei Fehlern nicht abstürzt, erstellen wir einen systemd-Dienst.
Erstellen Sie die Datei /etc/systemd/system/kotlin-app.service:
sudo nano /etc/systemd/system/kotlin-app.serviceFügen Sie den folgenden Inhalt ein (ersetzen Sie die Pfade durch Ihre eigenen):
[Unit]Description=Kotlin Application ServiceAfter=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.targetErklärung der wichtigsten Parameter:
- User — von wem ausgeführt werden soll (nicht root);
- ExecStart — vollständiger Startbefehl mit Angabe der Konfiguration;
- Restart=on-failure — automatischer Neustart bei Absturz;
- StandardOutput/Error — Protokollierung in Dateien.
Aktivieren Sie den Dienst:
sudo systemctl daemon-reloadsudo systemctl enable kotlin-app.servicesudo systemctl start kotlin-app.serviceÜberprüfen Sie den Status:
sudo systemctl status kotlin-app.service