Notes and links for config of a home Minecraft server.
Created VM in XenOrchastra.
4x CPU
8gb
1x LAN
40gb HDD
Installed Ubuntu 20-LTS, picked up MAC address, reserved IP in DNS. Reboot, connected with PuTTY.
sudo apt update
sudo apt upgrade
Allow auto removal of unused kernals and dependencies, to personal taste.
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
Taking a snapshot here.
Install git.
sudo apt install git build-essential
Java runtime.
!!!! DO NOT USE THIS VERSION !!!!
Should have used used v17, with
sudo apt install openjdk-17-jre-headless
. Additional notes below.
sudo apt install openjdk-11-jre-headless
java -version
Create a minecraft user and setup folders.
sudo useradd -r -m -U -d /opt/minecraft -s /bin/bash minecraft
sudo su minecraft
cd ~
mkdir -p ~/{backups,tools,server}
Install mcrcon.
git clone https://github.com/Tiiffi/mcrcon.git ~/tools/mcrcon
cd ~/tools/mcrcon
gcc -std=gnu11 -pedantic -Wall -Wextra -O2 -s -o mcrcon mcrcon.c
./mcrcon -v
Taking a second snapshot here.
Minecraft Server -> https://www.minecraft.net/en-us/download/server
Download.
wget https://launcher.mojang.com/v1/objects/125e5adf40c659fd3bce3e66e67a16bb49ecc1b9/server.jar -P ~/server
cd ~/server
java -Xmx1024M -Xms1024M -jar server.jar nogui
At this point, appears Java runtime version is not correct... should have used v17. :-/
"Exit" from minecraft user, and remove incorrect version of Java and reinstall.
exit
whoami
sudo apt remove --auto-remove openjdk*
sudo apt purge openjdk*
sudo apt install openjdk-17-jre-headless
java -version
Switch back to minecraft user account.
sudo su minecraft
cd ~/server
java -Xms1024M -Xmx1024M -jar server.jar nogui
Note the EULA warning message.
nano ~/server/eula.txt
Set the value eula=true
.
Edit the properties.
nano ~/server/server.properties
Set an rcon password, and adjust any other parameters as needed. (Consider firewall, if you want access from outside your LAN.)
rcon.port=25575
rcon.password=XXXXXXXXXXXX
enable-rcon=true
"Exit" back to admin account, and config systemd.
sudo nano /etc/systemd/system/minecraft.service
If you wanted to adjust the defauts, you can query your min/max heap size as follows:
java -XX:+PrintCommandLineFlags -version
Suggested config, and use mcrcon password that was set earlier.
[Unit]
Description=Minecraft Server
After=network.target
[Service]
User=minecraft
Nice=1
KillMode=none
SuccessExitStatus=0 1
ProtectHome=true
ProtectSystem=full
PrivateDevices=true
NoNewPrivileges=true
WorkingDirectory=/opt/minecraft/server
ExecStart=/usr/bin/java -Xmx1024M -Xms1024M -jar server.jar nogui
ExecStop=/opt/minecraft/tools/mcrcon/mcrcon -H 127.0.0.1 -P 25575 -p XXXXXXXXXXXX stop
[Install]
WantedBy=multi-user.target
Reload and start the service.
sudo systemctl daemon-reload
sudo systemctl start minecraft
sudo systemctl status minecraft
^- first run takes a while... in this case, 83 seconds!
Enable service.
sudo systemctl enable minecraft
Server is working and can connect OK from my PC. Taking another snapshot here.
Connect to console:
/opt/minecraft/tools/mcrcon/mcrcon -H 192.168.1.XXX -P 25575 -p XXXXXXXXXXXX -t
If you don't want fire spread: /gamerule doFireTick false
For commands and syntax help -> https://minecraft.fandom.com/wiki/Commands#Command_guide
Guide (java version out of date, but otherwise very easy to follow) -> https://bobcares.com/blog/install-minecraft-server-on-ubuntu/