Skip to content

Instantly share code, notes, and snippets.

@ConoHa
Last active August 7, 2018 09:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ConoHa/ec1a0a8c7a8f9e5bf6d3654bcb1e47d1 to your computer and use it in GitHub Desktop.
Save ConoHa/ec1a0a8c7a8f9e5bf6d3654bcb1e47d1 to your computer and use it in GitHub Desktop.
#!/bin/bash
set -eu
readonly MINECRAFT_DIR="/opt/minecraft_server/"
readonly MINECRAFT_SERVER_OLD_VER="1.12.2"
readonly MINECRAFT_SERVER_NEW_VER="1.13.0"
readonly BACKUP_DIR_PREFIX="backup"
readonly BACKUP_DIR="${MINECRAFT_SERVER_OLD_VER}-$(date --iso-8601='minutes')"
readonly MINECRAFT_SERVER_SERVICE="/etc/systemd/system/minecraft-server.service"
systemctl disable --now minecraft-server.service
groupadd minecraft || true
useradd -g minecraft minecraft || true
yum install -y screen
mkdir -p ${MINECRAFT_DIR}/${BACKUP_DIR_PREFIX}/${BACKUP_DIR}
cp -r ${MINECRAFT_DIR}/[^backup]* ${MINECRAFT_DIR}/${BACKUP_DIR_PREFIX}/${BACKUP_DIR}
mv /etc/systemd/system/minecraft-server.service ${MINECRAFT_DIR}/${BACKUP_DIR_PREFIX}/${BACKUP_DIR}
rm ${MINECRAFT_DIR}/minecraft_server.${MINECRAFT_SERVER_OLD_VER}.jar
wget https://launcher.mojang.com/mc/game/1.13/server/d0caafb8438ebd206f99930cfaecfa6c9a13dca0/server.jar -O ${MINECRAFT_DIR}/minecraft_server.${MINECRAFT_SERVER_NEW_VER}.jar
chown -R minecraft:minecraft ${MINECRAFT_DIR}
cat >> ${MINECRAFT_SERVER_SERVICE} <<EOF
[Unit]
Description=Minecraft Server
After=network.target
[Service]
WorkingDirectory=${MINECRAFT_DIR}
User=minecraft
Group=minecraft
ProtectSystem=full
ProtectHome=true
ExecStart=/bin/sh -c '/usr/bin/screen -DmS minecraft /usr/bin/java -server -Xms512M -Xmx2048M -XX:+UseG1GC -XX:+CMSIncrementalPacing -XX:+CMSClassUnloadingEnabled -XX:ParallelGCThreads=2 -XX:MinHeapFreeRatio=5 -XX:MaxHeapFreeRatio=10 -jar ${MINECRAFT_DIR}/minecraft_server.${MINECRAFT_SERVER_NEW_VER}.jar --forceUpgrade nogui'
ExecReload=/usr/bin/screen -p 0 -S minecraft -X eval 'stuff "reload"\\015'
ExecStop=/usr/bin/screen -p 0 -S minecraft -X eval 'stuff "say SERVER SHUTTING DOWN. Saving map..."\\015'
ExecStop=/usr/bin/screen -p 0 -S minecraft -X eval 'stuff "save-all"\\015'
ExecStop=/usr/bin/screen -p 0 -S minecraft -X eval 'stuff "stop"\\015'
ExecStop=/bin/sleep 5
Restart=on-failure
RestartSec=60s
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now minecraft-server.service
echo "Version up finished"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment