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

Что умеет Uptime Kuma

Основная единица — монитор. Это правило проверки: адрес, тип, интервал, таймаут и число повторов перед тревогой. Результаты складываются в локальную базу SQLite, а веб-интерфейс показывает графики доступности и времени ответа. Система ставится одним контейнером, не требует внешней базы и работает на слабом сервере или мини-ПК.

Из коробки доступны проверки HTTP и HTTPS, TCP-порта, ICMP-пинга, DNS-записей, ключевого слова на странице и push-сигналов от ваших скриптов. Есть уведомления о скором истечении TLS-сертификата, режим «перевёрнутой» проверки (когда ошибка означает норму), окна обслуживания и несколько пользователей с разными правами. Этого достаточно для домашней лаборатории, небольшого бизнеса и контроля собственных сайтов.

  • HTTP(s) — код ответа и время отклика.
  • TCP-порт — доступность базы или SSH.
  • Ping — живость хоста в локальной сети.

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

Понадобится хост с Docker и свободный порт. Наружу лучше не публиковать интерфейс напрямую, а поставить обратный прокси с HTTPS. Минимальный compose-файл выглядит так:

services:
  uptime-kuma:
    image: louislam/uptime-kuma:1
    container_name: uptime-kuma
    restart: unless-stopped
    ports:
      - "127.0.0.1:3001:3001"
    volumes:
      - ./data:/app/data
    environment:
      - TZ=Europe/Moscow

Каталог ./data — это вся история и настройки, поэтому его нужно включить в резервное копирование. После запуска откройте http://127.0.0.1:3001 и создайте администратора. Если сервер удалённый, используйте SSH-туннель, а не открывайте порт в интернет до настройки пароля:

docker compose up -d
docker compose logs -f --tail 50
ssh -L 3001:127.0.0.1:3001 user@server

Первый монитор

Нажмите «Добавить монитор», задайте имя и адрес. Для сайта выберите тип HTTP(s) и укажите URL, для базы — TCP-порт, для маршрутизатора — пинг. Разумные значения по умолчанию: интервал 60 секунд, таймаут 10–15 секунд, два-три повтора. Слишком частые проверки нагружают и монитор, и наблюдаемый сервис, а слишком редкие превращают тревогу в запоздалое сообщение.

Проверьте, что видит сама система. Если Uptime Kuma живёт в контейнере, адрес localhost указывает на контейнер, а не на хост. Для сервисов на той же машине используйте имя контейнера, host.docker.internal с добавленной секцией extra_hosts или IP хоста в сети Docker. Это самая частая причина ложных тревог. Отдельно проверьте монитор по ключевому слову: он считает сервис живым только тогда, когда в ответе есть заданная строка, — удобно для страниц вида /health, которые возвращают «ok».

curl -sS -o /dev/null -w '%{http_code} %{time_total}\n' https://example.com
curl -sS --max-time 10 https://example.com/health
docker exec uptime-kuma getent hosts example.com

Уведомления

Раздел «Уведомления» поддерживает Telegram, электронную почту, вебхуки, ntfy, Gotify и другие каналы. Для Telegram нужен токен бота и идентификатор чата; для SMTP — хост, порт, логин и пароль приложения. После сохранения нажмите кнопку тестового сообщения: молчащая система мониторинга бесполезна.

Вебхук удобен для интеграции с собственными скриптами. Uptime Kuma отправляет POST с JSON, где есть имя монитора, статус, сообщение и время. На принимающей стороне можно создать задачу, записать событие в журнал или включить резервный канал связи. Не храните в вебхуке секреты в открытом виде — используйте отдельный эндпоинт с проверкой подписи или ограничением по IP.

Статус-страница

Публичная страница показывает выбранные мониторы без доступа к админке. Создайте её в разделе «Статус-страницы», добавьте группы и мониторы, задайте описание и тему. Ссылку можно отдать клиентам или повесить на сайт. Не включайте в публичный список внутренние сервисы: имена хостов и открытые порты — лишняя информация для посторонних.

Для HTTPS поставьте Uptime Kuma за Nginx. Важно пробросить заголовки обновления соединения, иначе живое обновление статусов может не работать:

server {
    listen 443 ssl;
    server_name status.example.com;

    location / {
        proxy_pass http://127.0.0.1:3001;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Обслуживание и резервные копии

Штатное резервное копирование есть в настройках: оно выгружает базу и конфигурацию в файл. Но одной копии мало — храните её вне сервера. Для согласованного снимка тома остановите контейнер на несколько секунд:

docker compose stop uptime-kuma
tar czf uptime-kuma-$(date +%F).tar.gz data/
docker compose start uptime-kuma

docker compose pull
docker compose up -d

Обновляйтесь осознанно: тег :1 фиксирует мажорную ветку, но внутри неё выходят новые версии. Перед обновлением прочитайте заметки к выпуску и сделайте копию. Если база большая, а мониторов много, стоит ограничить срок хранения heartbeat-записей в настройках — иначе файл SQLite растёт и интерфейс начинает тормозить.

Безопасность и ограничения

Сразу после установки создайте администратора, включите двухфакторную аутентификацию и ограничьте доступ к панели через обратный прокси или список разрешённых адресов. Доступ к панели даёт возможность удалить мониторы и увидеть внутренние адреса, поэтому публичный инстанс без HTTPS — плохая идея. Регулярно обновляйте образ: проект активно развивается, исправления безопасности выходят вместе с обычными релизами.

Честно об ограничениях: это одиночный сервер, без распределённых агентов и отказоустойчивости. Если упадёт сама машина с Uptime Kuma, вы не получите тревогу — для критичных систем нужен внешний наблюдатель. Нет сложных эскалаций и дежурств, а уведомления не повторяются бесконечно. Для домашних задач и малого бизнеса этого обычно достаточно, для крупной инфраструктуры смотрят в сторону более тяжёлых платформ.

Итог

Uptime Kuma — удачный компромисс между простотой и функциональностью. Один контейнер, понятный интерфейс, гибкие проверки и уведомления закрывают большинство задач личного и небольшого корпоративного мониторинга. Главное — правильно выбрать адреса проверки, настроить резервное копирование и не забыть, что система не сможет сообщить о собственной недоступности. Если это учесть, инструмент годами работает без внимания и вовремя предупреждает о проблемах.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте