Uptime Kuma: честный обзор — 33 типа проверок, 100+ каналов уведомлений и одна точка, из которой всё видно
14 мин чтения Обновлено:
Uptime Kuma: честный обзор — 33 типа проверок, 100+ каналов уведомлений и одна точка, из которой всё видно

Uptime Kuma: честный обзор — 33 типа проверок, 100+ каналов уведомлений и одна точка, из которой всё видно

Самый популярный self-hosted мониторинг в мире: 90 тысяч звёзд на GitHub, 182 миллиона скачиваний образа, версия 2.x с поддержкой MariaDB. Разбираем на цифрах, что он умеет, чего не умеет принципиально, сколько на самом деле стоит «бесплатный» мониторинг и в какой схеме Kuma работает лучше всего.

Uptime Kuma — открытая программа для мониторинга доступности, которую вы разворачиваете на своём сервере: она сама опрашивает сайты, порты, базы и контейнеры и присылает уведомления в сотню каналов. Лицензия MIT, код на Node.js, один процесс, данные в SQLite или MariaDB. Главное архитектурное свойство — проверки идут из одной точки, той, где Kuma установлена.

Проект в цифрах

Kuma — не «поделка энтузиаста», а один из самых живых проектов в своей нише. Все числа ниже сняты с GitHub API и Docker Hub на середину сентября 2026 года.

Показатель Значение
Звёзд на GitHub 90 700
Форков 8 300
Скачиваний Docker-образа 182 млн
Открытых issues и PR 791
Лицензия MIT
Актуальная версия 2.5.4 от 11 сентября 2026
Последняя 1.x 1.23.17 от 20 октября 2025
Релизов за последний год 6 минорных + 10 патчей
Требование к Node.js 20.4 и новее; образ собран на Node 22
Языков интерфейса 46, русский есть
Мейнтейнер Louis Lam, проект держится на нём и двух-трёх ядровых контрибьюторах

В ветке master уже лежит 3.0.0-beta.0 с переездом на TypeScript и требованием Node 26 — на Docker Hub собираются теги nightly3. Релиза пока нет, но направление понятно: проект не стоит.

Версия 2.0: что изменилось и где ловушка

Двойка вышла в октябре 2025 года после года беты и принесла главное — внешнюю базу данных. Но у неё есть особенность, на которой спотыкается каждый второй: Docker-тег latest до сих пор указывает на 1.23.17. Чтобы получить двойку, нужен тег 2.

Появилось в 2.x Исчезло в 2.x
MariaDB и MySQL как внешняя база, плюс встроенная MariaDB в образе Экспорт и импорт в JSON — бэкапить теперь только каталог data
Агрегация истории в поминутные, почасовые и дневные таблицы Образ на Alpine — только Debian
Rootless-образ, SNMP, удалённый браузер, DNS-условия Поддержка Node 14 и 16, Debian Buster
15+ новых провайдеров уведомлений, прокси для уведомлений Кэш DNS внутри HTTP-мониторов
Мониторы NTP, SFTP, Oracle, истечения домена по RDAP Retries по умолчанию: было 1, стало 0
Миграция с 1.x необратима

При первом запуске двойки таблица heartbeat пересобирается в агрегаты. Ориентир из документации: 20 мониторов с историей за 90 дней — около 7 минут, крупные инсталляции — часы. Прерывать нельзя: единственный путь назад — восстановление каталога data из бэкапа. Прямой миграции SQLite → MariaDB тоже нет: базу выбирают один раз при первичной настройке.

Установка: пять минут, три варианта образа

# Одной командой
docker run -d --restart=unless-stopped -p 3001:3001 \
  -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:2

# compose.yaml из репозитория
services:
  uptime-kuma:
    image: louislam/uptime-kuma:2
    restart: unless-stopped
    volumes:
      - ./data:/app/data
    ports:
      - "3001:3001"

# Без Docker: Node.js 20.4+ и pm2
git clone https://github.com/louislam/uptime-kuma.git && cd uptime-kuma
npm run setup
npm install pm2 -g && pm2 install pm2-logrotate
pm2 start server/server.js --name uptime-kuma

