Назад в блог
Как настроить мониторинг Minecraft-сервера через Uptime Kuma
Гайд#Сервер с нуля#Мониторинг

Как настроить мониторинг Minecraft-сервера через Uptime Kuma

10 мин чтения 0 просмотров5 минут назад

«Узнал о падении сервиса через игроков» - знакомая ситуация? Администрация проекта физически не имеет возможности круглосуточно следить за сервисами своего проекта вручную, и для этого лучше всего подойдет простое self-host решение - Uptime Kuma. В этой статье мы рассмотрим установку Uptime-Kuma на виртуальный сервер через Docker Compose с поддержкой HTTPS, создание страницы статуса и примера его вывода на Minecraft-сервер, а также настройку уведомлений в Telegram/Discord.

ℹ️ Проверено на: Ubuntu 26.04, Docker, Uptime Kuma 2.x (образ louislam/uptime-kuma:2). Сервер: Minecraft 26.2 (Purpur)

Что такое Uptime Kuma и для чего он нужен

Страница статуса TheFurry в Uptime Kuma: игровой сервер, лаунчер, главный сайт и сервис скинов с зелёными полосами аптаймаСтраница статуса с мониторами проекта в Uptime Kuma

Uptime Kuma - FOSS self-host решение, опрашивающее в заданный период времени сервисы из вашего списка (пример продемонстрирован на скриншоте страницы статуса), показывающее результат на страницах статуса для пользователей и рассылающее оповещения администрации об изменении состояния мониторов, благодаря чему вы узнаете о неработоспособности сервиса и будете иметь возможность оперативно среагировать на инцидент.

Представим ситуацию: Вы - администратор игрового Minecraft-сервера. Вечер пятницы, и разработчик на вашем проекте несколько минут назад выпустил обновление, не дожидаясь перезагрузки и проверки состояния работоспособности измененного им аспекта. Впереди - пара выходных и полноценный сон, однако, игровой сервер по неожиданности не запустился после ночной правки. Инцидент, вероятнее всего, остался незамеченным до понедельника, а ваш проект потерял потенциальную конверсию игроков на период неактивности сервера, которая в выходные дни особенно высока. Вы могли бы предотвратить это, если бы вас уведомили об этом в первые же минуты. Именно поэтому мы рекомендуем использовать Uptime-Kuma, который сразу же определит отвалившийся или недоступный сервис, точное время и отправит администрации сообщение об этом с последующим повторным напоминанием о произошедшем инциденте.

Благодаря этому инструменту следить за состоянием сервисов также может не только администрация, но и сами игроки. Нередко бывают случаи, когда игрок может жаловаться на неработоспособность какой-либо части игрового проекта (например, на упавший игровой сервер), однако, определить достоверность собственного предположения со стороны самого игрока зачастую оказывается невозможным. Сделав отдельные страницы статуса открытыми для игроков, вы существенно поможете им определить как минимум виновную сторону - клиентскую (сервисы активны на странице статуса, но игрок испытывает проблемы с доступом/подключением), либо серверную (сервисы неактивны на странице статуса).

Установка через Docker Compose

Подготовка сервера

Для работы потребуется:

  • VPS под управлением Linux с доступом по SSH и правами sudo (рекомендуется Ubuntu 26.04);
  • домен или поддомен (например, status.furrydev.store) с A-записью на IP сервера и свободные порты 80 и 443 для полноценной работы HTTPS;
  • Docker с плагином Compose

ℹ️ Все команды ниже вводятся в консоли сервера по SSH.

Установка Docker и плагина Compose

⚠️ Команды вводить поочерёдно, блоками

bash
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Убедитесь, что служба Docker активна, введя команду:

bash
sudo systemctl status docker

Вывод команды systemctl status docker: служба docker.service активна и работает (active running)Проверка статуса службы Docker

Запуск Uptime Kuma в контейнере

Для запуска сервиса необходимо создать отдельную проектную папку и файл docker-compose.yml:

