Minecraft start.sh

2015 to 2016
See also...

Other start.sh's:


start.sh for Steam game servers


start.sh for TeamSpeak

This is a start script for Minecraft servers. With it, you can administrate multiple Minecraft servers with just one start.sh with each Minecraft server having its own configuration script (serverscript), usually located in a sub directory like "_serverscripts".


  1. Place start.sh where you installed the Minecraft server user, like /home/minecraft
  2. Configure start.conf accordingly
    • DIRECTORY: Root directory and location of start.sh
    • SERVERSCRIPTS: Directory for server scripts
    • OVERVIEWERPATH: Path to the overviewer config file (only relevant when using Minecraft Overviewer
  3. Apply execute permissions to start.sh


For each Minecraft server, place a serverscript with the extension .conf in $SERVERSCRIPTS, for example /home/minecraft/_serverscripts/survival.conf. When calling start.sh, your start command will be "./start.sh start survival".


The configuration variables are as follows:

  • GAMEDIR: Absolute path to the game directory (also the location of the executable JAR file)
  • SESSIONNAME: Unique name of the screen
  • JARFILE: Name of the executable file. In vanilla servers, it's minecraft_server.jar. CraftBukkit and SpigotMC work the same way.
  • MEMORYSTART: The amount of RAM to start with in megabytes (-Xms)
  • MEMORYMAX: The maximum amount of RAM in megabytes (-Xmx)
  • KEEPBACKUPS: How many backups to keep (0 = disable purging)
  • SAVECOMMAND: Usually "save-all", unless you're using a plugin for world saving. You may need a plugin like AutoSaveWorld in a multiverse scenario.

Overvierwer Config

When using Minecraft Overviewer, a config file named "config" is located in "/home/minecraft/_overviewer". Example:

worlds["world"] = "/home/minecraft/survival/world"
worlds["world_nether"] = "/home/minecraft/survival/world_nether"
worlds["world_the_end"] = "/home/minecraft/survival/world_the_end"

renders["world_day"] = {
	"world": "world",
	"title": "Survival server: Day",
	"dimension": "overworld",
	"rendermode": smooth_lighting
renders["world_night"] = {
	"world": "world",
	"title": "Survival server: Night",
	"dimension": "overworld",
	"rendermode": smooth_night
renders["world_nether"] = {
	"world": "world_nether",
	"title": "Survival server: Nether",
	"dimension": "nether",
	"rendermode": nether_smooth_lighting
renders["world_the_end"] = {
	"world": "world_the_end",
	"title": "Survival server: The End",
	"dimension": "end",
	"rendermode": smooth_lighting

outputdir = "/home/minecraft/_overviewer/output_temp"
texturepath = "/home/minecraft/_overviewer/minecraft.jar"

outputdir must be the path to the Overviewer directory you configured in start.conf plus "output_temp". The map rendering is processed there and then swapped to the "output" directory to prevent downtimes as rendering can take considerably long. Set up the config file according to Overviewer's docs. Also, don't forget to place the original minecraft.jar file in "/home/minecraft/_overviewer" so Overviewer displays textures as explained here.


Command Function
./start.sh Summary of command line options
./start.sh start <GAMESERVER> Starts the server with the name <GAMESERVER>
A second instance is not started as long as the server is running.
This command is ignored when the server is disabled.
./start.sh stop <GAMESERVER> Stops the server with the name <GAMESERVER>
Rules from start apply here as well.
./start.sh restart <GAMESERVER> Restarts the server with the name <GAMESERVER>
Internally executes stop, then start. Rules from start apply here as well.
./start.sh backup <GAMESERVER> <WORLD> <WORLD2> <...> Creates a backup in a directory named "_backups" in the game directory of <GAMESERVER>.
You must specify at least one world.
Does not restart the server.
./start.sh restore <GAMESERVER> <WORLD> <WORLD2> <...> Restores the most recent backup of <GAMESERVER>.
You must specify at least one world.
Restarts the server.
./start.sh buildtools Builds the latest version of SpigotMC and places it in the main directory. This may take a few minutes.
After that, you need to manually upgrade each server.
./start.sh render When using Overviewer, renders the maps to the configured directory as previously described.
./start.sh enable Enables all servers for starting
As long as disabled, the command start will not start any server.
./start.sh disable Disables all servers for starting
As long as disabled, the command start will not start any server.

Note: The <GAMESERVER> parameter is optional (except for backup / restore). When omitted, all servers are affected.