Uptime Kuma — бесплатная программа с открытым исходным кодом, которая раз в 20–60 секунд стучится на ваш сайт и пишет в Telegram, если ответа нет. Она ставится одной командой в Docker, укладывается в 1 ГБ оперативной памяти и живёт на самом дешёвом сервере: подходящие тарифы начинаются от 59 ₽ в месяц в разделе недорогие VPS. Собрать свой мониторинг доступности реально за вечер, без подписок и без передачи данных чужому сервису.
Материал для владельца сайта, магазина или Telegram-бота, который уже арендует сервер, но узнаёт о падении от клиентов. Разберём по шагам: где размещать мониторинг, как поставить Uptime Kuma через Docker, какие проверки нужны сайту и почте, как подключить уведомления в Telegram и как сделать публичную страницу статуса.
Uptime Kuma: что это и зачем свой мониторинг вместо чужого сервиса
Uptime Kuma — веб-панель, которая по расписанию отправляет запросы к вашим ресурсам и хранит историю ответов. Каждая проверка называется монитором: вы указываете адрес, тип запроса и интервал, а система рисует график и считает процент доступности за сутки, за 30 дней и за год. Термин аптайм как раз и означает долю времени, когда сервис отвечал корректно.
Бесплатные внешние сервисы ограничивают набор: 5–10 проверок, интервал не чаще 5 минут, история за неделю. Свой инсталл этих лимитов не знает — можно завести 50 мониторов с интервалом 20 секунд и упереться только в ресурсы сервера. Платные тарифы стороннего мониторинга начинаются примерно от 500 ₽ в месяц за десяток проверок, а отдельный VPS обойдётся в 59–150 ₽.
Uptime Kuma проверяет не только HTTP, но и TCP-порты, отклик по ping и наличие конкретного слова на странице. Это ловит ситуации, когда сервер формально жив, а сайт отдаёт заглушку хостера.
Почему мониторинг нельзя ставить на тот же сервер, за которым следите
Самая частая ошибка новичка — поднять Uptime Kuma рядом с сайтом, на той же машине: сервер уже есть, зачем платить второй раз. На практике такая схема ловит ровно ноль настоящих аварий.
Если сервер уходит в перезагрузку, теряет сеть, упирается в лимит памяти или у провайдера падает узел виртуализации — мониторинг падает вместе с сайтом. Уведомление не уйдёт, потому что отправлять его некому. Вы узнаете о простое утром, когда откроете панель и увидите пустой график.
Правильная схема — вынести наблюдателя на отдельную машину, желательно у другого провайдера и в другом дата-центре. Тогда авария видна со стороны, как её видит обычный посетитель. Если сайт стоит в разделе VPS в России, разместите мониторинг у зарубежного хостера — заодно увидите, как ресурс открывается у аудитории за пределами страны.

