tempmc/src/startup/main.sh.etlua

79 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 cronie 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
service crond start
systemctl enable crond