# Обновление
docker compose pull && docker compose up -d --force-recreate
Тег образа Что внутри Когда брать
2 Полный: Chromium для браузерных проверок, встроенная MariaDB По умолчанию
2-slim Без Chromium и MariaDB Слабый VPS, Raspberry Pi, только HTTP и ping
2-rootless Процесс не от root Жёсткие требования безопасности; не для апгрейда с 1.x «в лоб»
latest До сих пор 1.23.17 Не брать, если нужна двойка

Все данные живут в /app/data: файл kuma.db плюс журналы -wal и -shm. Файловая система должна поддерживать POSIX-блокировки — SQLite на NFS или SMB рано или поздно повредит базу. Официальных минимальных требований к CPU и памяти у проекта нет; образы собираются под amd64, arm64 и armv7.

33 типа мониторов

Здесь Kuma сильнее большинства облачных сервисов: она умеет ходить не только снаружи в сайт, но и внутрь инфраструктуры — в базы, очереди, контейнеры и игровые серверы. Список из исходников версии 2.5.4.

Группа Типы Что нужно дополнительно
Общие (11) HTTP(s), HTTP по ключевому слову, TCP-порт, Ping, DNS, Docker-контейнер, системный сервис, процесс PM2, браузерный движок, WebSocket, SFTP Браузерный — Chromium из полного образа; Docker — доступ к сокету
Пассивные (2) Push (сервис сам стучится по токену), Manual —
Специальные (11) Globalping, gRPC, JSON-запрос, Kafka, MQTT, NTP, RabbitMQ, SIP, SMTP, SNMP, Tailscale Ping Globalping — API-токен стороннего сервиса; Tailscale — клиент на хосте
Базы данных (7) MS SQL, MongoDB, MySQL/MariaDB, Oracle, PostgreSQL, Radius, Redis Сетевой доступ до базы и учётка
Игровые (2) GameDig, Steam Game Server Steam — API-ключ
Служебные (1) Группа — агрегирует статус вложенных мониторов —

Монитор Globalping заслуживает отдельного слова: это единственный способ заставить Kuma проверить сайт не с собственного сервера, а через чужие пробы по миру. Работает только для HTTP, ping и DNS и требует токен внешнего сервиса — то есть часть проверок уезжает в облако, от которого вы как раз хотели уйти.

Уведомления: сто с лишним провайдеров и что из них живёт в России

README скромно обещает «90+», по коду версии 2.5.4 провайдеров больше сотни. Для российского администратора интересна не общая цифра, а вот эта выборка.

Канал Есть Нюанс
Telegram Да Свой бот, топики форумов, тихая отправка, шаблон сообщения. Есть поле Server URL под собственный прокси Bot API — на случай блокировки api.telegram.org
Макс Да, с 2.3.0 Бот-токен, отправка через platform-api.max.ru
VK и VK Teams Да, с 2.3.0 и 2.4.0 Личные сообщения через API
Email Да Любой SMTP, с 2.5.0 — свои заголовки
Webhook Да JSON или form-data, свои заголовки — мост к чему угодно
Matrix, ntfy, Gotify, Signal Да Всё self-hosted — логично для тех, кто и Kuma ставит у себя
SMS через российских операторов Частично Есть SMSC, но с адресом smsc.kz в коде; SMS.ru нет. Ещё два десятка зарубежных SMS-шлюзов
Голосовой звонок Почти нет Единственный провайдер с реальным звонком — Plivo, зарубежный. Twilio в Kuma умеет только SMS. Остальное — через внешние on-call системы: PagerDuty, Opsgenie, Grafana OnCall

Уведомление можно повторять каждые N неудачных проверок (resend interval) и гонять через прокси. Но эскалации как класса нет: «сначала Telegram, а через полчаса позвонить, если не поднялось» — это уже внешняя система поверх Kuma.

Статус-страницы и окна обслуживания

Публичные страницы состояния — сильная сторона Kuma и частая причина её выбора. Несколько страниц, свои домены, инциденты с Markdown, RSS-лента, свой CSS, тёмная тема, счётчики аналитики. Окна обслуживания — с 1.19: разовое, по cron, по интервалу, по дню недели или месяца, со своим часовым поясом; на время окна мониторы синие, а на странице висит баннер.

Пароля на статус-страницу нет и не будет

