Skip to content

Instantly share code, notes, and snippets.

@MIchaelMainer
Last active January 21, 2018 09:02
Show Gist options
  • Save MIchaelMainer/b007d974de72552299a8d5b02615bc87 to your computer and use it in GitHub Desktop.
Save MIchaelMainer/b007d974de72552299a8d5b02615bc87 to your computer and use it in GitHub Desktop.
Setup Minecraft
# Copied from https://github.com/gbowerman/azure-minecraft/blob/master/azure-marketplace/minecraft-server-ubuntu/install_minecraft.sh
#!/bin/bash
# Custom Minecraft server install script for Ubuntu 15.04
# $1 = Minecraft user name
# $2 = difficulty
# $3 = level-name
# $4 = gamemode
# $5 = white-list
# $6 = enable-command-block
# $7 = spawn-monsters
# $8 = generate-structures
# $9 = level-seed
1='DrMuru'
2=2
3='Land of the Lost'
4=0
5=1
6=1
7=1
8=1
9=''
# basic service and API settings
minecraft_server_path=/srv/minecraft_server
minecraft_user=minecraft
minecraft_group=minecraft
UUID_URL=https://api.mojang.com/users/profiles/minecraft/$1
# screen scrape the server jar location from the Minecraft server download page
SERVER_JAR_URL=`curl https://minecraft.net/en-us/download/server | grep Minecraft\.Download | cut -d '"' -f2`
server_jar=`echo $SERVER_JAR_URL | cut -d '/' -f7`
# add and update repos
# while ! echo y | apt-get install -y software-properties-common; do
# sleep 10
# apt-get install -y software-properties-common
# done
# while ! echo y | apt-add-repository -y ppa:webupd8team/java; do
# sleep 10
# apt-add-repository -y ppa:webupd8team/java
# done
# while ! echo y | apt-get update; do
# sleep 10
# apt-get update
# done
# # Install Java8
# echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections
# while ! echo y | apt-get install -y oracle-java8-installer; do
# sleep 10
# apt-get install -y oracle-java8-installer
# done
# create user and install folder
adduser --system --no-create-home --home /srv/minecraft-server $minecraft_user
addgroup --system $minecraft_group
mkdir $minecraft_server_path
cd $minecraft_server_path
# download the server jar
while ! echo y | wget $SERVER_JAR_URL; do
sleep 10
wget $SERVER_JAR_URL
done
# set permissions on install folder
chown -R $minecraft_user $minecraft_server_path
# adjust memory usage depending on VM size
totalMem=$(free -m | awk '/Mem:/ { print $2 }')
if [ $totalMem -lt 2048 ]; then
memoryAllocs=512m
memoryAllocx=1g
else
memoryAllocs=1g
memoryAllocx=2g
fi
# create the uela file
touch $minecraft_server_path/eula.txt
echo 'eula=true' >> $minecraft_server_path/eula.txt
# create a service
touch /etc/systemd/system/minecraft-server.service
printf '[Unit]\nDescription=Minecraft Service\nAfter=rc-local.service\n' >> /etc/systemd/system/minecraft-server.service
printf '[Service]\nWorkingDirectory=%s\n' $minecraft_server_path >> /etc/systemd/system/minecraft-server.service
printf 'ExecStart=/usr/bin/java -Xms%s -Xmx%s -jar %s/%s nogui\n' $memoryAllocs $memoryAllocx $minecraft_server_path $server_jar >> /etc/systemd/system/minecraft-server.service
printf 'ExecReload=/bin/kill -HUP $MAINPID\nKillMode=process\nRestart=on-failure\n' >> /etc/systemd/system/minecraft-server.service
printf '[Install]\nWantedBy=multi-user.target\nAlias=minecraft-server.service' >> /etc/systemd/system/minecraft-server.service
chmod +x /etc/systemd/system/minecraft-server.service
# create and set permissions on user access JSON files
touch $minecraft_server_path/banned-players.json
chown $minecraft_user:$minecraft_group $minecraft_server_path/banned-players.json
touch $minecraft_server_path/banned-ips.json
chown $minecraft_user:$minecraft_group $minecraft_server_path/banned-ips.json
touch $minecraft_server_path/whitelist.json
chown $minecraft_user:$minecraft_group $minecraft_server_path/whitelist.json
# create a valid operators file using the Mojang API
touch $minecraft_server_path/ops.json
mojang_output="`wget -qO- $UUID_URL`"
rawUUID=${mojang_output:7:32}
UUID=${rawUUID:0:8}-${rawUUID:8:4}-${rawUUID:12:4}-${rawUUID:16:4}-${rawUUID:20:12}
printf '[\n {\n \"uuid\":\"%s\",\n \"name\":\"%s\",\n \"level\":4\n }\n]' $UUID $1 >> $minecraft_server_path/ops.json
chown $minecraft_user:$minecraft_group $minecraft_server_path/ops.json
# set user preferences in server.properties
touch $minecraft_server_path/server.properties
chown $minecraft_user:$minecraft_group $minecraft_server_path/server.properties
# echo 'max-tick-time=-1' >> $minecraft_server_path/server.properties
printf 'difficulty=%s\n' $2 >> $minecraft_server_path/server.properties
printf 'level-name=%s\n' $3 >> $minecraft_server_path/server.properties
printf 'gamemode=%s\n' $4 >> $minecraft_server_path/server.properties
printf 'white-list=%s\n' $5 >> $minecraft_server_path/server.properties
printf 'enable-command-block=%s\n' $6 >> $minecraft_server_path/server.properties
printf 'spawn-monsters=%s\n' $7 >> $minecraft_server_path/server.properties
printf 'generate-structures=%s\n' $8 >> $minecraft_server_path/server.properties
printf 'level-seed=%s\n' $9 >> $minecraft_server_path/server.properties
systemctl start minecraft-server
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment