Sobre el proyecto

# HyperCraft **面板 de servidor Minecraft autoalojado: un solo archivo binario, una máquina, cualquier cantidad de servidores.** HyperCraft es una herramienta de gestión ligera diseñada específicamente para servidores de Minecraft. Integra las complejas tareas de operación y mantenimiento de servidores en una interfaz basada en navegador, de modo que los usuarios pueden gestionar fácilmente múltiples instancias de servidores de juego sin necesidad de poseer conocimientos profundos de Linux. ## Características principales ### Despliegue minimalista - **Archivo binario único**: el backend y el frontend están empaquetados juntos; la máquina de destino no necesita tener instalado Go, Node.js, Java ni ningún entorno de ejecución. - **Sin dependencias externas**: no requiere base de datos (como MySQL/PostgreSQL), no requiere Docker; se puede iniciar tras descargar y descomprimir. - **Modo demonio**: el panel se ejecuta como demonio; aunque se cierre la pestaña del navegador, se corte la red o se reinicie el router, el proceso del servidor sigue ejecutándose. ### Potente gestión multiinstancia - **Cualquier cantidad de instancias**: ejecuta simultáneamente múltiples servidores de Minecraft (edición Java o Bedrock) en una sola máquina. - **Control elegante**: admite inicio, parada elegante, reinicio y finalización forzada. La parada elegante primero envía el comando `stop` y espera a que se guarde el mundo, y solo tras el tiempo de espera escala la señal. - **Reinicio automático tras caída**: configuración opcional para recuperarse automáticamente cuando el servidor se cae inesperadamente. ### Experiencia de terminal inmersiva - **Consola de terminal real**: el servidor se ejecuta sobre un pseudo-terminal, admite autocompletado con Tab, salida con colores y adaptación automática del ancho de ventana. El contenido del autocompletado lo gestiona el núcleo del servidor en ejecución. - **Reconexión tras desconexión**: utiliza un búfer circular para registrar la salida histórica. Tras reconectarse, la consola completa automáticamente los registros históricos faltantes, garantizando que no se dupliquen ni se omitan. ### Herramientas de operación automatizada - **Gestión del entorno Java**: instalación con un clic de Eclipse Temurin JRE/JDK, compatible con la coexistencia de múltiples versiones (por ejemplo, ejecutar a la vez un servidor antiguo 1.12 y la última versión). El panel detecta e instala automáticamente la versión de Java requerida. - **Biblioteca de núcleos de servidor**: incluye fuentes de descarga de núcleos como Paper y Velocity; una descarga puede copiarse para cualquier cantidad de instancias. - **Gestión de plugins**: admite la obtención de plugins desde plataformas como Modrinth, Hangar, SpigotMC y GitHub Release. Ofrece gestión en dos niveles: biblioteca global e instancia; cada versión se conserva por separado para permitir reversiones. - **Biblioteca/mercado de construcciones**: admite la ingesta y análisis de archivos `.schem`, permite ver directamente dimensiones y materiales, e instalarlos en una instancia específica con un clic. ### Seguridad y monitoreo - **Monitoreo de recursos**: muestra en tiempo real las curvas de CPU/memoria de cada instancia, así como la memoria, el disco, la CPU y el tráfico de red de toda la máquina. La recolección de datos la realiza el demonio de forma independiente, sin verse afectada por el estado de la página web. - **Valores predeterminados seguros**: utiliza hash de contraseñas PBKDF2-SHA256, admite limitación de velocidad de inicio de sesión, límite de conexiones concurrentes, cookies de sesión HttpOnly + SameSite y verificación de tokens de dispositivo. - **Seguridad de archivos**: todas las rutas de operaciones de archivos están aisladas mediante `os.Root`, estrictamente restringidas al directorio de la instancia, para evitar accesos no autorizados. ### Otras funciones útiles - **Editor de archivos de configuración**: convierte `server.properties` en un formulario, conserva comentarios y orden de claves, escapa automáticamente el chino y solo escribe las claves modificadas. - **Historial de configuración**: mantiene un repositorio Git independiente por instancia para registrar cambios de configuración, admite visualización de Diff y restauración (nota: no incluye copia de seguridad de los datos del mundo). - **Entorno de base de datos**: inicia con un clic MySQL, PostgreSQL o MongoDB, para satisfacer necesidades de plugins que requieren soporte de base de datos. - **Terminal local**: shell real de la máquina donde está el panel (desactivado por defecto), para ejecutar cómodamente comandos a nivel de sistema. - **Autoactualización del panel**: con un clic en la interfaz se reemplaza el archivo binario y se reinicia en el lugar; si falla, se revierte automáticamente. ## Inicio rápido El artefacto de publicación es un binario de archivo único, compatible con arquitecturas como Linux amd64/arm64. ```bash # 1. Crear directorio y descargar 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. Instalar el servicio systemd sudo cp hypercraft.service /etc/systemd/system/ sudo systemctl enable --now hypercraft # 3. Ver la contraseña inicial de administrador sudo journalctl -u hypercraft -f ``` Abre `http://IP-de-tu-servidor:19190` para iniciar sesión. En el primer arranque se genera una contraseña aleatoria de administrador y se imprime una vez en los registros. > **Aviso de seguridad**: el panel escucha por defecto HTTP en texto plano. Si necesitas exponerlo a Internet, asegúrate de configurar TLS en un proxy inverso o usar un túnel SSH. ## Resumen de la interfaz - **Panel de control**: muestra el estado de cada servidor en tarjetas, permite encender/apagar directamente y fija arriba las alertas de disco. - **Asistente de nueva instancia**: flujo de cinco pasos que guía la selección del núcleo, la instalación de Java y el nombrado de la instancia. - **Gestor de archivos**: admite carga por arrastrar y soltar, reanudación de cargas y edición de archivos de configuración en línea. - **Adaptación móvil**: en pantallas estrechas prioriza estado, encendido/apagado y consola; la barra lateral se repliega en modo cajón. ## Detalles técnicos - **Lenguaje**: Go (backend) + Vanilla JS (frontend, sin dependencia de frameworks de UI). - **Rendimiento**: el panel ocupa aproximadamente 2 MB de memoria heap en reposo. - **Compilación**: se requiere Go 1.25+ y Node 20+ para compilar desde el código fuente. - **Licencia**: MIT License. ## Limitaciones conocidas y planes futuros - **Actualmente no implementado**: gestión de lista de jugadores/lista blanca (requiere modificar el JSON manualmente), copias de seguridad automáticas, tareas programadas, más tipos de núcleos (Fabric/Forge), soporte de terminal en Windows. - **Compatibilidad del sistema**: Temurin solo ofrece compilaciones glibc; los sistemas musl (como Alpine) podrían no ejecutarlo; el panel lo detecta y avisa.