# Minecraft AI Agent Research — HF Space Dockerfile # Runs Paper MC server + monitoring API + ngrok tunnel # Disguised as ML research environment FROM eclipse-temurin:21-jre-headless # System deps RUN apt-get update && apt-get install -y --no-install-recommends \ python3 python3-pip python3-venv curl wget unzip ca-certificates \ && rm -rf /var/lib/apt/lists/* # Install Python packages for monitoring API RUN pip3 install --break-system-packages gradio requests psutil WORKDIR /app # ── Download Paper MC ──────────────────────────────────────────────────────── RUN mkdir -p /app/mc-server && \ cd /app/mc-server && \ wget -q -O paper.jar "https://api.papermc.io/v2/projects/paper/versions/1.21.4/builds/216/downloads/paper-1.21.4-216.jar" || \ wget -q -O paper.jar "https://api.papermc.io/v2/projects/paper/versions/1.21.4/builds/215/downloads/paper-1.21.4-215.jar" || \ wget -q -O paper.jar "https://api.papermc.io/v2/projects/paper/versions/1.21.4/builds/214/downloads/paper-1.21.4-214.jar" || \ echo "WARN: Paper download failed, will try again at runtime" # ── Download ngrok ─────────────────────────────────────────────────────────── RUN cd /tmp && \ wget -q -O ngrok.zip "https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-linux-amd64.zip" && \ unzip -o ngrok.zip -d /usr/local/bin/ && \ chmod +x /usr/local/bin/ngrok && \ rm ngrok.zip # ── Accept EULA ────────────────────────────────────────────────────────────── RUN echo "eula=true" > /app/mc-server/eula.txt # ── Copy configs ───────────────────────────────────────────────────────────── COPY mc-server/server.properties /app/mc-server/server.properties COPY mc-server/paper-global.yml /app/mc-server/config/paper-global.yml COPY mc-server/paper-world-defaults.yml /app/mc-server/config/paper-world-defaults.yml # ── Copy application ───────────────────────────────────────────────────────── COPY app.py /app/app.py COPY start.sh /app/start.sh RUN chmod +x /app/start.sh # ── Setup ──────────────────────────────────────────────────────────────────── RUN mkdir -p /app/mc-server/world /app/mc-server/logs /app/mc-server/plugins ENV PORT=7860 EXPOSE 7860 EXPOSE 25565 HEALTHCHECK --interval=30s --timeout=15s --start-period=180s --retries=5 \ CMD curl -f http://localhost:7860/health || exit 1 CMD ["bash", "/app/start.sh"]