About this project

# HyperCraft **Self-hosted Minecraft Server Panel — One binary, one machine, any number of servers.** HyperCraft is a lightweight management tool designed specifically for Minecraft servers. It consolidates complex server operations into a browser-based interface, allowing users to easily manage multiple game server instances without requiring deep Linux system knowledge. ## Core Features ### Minimalist Deployment - **Single Binary**: The backend and frontend are packaged together. No Go, Node.js, Java, or other runtime environments need to be installed on the target machine. - **No External Dependencies**: No database (such as MySQL/PostgreSQL) or Docker is required. Simply download and extract to start. - **Daemon Mode**: The panel runs as a daemon. Server processes remain running even if the browser tab is closed, network connectivity is lost, or the router restarts. ### Powerful Multi-Instance Management - **Unlimited Instances**: Run multiple Minecraft servers (Java Edition or Bedrock Edition) simultaneously on a single machine. - **Graceful Control**: Supports starting, graceful shutdown, restarting, and forceful termination. Graceful shutdown sends the `stop` command first to wait for world saves, upgrading signals only after a timeout. - **Automatic Crash Restart**: Optional configuration that automatically recovers the server when it crashes unexpectedly. ### Immersive Terminal Experience - **True Terminal Console**: Servers run on pseudo-terminals, supporting Tab completion, color output, and adaptive window width. Completion content is handled by the running server kernel. - **Reconnection Support**: Uses a circular buffer to record historical output. Upon reconnection, the console automatically fills in missing historical logs, ensuring no duplication or omission. ### Automated Operations Tools - **Java Environment Management**: One-click installation of Eclipse Temurin JRE/JDK, supporting multiple versions coexisting (e.g., running both old 1.12 servers and the latest version). The panel automatically detects and installs the required Java version. - **Server Core Library**: Built-in download sources for cores like Paper and Velocity. A single download can be copied to any number of instances. - **Plugin Management**: Supports pulling plugins from platforms such as Modrinth, Hangar, SpigotMC, and GitHub Releases. Provides global library and instance-level management, retaining each version separately for rollback purposes. - **Build Library/Market**: Supports parsing `.schem` files for入库 analysis, allowing direct viewing of dimensions and materials, and one-click installation to specified instances. ### Security and Monitoring - **Resource Monitoring**: Real-time display of CPU/memory curves for each instance, as well as total machine memory, disk, CPU, and network traffic. Data collection is performed independently by the daemon, unaffected by web page status. - **Secure Defaults**: Uses PBKDF2-SHA256 password hashing, supports login rate limiting, concurrent connection limits, HttpOnly + SameSite session cookies, and device token verification. - **File Safety**: All file operation paths are isolated via `os.Root`, strictly confined within instance directories to prevent unauthorized access. ### Other Practical Features - **Configuration File Editor**: Formulates `server.properties`, preserving comments and key order, auto-escaping Chinese characters, and writing only modified key-value pairs. - **Configuration History**: Maintains independent Git repositories for each instance to record configuration changes, supporting Diff viewing and restoration (note: does not include world data backups). - **Database Environment**: One-click startup of MySQL, PostgreSQL, or MongoDB to meet plugin requirements needing database support. - **Local Terminal**: Access to the real Shell of the machine hosting the panel (disabled by default), facilitating system-level commands. - **Panel Self-Update**: Click on the interface to replace the binary file and restart in place; automatic rollback occurs upon failure. ## Quick Start The release artifact is a single-file binary, supporting architectures such as Linux amd64/arm64. ```bash # 1. Create directory and download sudo mkdir -p /opt/hypercraft && cd /opt/hypercraft sudo wget https://github.com/Lanscarlos/HyperCraft/releases/download/v0.4.0/hypercraft-0.4.0-linux-amd64.tar.gz sudo tar -xzf hypercraft-0.4.0-linux-amd64.tar.gz --strip-components=1 # 2. Install systemd service sudo cp hypercraft.service /etc/systemd/system/ sudo systemctl enable --now hypercraft # 3. View initial admin password sudo journalctl -u hypercraft -f ``` Open `http://your_server_ip:19190` to log in. The first launch generates a random administrator password and prints it once in the logs. > **Security Tip**: The panel listens on plaintext HTTP by default. If exposing it to the public internet, please configure reverse proxy TLS or use an SSH tunnel. ## Interface Overview - **Dashboard**: Card-style display of server statuses, supporting direct power on/off, with disk warnings pinned at the top. - **New Instance Wizard**: A five-step process guiding core selection, Java installation, and instance naming. - **File Manager**: Supports drag-and-drop upload, breakpoint resumption, and online editing of configuration files. - **Mobile Adaptation**: On narrow screens, priority is given to status, power controls, and consoles, with the sidebar collapsing into a drawer mode. ## Technical Details - **Language**: Go (Backend) + Vanilla JS (Frontend, no UI framework dependency). - **Performance**: The panel's resident heap memory is approximately 2 MB. - **Build**: Requires Go 1.25+ and Node 20+ to build from source. - **Protocol**: MIT License. ## Known Limitations and Future Plans - **Currently Not Implemented**: Player list/whitelist management (requires manual JSON editing), automatic backups, scheduled tasks, more core types (Fabric/Forge), Windows terminal support. - **System Compatibility**: Temurin provides only glibc builds; musl systems (such as Alpine) may not run correctly. The panel will detect this and prompt accordingly.