Tropic Host

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

6 мин чтения
Tropic
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 и при необходимости status page.
  7. Включить обновления и внешний бэкап каталога данных.

Что такое Uptime Kuma

Uptime Kuma — бесплатный self-hosted-инструмент с открытым исходным кодом. Панель и история проверок хранятся на вашем сервере.

Он проверяет 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 ГБ RAM;
  • 10 ГБ SSD;
  • Ubuntu 24.04 LTS;
  • IPv4;
  • домен или поддомен для HTTPS.

Такой конфигурации обычно хватает для нескольких десятков простых проверок. Для сотен мониторов, длинной истории или браузерных проверок лучше выбрать 2 ГБ 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 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 — 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 и привяжите канал к мониторам. Для критичных сервисов добавьте второй канал, например email.

Как создать страницу статуса

В Status Pages можно сгруппировать мониторы, показать статус и историю доступности, назначить домен и сообщать о плановых работах через Maintenance. Не публикуйте внутренние IP и технические URL: клиентам достаточно компонентов «Сайт», «API», «Личный кабинет» и «Платежи».

Обновление и резервное копирование

Перед крупным обновлением остановите контейнер и сохраните каталог данных:

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 позволяют быстро запустить панель, а ресурсы — увеличить при росте числа проверок.

Если продакшен уже в той же инфраструктуре, выберите другой узел или добавьте внешний резервный монитор. Разделение точек отказа полезнее лишнего ядра.

Типичные ошибки

ОшибкаПочему это проблемаКак лучше
Мониторинг стоит рядом с проектомПри общем сбое исчезают и сервис, и уведомленияИспользовать отдельный 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.

Для надежной схемы разместите мониторинг отдельно от продакшена, закройте порт 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 и диска?

Не как полноценная система серверных метрик. Для ресурсов сервера его лучше дополнить Prometheus, Netdata, Zabbix или другим специализированным инструментом.

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