Tropic Host

Uptime Kuma на VPS: настройка мониторинга сайтов и серверов

6 мин чтения
Tropic
Uptime Kuma на VPS: настройка мониторинга сайтов и серверов

Language: ru

Uptime Kuma: настраиваем собственный мониторинг сайтов на VPS

Сайт может сломаться, продолжая возвращать 200 OK. Резервное копирование может перестать работать без очевидной ошибки. Uptime Kuma выявляет оба сценария: проверяет сайты, API, порты и фоновые задачи, а затем отправляет уведомление, когда что-то выходит из строя.

Разберём, где разместить систему мониторинга, какой VPS ей нужен, а также как установить Uptime Kuma 2, включить HTTPS, подключить Telegram и создать страницу статуса.

Uptime Kuma за семь шагов

  1. Выделите небольшой VPS отдельно от проектов, которые нужно мониторить.
  2. Направьте на него поддомен, например monitor.example.com.
  3. Установите Docker и запустите Uptime Kuma 2.
  4. Закройте внутренний порт 3001 и включите HTTPS.
  5. Создайте HTTP-, DNS-, TCP- или push-мониторы.
  6. Настройте Telegram и при необходимости страницу статуса.
  7. Организуйте обновления и внешнюю резервную копию каталога данных.

Что такое 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 version

3. Запустите 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):

  1. Введите название и полный URL.
  2. Установите интервал, например 60 секунд.
  3. Добавьте две повторные попытки для обработки кратковременных сетевых сбоев.
  4. Выберите канал уведомлений.
  5. Сохраните монитор и убедитесь, что успешные проверки начали появляться.

Для основного сайта полезны проверки 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 или другим специализированным инструментом.