Spaces:
Paused
Paused
| 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=('<html><meta http-equiv="refresh" content="5"><body><h1>Minecraft Server</h1><pre>'+t.replace('&','&').replace('<','<')+'</pre></body></html>').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" | |