You want to play Minecraft in multiplayer. You’ve decided that you want your own world with your own rules. Then let’s set up your own online server.
You will learn how host a Spigot Minecraft server on Ubuntu Server 20.04. You will also learn how to keep access to its console via Tmux.
Before you can set up your own server, you do the following:
- Set up a machine with Ubuntu Server 20.04
- Access the machine’s command line interface
- Allow traffic through port 25565
From my experience of running a server for 2-4 players, a machine with 2GiB of memory and 8GiB of storage size is enough. Minecraft server uses port 25565, therefore you must open it or the server will be inaccessible to players.
Before you start, update the software on your server.
sudo apt update && sudo apt upgrade
When that is done, go ahead and create a user for the Minecraft server. Using a dedicated account for the server limits its access to other files on the system. This can help if the server gets compromised.
sudo useradd minecraft -r -m -d /opt/minecraft
useradd command creates a new user named
-r argument creates a system account, which indicates that this user is used by a service or daemon. Argument
-m creates a home directory and
-d specifies the path where this directory will be created.
Now that the environment is set up, you will install Spigot, which is a server software for Minecraft that is optimized for performance. Spigot must be compiled by another program called BuildTools, so you will have to install that first.
To run BuildTools you need to have Git and Java installed on your machine.
sudo apt-get install git openjdk-8-jre-headless
When that is done, switch to the
minecraft user you created while preparing the environment.
sudo su --login minecraft
su command with
--login argument should also switch your current directory to
/opt/minecraft. You can verify that by running
pwd, which prints the name of working directory.
Now create two folders, one for BuildTools and one for Spigot server under
mkdir tools server
Finally, download the BuildTools
wget -O tools/BuildTools.jar https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar
There is a chance that BuildTools program fails to compile the server due to Git configuration. The documentation recommends disabling
autocrlf in Git preemptively.
git config --global --unset core.autocrlf
Run BuildTools and consider taking a short break, because it can take awhile. You deserve it.
cd tools java -jar BuildTools.jar
After successfully compiling the server with BuildsTools, you should see a
spigot-1.16.5.jar file in your current directory
/opt/minecraft/tools. At the moment of writing the latest version is
1.16.5 which can differ in your case. Adjust accordingly.
spigot-1.16.5.jar file to the server directory.
cp spigot-1.16.5.jar /opt/minecraft/server/spigot.jar
To start the server, run the following
java command from
cd /opt/minecraft/server java -Xmx1024M -Xms1024M -jar spigot.jar nogui
-Xms arguments represents how much memory you want to allocate to the server in megabytes. You can adjust the number as necessary considering your hardware limitations.
Running the server for the first time produces an error. You can’t run a Minecraft server without agreeing to EULA. Therefore open
eula.txt and do just that by setting
Instead of remembering this command that starts the server, create a script that does it for you. Start by making a bash script.
Now add the start command to the script.
#!/bin/bash java -Xmx1024M -Xms1024M -jar spigot.jar nogui
And make the script executable.
chmod +x start.sh
Run the script to finally start your own Minecraft server.
Give it a go by connecting to the server now when it is done generating the world.
You can stop the server by entering
stop in its console. Enter
exit to stop using the shell as
There’s one more thing left to do if you wish to always have access to the server’s console.
When you start the server from command-line you have access to its console. If you disconnect from the remote machine, the next time you log back in, you won’t see the console anymore. It will have become a background process.
To fix this, you can run the server using Tmux. It is a program that lets you see the console after reconnecting to the remote machine by saving it in a session.
Run Minecraft server in a Tmux session from the
Install Tmux if it’s not already installed on your system.
sudo apt install tmux
Start the Minecraft server in a session as the
sudo su --login minecraft cd server tmux new -s minecraft-session ./start.sh
-s argument specifies the name of the session, which you can choose as you please.
To leave the session press
Ctrl+b followed by
You can see a list of available sessions if you forget the name of one.
To reattach to the session use this command.
tmux attach -t minecraft-session
-t argument specifies the name of the session.
When you reconnect to the remote machine, you can quickly gain access to the session without switching to
sudo -H -u minecraft bash -c "tmux attach -t minecraft-session"
In this post you learned how to install BuildTools and Spigot to run your own Minecraft server. You also learned how to regain access to the server console using Tmux.