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.
- Monitor Type: Выберите
HTTP(s). - Friendly Name: Например, "Мой блог".
- URL:
https://example.com. - Interval (секунды): 60 (проверять каждую минуту).
- Нажмите Save.
Теперь Kuma начал проверять ваш ресурс. Значок станет зеленым при успешной проверке.
Настройка мониторов
Kuma поддерживает разные типы проверок.
HTTP(s), TCP/Ping, Docker containers
В меню Add New Monitor выберите нужный тип:
-
HTTP(s):
- Проверяет ответ веб-сервера.
- Поддерживает проверку по HTTPS.
- Можно указать Keyword (ищет слово в ответе).
-
TCP (Port) / Ping:
- TCP: Проверяет, открыт ли порт (например, 22 для SSH).
- Ping: Проверяет доступность хоста через ICMP (не работает в некоторых Docker-сетях без привилегированного режима).
-
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
- Найдите бота
@UptimeKumaBotи нажмите Start. - Получите Chat ID (написав любое сообщение боту).
- В интерфейсе Kuma:
- Notification Type: Telegram
- Bot Token: Токен от BotFather
- Chat ID: ID чата
- Нажмите Test. Если пришло сообщение — настройте уведомления для мониторов.
Пример: Discord
- Создайте Webhook в настройках вашего сервера Discord.
- Вставьте URL в настройках Kuma.
Пример: Email (SMTP)
- Укажите SMTP-сервер (например, Gmail или Mailcow).
- Введите логин/пароль. Рекомендуется использовать App Password.
Продвинутые возможности
SSL-сертификаты
Uptime Kuma может отслеживать истечение срока действия SSL-сертификатов.
- При создании монитора типа HTTP(s) поставьте галочку "Ignore TLS/SSL error", если сертификат самоподписанный.
- Для проверки только срока действия сертификата можно создать монитор типа HTTP(s) с интервалом в 1 день и отключить оповещения о кодах ответа, кроме 0 (нет ответа).
Status Page
Вы можете создать публичную страницу статуса для ваших пользователей.
- Перейдите в Status Page -> Create Status Page.
- Назовите её и добавьте мониторы, которые хотите показывать публично.
- Ссылка будет доступна по адресу
http://<IP>:3001/status/<имя-страницы>.
NOTE: Чтобы сделать страницу доступной из интернета, пробросите порт 3001 в вашем роутере или используйте reverse proxy (Nginx/Traefik).
Multi-server (Distributed Monitoring)
Если вы хотите проверять доступность сервисов из разных географических точек:
- Идите в Settings -> Distributed Uptime.
- Нажмите Create New Node.
- Скачайте агент (он доступен для Linux/Windows/macOS).
- Запустите агент на удаленном сервере, указав токен.
Агент будет выполнять проверки и отсылать результаты на ваш основной инстанс Kuma.
Обновление и бэкап Uptime Kuma
Бэкап
Бэкап Uptime Kuma — это копирование папки данных. Если вы использовали команду из раздела установки, данные лежат в ~/uptime-kuma/data.
Создайте архив:
tar -czf kuma-backup-$(date +%F).tar.gz ~/uptime-kuma/data
Храните этот архив в надежном месте.
Обновление
Обновление через Docker — это просто удаление старого контейнера и запуск нового с той же командой. Данные не пострадают благодаря тому, что мы смонтировали том.
- Остановите и удалите старый контейнер:
docker stop uptime-kuma docker rm uptime-kuma - Запустите новый образ (используя ту же команду, что и при установке):
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.