Language: ru
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 секунд. Также доступны десятки каналов уведомлений, 2FA, графики задержки, мониторинг 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 GB RAM;
- 10 GB SSD;
- Ubuntu 24.04 LTS;
- IPv4;
- домен или поддомен для HTTPS.
Обычно такой конфигурации достаточно для нескольких десятков простых проверок. Для сотен мониторов, длительного хранения истории или проверок через браузер выбирайте 2 GB RAM или больше.
Как установить Uptime Kuma на VPS
В примере используются Ubuntu 24.04 и поддомен monitor.example.com.
1. Настройте DNS и firewall
Создайте 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-томе. NFS и системы хранения без корректной блокировки файлов могут повредить базу данных.
Порт 3001 доступен только на 127.0.0.1. Reverse proxy с 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 GB RAM. Важнее производительности — независимость: монитор должен продолжать работать, когда основной проект недоступен.
Uptime Kuma можно разместить на VPS от tropic.host, если отслеживаемые сервисы работают на другой платформе или независимом узле. Ubuntu, Docker и статический IP позволяют быстро запустить панель, а ресурсы можно увеличивать по мере роста числа проверок.
Если продакшен уже работает в той же инфраструктуре, выберите другой узел или добавьте внешний монитор резервных копий. Разделение зон отказа полезнее, чем добавление ещё одного ядра CPU.
Распространённые ошибки
| Ошибка | Почему это проблема | Лучший подход |
|---|---|---|
| Мониторинг работает рядом с проектом | Общий сбой выводит из строя и сервис, и уведомления | Используйте отдельный VPS или площадку |
Порт 3001 открыт публично | Панель доступна без reverse proxy или 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-задачу.
Для надёжной конфигурации размещайте систему мониторинга отдельно от продакшена, закрывайте порт 3001, включайте HTTPS и 2FA и настраивайте два канала уведомлений. Затем организуйте внешнюю резервную копию каталога данных и независимую проверку самого Uptime Kuma.
FAQ
Бесплатен ли Uptime Kuma?
Да. Проект имеет открытый исходный код и распространяется по лицензии MIT. Вы платите только за инфраструктуру, домен и внешние резервные копии.
Сколько RAM нужно Uptime Kuma?
Для небольшой установки разумно начать с 1 GB RAM. Для сотен проверок, длительного хранения истории или Browser Engine выделите 2 GB или больше.
Можно ли установить Uptime Kuma без Docker?
Да, используя Node.js и PM2. Однако Docker Compose обычно проще обновлять, переносить и восстанавливать на VPS.
Можно ли использовать Uptime Kuma без домена?
Технически да — через IP-адрес или SSH-туннель. Для постоянного доступа из интернета безопаснее использовать поддомен с HTTPS.
Показывает ли Uptime Kuma загрузку CPU, RAM и диска?
Не как полноценная система серверных метрик. Для мониторинга ресурсов сервера дополните его Prometheus, Netdata, Zabbix или другим специализированным инструментом.
