Self-host мониторинг: Установка и настройка Uptime Kuma

Полное руководство по установке Uptime Kuma в Docker. Мониторинг доступности сайтов и сервисов, настройка оповещений и статус-страницы.

Guide: How to self-host uptime-kuma - A fancy self-hosted monitoring tool

Введение

В любом homelab рано или поздно возникает потребность знать, "живы" ли ваши сервисы. Традиционные мониторинговые решения, такие как Nagios или Zabbix, обладают мощным функционалом, но имеют высокий порог вхождения и сложную конфигурацию. Uptime Kuma — это современная альтернатива с интуитивным веб-интерфейсом, поддержкой множества протоколов для проверки и огромным количеством способов оповещения. Это идеальный старт для мониторинга вашего сервера.

Подготовка

Перед установкой убедитесь, что у вас есть все необходимое.

Требования

  • Docker: Основная зависимость. Установите Docker Engine или Docker Desktop.
  • 256 МБ RAM: Минимально, но рекомендуется 512+ МБ.
  • Порт 3001: Стандартный порт для веб-интерфейса (можно изменить).
  • Желание: Немного времени и терминал.

Выбор способа установки

Uptime Kuma поддерживает установку через Docker (рекомендуется) и Node.js. Мы будем использовать Docker — это изолирует приложение, упростит обновление и бэкап.

Установка

Uptime Kuma распространяется как Docker-образ. Мы будем использовать docker run для запуска контейнера.

Запуск контейнера

Создайте директорию для хранения данных:

mkdir -p ~/uptime-kuma/data

Запустите контейнер. Команда ниже монтирует том для данных и пробрасывает порт.

docker run -d \
  --restart=always \
  -p 3001:3001 \
  -v ~/uptime-kuma/data:/app/data \
  --name uptime-kuma \
  louislam/uptime-kuma:1

Проброс портов и томов

  • -p 3001:3001: Пробрасывает порт 3001 хоста на порт 3001 контейнера. Измените первое число (например, 8080:3001), если порт занят.
  • -v ~/uptime-kuma/data:/app/data: Монтирует папку data на хосте в папку /app/data внутри контейнера. Это обязательно, иначе данные пропадут при удалении контейнера.

WARNING: Не используйте --rm при запуске, если не хотите потерять данные после остановки контейнера.

Первоначальная настройка

После запуска откройте браузер и перейдите по адресу http://<IP-вашего-сервера>:3001.

Создание администратора

Вы увидите страницу первого запуска. Здесь нужно создать учетную запись администратора.

  • Заполните поля "Username", "Password" и "Confirm Password".
  • Нажмите Create.

NOTE: Учетные данные хранятся в базе данных SQLite внутри папки data. Не забудьте включить её в резервное копирование.

Интерфейс

После входа вы попадете в панель управления. Она состоит из:

  • Dashboard: Список мониторов и их статус.
  • Add New Monitor: Меню добавления проверок.
  • Settings: Настройки уведомлений и сервера.
  • Heartbeat: Логирование пингов.

Добавление первого монитора

Нажмите Add New Monitor.

  1. Monitor Type: Выберите HTTP(s).
  2. Friendly Name: Например, "Мой блог".
  3. URL: https://example.com.
  4. Interval (секунды): 60 (проверять каждую минуту).
  5. Нажмите Save.

Теперь Kuma начал проверять ваш ресурс. Значок станет зеленым при успешной проверке.

Настройка мониторов

Kuma поддерживает разные типы проверок.

HTTP(s), TCP/Ping, Docker containers

В меню Add New Monitor выберите нужный тип:

  1. HTTP(s):

    • Проверяет ответ веб-сервера.
    • Поддерживает проверку по HTTPS.
    • Можно указать Keyword (ищет слово в ответе).
  2. TCP (Port) / Ping:

    • TCP: Проверяет, открыт ли порт (например, 22 для SSH).
    • Ping: Проверяет доступность хоста через ICMP (не работает в некоторых Docker-сетях без привилегированного режима).
  3. Docker Container:

    • Перейдите в Add New Monitor -> Docker Container.
    • В поле Docker Container укажите имя контейнера (например, nginx).
    • Kuma будет проверять статус контейнера (работает/остановлен). Для работы этому контейнеру нужен доступ к Docker Socket хоста (см. ниже).

