Мониторинг доступности Minecraft-серверов с уведомлениями в Telegram. Работает на любом ядре и загрузчике (Vanilla, Spigot, Paper, Purpur, Forge, NeoForge, Fabric, Quilt, BungeeCord, Velocity), потому что подключается не как плагин или мод, а как Java-агент — одной строкой в команде запуска. Один экземпляр обслуживает неограниченное число серверов и пользователей.
Minecraft JVM PingCore Telegram
┌──────────────────────┐ POST /ingest ┌────────────────────────┐ ┌────────────┐
│ -javaagent: │ каждые 30 с │ aiohttp relay │ │ 🟢 запущен │
│ pingcore-agent.jar │ ────────────► │ SQLite (серверы) │ ───► │ 🔴 упал │
│ start/heartbeat/stop │ подписано │ watchdog (нет пульса) │ │ 🟡 стоп │
└──────────────────────┘ HMAC-SHA256 │ aiogram bot │ └────────────┘
└────────────────────────┘
Падение ловится по принципу dead man's switch: пока идёт пульс — сервер жив. Пульс пропал
(в том числе при kill -9, OOM или отключении хостинга, когда изнутри процесса отправить уже
нечего) — об этом сообщает сам сервис.
1. Бот. У @BotFather: /newbot → имя → username → токен.
2. Сервис (Linux, сам выберет Docker или systemd):
curl -fsSL https://raw.githubusercontent.com/Xhiveee/pingcore/main/deploy/install.sh | bashБез Docker принудительно — MODE=systemd, с Docker — MODE=docker.
Вручную: docker compose up -d --build в bot/ либо venv + systemd — см. руководство.
3. Сервер Minecraft. Напишите боту /register MyServer, затем в каталоге с server.jar:
curl -fsSL https://raw.githubusercontent.com/Xhiveee/pingcore/main/deploy/install-agent.sh | bash -s -- \
--token ТОКЕН --secret СЕКРЕТ --relay https://ваш-хости добавьте в команду запуска перед -jar:
java -Xmx4G -javaagent:pingcore-agent.jar -jar server.jar noguiГотово: при старте придёт 🟢, при штатной остановке 🟡, при падении 🔴.
Руководство от А до Я — установка (Docker и без Docker), HTTPS, подключение серверов на разных ядрах и панелях, все настройки, обновление, диагностика, безопасность.
| Команда | Что делает |
|---|---|
/register <имя> |
регистрирует сервер и выдаёт строку запуска |
/list |
все ваши серверы: 🟢 работает · � не отвечает · 🟡 остановлен · ⚪ не подключался |
/status <имя> |
состояние, аптайм, память JVM, время последнего пульса |
/unregister <имя> |
удаляет сервер |
- один
.jarна 13 КБ без зависимостей — работает везде, где есть JVM 8+; - никогда не мешает серверу: не бросает исключений, таймаут 3 сек, не более одной строки ошибки в минуту, отдельный daemon-поток с минимальным приоритетом;
- различает штатную остановку (🟡) и падение (🔴);
- повторы с экспоненциальной паузой, чтобы моргнувшая сеть не выглядела как краш;
- HMAC-SHA256-подпись каждого пакета и защита от повторной отправки (окно
ts±5 минут); - метрики JVM (занятая и максимальная память) в
/status; - опциональный лог агента в файл — для отладки без спама в консоль сервера.
| Путь | Что это |
|---|---|
src/main/java/pingcore/agent |
Java-агент для Minecraft-серверов |
bot/pingcore |
Telegram-бот и relay в одном процессе (aiogram 3 + aiohttp + aiosqlite) |
bot/tests, bot/e2e_smoke.py |
тесты, включая сквозной прогон на живой JVM |
deploy/ |
скрипты установки сервиса и агента |
docs/GUIDE.md |
полное руководство |
mvn clean package # агент -> target/pingcore-agent.jar, 8 JUnit-тестов
cd bot && pip install -r requirements-dev.txt && python -m pytest # 25 тестов
cd bot && python e2e_smoke.py # живая JVM + агент + relay + watchdogДальнейшие планы — в PingCore-plan.md.