#!/usr/bin/env bash set -Eeuo pipefail mkdir -p /app/minecraft /app/logs exec > >(tee -a /app/logs/startup.log) 2>&1 PORT="${MC_PORT:-25565}"; VERSION="${MC_VERSION:-1.21.8}" cd /app/minecraft if [ ! -f paper.jar ]; then build="$(curl -fsSL "https://api.papermc.io/v2/projects/paper/versions/${VERSION}" | jq -r '.builds[-1]')"; curl -fL --retry 3 -o paper.jar "https://api.papermc.io/v2/projects/paper/versions/${VERSION}/builds/${build}/downloads/paper-${VERSION}-${build}.jar"; fi echo 'eula=true' > eula.txt python3 - <<'PY' & from http.server import BaseHTTPRequestHandler,HTTPServer from pathlib import Path class H(BaseHTTPRequestHandler): def do_GET(self): t=Path('/app/logs/startup.log').read_text(errors='replace')[-12000:]; b=('

Minecraft Server

'+t.replace('&','&').replace('<','<')+'
').encode(); self.send_response(200); self.send_header('Content-Type','text/html'); self.send_header('Content-Length',str(len(b))); self.end_headers(); self.wfile.write(b) def log_message(self,*a): pass HTTPServer(('0.0.0.0',7860),H).serve_forever() PY if [ ! -x /usr/local/bin/playit ]; then curl -fL --retry 3 -o /usr/local/bin/playit https://github.com/playit-cloud/playit-agent/releases/latest/download/playit-linux-amd64; chmod +x /usr/local/bin/playit; fi if [ -n "${PLAYIT_SECRET:-}" ]; then playit --secret "$PLAYIT_SECRET" >> /app/logs/startup.log 2>&1 & else playit >> /app/logs/startup.log 2>&1 & fi java -Xms512M -Xmx${MC_MEMORY:-2G} -jar paper.jar --nogui --port "$PORT"