Ваш сайт падает среди ночи, а узнаете вы об этом только через четыре часа из жалобы в техподдержку. Именно от таких сценариев и спасает собственная система мониторинга вроде Uptime Kuma. А если вы до сих пор пользуетесь SaaS-сервисами, которые ставят лимиты на проверки или берут деньги за каждый монитор, эта статья точно для вас.
Ниже мы собрали самое главное: что вообще умеет Uptime Kuma, как развернуть её на VPS менее чем за 10 минут и как настроить систему.
Итак, что такое Uptime Kuma? Это бесплатный open-source инструмент для мониторинга, который вы разворачиваете на собственном сервере. Он в реальном времени следит за доступностью ваших сайтов, API и сервисов. Можно считать его аналогом Pingdom или UptimeRobot, только с двумя отличиями: все данные хранятся на вашем сервере, а вы не платите за каждую отдельную проверку.
Для чего еще нужна Uptime Kuma, помимо банальной проверки доступности (аптайма)? Возможностей масса:
Кроме того, Uptime Kuma поддерживает более 90 каналов уведомлений (Telegram, Discord, Slack, email, PagerDuty) и позволяет создавать публичные страницы статуса, чтобы ваши клиенты могли сами проверять работоспособность сервисов.
Единственный честный недостаток, о котором стоит знать: Uptime Kuma проверяет сервисы из той локации, где находится её VPS. Если сервер мониторинга расположен во Франкфурте, а ваши пользователи – в Сиднее, показатели задержки (пинга) не покажут того, что реально видят пользователи. Решение простое – размещать систему мониторинга в регионе поближе к вашим ресурсам. Подробнее об этом чуть позже.
Облачные системы мониторинга вроде Pingdom или Datadog берут оплату за каждую проверку, ограничивают их частоту на базовых тарифах и хранят информацию о вашей инфраструктуре на своих серверах. Если у вас 20 и более сервисов, такие траты начинают бить по карману.
Переход на собственный сервер с Uptime Kuma меняет правила игры:
В чем подвох? Вам нужно самостоятельно администрировать сервер. Но в реальности, если вы используете Docker, это занимает буквально пять минут работы пару раз в год.
Прежде чем переходить к развертыванию Uptime Kuma, убедитесь, что у вас есть всё необходимое:
|
Требование |
Описание |
|
VPS |
Ubuntu 22.04 или 24.04, минимум 1 ГБ оперативной памяти. |
|
Docker и Docker Compose |
Обычно не установлены по умолчанию, ставятся за пару минут. |
|
Доступ по SSH |
Потребуются root-права. |
|
Доменное имя |
Опционально (нужно для настройки HTTPS и красивого URL публичной страницы статуса). |
Важный нюанс: Uptime Kuma не поддерживает работу с сетевыми дисками (NFS). Привязывайте папку с данными только к локальному накопителю, иначе база данных SQLite начнет сыпать ошибками блокировки, в которых очень неприятно разбираться.
Если говорить о требованиях к серверу: 1 ГБ оперативки спокойно вытягивает около 100 проверок. Для небольших задач (10-30 отслеживаемых ресурсов) хватит даже меньшего объема. А если вы планируете добавить 500+ сервисов, имейте в виду, что ветка Uptime Kuma 2.x поддерживает MariaDB в качестве базы данных, поэтому упираться в лимиты производительности SQLite вам не придется.
Тариф Lite от is*hosting (1 ядро / 1 ГБ) стоит от $5.94 в месяц – это отличный выбор для базового мониторинга без переплат. Если вам нужен запас мощности на будущее или вы планируете запускать на этом же VPS другие сервисы, лучше взять тариф Start (2 ядра / 2 ГБ RAM / 30 ГБ NVMe) за $10.19 в месяц при оплате за год. Root-доступ и SSH включены во все тарифы. Docker не предустановлен, но это решается буквально за две минуты.
Если вы настраиваете сервер с нуля, перед установкой Uptime Kuma советуем пробежаться по базовому руководству по настройке Linux VPS. Там описано, как обезопасить SSH и сделать начальную настройку системы.
Установить Docker можно одной командой:
curl -fsSL https://get.docker.com | sh
После этого проверьте, установилось ли все корректно:
docker --version
docker compose version
Обе команды должны вывести версии программ. Если docker compose выдает ошибку, просто установите его отдельно:
sudo apt install docker-compose-plugin -y
Docker готов, теперь давайте пошагово развернем саму Uptime Kuma. Весь процесс вместе с установкой Docker займет у вас меньше 10 минут.
mkdir uptime-kuma && cd uptime-kuma
nano compose.yaml
Вставьте туда следующий код:
services:
uptime-kuma:
image: louislam/uptime-kuma:2
container_name: uptime-kuma
restart: unless-stopped
ports:
- "3001:3001"
volumes:
- ./data:/app/data
environment:
- TZ=UTC
Здесь стоит пояснить две строчки. Первая – volumes: - ./data:/app/data. Она связывает базу данных SQLite внутри контейнера с файловой системой вашего сервера. Благодаря этому ваши настройки, история и добавленные проверки не пропадут при перезапуске или обновлении контейнера.
Вторая – restart: unless-stopped. Это правило указывает Docker автоматически перезапускать контейнер при сбое или перезагрузке сервера. При этом, если вы сами остановите его командой docker stop (например, для обслуживания), он останется выключенным. Если бы мы написали restart: always, контейнер запускался бы заново даже после ручной остановки, что сильно сбивает с толку при обновлениях.
Сохраните файл (Ctrl+O, затем Enter) и закройте редактор (Ctrl+X).
docker compose up -d
Docker скачает образ и запустит его в фоновом режиме. Ожидаемый вывод:
[+] Running 2/2
✔ Network uptime-kuma_default Created
✔ Container uptime-kuma Started
Проверяем, что всё работает:
docker ps
Найдите в списке uptime-kuma – у него должен быть статус Up. Если интерфейс почему-то не открывается, посмотрите логи запуска в реальном времени (это всегда помогает):
docker compose logs -f uptime-kuma
Это первое, что нужно делать при любых ошибках. Если всё прошло хорошо, в конце лога вы увидите сообщение вроде Listening on 3001.
Теперь откройте порт 3001 в файрволе. Закрытый порт – самая частая причина, почему после успешного запуска Docker вместо панели управления вы видите пустую страницу:
sudo ufw allow 3001/tcp
Если вы планируете настроить обратный прокси (что мы крайне рекомендуем), этот шаг можно пропустить и оставить порт 3001 закрытым для внешнего мира. Но если вы собираетесь заходить в панель напрямую по IP-адресу, без этого правила в файрволе не обойтись.
Использовать Uptime Kuma по обычному HTTP и порту 3001 нормально для внутренних задач. Но если вы хотите сделать публичную страницу статуса, вам нужен защищенный протокол HTTPS. Проще всего сделать это с помощью веб-сервера Caddy: он сам получает и обновляет SSL-сертификаты от Let's Encrypt, так что вам вообще не придется с ними возиться.
Установите Caddy на тот же VPS:
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 apt update && sudo apt install caddy
Затем откройте файл /etc/caddy/Caddyfile и замените всё его содержимое на следующее:
status.yourdomain.com {
reverse_proxy localhost:3001
}
Примените настройки Caddy:
sudo systemctl reload caddy
Вот и всё. Caddy сам получит сертификат, и ваша Uptime Kuma будет доступна по безопасному адресу https://status.yourdomain.com. (Если вы еще не привязали поддомен к вашему серверу, загляните в руководство по настройке DNS-записей типа A).
Откройте браузер и перейдите по адресу http://IP_ВАШЕГО_СЕРВЕРА:3001 (или по вашему домену, если вы настроили прокси). Система попросит создать учетную запись администратора. Сделайте это и войдите в панель.
Прежде чем добавлять первый сервис для мониторинга, зайдите в Настройки (Settings) → Безопасность (Security) и включите двухфакторную аутентификацию (2FA). Панель управления теперь доступна из интернета, и по умолчанию её защищает лишь один пароль. Настройка 2FA займет у вас ровно минуту, зато полностью снимет этот риск.
Это те самые вещи, на которых пользователи спотыкаются чаще всего:
sudo ufw allow 3001/tcp или убедитесь, что в настройках безопасности вашего хостинг-провайдера разрешен входящий трафик на этот порт.docker compose logs -f uptime-kuma – это самый быстрый способ понять, в чем реальная причина.TZ=UTCЕсли время в алертах не совпадает с вашим, просто измените эту переменную окружения на свой часовой пояс (например, TZ=Europe/Moscow) и пересоздайте контейнер. dns:
- 1.1.1.1
- 8.8.8.8
Рассказываем как начать работу с Uptime Kuma.
Нажмите кнопку «Добавить монитор» (Add New Monitor), выберите тип проверки (для большинства задач отлично подойдет HTTP/HTTPS), укажите URL-адрес и задайте интервал. 60 секунд – оптимальный вариант по умолчанию, но можно смело снижать его и до 20 секунд, ничего не меняя в системе. Сохраните настройки, и добавленный ресурс сразу появится на главной панели.
Перейдите в Настройки (Settings) → Уведомления (Notifications). Выберите удобный вам канал связи: добавьте токен Telegram-бота, вебхук Discord, данные SMTP для почты или любую другую из 90+ интеграций. Для каждого ресурса можно настроить свои каналы связи: например, при падении критически важных баз данных вам будет прилетать срочное сообщение в Telegram, а ошибки менее важных сервисов будут просто уходить в лог.
Перейдите в Настройки (Settings) → Страницы статуса (Status Pages) → Новая страница статуса. Придумайте ей название, отметьте галочками нужные сервисы для отображения и, при желании, привяжите её к своему красивому домену. Именно эту ссылку можно давать клиентам или пользователям, чтобы они могли сами проверить работоспособность ваших сервисов, прежде чем писать в техподдержку.
При стандартном подходе Uptime Kuma сама регулярно «стучится» к вашему сервису. Push-мониторинг переворачивает эту логику: ваш сервис сам с определенной частотой отправляет сигнал в Uptime Kuma. Если сигналы перестают поступать по расписанию, система бьет тревогу.
Для каждой такой проверки Uptime Kuma генерирует уникальную ссылку вида:
https://your-kuma-instance/api/push/<token>?status=up&msg=OK
Ваше приложение или скрипт в cron просто обращается по этому адресу с заданным интервалом. Если сервис пропускает слишком много отправок подряд, статус меняется на «Упал» (Down).
Это невероятно полезная штука для фоновых задач – например, для скрипта ночного бэкапа, конвейера обработки данных (ETL) или любых других действий по расписанию. Ведь обычный HTTP-мониторинг показал бы только то, что сервер физически доступен, но никак не подтвердил бы, что сам скрипт бэкапа реально запустился и отработал.
Разверните Uptime Kuma на KVM-изолированном VPS с NVMe. Тарифы от $5.94/мес., 40+ локаций, root-доступ.
Обновления – это как раз то, что пугает многих в селф-хостинге, хотя на деле всё элементарно. С Docker Compose это делается всего двумя командами:
docker compose pull
docker compose up -d --force-recreate
Docker скачает свежий образ, заменит контейнер и заново подключит вашу папку с данными. Все отслеживаемые ресурсы, настройки уведомлений и накопленная история останутся в целости и сохранности.
Но перед каждым обновлением обязательно делайте резервную копию базы данных SQLite:
cp ./data/kuma.db ./data/kuma.db.backup
И если вдруг что-то пойдет не так, вы легко сможете откатиться назад:
cp ./data/kuma.db.backup ./data/kuma.db
В тарифы VPS от is*hosting уже включены бесплатные еженедельные бэкапы на уровне всего сервера (снапшоты). Однако точечное копирование базы данных Uptime Kuma занимает ровно две секунды, и восстановиться из неё при неудачном обновлении будет гораздо быстрее. Возьмите за правило делать это перед каждой командой docker compose pull.
Uptime Kuma устанавливается на любой Linux VPS менее чем за 10 минут. Будучи решением для селф-хостинга, система не требует оплаты за каждую отдельную проверку, не сливает данные за пределы вашей инфраструктуры и не просит денег за лицензию. Если у вас DevOps-стек или SaaS-продукт с кучей сервисов, за которыми нужно следить, она дает всё то, за что платные инструменты просят по $30–100 в месяц. А обойдется вам это по цене недорогого VPS.
Если вам нужен сервер, тарифы на VPS от is*hosting начинаются всего от $5.94 в месяц. А тариф Start (2 ядра / 2 ГБ RAM / 30 ГБ NVMe) обеспечит вам солидный запас ресурсов: хватит и для масштабного мониторинга, и для других задач.
Уже разворачиваете собственные сервисы? Наше руководство по запуску n8n на VPS построено по точно такому же принципу с использованием Docker. Если вы хотите объединить мониторинг с мощными инструментами автоматизации, n8n и Uptime Kuma отлично уживутся на одном сервере.