Перейти к основному содержимому
Вернуться в категорию

Установка Uptime Kuma: Self-Hosted мониторинг доступности

Установка Uptime Kuma с Docker, мониторинг HTTP/TCP/DNS/ping, интеграции уведомлений (Telegram, Discord, email), создание страницы статуса и настройка оповещений.

Время чтения: 12 мин Самостоятельный хостинг
uptime-kumaмониторингuptimeself-hostingdockerуведомлениястраница статуса

Содержание

Установка Uptime Kuma: Self-Hosted мониторинг доступности

Uptime Kuma — это self-hosted инструмент мониторинга доступности, отслеживающий работоспособность ваших сервисов и веб-сайтов. С красивым веб-интерфейсом, различными типами мониторов и богатыми интеграциями уведомлений он предлагает отличную альтернативу Uptime Robot.

Что такое Uptime Kuma?

Выдающиеся возможности Uptime Kuma:

  • Типы мониторов: HTTP(S), TCP, DNS, Ping, Docker Container, Steam Game Server
  • Каналы уведомлений: Telegram, Discord, Slack, Email, PagerDuty, Webhook и 90+ интеграций
  • Страница статуса: Настраиваемая страница статуса
  • Мониторинг SSL: Отслеживание срока действия сертификатов
  • Окно обслуживания: Определение плановых окон обслуживания
  • Поддержка 2FA: Двухфакторная аутентификация
  • Многоязычность: 40+ языков

Установка

Установка с Docker (Рекомендуется)

hljs bash
docker run -d \
  --name uptime-kuma \
  --restart=always \
  -p 3001:3001 \
  -v uptime-kuma:/app/data \
  louislam/uptime-kuma:latest

После установки:

http://IP_СЕРВЕРА:3001

Установка с Docker Compose

hljs yaml
# docker-compose.yml
version: '3.8'
services:
  uptime-kuma:
    image: louislam/uptime-kuma:latest
    container_name: uptime-kuma
    restart: unless-stopped
    ports:
      - "3001:3001"
    volumes:
      - uptime-kuma:/app/data
    security_opt:
      - no-new-privileges:true

volumes:
  uptime-kuma:
hljs bash
docker compose up -d

HTTPS с Nginx Reverse Proxy

hljs nginx
server {
    listen 80;
    server_name uptime.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name uptime.example.com;

    ssl_certificate /etc/letsencrypt/live/uptime.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/uptime.example.com/privkey.pem;

    location / {
        proxy_pass http://localhost:3001;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_cache_bypass $http_upgrade;
    }
}

Типы мониторов

HTTP(S) монитор

Monitor Type: HTTP(S)
Friendly Name: Главная страница
URL: https://example.com
Heartbeat Interval: 60 секунд
Retries: 3
Accepted Status Codes: 200-299

Расширенные настройки HTTP:

hljs bash
# Мониторинг ключевых слов (поиск текста на странице)
Monitor Type: HTTP(S) - Keyword
Keyword: "Добро пожаловать"

# Мониторинг JSON Query (проверка ответа API)
Monitor Type: HTTP(S) - JSON Query
JSON Path: $.status
Expected Value: ok

TCP Port монитор

Monitor Type: TCP Port
Friendly Name: База данных MySQL
Hostname: db.example.com
Port: 3306
Heartbeat Interval: 120 секунд

DNS монитор

Monitor Type: DNS
Friendly Name: Проверка DNS
Hostname: example.com
Resolver Server: 8.8.8.8
DNS Resolve Type: A
Expected Value: 1.2.3.4

Мониторинг SSL-сертификата

Monitor Type: HTTP(S)
URL: https://example.com
# На вкладке SSL:
Enable SSL Certificate Expiry Notification: ВКЛ
Notify Before (days): 30

Интеграции уведомлений

Уведомление Telegram

hljs bash
# 1. Создайте бота через BotFather
# Получите Bot Token: 1234567890:ABCdefGHIjklMNOpqrSTUvwxYZ

# 2. Получите Chat ID
curl https://api.telegram.org/bot<TOKEN>/getUpdates
# Запишите значение "chat":{"id":123456789}
Notification Type: Telegram
Bot Token: 1234567890:ABCdefGHIjklMNOpqrSTUvwxYZ
Chat ID: 123456789

Уведомление Discord

hljs bash
# Создать Webhook в Discord:
# Настройки сервера → Интеграции → Вебхуки → Новый вебхук
# Скопировать URL вебхука
Notification Type: Discord
Discord Webhook URL: https://discord.com/api/webhooks/...
Username: Uptime Kuma

Уведомление по Email (SMTP)

Notification Type: Email (SMTP)
From Email: alerts@example.com
To Email: admin@example.com
SMTP Host: smtp.gmail.com
SMTP Port: 587
SMTP Username: alerts@example.com
SMTP Password: пароль-приложения
Security: STARTTLS

Создание страницы статуса

Новая страница статуса

  1. Status PagesNew Status Page
  2. Установите название и slug страницы: status.example.com
  3. Добавьте логотип и заголовок
  4. Добавьте мониторы в группы
  5. Сохраните с помощью Save
hljs bash
# Настройки страницы статуса:
Title: Статус сервисов
Description: Статус всех наших сервисов в реальном времени
Theme: Auto (Светлая/Тёмная)
Custom Domain: status.example.com

Окно обслуживания

Maintenance → Add Maintenance
Title: Еженедельное обслуживание
Strategy: Recurring
Start Time: Воскресенье 02:00
End Time: Воскресенье 04:00
Timezone: Europe/Moscow
Affected Monitors: Все мониторы

Обновление Uptime Kuma

hljs bash
docker stop uptime-kuma
docker rm uptime-kuma
docker pull louislam/uptime-kuma:latest

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

Резервное копирование

hljs bash
# Резервное копирование данных Uptime Kuma
docker exec uptime-kuma tar -czf /tmp/backup.tar.gz /app/data
docker cp uptime-kuma:/tmp/backup.tar.gz ./uptime-kuma-backup-$(date +%Y%m%d).tar.gz

# Восстановление
docker cp ./uptime-kuma-backup.tar.gz uptime-kuma:/tmp/
docker exec uptime-kuma tar -xzf /tmp/backup.tar.gz -C /

Вы можете отслеживать все сервисы, работающие на серверах REXE, с помощью Uptime Kuma. Благодаря уведомлениям в Telegram вы будете мгновенно оповещены о любых сбоях.