bash
mkdir ~/uptime-kuma && cd ~/uptime-kuma
nano docker-compose.yml

Перед вами откроется консольный текстовый редактор nano. Не стоит пугаться его вида, вам достаточно вставить шаблон, представленный ниже, используя сочетания клавиш Ctrl+Shift+V

Консольный редактор nano с открытым пустым файлом docker-compose.ymlПустой редактор nano для файла docker-compose.yml

yaml
services:
  uptime-kuma:
    container_name: uptime-kuma
    image: louislam/uptime-kuma:2
    restart: unless-stopped
    volumes:
      - ./data:/app/data
    ports:
      - "127.0.0.1:3001:3001"
  • image: louislam/uptime-kuma:2 - последняя на момент написания статьи ветка 2.x uptime-kuma;
  • ./data:/app/data - директория хранения мониторов, настроек и базы данных;
  • 127.0.0.1:3001:3001 - порт доступен только с самого сервера. Снаружи панель откроется через Caddy (подробнее о его настройке вы можете узнать в разделе “Безопасность: HTTPS через Caddy”);
  • restart: unless-stopped - контейнер автоматически поднимется сам после перезагрузки сервера

Редактор nano с конфигурацией docker-compose.yml: образ louislam/uptime-kuma:2, том ./data и порт 127.0.0.1:3001Файл docker-compose.yml для Uptime Kuma в редакторе nano

Сохраните файл сочетанием Ctrl+S и выйдите из редактора с помощью Ctrl+X. После этого запустите контейнер из-под той же директории:

bash
docker compose up -d

Убедитесь, что контейнер успешно поднялся и запущен (Running).

Вывод команды docker compose up -d: контейнер uptime-kuma в состоянии RunningКонтейнер Uptime Kuma запущен

Безопасность: HTTPS через Caddy

По умолчанию Uptime Kuma работает по незашифрованному HTTP. Для использования зашифрованного HTTPS-трафика необходима настройка reverse proxy. Мы рекомендуем делать это под управлением Caddy, который сам получит нужный сертификат Let's Encrypt и продолжит автоматически обновлять его.

Reverse proxy на Caddy

Для HTTPS понадобится домен или поддомен, A-запись которого уже указывает на IP вашего сервера. Установите Caddy блоками, последовательно (по официальной инструкции):

bash
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo chmod o+r /usr/share/keyrings/caddy-stable-archive-keyring.gpg
sudo chmod o+r /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

После установки откройте конфигурацию Caddy:

bash
sudo nano /etc/caddy/Caddyfile

Замените всё содержимое файла на блок ниже, подставив вместо status.<domain> свой домен:

caddy
status.<domain> {
    reverse_proxy 127.0.0.1:3001
}

Редактор nano с файлом /etc/caddy/Caddyfile: домен и строка reverse_proxy 127.0.0.1:3001Конфигурация Caddy для Uptime Kuma

Сохраните файл (Ctrl+S), выйдите из редактора (Ctrl+X) и перезагрузите конфигурацию Caddy командой:

bash
sudo systemctl reload caddy

Подождите некоторое время и откройте панель в браузере по адресу https://<domain>.

Первый запуск и настройка Uptime Kuma

Откройте https://<domain>: Uptime Kuma проведёт краткий “мастер по установке”. Все значимые пункты разбираем в этом разделе ниже.

⚠️ Свежий инстанс нельзя надолго оставлять без первого входа: первый зашедший пользователь становится администратором после прохождения “мастера по установке” и установке пароля

Создание аккаунта администратора

Первый экран Uptime Kuma: выбор языка и базы данных Embedded MariaDB, MariaDB/MySQL или SQLiteВыбор языка и базы данных при первом запуске

