Sobre o projeto

# HyperCraft **Painel auto-hospedado para servidores Minecraft — um binário, uma máquina, quantos servidores você quiser.** HyperCraft é uma ferramenta de gerenciamento leve projetada especificamente para servidores Minecraft. Ela integra tarefas complexas de operação e manutenção de servidores em uma interface baseada em navegador, permitindo que usuários sem conhecimento profundo de Linux gerenciem facilmente múltiplas instâncias de servidores de jogo. ## Recursos principais ### Implantação minimalista - **Binário único**: backend e frontend empacotados juntos; a máquina de destino não precisa de Go, Node.js, Java ou qualquer ambiente de execução instalado. - **Sem dependências externas**: sem banco de dados (como MySQL/PostgreSQL), sem Docker; basta baixar, extrair e iniciar. - **Modo daemon**: o painel roda como daemon; mesmo fechando a aba do navegador, perdendo a conexão ou reiniciando o roteador, os processos dos servidores continuam em execução. ### Poderoso gerenciamento de múltiplas instâncias - **Quantidade ilimitada de instâncias**: execute vários servidores Minecraft (Java ou Bedrock) simultaneamente em uma única máquina. - **Controle elegante**: suporta iniciar, parar graciosamente, reiniciar e encerrar à força. A parada graciosa envia primeiro o comando `stop` e aguarda o salvamento do mundo antes de escalar sinais após o timeout. - **Reinício automático após crash**: configuração opcional para recuperação automática quando o servidor cai inesperadamente. ### Experiência de terminal imersiva - **Console de terminal real**: o servidor roda em um pseudo-terminal, com suporte a autocompletar com Tab, saída colorida e adaptação à largura da janela. O conteúdo do autocompletar é processado pelo núcleo do servidor em execução. - **Reconexão**: usa buffer circular para registrar o histórico de saída. Após reconectar, o console preenche automaticamente os logs históricos ausentes, sem duplicar nem omitir. ### Ferramentas de operação automatizada - **Gerenciamento de ambiente Java**: instalação com um clique do Eclipse Temurin JRE/JDK, com suporte a múltiplas versões coexistindo (por exemplo, rodar simultaneamente um servidor antigo 1.12 e a versão mais recente). O painel detecta e instala automaticamente a versão de Java necessária. - **Biblioteca de núcleos de servidor**: fontes de download integradas como Paper e Velocity; um download pode ser copiado para quantas instâncias forem necessárias. - **Gerenciamento de plugins**: suporta obtenção de plugins do Modrinth, Hangar, SpigotMC, GitHub Release e outras plataformas. Oferece gerenciamento em dois níveis: biblioteca global e instância, com cada versão mantida separadamente para rollback. - **Biblioteca/market de construções**: suporta análise e importação de arquivos `.schem`, permitindo visualizar dimensões e materiais, e instalar com um clique em uma instância específica. ### Segurança e monitoramento - **Monitoramento de recursos**: exibe em tempo real curvas de CPU/memória de cada instância, além de memória, disco, CPU e tráfego de rede da máquina inteira. A coleta de dados é feita de forma independente pelo daemon, sem depender do estado da página web. - **Padrões seguros**: usa hash de senha PBKDF2-SHA256, com limitação de taxa de login, limite de conexões simultâneas, cookies de sessão HttpOnly + SameSite e verificação de token de dispositivo. - **Segurança de arquivos**: todos os caminhos de operação de arquivos são isolados via `os.Root`, estritamente restritos ao diretório da instância, evitando acesso não autorizado. ### Outros recursos úteis - **Editor de arquivos de configuração**: transforma `server.properties` em formulário, preservando comentários e ordem das chaves, com escape automático de chinês e gravação apenas das chaves modificadas. - **Histórico de configuração**: mantém um repositório Git independente por instância para registrar alterações de configuração, com suporte a visualização de Diff e restauração (atenção: não inclui backup dos dados do mundo). - **Ambiente de banco de dados**: inicia MySQL, PostgreSQL ou MongoDB com um clique, atendendo a plugins que exigem suporte a banco de dados. - **Terminal local**: shell real da máquina onde o painel está (desativado por padrão), para executar comandos em nível de sistema. - **Autoatualização do painel**: com um clique na interface, substitui o binário e reinicia no local; em caso de falha, reverte automaticamente. ## Início rápido O artefato de release é um binário de arquivo único, com suporte a arquiteturas Linux amd64/arm64, entre outras. ```bash # 1. Criar diretório e baixar 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 serviço systemd sudo cp hypercraft.service /etc/systemd/system/ sudo systemctl enable --now hypercraft # 3. Ver a senha inicial de administrador sudo journalctl -u hypercraft -f ``` Abra `http://IP-do-seu-servidor:19190` para fazer login. Na primeira inicialização, uma senha aleatória de administrador é gerada e impressa uma vez no log. > **Aviso de segurança**: o painel escuta HTTP em texto claro por padrão. Se precisar expô-lo à internet pública, configure obrigatoriamente TLS via proxy reverso ou use túnel SSH. ## Visão geral da interface - **Painel**: exibe o status de cada servidor em cartões, com suporte a ligar/desligar diretamente e alertas de disco fixados no topo. - **Assistente de nova instância**: fluxo em cinco etapas para escolher o núcleo, instalar Java e nomear a instância. - **Gerenciador de arquivos**: suporta upload por arrastar e soltar, retomada de transferência e edição online de arquivos de configuração. - **Adaptação para celular**: em telas estreitas, prioriza status, ligar/desligar e console; a barra lateral recolhe para o modo gaveta. ## Detalhes técnicos - **Linguagem**: Go (backend) + Vanilla JS (frontend, sem dependência de framework de UI). - **Desempenho**: o painel usa cerca de 2 MB de heap residente. - **Build**: requer Go 1.25+ e Node 20+ para compilar a partir do código-fonte. - **Licença**: MIT License. ## Limitações conhecidas e planos futuros - **Ainda não implementado**: gerenciamento de lista de jogadores/whitelist (requer edição manual do JSON), backup automático, tarefas agendadas, mais tipos de núcleo (Fabric/Forge), suporte a terminal Windows. - **Compatibilidade de sistema**: Temurin oferece apenas builds glibc; sistemas musl (como Alpine) podem não funcionar, e o painel fará detecção e aviso.