Minecraft Bedrock Server

Hinweise<br> -Standardmäßig startet der Server mit 2 GB RAM (-Xmx2G -Xms1G), anpassbar im Service-File.<br> Autostart ist über systemd eingerichtet.<br> Unterstützt aktuell Debian/Ubuntu & CentOS/RHEL/Fedora (andere müssten ergänzt werden).<br> Serverdateien liegen in /opt/minecraft-bedrock.<br> Automatisches Update läuft täglich um 04:00 Uhr per Cronjob.<br>

Linux SH Other v1.0.0
Script Code
#!/bin/bash
# Minecraft Bedrock Server Installer + Auto-Updater (Linux, Autostart, Latest Version)

set -e

# === Root check ===
if [[ "$EUID" -ne 0 ]]; then
  echo "Bitte als root oder mit sudo starten!"
  exit 1
fi

# === OS Prüfung ===
if [ -f /etc/os-release ]; then
    . /etc/os-release
    OS=$ID
else
    echo "Unbekanntes OS – Abbruch."
    exit 1
fi

echo "Erkanntes OS: $PRETTY_NAME"

# === Abhängigkeiten installieren ===
case "$OS" in
  ubuntu|debian)
    apt update && apt install -y unzip curl screen libcurl4 cron
    ;;
  fedora)
    dnf install -y unzip curl screen libcurl cronie
    systemctl enable crond --now
    ;;
  centos|rhel)
    yum install -y unzip curl screen libcurl cronie
    systemctl enable crond --now
    ;;
  *)
    echo "Dein OS wird nicht unterstützt. Bitte Ubuntu/Debian/Fedora/CentOS verwenden."
    exit 1
    ;;
esac

# === Benutzer + Pfade ===
MCUSER="minecraft"
MCPATH="/opt/minecraft-bedrock"
UPDATER="$MCPATH/update-bedrock.sh"

if ! id -u $MCUSER >/dev/null 2>&1; then
    useradd -m -r -d $MCPATH -s /bin/bash $MCUSER
fi

mkdir -p $MCPATH
chown -R $MCUSER:$MCUSER $MCPATH

# === Funktion: Bedrock herunterladen ===
install_bedrock() {
    echo "Lade neuste Minecraft Bedrock Server Version herunter..."
    LATEST_URL=$(curl -s https://www.minecraft.net/en-us/download/server/bedrock | grep -oP 'https://minecraft.azureedge.net/bin-linux/bedrock-server-.*zip' | head -n 1)

    if [ -z "$LATEST_URL" ]; then
      echo "Konnte die Download-URL nicht ermitteln!"
      exit 1
    fi

    cd $MCPATH
    curl -L -o bedrock-server.zip "$LATEST_URL"
    sudo -u $MCUSER unzip -o bedrock-server.zip
    rm bedrock-server.zip
}

# === Erste Installation ===
install_bedrock

# === systemd Service einrichten ===
SERVICE_FILE="/etc/systemd/system/minecraft-bedrock.service"

cat > $SERVICE_FILE <<EOF
[Unit]
Description=Minecraft Bedrock Server
After=network.target

[Service]
WorkingDirectory=$MCPATH
User=$MCUSER
Group=$MCUSER
Restart=always
ExecStart=$MCPATH/bedrock_server

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reexec
systemctl enable minecraft-bedrock.service
systemctl start minecraft-bedrock.service

# === Update-Skript erstellen ===
cat > $UPDATER <<'EOF'
#!/bin/bash
set -e
MCUSER="minecraft"
MCPATH="/opt/minecraft-bedrock"
LATEST_URL=$(curl -s https://www.minecraft.net/en-us/download/server/bedrock | grep -oP 'https://minecraft.azureedge.net/bin-linux/bedrock-server-.*zip' | head -n 1)

cd $MCPATH
TMPFILE="/tmp/bedrock-server.zip"
curl -L -o "$TMPFILE" "$LATEST_URL"

# Prüfen, ob neue Version
NEW_HASH=$(sha256sum "$TMPFILE" | awk '{print $1}')
if [ -f "$MCPATH/bedrock-server.zip.sha256" ]; then
    OLD_HASH=$(cat "$MCPATH/bedrock-server.zip.sha256")
else
    OLD_HASH=""
fi

if [ "$NEW_HASH" != "$OLD_HASH" ]; then
    echo "Neue Version gefunden – Update wird installiert!"
    systemctl stop minecraft-bedrock
    unzip -o "$TMPFILE" -d "$MCPATH"
    echo "$NEW_HASH" > "$MCPATH/bedrock-server.zip.sha256"
    systemctl start minecraft-bedrock
    echo "Update erfolgreich abgeschlossen."
else
    echo "Minecraft Bedrock ist bereits auf dem neusten Stand."
fi

rm "$TMPFILE"
EOF

chmod +x $UPDATER
chown $MCUSER:$MCUSER $UPDATER

# === Cronjob für Auto-Update ===
(crontab -l 2>/dev/null; echo "0 4 * * * $UPDATER >> /var/log/minecraft-bedrock-update.log 2>&1") | crontab -

echo "======================================="
echo "✅ Minecraft Bedrock Server installiert!"
echo "📂 Pfad: $MCPATH"
echo "▶️ Service starten/stoppen mit:"
echo "   systemctl start minecraft-bedrock"
echo "   systemctl stop minecraft-bedrock"
echo "   systemctl status minecraft-bedrock"
echo "🔄 Auto-Update eingerichtet (täglich 04:00 Uhr)"
echo "📜 Logfile: /var/log/minecraft-bedrock-update.log"
echo "======================================="
Details
Ersteller
Florian Linde
Veröffentlicht
27.8.2025
Downloads
0
Dateigröße
3.74 KB