Сколько ресурсов нужно и во сколько обойдётся сервер
Uptime Kuma написана на Node.js и хранит историю в файле SQLite. При 20–30 мониторах она занимает 150–250 МБ оперативной памяти и почти не грузит процессор: пики приходятся на моменты опроса и длятся доли секунды. Тариф с 1 ГБ RAM, 1 ядром и диском 10 ГБ закрывает задачу с запасом.
Меньше 1 ГБ брать не советую: на 512 МБ обновление контейнера идёт тяжело. Диск расходуется на историю: год хранения 30 мониторов с интервалом 60 секунд — это ориентировочно 1,5–3 ГБ.
| Провайдер | Цена от | Базовая конфигурация | Рейтинг каталога |
|---|---|---|---|
| Cloudcore | 59 ₽ / мес | 1 ядро, 1 ГБ RAM, 10 ГБ NVMe | 3.3 |
| HostVDS | 127 ₽ / мес | 1 ядро, 1 ГБ RAM, 10 ГБ NVMe | 3.3 |
| RuVDS | 139 ₽ / мес | 1 ядро, 0,5 ГБ RAM, 10 ГБ HDD | 4.3 |
| 4VPS | 110 ₽ / мес | 1 ядро, 1 ГБ RAM, 5 ГБ NVMe | 4.0 |
| Selectel | 200 ₽ / мес | 1 ядро, 1 ГБ RAM, 10 ГБ NVMe | 4.5 |
Данные проверены 02.09.2026.
Операционную систему берите Ubuntu 22.04 или 24.04 — под них написана документация Docker, и команды ниже сработают без правок. Готовые тарифы собраны в подборке VPS с Ubuntu.
Установка Uptime Kuma через Docker: пошаговая инструкция
Docker — система контейнеров: приложение приезжает вместе со всеми зависимостями, и вам не нужно ставить Node.js, подбирать версии библиотек и чинить конфликты. Для Uptime Kuma это самый короткий путь — от чистого сервера до рабочей панели проходит 5–10 минут.
Подключитесь к серверу по SSH под root или пользователем с правами sudo и выполните шаги по порядку.
- Обновите пакеты системы, чтобы установка не споткнулась о старые зависимости:
apt update && apt upgrade -y - Установите Docker официальным скриптом — он сам определит версию системы и подключит репозиторий:
curl -fsSL https://get.docker.com | sh - Проверьте, что демон запустился:
docker --version && systemctl status docker --no-pager - Создайте именованный том — отдельное хранилище, которое переживёт удаление контейнера вместе со всей историей:
docker volume create uptime-kuma - Запустите контейнер. Флаг
-dотправляет его в фон,--restart=alwaysподнимает после перезагрузки сервера,-p 3001:3001открывает панель на порту 3001:docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1 - Убедитесь, что контейнер в статусе Up, а не Restarting:
docker ps
Если сервер закрыт файрволом, откройте порт 3001 — иначе панель не отзовётся из браузера.
Первый вход и создание первой проверки
Откройте в браузере адрес вида http://IP-адрес-сервера:3001. Панель предложит создать администратора: придумайте логин и длинный пароль — страница будет доступна из интернета, и слабый пароль здесь опаснее, чем кажется. Регистрация одноразовая, второго администратора форма не создаст.
После входа нажмите Add New Monitor. В поле Monitor Type выберите HTTP(s), в Friendly Name напишите понятное имя вроде «Магазин — главная», в URL укажите полный адрес с протоколом. Heartbeat Interval оставьте 60 секунд, Retries поставьте 2 — тогда авария объявляется только после двух неудачных попыток подряд.
Через минуту на графике появится первая зелёная полоса и время ответа в миллисекундах. Нормальный отклик сайта на российском сервере — 40–300 мс; значения выше 1000 мс говорят о перегруженной машине или тяжёлых запросах к базе. Пяти-восьми мониторов хватает на типовой проект.
Четыре типа проверок и когда какая нужна
Uptime Kuma различает несколько способов задать вопрос серверу, и каждый ловит свой класс аварий. HTTP(s) проверяет ответ веб-сервера и его код: 200 означает, что страница отдана, 500 — что упало приложение, 502 — что веб-сервер не дождался ответа от бэкенда.
Проверка TCP-порта просто пытается установить соединение с указанным портом и не разбирается в протоколе. Это единственный способ следить за базой данных, почтой или игровым сервером. Ping отправляет ICMP-пакет и говорит, жива ли машина на сетевом уровне, — полезный индикатор, но часть провайдеров ICMP режет.
Keyword — самый недооценённый тип. Он загружает страницу и ищет в её коде заданное слово. Если сайт вернул код 200, но вместо каталога показывает «Технические работы» или пустую вёрстку, только Keyword это заметит.
| Тип проверки | Что проверяет | Какую аварию ловит | Интервал |
|---|---|---|---|
| HTTP(s) | Код ответа веб-сервера | Ошибки 500 и 502, недоступность сайта | 60 секунд |
| Keyword | Наличие слова в HTML | Белый экран, заглушку, сломанный шаблон | 120 секунд |
| TCP Port | Соединение с портом | Упавшую базу, почту, игровой сервер | 60 секунд |
| Ping | Ответ на ICMP-пакет | Потерю сети, выключенную машину | 20–60 секунд |

