Minecraft Server Setup

11 July 2025




Hardware

Raspberry Pi 5

IP address and hostname

192.168.3.75 minecraft

Install Java

dhw@minecraft$ sudo mkdir /opt/java

dhw@minecraft/opt/java$ sudo wget https://download.java.net/java/GA/jdk23.0.2/6da2a6609d6e406f85c491fcb119101b/7/GPL/openjdk-23.0.2_linux-aarch64_bin.tar.gz

dhw@minecraft/opt/java/$ sudo tar -zxvf openjdk-23.0.2_linux-aarch64_bin.tar.gz

dhw@minecraft/opt/java/$ sudo update-alternatives --install /usr/bin/java java /opt/java/jdk-23.0.2/bin/java 1

dhw@minecraft/opt/java/$ sudo update-alternatives --config java

select java version you want to run (1)

Download new paperMC server

dhw@minecraft/opt/$ sudo mkdir minecraft

dhw@minecraft/opt/$ sudo chown dhw minecraft

dhw@minecraft/opt/$ sudo chgrp dhw minecraft

dhw@minecraft/opt/$ cd minecraft

dhw@minecraft/opt/minecraft/$ wget https://api.papermc.io/v2/projects/paper/versions/1.21.6/builds/27/downloads/paper-1.21.6-27.jar

dhw@minecraft/opt/minecraft/$ cp paper-1.21.4-221.jar server.jar

dhw@minecraft/opt/minecraft/$ java -jar server.jar nogui

Install Tmux

dhw@minecraft-server$ sudo apt-get install tmux

Set time zone

dhw@minecraft$ timedatectl set-timezone America/Los_Angeles

Generate passphraseless ssh key

dhw@minecraft$ ssh-keygen -t ed25519 <no passphrase>

Add key to gmktec (backup box)

dhw@minecraft$ sudo nano /etc/hosts   * add 192.168.3.77 gmktec

dhw@minecraft$ cd .ssh

dhw@minecraft$ ssh-copy-id -i id_ed25519 dhw@gmktec

Either start Minecraft Server in a tmux session

dhw@minecraft$ tmux new -s minecraft
dhw@minecraft$ cd /opt/minecraft
dhw@minecraft$ java -Xms8192M -Xmx8192M -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:+ParallelRefProcEnabled -XX:+PerfDisableSharedMem -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1HeapRegionSize=8M -XX:G1HeapWastePercent=5 -XX:G1MaxNewSizePercent=40 -XX:G1MixedGCCountTarget=4 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1NewSizePercent=30 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:G1ReservePercent=20 -XX:InitiatingHeapOccupancyPercent=15 -XX:MaxGCPauseMillis=200 -XX:MaxTenuringThreshold=1 -XX:SurvivorRatio=32 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -jar server.jar nogui

Detach tmux session

dhw@minecraft$ ctrl-b d

Or start Minecraft Server via script (script must be in same directory as server.jar and world folders)

dhw@minecraft/opt/minecraft/$ nano start.sh

#!/usr/bin/bash

tmux new-session -d -s minecraft
tmux send-keys -t minecraft "java -Xms8192M -Xmx8192M -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:+ParallelRefProcEnabled -XX:+PerfDisableSharedMem -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1HeapRegionSize=8M -XX:G1HeapWastePercent=5 -XX:G1MaxNewSizePercent=40 -XX:G1MixedGCCountTarget=4 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1NewSizePercent=30 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:G1ReservePercent=20 -XX:InitiatingHeapOccupancyPercent=15 -XX:MaxGCPauseMillis=200 -XX:MaxTenuringThreshold=1 -XX:SurvivorRatio=32 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -jar /opt/minecraft/server.jar nogui" ENTER

And stop Minecraft Server via script

dhw@minecraft/opt/minecraft/$ nano stop.sh

#!/usr/bin/bash

tmux send-keys -t minecraft "stop" ENTER
sleep 5s
tmux send-keys -t minecraft "tmux kill-session" ENTER

Add crontab job for root to run at 3AM every day

Note to self: This doesn’t work! Need to figure something else out!

dhw@minecraft:~ $ sudo su
(password)

root@minecraft:/home/dhw# crontab -e

0 3 * * * /opt/minecraft/backup-minecraft-server.sh

Auto-mount USB backup drive

Edit /etc/fstab as root, and add:

/dev/sda1 /mnt/usb ext4 defaults,nofail,x-systemd.automount 0 2



© 2025. This work is openly licensed via CC BY 4.0