Выберите язык и базу данных. Для начала рекомендуется использовать Embedded MariaDB. Подробнее обо всех вариантах:

  • Embedded MariaDB (рекомендуется для начального использования) - встроенная база данных внутри контейнера, данные хранятся в ./data;
  • MariaDB/MySQL (рекомендуется для продвинутого использования) - подключение к внешней базе данных SQL;
  • SQLite - single-файл локальной базы данных SQL в формате .sqlite, хранится в ./data.

Экран ожидания Uptime Kuma с сообщением о настройке базы данныхСоздание и настройка базы данных

Дождитесь, пока Uptime Kuma создаст и настроит базу данных.

Форма создания администратора Uptime Kuma с полями логин, пароль и повтор пароляФорма создания аккаунта администратора

Создайте аккаунт администратора: заполните поля «Логин», «Пароль» и «Повтор пароля».

ℹ️ Uptime Kuma принимает пароль с обязательными требованиями в виде пароля от 6 символов (буквы + цифры)

⚠️ Аккаунт администратора один и не привязан к почте или другим личным данным. Используйте надёжный пароль. При утрате информации об аккаунте администратора вам придётся делать ручной сброс через терминал.

Панель управления Uptime Kuma без мониторов, сверху слева кнопка «Новый монитор»Главная панель Uptime Kuma сразу после создания аккаунта

После создания аккаунта вы попадаете в главную панель администратора - dashboard.

Создание первого монитора

Находясь в dashboard, вы можете создавать мониторы. Для этого нажмите «+ Новый монитор» в левом верхнем углу.

Панель управления Uptime Kuma с выделенной кнопкой «Новый монитор»Кнопка «Новый монитор» в левом верхнем углу

В открывшейся панели (по центру) добавим проверку состояния Minecraft-сервера по протоколу GameDig. Заполните поля:

Форма нового монитора: тип GameDig, игра Minecraft, адрес и порт сервера, интервал опроса 60 секундФорма монитора GameDig для Minecraft-сервера

  • Тип монитора: GameDig;
  • Имя: произвольное (отображается в заголовке сервиса на странице статуса);
  • Игра: Minecraft;
  • Имя хоста: IP-адрес или домен вашего игрового сервера;
  • Порт: порт сервера (по умолчанию 25565);
  • Интервал опроса: рекомендуем оставить 60 секунд. Если производится повышенная нагрузка на виртуальную машину, рекомендуется увеличить интервал до 120-180 секунд.

Сохраните монитор и проверьте, что сервер определился как «Доступен».

Страница монитора «Игровой сервер» со статусом «Доступен», пингом и графиком времени откликаМонитор игрового сервера со статусом «Доступен»

Готово, первый монитор создан. Uptime Kuma будет проверять сервер с заданным интервалом, а информация на странице обновляется в реальном времени, без перезагрузки.

Страница статуса для игроков

Монитор создан, однако, доступ к нему есть только у администратора. Чтобы состояние сервера видели игроки и все желающие пользователи, необходимо создать отдельную страницу статуса.

Создание страницы статуса

Нажмите «Страницы статуса» в правом верхнем углу dashboard.

Страница монитора с выделенной кнопкой «Страницы статуса» в верхнем менюКнопка «Страницы статуса» в правом верхнем углу

В открывшейся панели (справа) нажмите «+ Новая страница статуса».

Раздел «Страницы статуса» с выделенной кнопкой «Новая страница статуса»Создание новой страницы статуса

Введите название страницы и её slug - значение после /status/ в адресной строке браузера (допустимы строчные латинские буквы, цифры и дефис). Оба значения можно выбрать любые.

Форма добавления страницы статуса с полями «Имя» и «Slug» и кнопкой «Далее»Форма новой страницы статуса: имя и slug

Нажмите «Далее» - откроется сама страница статуса.

Новая страница статуса TheFurry без мониторов, сообщение «Нет сервисов»Пустая страница статуса сразу после создания

Пока она пустая, ведь к ней не подключен ни один монитор.

Редактирование страницы статуса

Чтобы подключить созданный монитор, нажмите «Изменить страницу статусов» в левом верхнем углу.

