This article is no longer maintained, but probably still works.
Minecraft server on Proxmox
Hey there! I've recently set up a few Minecraft servers, and am running them of off my Proxmox host. Today I'll write a little post about my set up process. Requirements:
- Debian GNU/Linux based box (or you can adjust the commands to your liking, but for my server I run Proxmox which is Debian based)
- Systemd (for the first method)
- Some basic GNU/Linux skills and/or common sense.
- Have the appropriate Java version installed and added to path.
- Have port 25565 free and open. You can however use a different port if you would want to.
Method 1: Systemd and baremetal
Let's make a folder for your server. I've done this on 50MB/s spinning rust drives to 3000MB/s NVMe's, it doesn't really mater. Having this said, lets start on the /fast mount (for me this is a raid array of SSD's, but it could be any folder.)
1sudo su 2cd /fast 3mkdir minecraft 4cd minecraft
Now we'll install Paper. Paper is "the next generation of Minecraft servers, compatible with Spigot plugins, offering uncompromising performance." as of their website. I use Paper because of the performance gain I get.
1wget https://api.papermc.io/v2/projects/paper/versions/1.18.2/builds/387/downloads/paper-1.18.2-387.jar 2mv paper-1.18.2-387.jar paper.jar 3touch eula.txt 4echo "eula=true" >> eula.txt
Now we'll start the server and test if everything works, if it does, we will make it a service using Systemd.
1java -Xms32G -Xmx32G -jar paper.jar -o true op yourusername
Now log into the server on your Minecraft client using the servers IP. Now test if everything works and if it does, type stop and continue to the next step.
Now we'll add the server to Systemd to let it come up at boot. To do so, follow up.
1apt install screen 2touch /etc/systemd/system/minecraft.service 3nvim /etc/systemd/system/minecraft.service
Now copy the following text into it:
1[Unit] Description=Minecraft Server 2After=network.target 3 4[Service] WorkingDirectory=/fast/minecraft/ 5 6User=root 7Group=root 8 9Restart=always 10 11ExecStart=/usr/bin/screen -DmS mc /usr/bin/java -Xmx32G -jar paper.jar nogui 12 13ExecStop=/usr/bin/screen -p 0 -S mc -X eval 'stuff "say The Minecraft server you're currently playing on is going down for either maintenance or another reason."\015' 14ExecStop=/bin/sleep 10 ExecStop=/usr/bin/screen -p 0 -S mc -X eval 'stuff "save-all"\015' 15ExecStop=/usr/bin/screen -p 0 -S mc -X eval 'stuff "stop"\015' 16 17[Install] 18WantedBy=multi-user.target
boot and management
Now, lets start the server and make it automatically start at boot using the following commands:
1systemctl start minecraft.service 2systemctl enable minecraft.service
If you are wondering how the server is doing, you can type:
1sudo systemctl status minecraft.service
This video sums it up about perfectly. Go watch that instead please!