Uptime Kuma: настраиваем собственный мониторинг сайта на VPS
Сайт может сломаться, продолжая возвращать 200 OK. Резервное копирование может перестать работать без очевидной ошибки. Uptime Kuma обнаруживает обе проблемы: проверяет сайты, API, порты и фоновые задачи, а затем отправляет уведомление, когда что-то идет не так.
Разберем, где размещать систему мониторинга, какой VPS ей нужен и как установить Uptime Kuma 2, включить HTTPS, подключить Telegram и создать страницу статуса.
Uptime Kuma за семь шагов
- Выделить небольшой VPS отдельно от проектов, которые будут отслеживаться.
- Направить на него поддомен, например
monitor.example.com. - Установить Docker и запустить Uptime Kuma 2.
- Закрыть внутренний порт
3001и включить HTTPS. - Создать HTTP-, DNS-, TCP- или push-мониторы.
- Настроить Telegram и при необходимости страницу статуса.
- Настроить обновления и внешнее резервное копирование каталога с данными.
Что такое Uptime Kuma
Uptime Kuma — бесплатный инструмент с открытым исходным кодом для самостоятельного размещения. Его панель и история проверок хранятся на вашем сервере.
Он умеет отслеживать HTTP(S), TCP-порты, ping, DNS, WebSocket, текст и JSON в ответах, push-сигналы и контейнеры Docker. Минимальный интервал проверки — 20 секунд. Также доступны десятки каналов уведомлений, двухфакторная аутентификация, графики задержки, контроль TLS-сертификатов и несколько страниц статуса.
Как обнаружить ошибку, скрытую за 200 OK
Обычная HTTP-проверка видит только код ответа. Однако веб-сервер может показать пустую страницу или экран с ошибкой приложения и при этом вернуть успешный статус.
Для более точного мониторинга используйте:
- Keyword — ищет ожидаемую фразу, например название сайта или текст «Панель аккаунта»;
- JSON Query — проверяет значение в ответе API, например
status: healthy.
Так монитор подтверждает не только доступность порта, но и наличие у приложения хотя бы одного ожидаемого признака корректной работы.
Push-монитор для резервных копий и cron-задач
Push-монитор не опрашивает сервис. Вместо этого он ожидает регулярный сигнал от самого сервиса. Скрипт резервного копирования или cron-задача вызывает уникальный URL после успешного завершения. Если сигнал не приходит вовремя, Uptime Kuma сообщает об ошибке.
Это помогает обнаружить «тихую» проблему: сайт по-прежнему работает, но ежедневная резервная копия не создается уже несколько дней.
Что Uptime Kuma не заменяет
Uptime Kuma в первую очередь отслеживает доступность и время ответа. Для мониторинга CPU, RAM, диска, логов и метрик контейнеров дополните его Prometheus, Netdata, Zabbix или другой системой мониторинга: Kuma замечает проблему снаружи, а метрики помогают определить причину.
Почему мониторинг должен работать на отдельном VPS
Если установить Uptime Kuma рядом с сайтом, сбой VPS, сети или дата-центра отключит и проект, и систему мониторинга. Уведомление может не отправиться.
Размещайте панель на отдельном VPS, а для важных проектов — в другом месте или у другого провайдера. Полезно также отслеживать сам Kuma внешним сервисом: кто-то должен контролировать и систему мониторинга.
Требования Uptime Kuma к серверу
Проект не устанавливает строгий официальный минимум CPU и RAM. Практичная начальная конфигурация для небольшой установки:
- 1 vCPU;
- 1 ГБ RAM;
- 10 ГБ SSD;
- Ubuntu 24.04 LTS;
- IPv4;
- домен или поддомен для HTTPS.
Обычно этой конфигурации достаточно для нескольких десятков простых проверок. Для сотен мониторов, длительного хранения истории или проверок через браузер выберите 2 ГБ RAM или больше.
Как установить Uptime Kuma на VPS
В примере используются Ubuntu 24.04 и поддомен monitor.example.com.
1. Настроить DNS и межсетевой экран
Создайте DNS-запись A, указывающую на IPv4-адрес VPS. Подключитесь по SSH и откройте необходимые порты:
ssh root@SERVER_IP
apt update && apt upgrade -y
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw --force enableНе закрывайте текущую SSH-сессию, пока не проверите новое подключение.
2. Установить Docker и Docker Compose
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
-o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
apt update
apt install -y docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin
docker compose version3. Запустить Uptime Kuma 2
mkdir -p /opt/uptime-kuma
cd /opt/uptime-kuma
cat > compose.yaml <<'EOF'
services:
uptime-kuma:
image: louislam/uptime-kuma:2
restart: unless-stopped
ports:
- "127.0.0.1:3001:3001"
volumes:
- ./data:/app/data
EOF
docker compose up -d
docker compose psИспользуйте тег :2: latest по-прежнему указывает на устаревшую ветку v1. Каталог /app/data должен храниться на локальном диске или в обычном Docker volume. NFS и системы хранения без корректной блокировки файлов могут повредить базу данных.
Порт 3001 доступен только на 127.0.0.1. Обратный прокси с HTTPS опубликует панель снаружи.
4. Включить HTTPS с Caddy
apt install -y caddy
cat > /etc/caddy/Caddyfile <<'EOF'
monitor.example.com {
reverse_proxy 127.0.0.1:3001
}
EOF
caddy validate --config /etc/caddy/Caddyfile
systemctl reload caddyЕсли DNS указывает на VPS, Caddy автоматически запросит TLS-сертификат и проксирует WebSocket-соединения. Размещайте панель в корне домена или поддомена: адрес вроде example.com/kuma не поддерживается.
5. Создать учетную запись администратора
Откройте https://monitor.example.com, создайте учетную запись с длинным уникальным паролем и включите двухфакторную аутентификацию.
Как добавить первый монитор
Нажмите Add New Monitor и выберите HTTP(s):
- Введите название и полный URL.
- Установите интервал, например 60 секунд.
- Добавьте две повторные попытки, чтобы учитывать кратковременные сбои сети.
- Выберите канал уведомлений.
- Сохраните монитор и убедитесь, что появляются успешные проверки.
Для основного сайта полезны проверки HTTP и Keyword. Для API используйте health-endpoint и JSON Query. Не открывайте базы данных или административные порты в интернете только ради мониторинга; используйте доверенную сеть или VPN.
Пример Push-монитора для резервной копии
После создания монитора Push добавьте его уникальный URL в конец скрипта:
backup-command && \
curl -fsS "https://monitor.example.com/api/push/SECRET_TOKEN?status=up&msg=backup-ok"Запрос выполняется только после успешного резервного копирования. Считайте push-токен паролем: любой, кто знает URL, может отправить ложный сигнал.
Как подключить Telegram
Создайте бота через @BotFather, отправьте ему сообщение, затем откройте Settings → Notifications → Telegram. Введите Bot Token и Chat ID, нажмите Test и назначьте канал своим мониторам. Для критически важных сервисов добавьте второй канал, например электронную почту.
Как создать страницу статуса
В разделе Status Pages можно сгруппировать мониторы, показать текущий статус и историю доступности, назначить домен и сообщать о плановых работах через Maintenance. Не публикуйте внутренние IP-адреса или технические URL: клиентам нужны только такие компоненты, как «Сайт», «API», «Панель аккаунта» и «Платежи».
Обновление и резервное копирование Uptime Kuma
Перед крупным обновлением остановите контейнер и сохраните каталог с данными:
cd /opt/uptime-kuma
docker compose down
tar -czf /root/uptime-kuma-$(date +%F).tar.gz \
data compose.yaml
docker compose up -dПереместите архив на другое устройство или во внешнее хранилище. Копия на том же VPS не защитит от удаления сервера или отказа диска.
Для обычного обновления:
cd /opt/uptime-kuma
docker compose pull
docker compose up -d --force-recreateПосле запуска проверьте docker compose ps, откройте панель и отправьте тестовое уведомление.
Какой VPS выбрать для Uptime Kuma
Небольшой установке нужен Linux VPS с 1 vCPU и 1 ГБ RAM. Независимость важнее максимальной производительности: монитор должен продолжать работать, когда основной проект недоступен.
Uptime Kuma можно разместить на VPS от tropic.host, если отслеживаемые сервисы находятся на другой платформе или независимом узле. Ubuntu, Docker и статический IP позволяют быстро запустить панель, а ресурсы можно увеличивать по мере роста числа проверок.
Если production уже работает в той же инфраструктуре, выберите другой узел или добавьте внешний мониторинг. Разделение доменов отказа полезнее, чем добавление еще одного ядра CPU.
Распространенные ошибки
| Ошибка | Почему это проблема | Лучший подход |
|---|---|---|
| Мониторинг работает рядом с проектом | Общий сбой отключит и сервис, и уведомления | Использовать отдельный VPS или площадку |
Порт 3001 открыт в интернете | Панель доступна без обратного прокси или HTTPS | Привязать порт к 127.0.0.1 |
Проверяется только код статуса 200 | Ошибка приложения может выглядеть как успешный ответ | Добавить Keyword или JSON Query |
Используется тег latest | Он указывает на устаревшую ветку v1 | Использовать louislam/uptime-kuma:2 |
| Резервная копия хранится на том же VPS | Она исчезнет вместе с сервером | Копировать каталог data в другое место |
Итоги
Uptime Kuma превращает небольшой VPS в собственный центр мониторинга сайтов, API, DNS, портов, сертификатов и фоновых задач. Keyword помогает обнаружить сломанную страницу, JSON Query — некорректный ответ API, а Push — остановившееся резервное копирование или cron-задачу.
Для надежной конфигурации размещайте систему мониторинга отдельно от production, закрывайте порт 3001, включите HTTPS и 2FA и настройте два канала уведомлений. Затем организуйте внешнее резервное копирование каталога с данными и независимую проверку самого Uptime Kuma.
FAQ
Uptime Kuma бесплатен?
Да. Проект имеет открытый исходный код и распространяется по лицензии MIT. Платить нужно только за инфраструктуру, домен и внешние резервные копии.
Сколько RAM нужно Uptime Kuma?
Для небольшой установки разумно начать с 1 ГБ RAM. Для сотен проверок, длительного хранения истории или Browser Engine выделите 2 ГБ или больше.
Можно ли установить Uptime Kuma без Docker?
Да, с помощью Node.js и PM2. Однако Docker Compose обычно проще обновлять, переносить и восстанавливать на VPS.
Можно ли использовать Uptime Kuma без домена?
Технически да — через IP-адрес или SSH-туннель. Для постоянного доступа из интернета безопаснее использовать поддомен с HTTPS.
Показывает ли Uptime Kuma загрузку CPU, RAM и диска?
Не как полноценная система серверных метрик. Для мониторинга ресурсов сервера дополните Uptime Kuma Prometheus, Netdata, Zabbix или другим специализированным инструментом.
