1. Что такое Uptime Kuma
Uptime Kuma — self-hosted инструмент мониторинга с современным интерфейсом. Он проверяет доступность ваших сайтов, сервисов и серверов каждые N секунд и мгновенно уведомляет, если что-то упало. Актуальная версия — 2.1.3 (февраль 2026).
🌐 HTTP/HTTPS мониторинг
Статус-код, время отклика, ключевое слово на странице, JSON-ответ. История графиком.
🔌 TCP и Ping
Проверка любого порта: базы данных, SSH, SMTP. Ping с графиком задержки.
🔒 SSL-сертификаты
Уведомление за N дней до истечения сертификата — не пропустите продление.
📡 DNS и домены
Проверка DNS-записей, уведомление об истечении домена.
🔔 90+ каналов уведомлений
Telegram, Discord, Slack, Email, PagerDuty, Gotify, ntfy и ещё 80+ сервисов.
📊 Страница статуса
Публичная страница для пользователей — как у statuspage.io, но на своём сервере.
🐳 Docker-мониторинг
Состояние Docker-контейнеров прямо из Uptime Kuma — упал контейнер, пришёл алерт.
📥 Push-мониторинг
Ваш скрипт сам пингует Uptime Kuma. Если замолчал — значит упал. Для cron и бэкапов.
Uptime Kuma vs Prometheus+Grafana
Prometheus собирает сотни метрик с серверов — CPU, RAM, I/O. Uptime Kuma отвечает на один вопрос: «сайт/сервис доступен?» Их можно использовать вместе: Prometheus для метрик сервера, Uptime Kuma для доступности сервисов.
2. Требования к серверу
Uptime Kuma один из самых лёгких self-hosted инструментов мониторинга. Работает на минимальных VPS.
| Параметр | Минимум | Рекомендуется |
|---|---|---|
| CPU | 1 vCPU | 1 vCPU (достаточно для 500+ мониторов) |
| RAM | 256 МБ | 512 МБ — 1 ГБ (с запасом для Nginx) |
| Диск | 5 ГБ | 10 ГБ (история данных за годы) |
| ОС | Ubuntu 20.04+, Debian 11+ | Ubuntu 22.04 LTS |
| Docker | v20+ | Docker Engine v24+ (устанавливается скриптом) |
Можно ставить на уже работающий VPS
Uptime Kuma отлично уживается с другими сервисами. На VPS с Nginx и парой сайтов контейнер займёт 50–100 МБ RAM в покое. Специальный сервер не нужен.
3. Установка через Docker
Рекомендуемый способ — Docker Compose. Данные хранятся в именованном volume и сохраняются при обновлении контейнера.
Установить Docker
Если Docker ещё не установлен — один скрипт поставит всё:
curl -fsSL https://get.docker.com | shСоздать docker-compose.yml
version: '3.8'
services:
uptime-kuma:
image: louislam/uptime-kuma:2
container_name: uptime-kuma
restart: always
ports:
- "127.0.0.1:3001:3001"
volumes:
- uptime-kuma:/app/data
volumes:
uptime-kuma:Почему 127.0.0.1:3001, а не 0.0.0.0:3001?
Привязка к 127.0.0.1 закрывает порт 3001 снаружи — Uptime Kuma будет доступен только через Nginx (см. следующий раздел). Если привязать к 0.0.0.0, любой сможет обратиться напрямую по IP:3001.
mkdir ~/uptime-kuma && cd ~/uptime-kuma
# создайте docker-compose.yml с содержимым выше, затем:
docker compose up -dКонтейнер запустится за несколько секунд. Временно можно открыть напрямую (только если Nginx ещё не настроен):
# Временно открыть порт (уберите после настройки Nginx):
ufw allow 3001/tcp
# Открыть в браузере:
http://IP_СЕРВЕРА:30014. Nginx + SSL
Uptime Kuma использует WebSocket для обновления данных в реальном времени. В конфиге Nginx нужны специальные заголовки Upgrade и Connection — без них интерфейс не будет работать корректно.
Шаг 1: создать конфиг Nginx
server {
listen 80;
server_name status.ваш-домен.ru;
location / {
proxy_pass http://127.0.0.1:3001;
proxy_http_version 1.1;
# Обязательно для WebSocket
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
# Увеличенные таймауты для WebSocket
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
}
}ln -s /etc/nginx/sites-available/uptime-kuma /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginxШаг 2: DNS и SSL
Добавьте A-запись у регистратора домена, затем получите сертификат:
status.ваш-домен.ru → A → IP_СЕРВЕРАapt install -y certbot python3-certbot-nginx
certbot --nginx -d status.ваш-домен.ruCertbot автоматически обновит конфиг Nginx для HTTPS и настроит авторенуэл. После этого закройте временный порт:
ufw delete allow 3001/tcp
ufw reloadПервый вход
Откройте https://status.ваш-домен.ru. Первый пользователь, который зарегистрируется, становится администратором. Создайте логин и пароль — подтверждения на почту нет, аккаунт создаётся сразу.
5. Добавление мониторов
Нажмите + Add New Monitor в левом меню. Выберите тип и заполните параметры.
Мой сайтhttps://ваш-сайт.ru60 (сек)3 (повторов до алерта)200-299PostgreSQL127.0.0.1 или IP сервера543260VPS ОсновнойIP или домен сервера60DNS ваш-сайт.ruваш-сайт.ru1.1.1.1APush-монитор: мониторинг cron-задач
Выберите тип Push. Uptime Kuma даст уникальный URL вида https://status.ваш-домен.ru/api/push/XxXxXxXx. Добавьте его в конец вашей cron-задачи или скрипта бэкапа:
# Сигнал об успешном выполнении
curl -fsS "https://status.ваш-домен.ru/api/push/XxXxXxXx?status=up&msg=OK" > /dev/nullЕсли скрипт не отправил сигнал в течение заданного интервала — придёт уведомление.
6. Уведомления в Telegram
Telegram — самый удобный канал для уведомлений: бесплатно, мгновенно, работает на любом устройстве. Настройка займёт 3 минуты.
Шаг 1: создать бота в Telegram
- 1Откройте Telegram и найдите @BotFather.
- 2Отправьте команду
/newbot. - 3Введите имя бота (например, My Monitoring Bot), затем username оканчивающийся на bot (например, mymonitoring_bot).
- 4BotFather вернёт Bot Token вида
1234567890:AABB...— скопируйте его. - 5Напишите вашему боту любое сообщение (например,
/start) — это нужно, чтобы получить Chat ID.
Шаг 2: добавить уведомление в Uptime Kuma
- 1В Uptime Kuma откройте Settings → Notifications → Add Notification.
- 2Выберите тип: Telegram.
- 3В поле Bot Token вставьте токен от BotFather.
- 4В поле Chat ID нажмите кнопку Auto Get — Uptime Kuma автоматически получит ваш Chat ID через API Telegram.
- 5Нажмите Test — в Telegram должно прийти тестовое сообщение. Если пришло — нажмите Save.
- 6Теперь при добавлении или редактировании монитора выберите это уведомление в поле Notifications.
Как выглядит уведомление
🔴 [DOWN] Мой сайт
https://ваш-сайт.ru
Status Code: 522
Duration: 1 min
🟢 [UP] Мой сайт
https://ваш-сайт.ru
Status Code: 200
Duration: 5 min 23 sec (downtime)
7. Публичная страница статуса
Uptime Kuma умеет создавать публичные страницы — как у крупных SaaS-сервисов. Пользователи могут сами проверить, работает ли сервис, не беспокоя поддержку. Можно привязать собственный домен — например, status.ваш-сайт.ru.
- 1В верхнем меню Uptime Kuma нажмите Status Pages → New Status Page.
- 2Задайте название (например, Статус сервисов) и slug — короткий идентификатор в URL (services). Страница будет доступна по адресу
https://status.ваш-домен.ru/status/services. - 3Нажмите Next — откроется редактор страницы. Здесь можно задать логотип, описание и выбрать, показывать ли время отклика и историю.
- 4В разделе Incident можно написать сообщение об инциденте — оно появится наверху страницы.
- 5Нажмите Add Group и добавьте группу мониторов (например, «Основные сервисы»). Перетащите нужные мониторы из левой панели.
- 6Включите переключатель Make this status page public и нажмите Save.
Свой домен для страницы статуса
Вместо длинного URL вида /status/services можно использовать отдельный домен. Добавьте DNS-запись и конфиг Nginx:
status.ваш-сайт.ru → A → IP_СЕРВЕРАserver {
listen 80;
server_name status.ваш-сайт.ru;
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_read_timeout 3600s;
}
}ln -s /etc/nginx/sites-available/status-page /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
certbot --nginx -d status.ваш-сайт.ruВ настройках страницы статуса в поле Domain укажите status.ваш-сайт.ru — Uptime Kuma будет знать, что этот домен ведёт на данную страницу статуса.
Можно создать несколько страниц
Например, одну публичную — для клиентов, другую приватную с технической информацией — для команды. Каждая страница независима и может содержать разные мониторы.