Uptime Kuma: установка и настройка мониторинга
Установите Uptime Kuma для мониторинга ваших сервисов. Пошаговый гайд по развертыванию в Docker, настройке уведомлений и создании красивых Status Page.
Создание директории
Создайте отдельную папку для мониторинга, чтобы сохранить порядок в файлах.
mkdir uptime-kuma
cd uptime-kumaСоздание файла docker-compose.yml
Создайте файл конфигурации Docker Compose. Этот файл определяет, как будет запущен контейнер, куда сохраняться данные и какой порт использовать.
version: '3.3'
services:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
restart: always
ports:
- "3001:3001"
volumes:
- ./uptime-kuma-data:/app/data
- /var/run/docker.sock:/var/run/docker.sock:roЗапуск контейнера
Запустите контейнер в фоновом режиме. После скачивания образа Uptime Kuma будет доступен по адресу http://ВАШ_IP:3001.
docker compose up -dПервый запуск и создание администратора
Перейдите в браузере по адресу http://ВАШ_IP:3001. Следуйте инструкциям мастера настройки: укажите имя пользователя, пароль и email для создания первого администратора. После этого доступ к интерфейсу будет закрыт.
Добавление первого мониторинга
В интерфейсе нажмите 'Add New Monitor', выберите тип (например, HTTP(s)), укажите имя и URL для проверки (например, https://google.com) и сохраните.
Настройка уведомлений (Telegram)
Чтобы получать алерты: 1. Найдите @BotFather в Telegram, создайте бота и скопируйте токен. 2. Найдите @userinfobot, чтобы получить свой Chat ID. 3. В Uptime Kuma зайдите в Settings -> Notifications, выберите Telegram Bot и вставьте токен и Chat ID.
# Guide: How to self-host uptime-kuma - A fancy self-hosted monitoring tool
## Введение
Для любого энтузиаста домашней лаборатории (homelab) или личного сервера одним из критически важных аспектов является надежность. Вы можете развернуть десятки сервисов, от Nextcloud до Plex, но без мониторинга вы всегда будете находиться в неведении: работает ли сервис сейчас, упал ли он час назад или испытывает ли проблемы с производительностью?
Uptime Kuma — это современное, самодостаточное решение для мониторинга с красивым и интуитивно понятным веб-интерфейсом. В отличие от промышленных гигантов вроде Nagios или Zabbix, Uptime Kuma легко настроить, и он не требует сложной конфигурации для базовых задач.
### Возможности Uptime Kuma
Инструмент поддерживает широкий спектр проверок (checks), что делает его универсальным для любого окружения:
* **HTTP(s):** Проверка доступности веб-сайтов и кодов ответа (например, 200 OK).
* **Keyword:** Поиск конкретного слова или фразы в теле ответа.
* **Ping:** Проверка доступности хоста по ICMP (важно: требует прав администратора на хосте).
* **TCP Port:** Проверка доступности конкретного порта (например, SSH на порту 22).
* **DNS:** Проверка разрешения доменных имен.
* **Docker Container:** Мониторинг состояния контейнеров Docker (включая автоматическое определение).
* **Query (JSON, RabbitMQ, etc):** Сложные проверки с использованием SQL или специфичных протоколов.
Кроме того, Uptime Kuma предлагает гибкую систему уведомлений (Telegram, Discord, Slack, Email, SMS) и красивую публичную страницу статуса (Status Page), которую можно настроить для демонстрации состояния ваших сервисов.
---
## Предварительные требования
Перед началом установки убедитесь, что у вас есть:
1. **Сервер или VPS:** Linux-машина с постоянным доступом в интернет.
2. **Docker и Docker Compose:** Uptime Kuma распространяется исключительно в виде Docker-образа. Это самый чистый и поддерживаемый способ установки.
* Если Docker не установлен, следуйте официальной документации: [https://docs.docker.com/engine/install/](https://docs.docker.com/engine/install/)
* Docker Compose обычно входит в пакет Docker Desktop (macOS/Windows) или устанавливается отдельно для Linux (пакет `docker-compose-plugin`).
> **WARNING:** Попытка установки из исходного кода ("bare metal") не рекомендуется и может привести к проблемам с обновлением и зависимостями.
---
## Пошаговая установка (Docker Compose)
Мы будем использовать Docker Compose, так как это лучший способ управления контейнерами, позволяющий сохранять конфигурацию в одном файле и легко обновлять сервис.
### 1. Создание директории
Создайте отдельную папку для вашего мониторинга. Это поможет сохранить порядок.
```bash
mkdir uptime-kuma
cd uptime-kuma
2. Создание файла docker-compose.yml
Создайте файл docker-compose.yml:
nano docker-compose.yml
Вставьте следующее содержимое:
version: '3.3'
services:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
restart: always
ports:
- "3001:3001" # Формат: "Хост:Контейнер". Порт 3001 будет доступен снаружи.
volumes:
- ./uptime-kuma-data:/app/data # Сохраняем данные в папку рядом с docker-compose.yml
- /var/run/docker.sock:/var/run/docker.sock:ro # Даем доступ к Docker API для мониторинга контейнеров (опционально, но полезно)
NOTE: Если порт
3001уже занят на вашем сервере, измените первую часть ("ВАШ_ПОРТ:3001").
3. Запуск контейнера
Запустите контейнер в фоновом режиме:
docker compose up -d
После завершения скачивания образа и запуска контейнера, Uptime Kuma будет доступен по адресу: http://ВАШ_IP:3001.
Первый запуск и настройка базовой безопасности
При первом переходе на страницу вы попадете в мастер настройки.
- Создание администратора: Укажите имя пользователя, пароль и email. Это данные для входа в систему.
- Важно: Uptime Kuma не требует базовой аутентификации по умолчанию (login/password) для доступа к интерфейсу, пока вы не создадите первого пользователя. Как только аккаунт создан, доступ к странице будет закрыт.
Как сделать интерфейс безопасным?
Если ваш сервер доступен из интернета (что не рекомендуется для homelab без VPN), обязательно настройте reverse proxy (например, Nginx Proxy Manager или Traefik) и добавьте SSL-сертификат (Let's Encrypt).
WARNING: Не открывайте порт 3001 в интернет в "чистом" виде. Это небезопасно.
Как добавить первый мониторинг
Допустим, мы хотим проверять доступность google.com.
- В интерфейсе нажмите + Add New Monitor.
- Заполните поля:
- Monitor Type: Выберите
HTTP(s). - Friendly Name: Например,
Google Search. - URL (Hostname):
https://google.com. - Heartbeat Interval (Seconds): Частота проверок (по умолчанию 60 сек).
- Monitor Type: Выберите
- Нажмите Save.
Сразу после сохранения статус перейдет в "Up" (зеленый шарик). Если что-то пойдет не так, вы увидите "Down" (красный) и график задержек.
Настройка уведомлений
Uptime Kuma славится своей широкой поддержкой мессенджеров. Рассмотрим настройку Telegram как наиболее популярного варианта для русскоязычных пользователей.
Пример: Telegram Bot
- Найдите в Telegram бота @BotFather.
- Отправьте команду
/newbot, придумайте имя и юзернейм бота. - Скопируйте HTTP API token (токен).
- Найдите в Telegram бота @userinfobot или просто отправьте любое сообщение боту, созданному в шаге 2, и скопируйте ваш Chat ID (цифры).
- В Uptime Kuma перейдите в Settings -> Notifications.
- Нажмите Setup Notification.
- Выберите тип Telegram Bot.
- Вставьте полученный токен и Chat ID.
- Нажмите Test. Если все настроено верно, вы получите сообщение.
Аналогично настраиваются Discord, Slack, Webhook и Email (для email потребуется настройка SMTP-сервера).
Оптимизация и резервное копирование данных
Резервное копирование
Все данные Uptime Kuma хранятся в SQLite базе данных, расположенной по пути, который мы смонтировали в Docker Compose (./uptime-kuma-data). Самый простой способ бэкапа — архивировать эту папку.
Создайте скрипт backup.sh:
#!/bin/bash
BACKUP_DIR="/путь/к/вашему/бэкапу"
TIMESTAMP=$(date +%Y-%m-%d_%H-%M-%S)
ARCHIVE_NAME="uptime-kuma-backup-$TIMESTAMP.tar.gz"
cd /путь/к/папке/uptime-kuma
docker compose stop # Останавливаем контейнер для консистентности данных
tar -czvf $BACKUP_DIR/$ARCHIVE_NAME uptime-kuma-data/
docker compose start
# Удаление старых бэкапов старше 7 дней (опционально)
find $BACKUP_DIR -name "uptime-kuma-backup-*.tar.gz" -mtime +7 -delete
Оптимизация
- SQLite: По умолчанию используется SQLite, что отлично подходит для homelab. Для очень высокой нагрузки можно переключиться на PostgreSQL, но это редко требуется.
- Обновление: Чтобы обновить Uptime Kuma, просто выполните в папке с compose-файлом:
Uptime Kuma автоматически выполнит миграцию базы данных при запуске новой версии.docker compose pull docker compose up -d
Частые проблемы и их решения
-
Статус "Пинг не работает" (Ping Fail):
- Docker-контейнеры по умолчанию не имеют прав на отправку ICMP-пакетов (ping).
- Решение: Добавьте сетевые права хосту при запуске контейнера. Измените
docker-compose.yml:Или запускайте контейнер с привилегированным доступом (cap_add: - NET_ADMIN - NET_RAWprivileged: true), но это менее безопасно.
-
Docker мониторинг не видит контейнеры:
- Мы примонтировали сокет Docker (
/var/run/docker.sock) в контейнер. Убедитесь, что пользователь, от которого запущен Docker, имеет права на чтение этого сокета. Обычно это решается добавлением пользователя в группуdocker:sudo usermod -aG docker $USER.
- Мы примонтировали сокет Docker (
-
Сайт доступен, но Uptime Kuma показывает Down (SSL ошибка):
- Проверьте, правильно ли настроен часовой пояс внутри контейнера (по умолчанию UTC). Если разница во времени большая, проверка SSL-сертификата может не пройти.
- В
docker-compose.ymlможно прописать переменную окружения для таймзоны:environment: - TZ=Europe/Moscow
Заключение
Вы развернули полноценную систему мониторинга для вашего homelab. Теперь вы будете получать мгновенные уведомления, если ваш Nextcloud перестанет отвечать или база данных упадет.
Uptime Kuma — это не только инструмент для работы, но и возможность создать красивую личную Status Page. В настройках (Settings -> Status Pages) вы можете создать публичную страницу, скрытую за паролем или открытую для всех, где будут отображаться только выбранные вами мониторы. Это отличный способ показать состояние ваших сервисов друзьям или просто держать руку на пульсе.