Интервал проверки и как считается простой
Минимальный интервал в Uptime Kuma — 20 секунд, и соблазн выставить его везде велик. Частота нужна не всем: сайту-визитке хватит 5 минут, магазину оправданы 60 секунд, а 20 секунд имеют смысл там, где каждая минута стоит денег — платёжный шлюз, API, боевой сервер под Telegram-бота.
Интервал определяет точность подсчёта простоя: при опросе раз в 5 минут авария длиной 4 минуты может не попасть в статистику вообще. При интервале 20 секунд погрешность падает до трети минуты, но число запросов к сайту растёт в 15 раз.
Второй параметр — Retries, число повторов перед объявлением аварии. При интервале 60 секунд и двух повторах уведомление придёт через 2–3 минуты после реальной поломки: короткие сетевые всплески отсеиваются, настоящий сбой не теряется. Проценты доступности лучше сразу перевести в минуты — так понятнее, о чём договаривается провайдер в SLA.
| Уровень доступности | Простой в месяц | Простой за год | Что это на практике |
|---|---|---|---|
| 99,99% | около 4,3 минуты | около 53 минут | Отказоустойчивый кластер |
| 99,9% | около 43 минут | около 8,8 часа | Типичное обещание хостера |
| 99,5% | около 3,6 часа | около 44 часов | Сервер без резервирования |
| 99% | более 7 часов | более 3,5 суток | Повод менять площадку |
Разница между 99,9% и 99% на бумаге кажется мелочью, а в реальности это 43 минуты против 7 с лишним часов ежемесячно. Свой мониторинг нужен затем, чтобы в разговоре с поддержкой у вас были собственные цифры.
Уведомления в Telegram: настройка по шагам
Uptime Kuma поддерживает больше 90 каналов доставки, но Telegram удобнее прочих: сообщение приходит мгновенно и не тонет в почте. Настройка занимает 3–4 минуты и не требует своего сервера для бота.
- Откройте в Telegram диалог с
@BotFatherи отправьте команду/newbot. Придумайте имя бота и уникальный логин, оканчивающийся наbot. - Скопируйте токен из ответа — строку вида
7712345678:AAH.... Это ключ доступа, храните его как пароль. - Найдите созданного бота в поиске, откройте диалог и нажмите Start: без этого шага бот не имеет права писать вам первым.
- Узнайте числовой идентификатор чата — отправьте любое сообщение боту
@userinfobot, он ответит числом вида123456789. - В панели откройте Profile → Settings → Notifications → Setup Notification, в списке Notification Type выберите Telegram и вставьте токен в Bot Token, а число — в Chat ID.
- Нажмите Test: если тестовое сообщение пришло, поставьте галочки Default enabled и Apply on all existing monitors, затем Save.
В разделе Advanced есть параметр Resend Notification if Down X times — повторное напоминание, пока авария не закончилась: значение 10 при интервале 60 секунд даёт сообщение примерно раз в 10 минут. Для команды создайте группу, добавьте туда бота и укажите её Chat ID — он начинается с минуса.
Какие проверки настроить для обычного сайта
Одного монитора сайту мало: доступность главной не гарантирует, что работает корзина или админка. Базовый набор строится из четырёх-пяти проверок, каждая закрывает свой слой.
Первая — HTTP(s) на главную страницу по HTTPS, интервал 60 секунд. Вторая — Keyword на ту же главную с поиском слова из шапки, например названия компании: она отличит живой сайт от заглушки. Третья — HTTP(s) на страницу, которая обращается к базе данных: карточка товара, поиск, личный кабинет. Если база отвалилась, главная ещё отдаётся из кеша, а этот адрес вернёт 500.
Четвёртая проверка — срок SSL-сертификата. Uptime Kuma показывает, сколько дней осталось, и предупреждает за 7, 14 и 21 день. Автопродление ломается чаще, чем принято думать: инструкция про то, как установить SSL Let’s Encrypt, объясняет, где обычно рвётся цепочка.
Пятая — ping до IP-адреса сервера. Она разделяет два сценария: если ping идёт, а HTTP молчит — упало приложение, если не идёт ничего — проблема в сети или самой виртуальной машине. Такое разделение экономит первые десять минут разбирательства.
Какие проверки настроить для почтового сервера
Почта ломается тише сайта: письма просто перестают уходить, и вы узнаёте об этом через сутки от клиента. Здесь работает тип TCP Port — он проверяет, что нужная служба слушает соединения.
Заведите отдельные мониторы на порты: 25 для обмена почтой между серверами, 587 для отправки клиентами через SMTP с шифрованием STARTTLS, 465 для SMTP поверх SSL, 993 для чтения по IMAP. Интервал 120 секунд достаточен — почтовые сбои редко измеряются секундами.
Отдельно стоит следить за веб-интерфейсом почты: обычная проверка HTTP(s) на адрес вебмейла покажет, доступен ли ящик сотрудникам. А контроль сертификата на порту 993 предупредит о просрочке до того, как почтовые клиенты начнут ругаться на небезопасное соединение.
Публичная страница статуса, свой домен и обновления
Status Page — витрина мониторинга для клиентов. В разделе Status Pages вы задаёте адрес вида /status/main, добавляете часть мониторов и получаете страницу с зелёными и красными полосами за 90 дней. Внутренние проверки вроде базы туда выносить не нужно: во время аварии клиенты идут по ссылке, а не в чат поддержки.
Заходить на панель по IP с портом 3001 неудобно и небезопасно. Поднимите на том же сервере Nginx как обратный прокси, направьте на него поддомен вида status.вашсайт.ru и выпустите бесплатный сертификат. Одновременно закройте порт 3001 снаружи — как это сделать через UFW или iptables, разобрано в гайде о том, как настроить файрвол на Linux-сервере.
Обновление занимает три команды, история и настройки лежат в томе и переживают операцию без потерь. Держите закреплённой мажорную версию образа — тег :1 вместо :latest, тогда переход на следующую ветку вы делаете осознанно.
docker stop uptime-kuma && docker rm uptime-kuma
docker pull louislam/uptime-kuma:1
docker run -d --restart=always -p 3001:3001
-v uptime-kuma:/app/data
--name uptime-kuma louislam/uptime-kuma:1
Частые ошибки при настройке мониторинга
Большинство проблем возникает не в самой программе, а в схеме наблюдения. Ниже — пять ситуаций, которые встречаются чаще остальных.
- Мониторинг стоит на том же сервере, что и сайт: при реальной аварии уведомление не уходит вообще.
- Интервал 20 секунд выставлен на всех мониторах сразу — алерты превращаются в шум, и на них перестают реагировать.
- Retries оставлен нулевым: одна потерянная сетевая попытка даёт ложную тревогу посреди ночи.
- Проверяется только главная страница, хотя падает обычно база или платёжный модуль на внутренних адресах.
- Панель открыта наружу на порту 3001 с простым паролем и без HTTPS — готовая точка входа для перебора.
Шестая ошибка стоит отдельно: мониторинг настроили, а доставку уведомлений ни разу не проверили. Остановите на минуту веб-сервер командой systemctl stop nginx и убедитесь, что сообщение пришло в Telegram. Тест занимает две минуты и стоит того.
Частые вопросы
Сколько стоит Uptime Kuma? Сама программа бесплатна и распространяется с открытым исходным кодом, платить нужно только за сервер. Отдельный VPS под мониторинг обойдётся в 59–200 ₽ в месяц в зависимости от провайдера и локации.
Хватит ли 1 ГБ оперативной памяти? Да, при 20–30 мониторах Uptime Kuma расходует 150–250 МБ и оставляет запас для системы. Тариф с 1 ГБ RAM и диском 10 ГБ закрывает задачу, если вы не заводите сотни проверок.
Можно ли поставить мониторинг рядом с сайтом, если денег на второй сервер нет? Технически можно, но пользы мало: перезагрузка или сетевая авария выключит и наблюдателя. При ограниченном бюджете берите самый дешёвый тариф от 59 ₽ — это дешевле одного часа простоя магазина.
Обязательно ли ставить через Docker? Нет, Uptime Kuma запускается и напрямую через Node.js версии 18 и выше. Но тогда вы сами следите за версиями пакетов и пишете unit-файл systemd.
Какой интервал проверки выбрать? Сайту-визитке достаточно 300 секунд, магазину или сервису с оплатой — 60 секунд, минимальные 20 секунд ставят только на критичные API и платёжные шлюзы. Повторов перед тревогой задавайте 2, иначе получите ложные срабатывания.
Uptime Kuma заменит Zabbix? Нет, задачи разные: Uptime Kuma следит за доступностью снаружи, а Zabbix собирает внутренние метрики — загрузку процессора, память, место на диске. Как настроить второй слой, описано в гайде про мониторинг сервера.
Что делать, если ping не проходит, а сайт открывается? Скорее всего провайдер или файрвол блокирует ICMP-пакеты, это нормальная практика защиты. Отключите ping-монитор для такого адреса и опирайтесь на проверки HTTP(s) и TCP-порта.
Итог
Свой мониторинг собирается за вечер: 5–10 минут на Docker и контейнер, 4 минуты на бота в Telegram, полчаса на набор проверок для сайта и почты. Главное правило — наблюдатель живёт на отдельной машине у другого провайдера, иначе он падает вместе с тем, за чем следит.
Сервер под эту задачу нужен скромный: 1 ядро, 1 ГБ RAM и 10 ГБ диска, от 59 ₽ в месяц. Подобрать тариф и сравнить цены можно в разделе недорогих VPS — там есть фильтры по памяти, диску и локации.