Пустая страница статуса с выделенной кнопкой «Изменить страницу статусов»Кнопка «Изменить страницу статусов»

Слева появится панель глобальных настроек страницы: название, описание, текст нижнего колонтитула, интервал обновления и тема. По центру - кнопки «Создать инцидент» и «Добавить группу», а также список «Добавить монитор».

Страница статуса в режиме редактирования: слева панель настроек, по центру кнопки «Создать инцидент» и «Добавить группу»Режим редактирования страницы статуса

ℹ️ Изменения вступают в силу после нажатия «Сохранить» внизу левой панели.

Инциденты

Инцидент - это визуальный маркер текущего состояния ваших серверов, с помощью которого вы информируете игроков и команду проекта. Например, игроки смогут увидеть, что на сервере ведутся технические работы: достаточно создать соответствующий инцидент и опубликовать его.

В форме заполните «Название» и «Содержание» (поддерживается Markdown) и выберите стиль из списка. В качестве примера создадим инцидент «DDoS-атака» с содержанием «Наблюдаются критические сбои в работе серверов с 10:05» и стилем «Внимание».

Форма создания инцидента с полями «Название» и «Содержание» и выпадающим списком стилейФорма инцидента и список стилей

Страница статуса с оранжевым блоком инцидента «DDoS-атака» вверхуОпубликованный инцидент «DDoS-атака» со стилем «Внимание»

Группы и мониторы

Группы нужны для сортировки мониторов по категориям. Например, создадим группу «Серверы» и положим в неё монитор «Игровой сервер». Нажмите «Добавить группу» по центру экрана и измените название группы.

Редактор страницы статуса с выделенной кнопкой «Добавить группу» и новой группой «Серверы»Добавление группы «Серверы»

Чтобы добавить монитор в группу, раскройте список «Добавить монитор» и выберите его.

Выпадающий список «Добавить монитор» с пунктом «Игровой сервер»Выбор монитора для добавления в группу

Итого мы получаем монитор «Игровой сервер» в группе «Серверы». Группы и мониторы можно свободно перетаскивать и сортировать так, как удобно и приятно глазу.

Страница статуса в режиме редактирования: монитор «Игровой сервер» внутри группы «Серверы»Монитор «Игровой сервер» в группе «Серверы»

Внешний вид страницы

Страницу в первую очередь видят игроки, поэтому следует обратить на неё особое внимание и проявить эстетический интерес:

  1. Установка аватара: нажмите на иконку слева от названия страницы и загрузите свой файл (рекомендуется использование логотипа в формате .svg)

Редактор страницы статуса с выделенной иконкой слева от названия для загрузки аватаркиЗагрузка аватарки страницы статуса

  1. Обновление инцидента после решения проблемы

Форма редактирования инцидента с названием «Восстановление работы» и текстом об устранении сбоевОбновление инцидента после устранения проблемы

  1. Скрытие надписи «Работает на Uptime Kuma» в нижнем колонтитуле: необходимо отключить тумблер «Показывать на чем создано» в левой панели настроек страницы статусов.

Панель настроек страницы статуса с выделенным переключателем «Показывать на чем создано»Отключение надписи «Работает на Uptime Kuma»

В конце сохраните изменения. Ссылка текущей вашей страницы статуса выглядит в формате: https://<domain>/status/<slug>, где <domain> - ваш домен, а <slug> - slug страницы статусов. Итоговую ссылку можно разместить на сайте проекта, в Discord и в Telegram в открытом доступе всем желающим.

Настройка уведомлений

Страница статуса показывает проблемы, но сама о них не сообщает. Чтобы узнавать о падении сразу, подключим уведомления в Telegram и Discord - можно настроить один вариант или оба.

Откройте «Настройки» (меню профиля в правом верхнем углу), перейдите в раздел «Уведомления» и нажмите «Настройка уведомления».

