77 lines
1.9 KiB
Bash
77 lines
1.9 KiB
Bash
#!/bin/bash
|
|
<% local config = require "config" %>
|
|
<% local secrets = require "secrets" %>
|
|
<% local e = require "express" %>
|
|
|
|
exec 1>>~/message.log 2>&1
|
|
set -x
|
|
|
|
echo "Starting main" >> ~/message.log
|
|
|
|
aws configure set aws_access_key_id "<%- secrets.aws.access_key %>"
|
|
aws configure set aws_secret_access_key "<%- secrets.aws.secret_key %>"
|
|
|
|
mkdir /mnt
|
|
mount /dev/sdf /mnt
|
|
sudo yum install java-17-amazon-corretto-devel -y
|
|
cd /mnt
|
|
|
|
# Download the dedicated server if we don't have it
|
|
if [ ! -e fabric-server-mc.1.20.4-loader.0.15.9-launcher.1.0.0.jar ]; then
|
|
echo "Downloading fabricmc" >> ~/message.log
|
|
curl -OJ https://meta.fabricmc.net/v2/versions/loader/1.20.4/0.15.9/1.0.0/server/jar
|
|
# Run it to download the mojang jar
|
|
java -Xmx2G -jar fabric-server-mc.1.20.4-loader.0.15.9-launcher.1.0.0.jar nogui --nogui
|
|
# It will error out because we haven't accepted the eula
|
|
sed -i s/eula=false/eula=true/g eula.txt
|
|
fi
|
|
|
|
# Then download mods
|
|
cd mods
|
|
echo "Downloading <%- #config.mods.server %> mods" >> ~/message.log
|
|
|
|
<% for _,mod in pairs(config.mods.server) do %>
|
|
URL=<%- mod %>
|
|
if [ ! -e "$(basename $URL)" ]; then
|
|
curl -OJ "$URL"
|
|
fi
|
|
<% end %>
|
|
|
|
# Download any config
|
|
<% for filename, info in pairs(config.config.server) do %>
|
|
<% if e.is_immediate(info) then %>
|
|
aws s3 cp s3://<%- config.bucket_name %>/<%- filename %> <%- filename %>
|
|
<% elseif e.is_command(info) then %>
|
|
|
|
<%- info[1] %>
|
|
|
|
<% end %>
|
|
<% end %>
|
|
|
|
cat > /etc/systemd/system/mc.service<< EOF
|
|
[Unit]
|
|
Description=Minecraft
|
|
After=network.target
|
|
StartLimitIntervalSec=0
|
|
|
|
[Service]
|
|
Type=simple
|
|
Restart=always
|
|
RestartSec=1
|
|
User=root
|
|
WorkingDirectory=/mnt
|
|
ExecStart=java -jar /mnt/fabric-server-mc.1.20.4-loader.0.15.9-launcher.1.0.0.jar
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
EOF
|
|
|
|
service mc start
|
|
systemctl enable mc
|
|
|
|
# Copy backups to s3 every hour
|
|
cat > cronfile <<EOF
|
|
1 * * * * aws s3 sync /mnt/backups/world/differential s3://<%- config.bucket_name %>/backup
|
|
EOF
|
|
crontab cronfile
|