Uptime Kuma: публичная статус-страница и внешний мониторинг для офиса
Меня зовут Семёнов Евгений Сергеевич, директор АйТи Фреш. За 15 лет администрирования корпоративных сетей я перепробовал десятки систем мониторинга — от дорогих коммерческих до открытых Nagios и Zabbix. И последние два года на всех наших клиентах первым делом рядом с Zabbix ставлю Uptime Kuma. Не как замену, а как быстрый внешний пингер плюс статус-страница для заказчиков. Десять минут на развёртывание, бесплатно, работает в Docker и даёт именно то, что нужно: зелёный квадратик или красный крестик напротив каждого сервиса.
Что такое Uptime Kuma и кому нужна
Uptime Kuma — это self-hosted аналог UptimeRobot/StatusCake на Node.js. Ставите на свою виртуалку, получаете веб-интерфейс, добавляете мониторы (HTTP, TCP, Ping, DNS, SSL-сертификат, Docker-контейнер) и настраиваете уведомления в 100+ каналов: Telegram, Slack, почта, Discord, Mattermost, Webhook и прочее.
Главных сценария три:
- Внешний watchdog — если упал основной Zabbix-сервер или сам мониторимый офис целиком, Kuma на внешней VPS это зафиксирует и алертит.
- Публичная статус-страница — показываете клиентам и сотрудникам, какие сервисы работают: почта, CRM, 1С веб-клиент, сайт.
- Мониторинг SSL — за 30 дней до истечения сертификата приходит уведомление, никто больше не забывает продлять.
У нас на практике именно эти три задачи закрывают 80% потребностей по мониторингу у среднего клиента. Остальное — детали, которые Zabbix или Prometheus сделают лучше.
Установка в Docker за 5 минут
Рекомендую разворачивать на отдельной Ubuntu 22.04 виртуалке с 1 vCPU и 1 ГБ RAM. Этого хватит на 200+ мониторов. Базовый запуск через docker compose:
mkdir -p /opt/uptime-kuma && cd /opt/uptime-kuma
cat > docker-compose.yml <<'EOF'
version: '3.8'
services:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
restart: always
ports:
- "3001:3001"
volumes:
- ./data:/app/data
- /var/run/docker.sock:/var/run/docker.sock:ro
EOF
docker compose up -d
docker logs -f uptime-kuma
Заходим на http://server:3001, регистрируем админа. На этом этап первичной установки закончен. Дальше — только настройка мониторов и уведомлений.
Настройка Nginx с HTTPS и доменом
Напрямую открывать 3001 порт в интернет я не рекомендую. Ставим перед Kuma Nginx с Let's Encrypt. Пример конфига:
server {
listen 443 ssl http2;
server_name status.company.ru;
ssl_certificate /etc/letsencrypt/live/status.company.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/status.company.ru/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;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 86400;
}
}
Важный момент — WebSocket-заголовки Upgrade и Connection. Без них веб-интерфейс работает, но статус не обновляется в реальном времени. Я всегда отдельно проверяю это после установки — открываю DevTools, смотрю вкладку WS.
Типы мониторов и как их правильно настраивать
| Тип | Применение | Интервал | Комментарий |
|---|---|---|---|
| HTTP(S) | Проверка сайтов, API, 1С веб-клиент | 60 сек | Проверяйте код и тело ответа, не только код |
| TCP | SMTP/25, RDP/3389, Postgres/5432 | 60 сек | Показывает порт открыт, но не функциональность |
| Ping | Роутеры, коммутаторы, принтеры | 30 сек | Требует icmp, иногда блокируется |
| DNS | Проверка записей A/MX/TXT | 5 мин | Алерт при изменении — полезно для SPF/DMARC |
| Push | Cron-задачи, бэкапы | По событию | Сервис сам стучится на URL при успехе |
| Docker | Статус контейнера | 60 сек | Через сокет /var/run/docker.sock |
Я всегда делаю HTTP-монитор двухсложным — помимо кода 200 проверяю ключевое слово в теле. Для Битрикс24 это «Bitrix24», для 1С — «1С:Предприятие». Иначе сайт может отвечать 200, но отдавать заглушку «техработы».
Статус-страница для клиентов
Status Page — фича, ради которой половина клиентов ставит Kuma. Создаётся так: раздел Settings → Status Pages → New Status Page. Указываете slug (например public), название, логотип, список мониторов. Получаете URL вида https://status.company.ru/status/public.
Что я обычно вывожу на публичную страницу:
- Корпоративный сайт и поддомены.
- Почтовый сервер (IMAP/SMTP-порты).
- VPN-шлюз (порт OpenVPN/WireGuard).
- Облачную файл-шару (Nextcloud, Onlyoffice).
- Битрикс24 веб-клиент и 1С-сервер.
На внутреннюю админскую страницу — дополнительно мониторы внутренних серверов, сертификатов, бэкапов. Это пригождается, когда сотрудники пишут «у меня не работает», а я за 2 секунды по статусу вижу реальное состояние сервисов.
Уведомления: Telegram, почта, Webhook
Настройка Telegram-бота стандартная: создаёте через @BotFather, получаете Token, находите Chat ID через curl https://api.telegram.org/bot<TOKEN>/getUpdates. В Kuma раздел Notifications → Add New → Telegram. Вставляете Token и Chat ID, проверяете кнопкой Test.
Настройки алертов на каждом мониторе:
- Retries — 3 повтора с интервалом 20 секунд. Не стоит спамить при кратковременных лагах сети.
- Resend Notification — каждые 10 неудачных проверок. Если сервис упал и не поднялся — напоминание, чтобы не забыли.
- Certificate Expiry — за 30 и 7 дней до истечения.
- Ping Threshold — если отклик > 500 мс, алерт без падения (деградация).
Реальный кейс: статус-страница для аутсорсера
В феврале 2026 года к нам пришёл партнёр-аутсорсер — компания обслуживает 12 юрлиц, у каждого свой набор сервисов в нашем дата-центре МТС. Задача: единая статус-страница, где клиенты видят состояние только своих сервисов. И внутренний дашборд для техподдержки со всеми 80+ мониторами.
Развернули Uptime Kuma на виртуалке с Dell Xeon Platinum 8280, 2 vCPU, 2 ГБ RAM, Ubuntu 22.04. Создали 12 отдельных Status Pages, каждому клиенту отдали slug вида status/akme-pro. Для каждой привязали мониторинг: корпоративный сайт, почта, VPN, файл-сервер, телефония 3CX. Telegram-чаты — отдельные на клиента и общий для админов. Алерты в почту по крит-событиям.
Результат через два месяца: 38 зафиксированных инцидентов (средняя реакция — 4 минуты 20 секунд), клиенты перестали звонить с вопросом «у вас там работает почта?» — смотрят сами. Стоимость внедрения — 24 000 руб., ежемесячная поддержка — включена в сопровождение. Оборудование в дата-центре МТС, 40G Mellanox, аптайм за отчётный период 99.94%.
Бэкап и обновление
Весь стейт Kuma хранится в SQLite-файле kuma.db внутри тома. Плюс файл config.json. Регулярный бэкап — просто rsync папки data:
# Бэкап каждый день в 3:00
cat > /etc/cron.d/kuma-backup <<'EOF'
0 3 * * * root rsync -a --delete /opt/uptime-kuma/data/ /backup/kuma/$(date +\%Y\%m\%d)/ >/dev/null
EOF
Обновление — pull нового образа и перезапуск:
cd /opt/uptime-kuma
docker compose pull
docker compose up -d
docker image prune -f
Дополнительно раз в месяц я вручную делаю Backup через веб-интерфейс (Settings → Backup) — получаю JSON со всеми мониторами и уведомлениями. Кладу в отдельный Git-репозиторий. Так при полной потере сервера восстановлю конфиг за 5 минут на новой машине.
Типичные ошибки и ограничения
- Один сервер мониторит сам себя. Если Kuma упала — мониторинг упал. Ставьте на внешнюю VPS отдельно от основной инфраструктуры.
- Слишком короткие интервалы. HTTP-проверка каждые 20 секунд для 100 сервисов даёт нагрузку. 60 секунд — разумный компромисс.
- Забывают про MINSUPPLIES в двухфакторке. 2FA включается в Settings, включайте её обязательно — публичный URL со списком сервисов внутри — лакомый кусок для сканеров.
- WebSocket не проходит через прокси. Без настройки Upgrade-заголовков интерфейс работает, но real-time данные нет.
- SSL-мониторы не видят self-signed. Проверка сертификата на внутренних серверах с корпоративным CA не работает из коробки — используйте TCP-монитор или подложите корневой CA в контейнер.
Развернём Uptime Kuma в вашей инфраструктуре
Поставим, настроим мониторинг всех ваших сервисов, подключим Telegram-алерты, опубликуем статус-страницу на вашем домене. Делаем под ключ за 1 рабочий день. Если нужно — интегрируем с Zabbix, Grafana и вашей тикет-системой.
Телефон: +7 903 729-62-41
Telegram: @ITfresh_Boss
Семёнов Евгений Сергеевич, директор АйТи Фреш
FAQ — частые вопросы
- Чем Uptime Kuma отличается от Zabbix?
- Zabbix — тяжёлая система мониторинга с агентами, базой PostgreSQL, триггерами. Uptime Kuma — простой HTTP/TCP-пингер с публичной статус-страницей. Ставится за 10 минут, подходит для проверки внешних сайтов и сервисов.
- Какие типы мониторов поддерживает Kuma?
- HTTP(S) с проверкой кода ответа и содержимого, TCP-порт, Ping, DNS-resolver, Push, Steam Game Server, gRPC, MQTT, Docker container, SSL-сертификат с предупреждением об истечении.
- Можно ли показать клиентам публичный статус?
- Да, это главная фича. Создаёте Status Page, выбираете мониторы для отображения, настраиваете логотип и URL. Получаете красивую страницу в стиле атласских или GitHub status.
- Как слать алерты в Telegram?
- В разделе Notifications добавляете Telegram, вводите Bot Token и Chat ID, привязываете к мониторам. При падении сразу приходит сообщение с названием, статусом и временем.
- Как бэкапить Uptime Kuma?
- Весь стейт хранится в одном файле kuma.db (SQLite) внутри volume. Копируйте папку /app/data. Я всегда делаю ежедневный rsync в внешний бэкап-сервер и дополнительно — Backup через веб-интерфейс в JSON.