Запрос открыт с 2022 года (issue #1756) и закрыт мейнтейнером как not planned; дубликаты продолжают появляться. Страница либо публичная, либо её нет. Внутренний статус для команды придётся прятать за reverse-proxy с авторизацией.

Настройки проверки, которые стоит знать до первого инцидента

Параметр По умолчанию Что с этим делать
Интервал проверки 60 секунд Минимум технически 1 с, интерфейс предупреждает при значении меньше 20. Верхний потолок снят в 2.5.0
Повторы до объявления DOWN 0 В 1.x был 1. С нулём любая единичная потеря пакета — это инцидент и уведомление. Ставьте 2–3
Интервал повтора = интервал проверки Можно сократить, чтобы подтверждать падение быстрее
Повтор уведомления 0 — выключен Каждые N неудачных проверок присылать снова
Хранение истории 365 дней 0 — не удалять никогда. Для SQLite после чистки нужен Shrink Database
Предупреждение о сертификате Список дней настраивается Отдельно есть монитор истечения домена по RDAP
Upside-down mode Выкл. Инвертирует логику: «работает» = плохо. Для проверки, что тестовый стенд закрыт снаружи

Авторизация в HTTP-мониторах закрывает почти всё: Basic, Bearer, OAuth2 client credentials, NTLM, mTLS; плюс свои заголовки, тело запроса и прокси на монитор. Для сравнения интервалов с облачным подходом полезно помнить, как считается время обнаружения инцидента: оно всегда равно интервалу проверки плюс повторы.

Под капотом: SQLite против MariaDB

Kuma — один процесс Node.js. Пока мониторов десятки, о базе можно не думать. Дальше начинаются нюансы, и они хорошо задокументированы в issues проекта.

Масштаб Что наблюдается Источник
20–30 мониторов 60–80 МБ памяти в покое, SQLite справляется Отчёты пользователей
13 мониторов на Raspberry Pi с SD-картой SQLITE_BUSY: database is locked после 2.2.0 Issue #7289; в 2.3.2 вернули одно соединение по умолчанию
Типичная инсталляция Около 150 МБ по словам мейнтейнера Issue #7537
Сотни мониторов Рекомендация переезжать на MariaDB Wiki проекта
1 400 мониторов, 16 vCPU, 64 ГБ, внешний MySQL Дашборд открывается 10–15 секунд; issue закрыт как not planned Issue #5641
Открытая утечка памяти в 2.2–2.4

Issue #7537: на 12–23 мониторах процесс за 42 часа разрастался со 151 МБ до 3 ГБ, у части пользователей — до 22 ГБ. Комментарий мейнтейнера дословно: «I still have no clue where is the memory leak». В релиз-нотах 2.5.4 исправление не заявлено. Практический вывод: ограничивайте память контейнера и ставьте политику перезапуска — это и так стоит делать всегда.

Честные ограничения

Все семь пунктов ниже — не баги, а сознательные решения проекта. Спорить с ними в issues бесполезно, это проверено сотнями людей до вас.

Ограничение Статус в проекте Чем закрывать
Одна точка проверки Issue #84 открыт с 2021 года. Мейнтейнер: «we are not a distributed system», out of scope Второй инстанс, Globalping-монитор или внешний сервис
Один пользователь Запросы с 2022 года закрываются как not planned Общая учётка или SSO через reverse-proxy в режиме disableAuth
Нет стабильного REST API Внутренний Socket.io-API официально не поддерживается, breaking changes без предупреждения /metrics для Prometheus по API-ключу, push-эндпоинт, бейджи, AutoKuma через Docker-лейблы
Нет отказоустойчивости Кластеризации и HA нет Кто-то должен мониторить саму Kuma
Нет SLA-отчётов Только процент аптайма за 24 ч, 30 дней и год Grafana поверх /metrics
Бэкап только каталогом JSON-экспорт удалён в 2.0 Снапшот тома или дамп MariaDB по расписанию
HTTPS своими руками Встроенный TLS есть, но без автопродления Nginx, Caddy, Traefik или Cloudflare Tunnel — в wiki есть конфиги для всех

Первый пункт — принципиальный, и о нём вспоминают уже после установки. Kuma стоит на вашем VPS в одном дата-центре одного оператора. Она не увидит, что сайт недоступен для абонентов другого провайдера, что маршрут в регион оборвался или что падение видно только из части страны. А если ляжет сам VPS с Kuma — уведомлений не будет вообще, потому что некому их отправлять.

Безопасность: 16 бюллетеней за три года

Для проекта такого размера это нормальная статистика, но она задаёт правило эксплуатации: админку Kuma нельзя светить в интернет без дополнительной защиты.

Год Бюллетеней Самое заметное
2023 5 Сессии не завершались после смены пароля (High); RCE через Tailscale Ping для авторизованных
2024 3 RCE и path traversal через плагины — плагины удалили целиком; LFI через браузерный монитор
2025 4 Неавторизованное чтение файлов (High); SSTI в шаблонах уведомлений — закрыт в 2.0.0 и 1.23.17
2026 4 Второй SSTI (закрыт в 2.2.1); XSS через Matomo на статус-странице, CVSS 8.1, статус патча не подтверждён

Большинство уязвимостей требуют авторизации — то есть опасны, когда админка доступна снаружи и пароль слабый. Два конкретных шага: включить 2FA (есть из коробки) и закрыть порт 3001 всем, кроме reverse-proxy. С версии 2.5.0 проект ввёл 14-дневную задержку на обновление npm-зависимостей против supply-chain атак — редкий для open source уровень дисциплины.

Сколько стоит бесплатный мониторинг

Kuma бесплатна как программа, но не как система. Посчитаем на условном примере: 30 сайтов, один администратор. Цифры ниже — расчётные допущения, подставьте свои.

Статья расходов Допущение В месяц
Минимальный VPS под Kuma 1 vCPU, 1–2 ГБ условно 500 ₽
Первичная настройка Docker, reverse-proxy, TLS, 2FA, бэкап, 30 мониторов — 4 часа, размазать на год 20 минут
Обновления Минорный релиз раз в 1–2 месяца, 15 минут с чтением релиз-нот 10 минут
Проверка бэкапа и разбор ложных срабатываний Раз в месяц 30 минут
Второй инстанс, который следит за первым Ещё один VPS у другого провайдера условно 500 ₽
Итого   около 1 000 ₽ + 1 час администратора

Час администратора — самая дорогая строка, и именно её обычно не считают. При ставке даже в 1 500 ₽ за час «бесплатная» Kuma обходится в 2 500 ₽ в месяц. Это не аргумент против неё: для тех, кому нужны проверки баз, очередей и контейнеров изнутри периметра, альтернатив такого качества за эти деньги нет. Это аргумент против слова «бесплатно» в расчётах.

Кому подходит, а кому нет

Сценарий Kuma Почему
Домашняя лаборатория, NAS, десяток сервисов Идеально Бесплатно, Raspberry Pi хватает, статус-страница для семьи
Внутренняя инфраструктура: базы, очереди, Docker, PM2 Сильно Облачный сервис внутрь периметра не попадёт — Kuma стоит внутри
Данные не должны покидать контур Сильно Всё у вас; уведомления через self-hosted Matrix или ntfy
Публичный сайт с аудиторией по всей России Недостаточно Одна точка не покажет региональных проблем и падений маршрутов
Команда из нескольких человек с разными правами Нет Один пользователь, RBAC не планируется
Нужны звонки при падении и эскалация Нет Звонит только Plivo, эскалации нет — нужна внешняя on-call система
Отчёты по SLA для клиентов Слабо Только процент аптайма и бейджи; отчёты — через Grafana
Специфика РФ: РКН, DNSBL, Safe Browsing, фиды Нет Таких типов проверок в Kuma нет

Uptime Kuma и Пруфен: где что сильнее

Это не «кто лучше», а «кто для чего». Kuma смотрит на инфраструктуру изнутри и бесплатна как код; облачный сервис смотрит на сайт снаружи глазами пользователей и берёт на себя эксплуатацию.

Критерий Uptime Kuma Пруфен
Откуда проверяет Одна точка — ваш сервер 13 точек, 11 из них в России, плюс Минск и Испания
Подтверждение падения Повторы с одной точки Кворум по доле локаций, порог настраивается
Типов проверок 33, включая базы, очереди, Docker, игровые серверы 18, включая РКН, DNSBL, Safe Browsing, PageSpeed, фиды, трекеры, robots.txt
Минимальный интервал Технически 1 с, разумно от 20 с От 2 минут для частых типов
Каналы уведомлений 100+, в том числе Telegram, Макс, VK, Matrix, ntfy Email, Telegram, Макс и голосовой звонок как эскалация при затяжной недоступности
Задержка уведомления Только через повторы От 0 до 30 минут отдельной настройкой
Статус-страницы Да, публичные, без пароля Гостевые ссылки на отчёты проверок
API Prometheus /metrics, push, бейджи; REST не гарантирован REST API
Пользователи Один Проекты, передача проекта, договор для юрлиц
Эксплуатация Ваша: сервер, TLS, обновления, бэкап, безопасность Не ваша
Цена 0 ₽ за софт, VPS и время — ваши Бесплатный план на 5 проверок, дальше оплата за фактические запуски от 0,005 ₽

Схема, в которой Kuma работает лучше всего

Самый устойчивый вариант, к которому приходят почти все, кто эксплуатирует Kuma дольше года, — разделение обязанностей. Kuma стоит внутри периметра и следит за тем, до чего облачный сервис не дотянется: базы, очереди, контейнеры, внутренние API, сервисы на localhost. Внешний мониторинг следит за тем, чего не видит Kuma: как сайт открывается из разных регионов, не заблокирован ли он, не попал ли IP в спам-листы, не истёк ли сертификат глазами реального посетителя. И — отдельным пунктом — за самим сервером с Kuma, потому что упавший мониторинг молчит так же, как здоровый.

Технически это два монитора со стороны облака: HTTP-проверка страницы статуса Kuma и TCP-проверка порта 3001 или того, что стоит перед ним. Если оба молчат — вы узнаёте о проблеме от внешней системы, а не утром от клиентов.

Kuma смотрит внутрь, Пруфен — снаружи

Пруфен проверяет сайт с интервалом от 2 минут из 13 точек мониторинга, подтверждает падение кворумом локаций и присылает уведомление в Email, Telegram или Макс; если ресурс так и не поднялся, подключается голосовой звонок. Бесплатного плана на 5 проверок хватает, чтобы закрыть внешний контур для небольшого проекта — в том числе присмотреть за вашей Kuma.

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

Можно ли сделать несколько точек проверки на нескольких Kuma? Формально да: поднять инстансы в разных дата-центрах и мониторить одно и то же. Но у каждой будет своя история, свои уведомления и свой процент аптайма — сводить их придётся руками или через Grafana. Кворума «упало для двух из трёх» не получится.

Telegram заблокирован у провайдера — уведомления перестанут приходить? В настройках Telegram-провайдера есть поле Server URL: туда подставляется адрес собственного прокси Bot API, и уведомления идут через него. Либо перевести оповещения в Макс, который в Kuma есть с версии 2.3.0.

Что будет, если обновить 1.23 до 2.x через тег latest? Ничего: latest по-прежнему указывает на 1.23.17. Чтобы получить двойку, нужно явно указать тег 2, предварительно сделав бэкап каталога data — миграция схемы необратима.

Есть ли мобильное приложение? Официального нет. Веб-интерфейс работает как PWA, с версии 2.1.0 есть Web Push. Сторонние клиенты: KumaAlert и Wuma для iOS, Uptime Kuma Manager для iOS и Android, OpenKuma для Android с открытым кодом.

Можно ли управлять мониторами из кода? Стабильного REST API нет. Рабочие обходы: AutoKuma создаёт мониторы из Docker-лейблов, Python-библиотека uptime-kuma-api работает через Socket.io, но официально совместима только с 1.17–1.23. Для чтения метрик — Prometheus-эндпоинт по API-ключу.

Если выбираете между несколькими облачными сервисами, а не между облаком и self-hosted, — у нас есть отдельный разбор российских альтернатив UptimeRobot с таблицей возможностей.

Была ли статья полезна?

Начните мониторинг прямо сейчас

Бесплатный тариф — до 5 проверок. 150 ₽ на баланс при регистрации.

Создать аккаунт