StrangeCraft CMS PlaVER

Панель управления серверами

Модуль «Панель» — это встроенный в StrangeCraft CMS аналог Pterodactyl: вы создаёте и обслуживаете игровые серверы прямо из админки сайта, без SSH и ручной возни с консолью. Каждый сервер работает в изолированном Docker-контейнере на «ноде» — машине с установленным агентом панели. Нодой может быть и тот же сервер, где стоит сайт, и любые дополнительные машины.

Из чего складывается панель:

  • Ноды — машины, на которых крутятся игровые серверы (Админка → Панель → Ноды).
  • Шаблоны ядер — описания «как поднять сервер»: Paper, Vanilla, Fabric, Velocity или серверная версия вашей сборки лаунчера.
  • Серверы — создаются из шаблона на выбранной ноде; у каждого есть консоль, файлы, бэкапы, расписания и доступы для помощников.

Установка ноды

Локальная нода — в один клик

Если игровой сервер будет работать на той же машине, что и сайт, ничего копировать в терминал не нужно. Откройте Админка → Панель → Ноды и нажмите «Установить ноду на этой машине». CMS сама:

  1. поставит Docker и nftables (если их ещё нет);
  2. положит бинарь агента scnode и включит его как systemd-сервис;
  3. зарегистрирует ноду «Эта машина» в панели.

Через пару минут нода появится в списке со статусом «на связи». Повторное нажатие безопасно: установка идемпотентна и просто обновит агента.

Кнопка доступна, только если установщик CMS настроил для веб-процесса право sudo на единственную команду panel:install-node (по тому же принципу, что «Применить к серверу» у почты). Если прав нет, панель покажет причину — тогда добавьте ноду «вручную», как удалённую (см. ниже).

Удалённая нода

Любую отдельную машину подключают через одноразовый токен:

  1. Нажмите «Добавить другую машину» и заполните форму: название, домен (FQDN) ноды, публичный IP, порты управления/консоли (по умолчанию 8443 и 8444) и, при желании, ресурсы машины. Домен нужен для сертификата — по нему CMS и браузер обращаются к агенту.

  2. После сохранения панель покажет команду установки вида:

    curl -fsSL https://<ваш-сайт>/panel/agent/install.sh | sudo bash -s -- \
        --panel https://<ваш-сайт> --token PNE_…
    

    Токен PNE_… одноразовый и действует ограниченное время (по умолчанию 60 минут). Второй раз он показан не будет; если истёк или потерян — кнопка «Новый токен» в строке ноды выпустит свежий.

  3. Выполните команду на сервере ноды под 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 минуты).

Настройка один раз:

  1. Настройки → LuckPerms → «Настроить базу LuckPerms автоматически» — CMS создаст базу и пользователя на своей MySQL и откроет доступ для нод. (Если база LuckPerms уже есть — просто впишите её реквизиты в те же настройки.)
  2. В мастере создания сервера оставьте галочку «Установить 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.

Создание сервера

Админка → Панель → Серверы → Создать. Мастер из четырёх шагов:

  1. Основное — название и нода, на которой будет работать сервер.
  2. Ядро — шаблон и его переменные (версия игры и т.п.).
  3. Ресурсы и сеть — память, диск, лимит CPU (0 — без лимита); режим порта:
    • Публичный — порт открыт, игроки заходят напрямую. Здесь же выбирается режим авторизации: mojang (обычная лицензия), session (вход через аккаунты сайта, работает и на модовых ядрах) или offline (без проверки — нужен auth-плагин);
    • За прокси — порт закрыт, вход только через Velocity; доступен, когда в панели уже есть сервер из шаблона Velocity. Галочка «Зарегистрировать сервер в прокси автоматически» пропишет его в конфиг Velocity.
  4. Связь с сайтом — показывать сервер на сайте (статус, мониторинг) и автоматически установить плагин 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 при этом сохраняются. Если прокси выключен, конфиг применится при следующем его старте.

Диагностика

Нода «нет связи»

Статусы ноды: на связи (агент прислал сигнал за последние полторы минуты), ждёт регистрации (команда установки ещё не выполнена) и нет связи.

Если нода пропала со связи:

  1. На машине ноды перезапустите агента и посмотрите журнал:

    systemctl restart scnode
    journalctl -u scnode -n 50
    
  2. Если агент не поднимается — выпустите «Новый токен» в строке ноды и выполните команду установки заново: скрипт идемпотентен, он обновит агента и заново зарегистрирует ноду, не трогая серверы.

Статусы сервера

В консоли и списках сервер бывает: работает, запускается, останавливается, установка, выключен, приостановлен. Если установка не завершилась, на странице консоли появится предупреждение и журнал установки — исправьте причину (чаще всего неверная версия в переменных шаблона) и запустите переустановку со страницы серверов. При «зависшем» сервере поможет «Убить процесс» и повторный запуск.