WARNING: Для мониторинга Docker-контейнеров нужно примонтировать сокет Docker к контейнеру Uptime Kuma. Измените команду запуска: -v /var/run/docker.sock:/var/run/docker.sock

Настройка оповещений

Перейдите в Settings -> Notifications. Выберите провайдера (Telegram, Discord, Email) и заполните данные.

Пример: Telegram

  1. Найдите бота @UptimeKumaBot и нажмите Start.
  2. Получите Chat ID (написав любое сообщение боту).
  3. В интерфейсе Kuma:
    • Notification Type: Telegram
    • Bot Token: Токен от BotFather
    • Chat ID: ID чата
  4. Нажмите Test. Если пришло сообщение — настройте уведомления для мониторов.

Пример: Discord

  1. Создайте Webhook в настройках вашего сервера Discord.
  2. Вставьте URL в настройках Kuma.

Пример: Email (SMTP)

  1. Укажите SMTP-сервер (например, Gmail или Mailcow).
  2. Введите логин/пароль. Рекомендуется использовать App Password.

Продвинутые возможности

SSL-сертификаты

Uptime Kuma может отслеживать истечение срока действия SSL-сертификатов.

  • При создании монитора типа HTTP(s) поставьте галочку "Ignore TLS/SSL error", если сертификат самоподписанный.
  • Для проверки только срока действия сертификата можно создать монитор типа HTTP(s) с интервалом в 1 день и отключить оповещения о кодах ответа, кроме 0 (нет ответа).

Status Page

Вы можете создать публичную страницу статуса для ваших пользователей.

  1. Перейдите в Status Page -> Create Status Page.
  2. Назовите её и добавьте мониторы, которые хотите показывать публично.
  3. Ссылка будет доступна по адресу http://<IP>:3001/status/<имя-страницы>.

NOTE: Чтобы сделать страницу доступной из интернета, пробросите порт 3001 в вашем роутере или используйте reverse proxy (Nginx/Traefik).

Multi-server (Distributed Monitoring)

Если вы хотите проверять доступность сервисов из разных географических точек:

  1. Идите в Settings -> Distributed Uptime.
  2. Нажмите Create New Node.
  3. Скачайте агент (он доступен для Linux/Windows/macOS).
  4. Запустите агент на удаленном сервере, указав токен.

Агент будет выполнять проверки и отсылать результаты на ваш основной инстанс Kuma.

Обновление и бэкап Uptime Kuma

Бэкап

Бэкап Uptime Kuma — это копирование папки данных. Если вы использовали команду из раздела установки, данные лежат в ~/uptime-kuma/data. Создайте архив:

tar -czf kuma-backup-$(date +%F).tar.gz ~/uptime-kuma/data

Храните этот архив в надежном месте.

Обновление

Обновление через Docker — это просто удаление старого контейнера и запуск нового с той же командой. Данные не пострадают благодаря тому, что мы смонтировали том.

  1. Остановите и удалите старый контейнер:
    docker stop uptime-kuma
    docker rm uptime-kuma
    
  2. Запустите новый образ (используя ту же команду, что и при установке):
    docker run -d \
      --restart=always \
      -p 3001:3001 \
      -v ~/uptime-kuma/data:/app/data \
      --name uptime-kuma \
      louislam/uptime-kuma:1
    

NOTE: Перед обновлением всегда делайте бэкап папки data.

Заключение

Вы установили Uptime Kuma и настроили базовый мониторинг. Теперь вы будете получать мгновенные уведомления, если ваш сервер или сервисы упадут. Это надежный и красивый инструмент, который станет фундаментом стабильности вашего homelab.