ServerTap: REST API для управления серверами Minecraft
Когда сервер Minecraft разрастается до десятков игроков и множества плагинов, ручное администрирование через консоль или внутриигровые команды становится неудобным. ServerTap решает эту проблему, предоставляя полноценный REST API для серверов на базе Bukkit, Spigot и PaperMC. С его помощью можно получать информацию о состоянии сервера, управлять игроками, экономикой и даже читать логи в реальном времени — всё через простые HTTP-запросы.
Что такое ServerTap и зачем он нужен
ServerTap — это плагин, который превращает ваш Minecraft-сервер в веб-сервис. Вместо того чтобы каждый раз заходить в консоль или писать сложные скрипты для RCON, администратор может отправить обычный HTTP-запрос и мгновенно получить JSON-ответ. Это открывает широчайшие возможности для автоматизации: от создания панелей мониторинга до интеграции с Discord-ботами или веб-сайтами.
Плагин самостоятельно хостит документацию через Swagger UI, поэтому изучить все доступные эндпоинты можно прямо в браузере по адресу вашего сервера. Такой подход сильно экономит время при разработке собственных инструментов. Кстати, если вы предпочитаете управлять модами через удобный лаунчер, foxygame.net позволяет скачивать и устанавливать плагины прямо из меню — современный и гибкий способ поддерживать сервер в актуальном состоянии без ручного поиска файлов.
Установка и первый запуск
Установка ServerTap элементарна: скачайте последнюю версию JAR-файла с официального репозитория на GitHub (ссылка доступна на странице релизов) и поместите его в папку plugins/ вашего сервера. После перезапуска плагин автоматически создаст конфигурационный файл plugins/ServerTap/config.yml и запустит встроенный HTTP-сервер на порту 4567.
Проверить работоспособность можно с помощью curl или любого HTTP-клиента. Простейший запрос к корневому эндпоинту вернёт базовую информацию о сервере: название, версию, MOTD, данные о памяти и процессоре, а также списки забаненных игроков и IP-адресов. Например:
$ curl http://localhost:4567/v1/server
{
"name": "Paper",
"motd": "Добро пожаловать на мой сервер!",
"version": "git-Paper-89 (MC: 1.15.2)",
"health": {
"cpus": 4,
"uptime": 744,
"totalMemory": 2010644480,
"maxMemory": 2010644480,
"freeMemory": 1332389360
},
"bannedPlayers": [...]
}
Основные возможности API
ServerTap предоставляет десятки эндпоинтов, сгруппированных по функциональным категориям. Благодаря Swagger-интерфейсу вы можете не только читать документацию, но и сразу тестировать запросы в реальном времени. Вот лишь некоторые из доступных операций:
- Управление игроками: получение списка онлайн-игроков, поиск по UUID или нику, проверка статуса (оператор, бан, вайтлист).
- Администрирование: добавление и удаление операторов, управление вайтлистом, отправка broadcast-сообщений.
- Миры и чанки: список миров, сохранение мира, информация о загруженных чанках.
- Экономика: если установлен плагин экономики (например, Essentials), можно проверять баланс, переводить деньги и списывать средства.
- Скорборды: чтение и управление игровыми таблицами рекордов.
- Плагины: получение списка установленных плагинов с версиями.
Безопасность: TLS и аутентификация
Поскольку API открывает доступ к чувствительным функциям сервера, ServerTap предлагает несколько уровней защиты. Во-первых, настоятельно рекомендуется включить TLS (SSL) для шифрования трафика. Для этого нужно сгенерировать Java-keystore файл с помощью утилиты keytool (входит в состав JDK) и указать путь к нему в конфигурации:
tls: enabled: true keystore: selfsigned.jks keystorePassword: testing
После этого все запросы следует выполнять через https://. Дополнительно поддерживается SNI для продвинутых сценариев, но большинству пользователей эта опция не нужна.
Для аутентификации запросов используется простой ключ, который передаётся в заголовке key. В конфигурации задаётся длинная случайная строка, и без неё доступ к API будет закрыт. Разработчики отмечают, что текущая система аутентификации базовая, и приветствуют помощь в её улучшении.
Вебхуки и WebSockets для реального времени
ServerTap умеет не только отвечать на запросы, но и самостоятельно отправлять данные при наступлении событий. Вебхуки настраиваются в конфиге: указывается URL-слушатель и список событий (PlayerJoin, PlayerQuit, PlayerDeath, PlayerChat, PlayerKick). При каждом таком событии плагин отправляет POST-запрос с JSON-телом, содержащим информацию об игроке и типе события. Это идеально подходит для интеграции с Discord, Telegram или системами логирования.
Ещё более мощный инструмент — двунаправленный WebSocket-интерфейс. Подключившись к ws://host:4567/v1/ws/console, вы начинаете получать все серверные логи в реальном времени без периодического опроса. Каждое сообщение приходит в формате JSON с полями message, timestampMillis, loggerName и level. Буфер хранит последние 1000 строк (размер настраивается), а также через WebSocket можно отправлять команды на сервер. Для аутентификации вебсокетов используется cookie x-servertap-key, поскольку заголовки в вебсокетах недоступны.
Заключение
ServerTap превращает администрирование Minecraft-сервера в современный программный интерфейс, доступный из любого языка программирования или инструмента вроде Postman. Гибкая система эндпоинтов, автоматическая документация, поддержка вебхуков и вебсокетов делают его незаменимым для владельцев крупных серверов и разработчиков смежных сервисов. При грамотной настройке TLS и аутентификации плагин остаётся безопасным даже при открытии доступа из интернета. Если вы стремитесь к максимальной автоматизации и удобству, ServerTap определённо заслуживает места в вашей сборке серверных плагинов.