Introduction
This tutorial explains how to host a Mindustry multiplayer game on a server with Ubuntu or Debian. It also shows how to keep the game running after closing the connection to the server, how to change the port, and how to start a game with a custom map.
Playing Mindustry:
Mindustry is played with the desktop release on the local device. When you open Mindustry, you can play a singleplayer game or a multiplayer game. Multiplayer games are usually hosted on separate servers and you can connect to them via their IP address or domain name.
When it comes to self-hosting a multiplayer game, Mindustry differentiates between "remote servers" and "local servers". This tutorial only covers the setting up of a "remote server".
Multiplayer Mindustry servers:
Mindustry server | Mindustry server hosted on | Description |
---|---|---|
Remote servers | remote server (managed via terminal) |
Shared with players via public IP |
Local servers | local device (in-game option) |
Shared with players via private IP |
Prerequisites
- One local device » to connect to the game
- One server with Ubuntu/Debian » to host the game
- You need access to the root user or a user with sudo permissions.
- Before you start a game on the server, you should make at least some basic configuration, including a firewall. For more information, see:
Initial Server Setup with Ubuntu
Example terminology
203.0.113.1
» Example public IP of the remote serverholu
» Example user on the remote server
Please replace 203.0.113.1
with your own IP address and holu
with your username in all example commands.
Step 1 - Setting up the local device
In order to play the game hosted on your remote server, you need to connect to it's IP address from your local device. If you would like to test your game alongside setting it up on the remote server, you should get your local device ready first.
This includes:
- Installing Mindustry (desktop release)
- Adding your remote server (IP) in the game
Step 1.1 - Installing Mindustry on the local device
If you haven't already, install the desktop release of Mindustry on your local device. Mindustry is available for free at:
Do not install
server-release.jar
/[Server]Mindustry.zip
. This is for the remote server.
Note: To start Mindustry, you need to have Java installed.
Click here for an example of how to install the desktop release of Mindustry via terminal on Ubuntu/Debian
Create a new directory and open it:
mkdir mindustry && cd mindustry
Install Java:
- Ubuntu
apt update && apt install openjdk-21-jdk openjdk-21-jre
- Debian
apt update && apt install default-jdk default-jre
Go to the Mindustry repository on GitHub, choose a version and copy the link to the desktop release
Mindustry.jar
. You can now usewget
and the link to save the file on your server:wget https://github.com/Anuken/Mindustry/releases/download/v146/Mindustry.jar
If you want to use a different version, use the respective link.
Make the file executable:
chmod +x Mindustry.jar
Start Mindustry:
java -jar Mindustry.jar
Make sure to execute this command within the directory in which you saved the JAR file.
Step 1.2 - Adding the server to "Remote Servers"
Even though you're not hosting a game yet, you can already add the IP address of the remote server in the Mindustry desktop release on your local device.
If you add the server now, you can simply use the refresh button (🔁) to check if Mindustry can build a connection after you made changes on your remote server such as starting your first game or other settings explained in the steps below.
To add your remote server, do the following:
-
Select
+ Add Server
You can find+ Add Server
at the very bottom of the screen. -
Enter the IP address of your remote server
To double-check the IP address, you can run this command on your remote server:curl -4 https://ip.hetzner.com
Enter the IP address and select
OK
to add your server.
You should now see your remote server with the note "Can't connect to host."
After completing any of the steps below, you can simply use the refresh button to check if your local device can connect to the remote server.
Step 2 - Getting the server ready
For this step and for all following steps, you can connect to your remote server. As already mentioned in the "Prerequisites", please make sure you did at least some basic configuration on your server, including a firewall.
To run Mindustry, you need Java installed on your remote server. When you start a game, it will automatically say Opened a server on port 6567.
For this reason, you need to:
- Enable port 6567
- Install Java
Once this is done, you can install Mindustry and start your first game.
Step 2.1 - Enabling port 6567
If you have a firewall on your remote server, make sure it allows port 6567 TCP and UDP so that your local device can connect to the game on your remote server.
There are several different firewall tools. This tutorial covers:
ufw
» Default firewall configuration tool for Ubuntu- Hetzner Cloud Firewall
If you're using a different firewall, make sure it allows incoming traffic to port 6567 TCP and UDP.
Managing ufw
firewall rules
-
View current firewall settings
To check if theufw
firewall is active and if you already have any rules, you can use:sudo ufw status
Example output:
holu@remote-server:~# ufw status Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)
-
Allow port 6567 TCP and UDP
If the firewall is active, run these commands to allow incoming traffic to port 6567 TCP and UDP:sudo ufw allow proto tcp to any port 6567 sudo ufw allow proto udp to any port 6567
-
View new firewall settings
The new rules should now be added. To check, use:sudo ufw status
Example output:
holu@remote-server:~# sudo ufw status Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 6567/tcp ALLOW Anywhere 6567/udp ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 6567/tcp (v6) ALLOW Anywhere (v6) 6567/udp (v6) ALLOW Anywhere (v6)
If you need to delete any rules, click here.
To delete rules, you can use the following commands:
sudo ufw status numbered # List all rules with numbers sudo ufw delete <number> # Delete a rule by specifying the number
Managing Hetzner Cloud Firewall rules
This is only relevant if your remote server is a Hetzner Cloud server and you have a Hetzner Cloud Firewall applied to it. To edit your Firewall rules, open Cloud Console and select your Firewall. In the Firewall menu "Rules", add the following "inbound" rules:
IPs | Protocol | Port | Port range |
---|---|---|---|
Any IPv4 Any IPv6 | TCP | 6567 | |
Any IPv4 Any IPv6 | UDP | 6567 |
Step 2.2 - Installing Java
To start Mindustry, you need Java installed on your remote server.
- Check if Java is already installed
java --version
- Install Java
- Ubuntu
sudo apt update && sudo apt install openjdk-21-jdk openjdk-21-jre
- Debian
sudo apt update && sudo apt install default-jdk default-jre
java --version
again. - Ubuntu
Step 3 - Installing Mindustry
Now that the port is open and Java is installed, you can install Mindustry itself. The server release of Mindustry is available for free at:
Do not install
Mindustry.jar
/[Operating System]Mindustry.zip
. This is for the local device.
This tutorial explains how to install Mindustry via the GitHub files:
-
Create a new directory for the Mindustry files and open it:
mkdir mindustry && cd mindustry
-
Go to the Mindustry repository on GitHub
Choose a version and copy the link toserver-release.jar
. You can now usewget
and the copied link to save the file on your server:wget https://github.com/Anuken/Mindustry/releases/download/v146/server-release.jar
This will download
v146
. If you picked another version, replace the link with the link you just copied to your preferred version.Check if the file is now available on your server:
ls -al
-
Make the file executable:
chmod +x server-release.jar
-
Start Mindustry
java -jar server-release.jar
Make sure to execute this command within the directory in which you saved the JAR file.
Your terminal should now look like this:
holu@remote-server:~/mindustry# java -jar server-release.jar
[08-09-2024 09:59:09] [I] Server loaded. Type 'help' for help.
This is the Mindustry console where you can enter Mindustry commands.
You can now move on to the next step and start your first game!
Step 4 - Starting the first game
You are already in the Mindustry console, all that's left is to enter the Mindustry command to start a game.
But first you need to pick a map and a mode.
-
Maps
To check which maps are available, you can use themaps
command:maps custom
/maps
» List custom mapsmaps all
» List all maps
There aren't any custom maps yet, so for now, you should use
maps all
. -
Mode
If you don't specify a mode when you start a game, the default mode "survival" is automatically used.
To start your first game, use the host
command:
host <mapname> <mode>
Replace <mapname>
with the map you picked and <mode>
with any available mode.
Example:
holu@remote-server:~/mindustry# java -jar server-release.jar [08-09-2024 09:59:09] [I] Server loaded. Type 'help' for help. host Ancient_Caldera sandbox
Click here if you get a port error
If you get an error like
Unable to host: Port 6567 already in use!
, you can uselsof -i :6567
to check which process is using the port.holu@remote-server# lsof -i :6567 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 4303 holu 11u IPv6 28025 0t0 TCP *:6567 (LISTEN) java 4303 holu 12u IPv6 28026 0t0 UDP *:6567
If the process is not important, you can use
kill -15
and the process ID (PID) to stop it. Example:kill -15 <PID>
The game should now be available and ready-to-play!
On your local device, open the desktop release of Mindustry and use the refresh button next to the IP address of your remote server.
- If everything worked, you should see the name of the map and the game mode, in this example "Ancient Caldera" and "Sandbox".
- If you get a warning such as "Can't connect to host", double check your firewall settings and make sure port 6567 TCP and UDP is allowed.
On your remote server, you can enter exit
to leave the Mindustry console. This will end the entire game. If you go back to the desktop release on your local device, it will probably say "Can't connect to host" again. The same will happen if you end the connection to your remote server.
If you would like to have your game up and running 24/7, you can use the workaround explained in "Step 5".
Step 5 - Starting a screen session
At the moment, the game will automatically end as soon as you close the connection to your remote server. One way to keep the game running is to use the screen
tool. Screen allows you to start separate virtual terminal sessions in one remote terminal session.
When you end your remote terminal session, the virtual terminal session (screen session) will stay open. When you start a new remote terminal session, you will see that the screen session is still there.
Install screen
If you don't have screen installed yet, you can install it now with:
sudo apt update && sudo apt install screen -y
To start a Mindustry game in a screen session on your remote server, do the following:
-
Start the session
screen -S mindustry-screen
You can replace
mindustry-screen
with any other name for your screen. -
Go to the Mindustry directory
Open the directory in which you saved the server release JAR file of Mindustry. If you used the example path from "Step 3", you can open it with:cd ~/mindustry
-
Start Mindustry
java -jar server-release.jar
-
Start the game
The command above should have opened the Mindustry console again. Just as before, you can now use the Mindustry commandhost
to start the game:host <mapname> <mode>
Example:
host Ancient_Caldera sandbox
If you didn't end the previous Mindustry game properly with the
stop
orexit
command, you might get an error regarding the port.Click here if you get an error
If you get an error like
Unable to host: Port 6567 already in use!
, you can uselsof -i :6567
to check which process is using the port.holu@remote-server# lsof -i :6567 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 4303 holu 11u IPv6 28025 0t0 TCP *:6567 (LISTEN) java 4303 holu 12u IPv6 28026 0t0 UDP *:6567
If the process is not important, you can use
kill -15
and the process ID (PID) to stop it. Example:kill -15 <PID>
If this command does not work and you are certain that you don't need this process, you can use
kill -9
to force the stop:kill -9 <PID>
The game should now be available and ready-to-play!
On your local device, open the desktop release of Mindustry and use the refresh button to see if it worked and if you can play the game.
On your remote server, you can use the key combination ctrl
+A
followed by D
to exit the screen session. This will not end the screen session and the game will continue to run. You can also end the remote terminal session if you want.
To go back to the Mindustry screen session or to make any other changes, you can use these commands:
-
List all screens
screen -list
The screen you just created should also be listed here.
-
Go back to your running screen session
screen -dr mindustry-screen
If you used a different name, replace
mindustry-screen
with your screen name. -
Delete the screen session
screen -X -S mindustry-screen quit
Note: This will end the Mindustry game and the screen session will no longer be available.
Step 6 - Using a different port
By default, the Mindustry game is always started on port 6567. To start a game on a different port, follow the steps below. If you're currently in a Mindustry screen session that already hosts a Mindustry game, use stop
to end the game or use the key combination ctrl
+A
followed by D
to exit the screen session and create a new screen session.
-
Check which port is used
To check which port is currently set, enter this in the Mindustry console:config port
Example:
holu@remote-server:~/mindustry# java -jar server-release.jar [08-07-2024 13:43:44] [I] Server loaded. Type 'help' for help. config port [08-07-2024 13:47:32] [I] 'port' is currently 6567.
-
Change the port
config port 5668
If you want to use another port, remove
5668
and enter your port. -
Check if it worked
Use the command from earlier to check if the port is now different:config port
Example:
config port [08-07-2024 13:48:14] [I] 'port' is currently 5668.
-
Start a new game
As usual, you can use thehost
command to start a game.host <mapname> <mode>
Example:
host Ancient_Caldera sandbox
-
Update your firewall
If you have a firewall, make sure it allows the port you just set for the game, in this example port 5668. Forufw
and Hetzner Cloud Firewall, you can follow the steps described in "Step 2.1". -
Add the game
On your local device, open the desktop release of Mindustry and add the game:- Go to
Play
»+ Join Game
- Select
+ Add Server
at the very bottom of the screen - Enter the IP address of your remote server and specify the port (
<ip-address>:<port>
), e.g.:203.0.113.1:5668
Replace
203.0.113.1
with the IP address of your remote server and5668
with the port of your game.
- Go to
Step 7 - Hosting a custom map
Now that you know how to start a Mindustry game, you can start playing your own custom maps. For this, you need to save your .msav
map file on the remote server in the config/maps
directory. You can find config/maps
in the same directory as your server-release.jar
file. In this tutorial, it is this example path:
~/mindustry/config/maps
If you used a different path, change
~/mindustry
respectively.
-
Create a map file
On your local device, open the desktop release of Mindustry. In the menu, select "Editor".You can choose to either edit an existing map or create a completely new map. When you create a new map, remember to add a core.
Once you are done with your custom map, use the menu icon at the top left of the editor screen to open the menu and select "Export File". Choose a location to save the file in.
-
Copy the map to the remote server
Next, you need to copy the new map file from your local device to the remote server.The way you can do it depends on the OS of your local device.
SCP command
- Suitable for:
- Linux
- Windows 10 and higher (PowerShell)
On your local device, go to the directory in which you saved the map file and enter this command:
scp custom-map.msav holu@203.0.113.1:~/mindustry/config/maps
Remember to replace:
custom-map.msav
with the file name you gave your mapholu
with your own username on the remote server203.0.113.1
with the IP address of your remote server~/mindustry
with the path you used
Via GitHub
- Suitable for:
- Any OS (e.g. Windows 8)For this option, you need a GitHub account.
- Save the file in your GitHub repo.
- Connect to your remote server and go to the
config/maps
directory:~/mindustry/config/maps
config/maps
is in the same directory as yourserver-release.jar
file. If you used a different path, change~/mindustry
respectively. - Use
wget
and the link to the raw file of your map to save it on your remote server:wget https://github.com/user/repo/raw/main/custom-map.msav
-
Check if the map is available for the game
On your remote server, use themaps
command in the Mindustry console to check if your map is available:holu@remote-server:~/mindustry# java -jar server-release.jar [08-07-2024 13:43:44] [I] Server loaded. Type 'help' for help. maps [08-07-2024 13:43:48] [I] Maps: [08-07-2024 13:43:48] [I] CustomMap (custom-map.msav): Custom / 500x500 [08-07-2024 13:43:48] [I] Map directory: /home/holu/mindustry/config/maps
With
maps
, you can list all custom maps. Default maps are not listed.If your map is not available, you can use
reloadmaps
to update the map list and trymaps
again afterwards. You should also make sure you used the correct path. The path is shown in the output of themaps
command. -
Start a game with your map
To start a new game, enter the name of your map:
host CustomMap survival
On the local device, open the desktop version of Mindustry and use the refresh button to update the server information. It should now show the name of your map.
Conclusion
In this tutorial, you learned how to set up a server to host a Mindustry game. You also learned how to create, save, and use a custom map. Next, you can share the IP address of your server with friends, so that you can start playing together. To set up some custom settings, you can use the config
commands. In the config/mods
directory, you can add mods.
Click here to view some of the main commands
Command | Description |
---|---|
help |
List all commands with brief descriptions |
status |
Show server status, e.g. server closed |
host <mapname> <mode> |
Start a new Mindustry game |
pause <on/off> |
Pause or unpause the game |
stop |
End the game |
exit |
Exit the Mindustry console. This will end the game. |
config <name> <value> |
Configure game settings |
For a full list of commands, enter help
in the Mindustry console on your remote server or got to: mindustrygame.github.io