Tropic Host

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

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

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 секунд. Также доступны десятки каналов уведомлений, двухфакторная аутентификация, графики задержки, контроль 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 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 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):

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