Панель управления серверами
Модуль «Панель» — это встроенный в StrangeCraft CMS аналог Pterodactyl: вы создаёте и обслуживаете игровые серверы прямо из админки сайта, без SSH и ручной возни с консолью. Каждый сервер работает в изолированном Docker-контейнере на «ноде» — машине с установленным агентом панели. Нодой может быть и тот же сервер, где стоит сайт, и любые дополнительные машины.
Из чего складывается панель:
- Ноды — машины, на которых крутятся игровые серверы (Админка → Панель → Ноды).
- Шаблоны ядер — описания «как поднять сервер»: Paper, Vanilla, Fabric, Velocity или серверная версия вашей сборки лаунчера.
- Серверы — создаются из шаблона на выбранной ноде; у каждого есть консоль, файлы, бэкапы, расписания и доступы для помощников.
Установка ноды
Локальная нода — в один клик
Если игровой сервер будет работать на той же машине, что и сайт, ничего копировать в терминал не нужно. Откройте Админка → Панель → Ноды и нажмите «Установить ноду на этой машине». CMS сама:
- поставит Docker и nftables (если их ещё нет);
- положит бинарь агента
scnodeи включит его как systemd-сервис; - зарегистрирует ноду «Эта машина» в панели.
Через пару минут нода появится в списке со статусом «на связи». Повторное нажатие безопасно: установка идемпотентна и просто обновит агента.
Кнопка доступна, только если установщик CMS настроил для веб-процесса право sudo на единственную команду panel:install-node (по тому же принципу, что «Применить к серверу» у почты). Если прав нет, панель покажет причину — тогда добавьте ноду «вручную», как удалённую (см. ниже).
Удалённая нода
Любую отдельную машину подключают через одноразовый токен:
-
Нажмите «Добавить другую машину» и заполните форму: название, домен (FQDN) ноды, публичный IP, порты управления/консоли (по умолчанию 8443 и 8444) и, при желании, ресурсы машины. Домен нужен для сертификата — по нему CMS и браузер обращаются к агенту.
-
После сохранения панель покажет команду установки вида:
curl -fsSL https://<ваш-сайт>/panel/agent/install.sh | sudo bash -s -- \ --panel https://<ваш-сайт> --token PNE_…Токен
PNE_…одноразовый и действует ограниченное время (по умолчанию 60 минут). Второй раз он показан не будет; если истёк или потерян — кнопка «Новый токен» в строке ноды выпустит свежий. -
Выполните команду на сервере ноды под root. Скрипт сам поставит Docker (на системах с apt) и nftables, скачает бинарь агента с вашего же сайта, зарегистрирует ноду и включит сервис
scnode. Страница нод в это время опрашивает статус и покажет «Нода вышла на связи», когда агент подключится.
Требования к машине-ноде: Linux с systemd и root-доступом. Docker ставится автоматически на дистрибутивах с apt (Debian/Ubuntu); на других поставьте Docker вручную до запуска команды. Без nftables агент работает, но не управляет правилами файрвола для игровых портов.
Пул портов
Прежде чем создавать серверы, выдайте ноде порты: кнопка «Порты» → диапазон (25565-25580) или список (25565,25570), не больше 500 за раз. Каждый сервер занимает один порт из пула; при удалении сервера порт возвращается.
Шаблоны ядер
Шаблон описывает, как поднять сервер: Docker-образ с нужной Java, команду запуска, переменные и скрипт установки ядра. Раздел — Админка → Панель → Шаблоны.
Встроенные шаблоны
Кнопка «Загрузить встроенные» добавляет шаблоны:
| Шаблон | Что это | Основные переменные |
|---|---|---|
| Paper | Популярное ядро с поддержкой плагинов | Версия Minecraft, файл ядра, флаги JVM |
| Vanilla | Официальное ядро Mojang | Версия Minecraft (latest — последняя), файл ядра |
| Fabric | Ядро для модов Fabric | Версия Minecraft, версия загрузчика Fabric, файл ядра |
| NeoForge | Ядро для модов NeoForge (1.20.6+) | Версия Minecraft, версия NeoForge |
| Forge | Классическое ядро для модов (1.16.5–1.20.1) | Версия Minecraft, версия Forge |
| Velocity (прокси) | Прокси для сети из нескольких серверов | Версия Velocity, файл ядра |
На серверы из шаблонов Paper, Fabric, NeoForge и Forge панель автоматически ставит и настраивает серверный плагин/мод StrangeCraftCore — сервер сразу связан с сайтом (подробнее в разделе «Серверный плагин»). Vanilla — исключение: туда поставить ничего нельзя.
Автоустановка LuckPerms
Панель умеет ставить LuckPerms на создаваемые серверы с общей базой прав на всю сеть: группы и права одинаковы на всех серверах, выдача привилегий с сайта работает сразу, изменения разлетаются по серверам сами (через общую базу, каждые ~3 минуты).
Настройка один раз:
- Настройки → LuckPerms → «Настроить базу LuckPerms автоматически» — CMS создаст базу и пользователя на своей MySQL и откроет доступ для нод. (Если база LuckPerms уже есть — просто впишите её реквизиты в те же настройки.)
- В мастере создания сервера оставьте галочку «Установить LuckPerms с общей базой сети» — панель положит подходящую сборку (плагин для Paper, мод для Fabric/NeoForge/Forge) и готовый конфиг.
Сборки LuckPerms скачиваются с Modrinth и кэшируются на сервере сайта; прогреть кэш заранее можно командой php artisan lp:fetch. На Vanilla LuckPerms не ставится (некуда), на существующие серверы — доустанавливается переустановкой из карточки сервера или руками.
Известные ограничения (панель пропускает установку и пишет причину в журнал):
- NeoForge 1.21.4 — LuckPerms несовместим со свежими сборками NeoForge (баг самого LuckPerms); чтобы поставить, укажите при создании сервера переменную NEOFORGE_VERSION = 21.4.10-beta;
- Forge до 1.19 и NeoForge до 1.21 — сборок LuckPerms под эти платформы не существует, права придётся настраивать средствами самого ядра.
Все они используют публичные Java-образы (Java 21, у Paper есть и вариант Java 17) — панель работает сразу, без собственного реестра образов. Скрипт установки скачивает ядро выбранной версии из официальных источников и принимает EULA.
Переменные шаблона показываются в мастере создания сервера — обычно достаточно значений по умолчанию, поменять стоит разве что версию игры.
Обновление встроенных шаблонов после обновления CMS
Повторное нажатие «Загрузить встроенные» добавляет только недостающие шаблоны и не трогает уже существующие (в том числе ваши правки). Чтобы принудительно перезаписать встроенные шаблоны свежими версиями из обновлённой CMS, выполните на сервере сайта:
php artisan panel:seed-templates --force
Это нужно, например, чтобы старые шаблоны получили поддержку session-режима авторизации (вход через аккаунты сайта) — она добавляется именно через обновлённые шаблоны.
Шаблон из сборки лаунчера
Модовую сборку из модуля «Лаунчер» можно поднять и как сервер:
- на странице сборок лаунчера — кнопка «Создать сервер»: панель сделает шаблон и сразу отправит вас в мастер создания сервера с ним;
- на странице шаблонов — блок «Сборки лаунчера» с кнопкой «Создать шаблон из сборки».
Панель собирает серверную версию модпака: берёт файлы сборки без чисто клиентских каталогов (шейдеры, ресурспаки, скриншоты, сохранения) и отдаёт их скрипту установки по защищённой ссылке. Если при импорте модпака с CurseForge у версии был официальный server pack автора — он подхватился автоматически и используется как есть. Если серверного ядра в паке нет, скрипт сам доустановит его под загрузчик сборки (Forge, NeoForge, Fabric, Quilt или Vanilla).
Шаблоны также можно создавать вручную, импортировать и экспортировать в JSON.
Создание сервера
Админка → Панель → Серверы → Создать. Мастер из четырёх шагов:
- Основное — название и нода, на которой будет работать сервер.
- Ядро — шаблон и его переменные (версия игры и т.п.).
- Ресурсы и сеть — память, диск, лимит CPU (0 — без лимита); режим порта:
- Публичный — порт открыт, игроки заходят напрямую. Здесь же выбирается режим авторизации:
mojang(обычная лицензия),session(вход через аккаунты сайта, работает и на модовых ядрах) илиoffline(без проверки — нужен auth-плагин); - За прокси — порт закрыт, вход только через Velocity; доступен, когда в панели уже есть сервер из шаблона Velocity. Галочка «Зарегистрировать сервер в прокси автоматически» пропишет его в конфиг Velocity.
- Публичный — порт открыт, игроки заходят напрямую. Здесь же выбирается режим авторизации:
- Связь с сайтом — показывать сервер на сайте (статус, мониторинг) и автоматически установить плагин StrangeCraftCore с персональным токеном: авторизация игроков, наказания и статистика заработают сразу после запуска.
После создания вы попадаете в консоль сервера, где виден журнал установки. Смена режима авторизации позже применяется переустановкой сервера.
Управление сервером
Вкладки сервера показываются по правам: помощнику с доступом только к консоли другие вкладки не видны.
Консоль
Живой вывод сервера в реальном времени: браузер подключается к агенту ноды по WebSocket, а если живое соединение недоступно (нет сертификата у ноды, блокировка в сети) — страница автоматически переходит на обновление опросом; индикатор в углу показывает текущий режим. В шапке — состояние, загрузка процессора и памяти, адрес сервера; кнопки Запустить / Перезапустить / Остановить / Убить процесс и строка отправки команд.
Файлы
Файловый менеджер работает прямо с диском ноды: просмотр, загрузка, скачивание и правка файлов до 1 МБ в браузере — конфиги удобно менять не выходя из панели.
Бэкапы
Создание — одной кнопкой (архив собирается на ноде в фоне), восстановление — только на остановленном сервере (восстановление затирает файлы). У каждого сервера есть лимит копий (по умолчанию 5, задаётся при создании): при создании нового бэкапа самые старые незащищённые удаляются автоматически. Отдельные бэкапы можно защитить от удаления.
Расписания
Автоматические задания по cron-выражению (0 4 * * * — каждый день в 4:00). В одном расписании до 20 шагов трёх типов: power (запуск/перезапуск/остановка), command (команда в консоль) и backup. Флажок «только когда сервер онлайн» и кнопка «Выполнить сейчас» прилагаются.
Субпользователи
Вкладка «Пользователи» — доступ для помощников. Приглашается существующий пользователь сайта по нику или почте (отдельных учёток у панели нет), и ему выдаётся набор прав-скоупов: консоль (просмотр/команды), питание, файлы (чтение/запись), бэкапы, расписания, настройки, управление доступом. Права можно менять и отзывать в любой момент.
Порты и Velocity
Два режима порта решают разные задачи:
- Публичный — обычный одиночный сервер: порт открыт наружу, игроки подключаются напрямую, проверку лицензии делает сам сервер.
- За прокси — для сети из нескольких серверов: порт бэкенда закрыт файрволом, игроки заходят только через Velocity. Проверку входа делает прокси, поэтому у бэкенда автоматически ставится
online-mode=false. Именно поэтому порт бэкенда должен оставаться закрытым: с открытым портом и выключенной проверкой на сервер сможет зайти кто угодно под любым ником — панель следит за этим сама.
При создании (и удалении) сервера за прокси панель автоматически правит секцию [servers] в velocity.toml прокси и просит Velocity перечитать конфиг командой velocity reload — без перезапуска прокси и разрыва сессий игроков. Ваши ручные правки и комментарии в velocity.toml при этом сохраняются. Если прокси выключен, конфиг применится при следующем его старте.
Диагностика
Нода «нет связи»
Статусы ноды: на связи (агент прислал сигнал за последние полторы минуты), ждёт регистрации (команда установки ещё не выполнена) и нет связи.
Если нода пропала со связи:
-
На машине ноды перезапустите агента и посмотрите журнал:
systemctl restart scnode journalctl -u scnode -n 50 -
Если агент не поднимается — выпустите «Новый токен» в строке ноды и выполните команду установки заново: скрипт идемпотентен, он обновит агента и заново зарегистрирует ноду, не трогая серверы.
Статусы сервера
В консоли и списках сервер бывает: работает, запускается, останавливается, установка, выключен, приостановлен. Если установка не завершилась, на странице консоли появится предупреждение и журнал установки — исправьте причину (чаще всего неверная версия в переменных шаблона) и запустите переустановку со страницы серверов. При «зависшем» сервере поможет «Убить процесс» и повторный запуск.