VPSРейтинг
МониторингМарт 2026 · 10 мин чтения

Uptime Kuma на VPS: мониторинг сайта за 5 минут

Prometheus — мощно, но избыточно для вопроса «сайт работает?». Uptime Kuma — красивый self-hosted аналог StatusPage: один Docker-контейнер, 50 МБ RAM, 90+ каналов уведомлений и публичная страница статуса. Ставится за пять минут.

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.

ПараметрМинимумРекомендуется
CPU1 vCPU1 vCPU (достаточно для 500+ мониторов)
RAM256 МБ512 МБ — 1 ГБ (с запасом для Nginx)
Диск5 ГБ10 ГБ (история данных за годы)
ОСUbuntu 20.04+, Debian 11+Ubuntu 22.04 LTS
Dockerv20+Docker Engine v24+ (устанавливается скриптом)

Можно ставить на уже работающий VPS

Uptime Kuma отлично уживается с другими сервисами. На VPS с Nginx и парой сайтов контейнер займёт 50–100 МБ RAM в покое. Специальный сервер не нужен.

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

Рекомендуемый способ — Docker Compose. Данные хранятся в именованном volume и сохраняются при обновлении контейнера.

Установить Docker

Если Docker ещё не установлен — один скрипт поставит всё:

Официальный скрипт установки Docker
curl -fsSL https://get.docker.com | sh

Создать docker-compose.yml

~/uptime-kuma/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)
# Временно открыть порт (уберите после настройки Nginx):
ufw allow 3001/tcp

# Открыть в браузере:
http://IP_СЕРВЕРА:3001

4. Nginx + SSL

Uptime Kuma использует WebSocket для обновления данных в реальном времени. В конфиге Nginx нужны специальные заголовки Upgrade и Connection — без них интерфейс не будет работать корректно.

Шаг 1: создать конфиг Nginx

/etc/nginx/sites-available/uptime-kuma
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;
    }
}
Активировать конфиг и проверить Nginx
ln -s /etc/nginx/sites-available/uptime-kuma /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx

Шаг 2: DNS и SSL

Добавьте A-запись у регистратора домена, затем получите сертификат:

DNS-запись (у вашего регистратора)
status.ваш-домен.ru  →  A  →  IP_СЕРВЕРА
Получить SSL-сертификат через Certbot
apt install -y certbot python3-certbot-nginx
certbot --nginx -d status.ваш-домен.ru

Certbot автоматически обновит конфиг Nginx для HTTPS и настроит авторенуэл. После этого закройте временный порт:

Закрыть прямой доступ к порту 3001
ufw delete allow 3001/tcp
ufw reload

Первый вход

Откройте https://status.ваш-домен.ru. Первый пользователь, который зарегистрируется, становится администратором. Создайте логин и пароль — подтверждения на почту нет, аккаунт создаётся сразу.

5. Добавление мониторов

Нажмите + Add New Monitor в левом меню. Выберите тип и заполните параметры.

HTTP(s)Мониторинг сайта или API
Friendly NameМой сайт
URLhttps://ваш-сайт.ru
Heartbeat Interval60 (сек)
Retries3 (повторов до алерта)
Accepted Status Codes200-299
TCP PortПроверка порта базы данных, SSH, SMTP и т.д.
Friendly NamePostgreSQL
Hostname127.0.0.1 или IP сервера
Port5432
Heartbeat Interval60
PingПроверка доступности сервера по ICMP
Friendly NameVPS Основной
HostnameIP или домен сервера
Heartbeat Interval60
DNSПроверка DNS-записей домена
Friendly NameDNS ваш-сайт.ru
Hostnameваш-сайт.ru
Resolver Server1.1.1.1
Resource TypeA

Push-монитор: мониторинг cron-задач

Выберите тип Push. Uptime Kuma даст уникальный URL вида https://status.ваш-домен.ru/api/push/XxXxXxXx. Добавьте его в конец вашей cron-задачи или скрипта бэкапа:

В конце скрипта бэкапа или cron-задачи
# Сигнал об успешном выполнении
curl -fsS "https://status.ваш-домен.ru/api/push/XxXxXxXx?status=up&msg=OK" > /dev/null

Если скрипт не отправил сигнал в течение заданного интервала — придёт уведомление.

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

Telegram — самый удобный канал для уведомлений: бесплатно, мгновенно, работает на любом устройстве. Настройка займёт 3 минуты.

Шаг 1: создать бота в Telegram

  1. 1Откройте Telegram и найдите @BotFather.
  2. 2Отправьте команду /newbot.
  3. 3Введите имя бота (например, My Monitoring Bot), затем username оканчивающийся на bot (например, mymonitoring_bot).
  4. 4BotFather вернёт Bot Token вида 1234567890:AABB... — скопируйте его.
  5. 5Напишите вашему боту любое сообщение (например, /start) — это нужно, чтобы получить Chat ID.

Шаг 2: добавить уведомление в Uptime Kuma

  1. 1В Uptime Kuma откройте SettingsNotificationsAdd Notification.
  2. 2Выберите тип: Telegram.
  3. 3В поле Bot Token вставьте токен от BotFather.
  4. 4В поле Chat ID нажмите кнопку Auto Get — Uptime Kuma автоматически получит ваш Chat ID через API Telegram.
  5. 5Нажмите Test — в Telegram должно прийти тестовое сообщение. Если пришло — нажмите Save.
  6. 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. 1В верхнем меню Uptime Kuma нажмите Status PagesNew Status Page.
  2. 2Задайте название (например, Статус сервисов) и slug — короткий идентификатор в URL (services). Страница будет доступна по адресу https://status.ваш-домен.ru/status/services.
  3. 3Нажмите Next — откроется редактор страницы. Здесь можно задать логотип, описание и выбрать, показывать ли время отклика и историю.
  4. 4В разделе Incident можно написать сообщение об инциденте — оно появится наверху страницы.
  5. 5Нажмите Add Group и добавьте группу мониторов (например, «Основные сервисы»). Перетащите нужные мониторы из левой панели.
  6. 6Включите переключатель Make this status page public и нажмите Save.

Свой домен для страницы статуса

Вместо длинного URL вида /status/services можно использовать отдельный домен. Добавьте DNS-запись и конфиг Nginx:

DNS-запись для отдельного домена страницы статуса
status.ваш-сайт.ru  →  A  →  IP_СЕРВЕРА
/etc/nginx/sites-available/status-page
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;
    }
}
Активировать и получить SSL
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 будет знать, что этот домен ведёт на данную страницу статуса.

Можно создать несколько страниц

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

Частые вопросы

Нужен VPS для Uptime Kuma? Смотрите лучшие варианты

Рейтинг VPS →

Смотрите также