Install Java
sudo apt install -y openjdk-21-jdk
java --versionDeploy a Spring Boot Application
# Build locally
./mvnw clean package -DskipTests
# Upload the JAR
scp target/myapp-0.0.1.jar root@your-server:/opt/myapp/Create a Systemd Service
[Unit]
Description=Spring Boot Application
After=network.target
[Service]
User=www-data
ExecStart=/usr/bin/java -jar /opt/myapp/myapp-0.0.1.jar --server.port=8080
SuccessExitStatus=143
Restart=on-failure
RestartSec=10
Environment=SPRING_PROFILES_ACTIVE=production
Environment=JAVA_OPTS=-Xms256m -Xmx512m
[Install]
WantedBy=multi-user.targetsudo systemctl enable --now myappNginx Reverse Proxy
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://localhost: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;
}
}JVM Memory Tuning
| Server RAM | Recommended JVM Heap |
|---|---|
| 1 GB | -Xms128m -Xmx256m |
| 2 GB | -Xms256m -Xmx512m |
| 4 GB | -Xms512m -Xmx1536m |
SSL and Deployment
sudo certbot --nginx -d example.comFor automated deployment, consider using GitHub Actions to build the JAR and SCP it to the server, then restart the service.