Об этом проекте

# HyperCraft **Панель управления Minecraft-серверами для самостоятельного хостинга — один бинарный файл, одна машина, любое количество серверов.** HyperCraft — это легковесный инструмент управления, созданный специально для Minecraft-серверов. Он объединяет сложные задачи администрирования серверов в браузерном интерфейсе, позволяя пользователям легко управлять несколькими игровыми серверными инстансами без глубоких знаний Linux. ## Ключевые возможности ### Минимальное развёртывание - **Один бинарный файл**: бэкенд и фронтенд упакованы вместе; на целевой машине не требуется устанавливать Go, Node.js, Java или любую другую среду выполнения. - **Без внешних зависимостей**: не нужна база данных (например, MySQL/PostgreSQL), не нужен Docker — достаточно скачать и распаковать архив. - **Режим демона**: панель работает как демон; даже если закрыть вкладку браузера, отключить сеть или перезагрузить роутер, серверные процессы продолжают работать. ### Мощное управление несколькими инстансами - **Любое количество инстансов**: одновременный запуск нескольких Minecraft-серверов (Java Edition или Bedrock Edition) на одной машине. - **Изящное управление**: поддержка запуска, корректной остановки, перезапуска и принудительного завершения. При корректной остановке сначала отправляется команда `stop` с ожиданием сохранения мира, и только по истечении тайм-аута отправляется сигнал завершения. - **Автоперезапуск при сбое**: опциональная настройка автоматического восстановления при неожиданном падении сервера. ### Погружение в терминал - **Настоящая терминальная консоль**: сервер работает на псевдотерминале с поддержкой автодополнения по Tab, цветного вывода и адаптации к ширине окна. Содержимое автодополнения обрабатывается ядром работающего сервера. - **Переподключение при обрыве связи**: для записи истории вывода используется кольцевой буфер. После переподключения консоль автоматически дополняет пропущенные исторические логи, обеспечивая отсутствие дублирования и пропусков. ### Инструменты автоматизированного администрирования - **Управление средой Java**: установка Eclipse Temurin JRE/JDK в один клик, поддержка сосуществования нескольких версий (например, одновременный запуск старого сервера 1.12 и последней версии). Панель автоматически определяет и устанавливает необходимую версию Java. - **Библиотека ядер серверов**: встроенные источники загрузки ядер, таких как Paper, Velocity и других; одна загрузка может быть скопирована для использования любым количеством инстансов. - **Управление плагинами**: поддержка загрузки плагинов с платформ Modrinth, Hangar, SpigotMC, GitHub Release и других. Предусмотрено два уровня управления — глобальная библиотека и уровень инстанса; каждая версия сохраняется отдельно для возможности отката. - **Библиотека построек/маркетплейс**: поддержка импорта и разбора файлов `.schem`, возможность просмотра размеров и материалов, а также установка в указанный инстанс в один клик. ### Безопасность и мониторинг - **Мониторинг ресурсов**: отображение в реальном времени графиков CPU/памяти для каждого инстанса, а также памяти, диска, CPU и сетевого трафика всей машины. Сбор данных выполняется демоном независимо и не зависит от состояния веб-страницы. - **Безопасные настройки по умолчанию**: хеширование паролей PBKDF2-SHA256, ограничение скорости входа, ограничение одновременных подключений, сессионные cookie с HttpOnly + SameSite и проверка токена устройства. - **Безопасность файлов**: все пути файловых операций изолированы через `os.Root` и строго ограничены каталогом инстанса, что предотвращает несанкционированный доступ. ### Прочие полезные функции - **Редактор конфигурационных файлов**: представление `server.properties` в виде формы с сохранением комментариев и порядка ключей, автоматическим экранированием китайских символов и записью только изменённых значений. - **История конфигураций**: для каждого инстанса ведётся отдельный Git-репозиторий с записями изменений конфигурации, поддерживается просмотр Diff и восстановление (примечание: резервное копирование данных мира не включено). - **Среда баз данных**: запуск MySQL, PostgreSQL или MongoDB в один клик для плагинов, требующих поддержки баз данных. - **Локальный терминал**: настоящий Shell машины, на которой работает панель (по умолчанию отключён), для удобного выполнения системных команд. - **Самообновление панели**: замена бинарного файла и перезапуск на месте по клику в интерфейсе, с автоматическим откатом при неудаче. ## Быстрый старт Результат сборки — однофайловый бинарник, поддерживающий архитектуры Linux amd64/arm64 и другие. ```bash # 1. Создание каталога и загрузка 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. Установка службы systemd sudo cp hypercraft.service /etc/systemd/system/ sudo systemctl enable --now hypercraft # 3. Просмотр начального пароля администратора sudo journalctl -u hypercraft -f ``` Откройте `http://IP-вашего-сервера:19190` для входа. При первом запуске генерируется случайный пароль администратора и один раз выводится в лог. > **Предупреждение о безопасности**: по умолчанию панель прослушивает незашифрованный HTTP. Если требуется доступ из публичной сети, обязательно настройте обратный прокси с TLS или используйте SSH-туннель. ## Обзор интерфейса - **Панель управления**: карточное отображение состояния серверов, возможность прямого включения/выключения, предупреждения о диске закрепляются сверху. - **Мастер создания инстанса**: пятишаговый процесс с выбором ядра, установкой Java и именованием инстанса. - **Файловый менеджер**: поддержка загрузки перетаскиванием, докачки при обрыве, онлайн-редактирования конфигурационных файлов. - **Адаптация для мобильных устройств**: на узких экранах приоритетно отображаются статус, включение/выключение и консоль; боковая панель сворачивается в режим ящика. ## Технические детали - **Языки**: Go (бэкенд) + Vanilla JS (фронтенд, без зависимостей от UI-фреймворков). - **Производительность**: постоянная куча панели — около 2 МБ. - **Сборка**: для сборки из исходного кода требуются Go 1.25+ и Node 20+. - **Лицензия**: MIT License. ## Известные ограничения и планы на будущее - **Пока не реализовано**: управление списком игроков/белым списком (требуется ручное редактирование JSON), автоматическое резервное копирование, задачи по расписанию, дополнительные типы ядер (Fabric/Forge), поддержка терминала Windows. - **Совместимость систем**: Temurin предоставляет только сборки для glibc; на системах с musl (например, Alpine) работа может быть невозможна — панель выполнит проверку и выдаст предупреждение.