Настройки Uptime Kuma, раздел «Уведомления» с выделенной кнопкой «Настройка уведомления»Раздел «Уведомления» в настройках Uptime Kuma

Уведомления в Telegram

Для настройки уведомлений в Telegram необходимо создать бота с помощью @BotFather. Отправьте команду /newbot и следуйте дальнейшим инструкциям создания бота, скопируйте полученный токен.

В списке «Тип уведомлений» выберите Telegram, впишите токен в поле «Токен бота».

Окно настройки уведомления: тип Telegram, поля «Токен бота» и «ID чата»Настройка уведомления Telegram: тип и токен бота

Протестируйте подключение путём нажатия кнопки «Тест», затем сохраните форму.

Окно настройки уведомления Telegram: переключатели «По умолчанию включён» и «Применить ко всем существующим мониторам», кнопки «Тест» и «Сохранить»Нижняя часть формы Telegram с кнопками «Тест» и «Сохранить»

ℹ️ Если Telegram недоступен с вашего сервера, в этой же форме есть необязательное поле «URL Сервер» для указания зеркала.

Уведомления в Discord

В случае с Discord понадобится вебхук. Откройте настройки вашего Discord-сервера и перейдите в раздел «Интеграции» → «Вебхуки» → «Новый вебхук». Выберите канал, в который будут приходить уведомления, при желании задайте имя и аватарку и скопируйте URL вебхука.

В списке «Тип уведомлений» выберите Discord и вставьте скопированный URL в поле «Discord вебхук URL».

Окно настройки уведомления: тип Discord и поле «Discord вебхук URL»Настройка уведомления Discord: тип и вебхук

Остальные параметры (имя бота, префикс сообщения, формат) - опционально.

Протестируйте подключение путём нажатия кнопки «Тест», затем сохраните форму.

Окно настройки уведомления Discord: дополнительные параметры и кнопки «Тест» и «Сохранить»Нижняя часть формы Discord с кнопками «Тест» и «Сохранить»

Частые вопросы

Почему монитор показывает «Недоступен», хотя игровой сервер работает?

Вероятно, причина в неверной настройке адреса сервиса или недоступности порта. Проверьте используемые вами параметры.

Как мониторить несколько серверов и сервисов?

Создайте отдельный монитор для каждого сервера или сервиса и разложите их по группам на странице статуса (аналогично группе «Серверы» из примера статьи). Для сайта, лаунчера или сервиса скинов подойдёт тип монитора HTTP(s), для остальных (в подавляющем большинстве случаев) - TCP.

Зачем GameDig, если есть проверка TCP-порта?

TCP-проверка подтверждает только то, что порт принимает соединения.

GameDig запрашивает у сервера игровой статус, поэтому он более точен.

Например, если вписать в порт TCP 25565 в локальной сети с выключенным сервером, запущенным ранее через контейнер, Uptime Kuma покажет как available, хотя сервис давно unavailable.

Что Uptime Kuma не умеет?

Сервис отвечает на вопрос «жив или нет», но не способен объяснить причину: TPS, нагрузку на процессор и память сервера Uptime Kuma не может обрабатывать и транслировать. Для метрик игрового сервера и хоста стоит использовать иные решения.

Вывод

Теперь вы получили полноценный мониторинг: Uptime Kuma опрашивает игровой сервер, страница статуса показывает игрокам текущий статус по нему, а ваш собственный бот в Telegram и/или канал сервера в Discord сообщают о падении мгновенно. Далее можно добавлять новые мониторы, кастомизировать страницу через CSS, настраивать новые хуки для уведомлений и так далее.

Нужна помощь с сервером?

Команда TheFurryDev поможет с разработкой, настройкой и запуском

Написать в Telegram

Комментарии

Войдите чтобы оставить комментарий

TheFurryDev

Готовы создать свой идеальный сервер?

Оставь заявку в Discord или Telegram. Обсудим идею, посчитаем стоимость и сроки.

Наш Discord