К основному содержимому

Uptime Kuma: self-hosted мониторинг серверов и сайтов

Облако и DevOps · 19.04.2026 · 3 мин чтения
Иллюстрация к статье «Uptime Kuma: self-hosted мониторинг серверов и сайтов»

Uptime Kuma: мониторинг серверов и сайтов

Uptime Kuma — саморазмещаемая open-source альтернатива UptimeRobot с красивым интерфейсом, уведомлениями в Telegram и поддержкой HTTP, TCP, DNS, Docker и других мониторов.

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

docker run -d   --name uptime-kuma   -p 3001:3001   -v uptime-kuma:/app/data   --restart unless-stopped   louislam/uptime-kuma:latest

Откройте http://your-server:3001 для первичной настройки.

Docker Compose

version: '3.8'
services:
  uptime-kuma:
    image: louislam/uptime-kuma:latest
    container_name: uptime-kuma
    ports:
      - "3001:3001"
    volumes:
      - ./uptime-kuma-data:/app/data
    restart: unless-stopped

Nginx Reverse Proxy + SSL

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

    ssl_certificate /etc/letsencrypt/live/status.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/status.yourdomain.com/privkey.pem;

    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;
    }
}

Настройка мониторов

  • HTTP(S) — проверка сайта, ожидаемый статус 200, keyword match
  • TCP Port — проверка доступности порта (MySQL 3306, SSH 22)
  • DNS — мониторинг DNS-записей
  • Docker Container — статус контейнера
  • Ping — ICMP-проверка доступности

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

В настройках добавьте Notification → Telegram:

Bot Token: 123456:ABCdefGHIjklMNO
Chat ID: -1001234567890  # для группы

# Получить Chat ID:
curl "https://api.telegram.org/bot{TOKEN}/getUpdates"

Status Page (публичная страница)

Uptime Kuma поддерживает создание красивых публичных Status Page — отображайте статус сервисов для клиентов без доступа к панели администратора.

Интеграции: Uptime Kuma поддерживает уведомления через Slack, Discord, PagerDuty, Email, SMS (Twilio) и более 90 других каналов.

Разбор реальных ошибок

Три ситуации закрывают почти все обращения при первой настройке Uptime Kuma: права на volume, неверный Chat ID в Telegram и самоподписанный сертификат у внутреннего сервиса. Все три легко воспроизвести и так же легко устранить, если понимать первопричину, а не просто перезапускать контейнер.

База данных недоступна на запись

Error: EACCES: permission denied, open '/app/data/kuma.db'

Контейнер Uptime Kuma работает от непривилегированного пользователя внутри образа, а смонтированная директория ./uptime-kuma-data на хосте принадлежит root. Исправляется командой chown -R 1000:1000 ./uptime-kuma-data — узнать реальный UID процесса внутри контейнера можно через docker exec uptime-kuma id.

Telegram не доставляет уведомления

Error: Bad Request: chat not found

Chat ID указан неверно — частая причина в том, что для групп Telegram использует отрицательные ID (например, -1001234567890), а супергруппы начинаются с -100. Если бот не является участником группы или заблокирован пользователем в личке — ошибка будет та же самая.

Uptime Kuma vs UptimeRobot vs Healthchecks.io

КритерийUptime KumaUptimeRobotHealthchecks.io
ХостингSelf-hostedSaaSSaaS или self-hosted
СтоимостьБесплатно (свой VPS)Free до 50 мониторов, далее платноFree до 20 проверок
Проверка из нескольких регионовНет, один серверЕстьЕсть
Публичная Status PageЕсть, встроенаЕстьОграничена

Когда Uptime Kuma не подходит

  • Нужен мониторинг из нескольких географических регионов одновременно — self-hosted инсталляция проверяет только с одного VPS, и локальный сбой сети даст ложную тревогу.
  • Клиентам важен независимый сторонний отчёт о доступности — self-hosted статус-страница не считается нейтральным доказательством для SLA-споров.
  • Нужны сложные цепочки эскалации дежурств (on-call rotation) — здесь честнее PagerDuty или Opsgenie.
  • Планируется несколько тысяч мониторов — SQLite по умолчанию не рассчитан на такую нагрузку без дополнительной настройки.
  • Требуется долгая история метрик для SLA-отчётности за годы — Uptime Kuma хранит агрегаты ограниченный срок.

Проверка результата

# Контейнер поднят и слушает порт
docker ps | grep uptime-kuma
curl -I http://localhost:3001

# API статуса конкретного монитора (публичный, если включена Status Page)
curl https://status.yourdomain.com/api/status-page/heartbeat/default

# Логи контейнера при странном поведении
docker logs uptime-kuma --tail 50

Пустой ответ на curl -I или код отличный от 200/301 означает, что nginx reverse proxy не достучался до контейнера — проверьте, что proxy_pass указывает на правильный порт и что контейнер вообще запущен. После первичной проверки стоит настроить сам сервер мониторинга по чек-листу из статьи про настройку облачного сервера, а бэкапы базы Uptime Kuma удобно гонять через rclone.

Статья помогла?
← Назад в базу знаний Задать вопрос поддержке