Установка и настройка Uptime Kuma на VPS: мониторинг доступности и уведомления в Telegram
TL;DR
В данном руководстве мы разберем процесс развертывания Uptime Kuma — мощного open-source инструмента для мониторинга инфраструктуры — на виртуальном сервере (VPS). Мы настроим автоматическую проверку доступности сайтов, сервисов и портов, обеспечим безопасность через реверс-прокси с SSL-шифрованием и интегрируем систему мгновенных уведомлений в Telegram. К концу туториала у вас будет собственная профессиональная панель мониторинга, работающая в изолированном Docker-контейнере с автоматическим обновлением и резервным копированием.
- Стек технологий: Docker, Docker Compose, Nginx/Caddy, Ubuntu 26.04 LTS.
- Время настройки: 30–40 минут.
- Результат: Мониторинг 24/7 с точностью до секунды и нулевой стоимостью лицензий.
- Ключевая особенность: Полный контроль над данными и неограниченное количество мониторов.
- Безопасность: Настройка Firewall (UFW) и автоматических SSL-сертификатов Let's Encrypt.
1. Что мы настраиваем и зачем: философия Self-Hosted мониторинга
Для любого владельца онлайн-проекта, будь то лендинг, SaaS-платформа, игровой сервер или криптовалютная нода, простой — это прямые убытки. Традиционно рынок мониторинга делится на два лагеря: дорогостоящие Enterprise-решения (DataDog, New Relic) и ограниченные бесплатные тарифы облачных сервисов (UptimeRobot, StatusCake).
Uptime Kuma — это "золотая середина", которая совершила революцию в self-hosted сегменте. Это open-source решение с современным интерфейсом, которое по функционалу не уступает платным аналогам. Устанавливая его на собственный VPS, вы получаете:
- Конфиденциальность: Данные о вашей инфраструктуре не передаются третьим лицам.
- Отсутствие лимитов: Вы можете мониторить 10, 50 или 500 сервисов без доплаты за каждый новый "монитор".
- Гибкость: Возможность проверять сервисы внутри вашей локальной сети или VPN, которые недоступны внешним облачным сканерам.
- Многофункциональность: Поддержка HTTP(s), Ping, TCP Port, DNS-записей, Docker-контейнеров и даже игровых серверов.
В 2026 году мониторинг стал еще более критичным из-за усложнения сетевых маршрутов и участившихся DDoS-атак. Наличие собственного инструмента, который мгновенно сообщит в Telegram о падении базы данных или истечении срока действия SSL-сертификата, — это стандарт гигиены для любого системного администратора или разработчика.
2. Какой VPS-конфиг нужен под эту задачу
Uptime Kuma написана на Node.js и использует SQLite в качестве базы данных. Это делает её крайне нетребовательной к ресурсам. Однако, стоит учитывать, что мониторинг должен быть "самым стабильным звеном" в вашей инфраструктуре. Если сервер мониторинга упадет вместе с основным проектом, вы об этом не узнаете.
| Ресурс | Минимальные требования | Рекомендуемые (для 100+ мониторов) |
|---|---|---|
| CPU | 1 ядро (Shared) | 2 ядра (Dedicated) |
| RAM | 1 ГБ | 2-4 ГБ |
| Диск (SSD/NVMe) | 10 ГБ | 20 ГБ+ (для долгой истории логов) |
| ОС | Ubuntu 24.04 / 26.04 LTS | Ubuntu 26.04 LTS |
Для стабильной работы системы мониторинга идеально подойдет VPS с указанными характеристиками. Важно выбирать локацию сервера, отличную от локации ваших основных сервисов. Например, если ваш сайт хостится в Германии, сервер мониторинга лучше разместить в Нидерландах или Финляндии. Это позволит исключить ложноположительные срабатывания при локальных сбоях в конкретном дата-центре или у магистрального провайдера региона.
Когда стоит выбрать Dedicated сервер? Если вы планируете использовать Uptime Kuma как часть огромной системы мониторинга вместе с Prometheus, Grafana и ELK-стеком, потребляющим значительные ресурсы дискового ввода-вывода (IOPS). Для одной лишь Kuma виртуального сервера (VPS) более чем достаточно.
3. Подготовка сервера: базовая безопасность и системные утилиты
Прежде чем устанавливать само приложение, необходимо подготовить "фундамент" — операционную систему. Мы будем использовать Ubuntu 26.04 LTS, так как она обеспечивает долгосрочную поддержку и свежие пакеты безопасности.
Первым делом обновим индексы пакетов и саму систему:
sudo apt update && sudo apt upgrade -y
Установим базовый набор утилит, которые понадобятся нам для работы (curl, git, htop, ufw):
sudo apt install -y curl git wget htop software-properties-common apt-transport-https ca-certificates gnupg lsb-release
Настройка Firewall (UFW): Безопасность сервера мониторинга критична. Нам нужно открыть только SSH (стандартно 22), HTTP (80) и HTTPS (443).
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
Примечание: Если вы используете нестандартный порт для SSH, обязательно разрешите его перед включением UFW, иначе вы потеряете доступ к серверу.
Также рекомендуется создать отдельного пользователя с правами sudo, чтобы не работать под root:
adduser monitor-admin
usermod -aG sudo monitor-admin
# Переключаемся на нового пользователя
su - monitor-admin
4. Установка Docker и Docker Compose (актуальные версии 2026)
В 2026 году использование Docker является стандартом де-факто для развертывания self-hosted приложений. Это изолирует зависимости Uptime Kuma (Node.js, библиотеки) от основной ОС, упрощая обновление и миграцию.
Добавим официальный GPG-ключ Docker:
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
Подключим репозиторий:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Установим Docker Engine и Docker Compose Plugin:
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Проверим корректность установки:
docker --version && docker compose version
Добавим нашего пользователя в группу docker, чтобы запускать контейнеры без sudo:
sudo usermod -aG docker $USER
# Чтобы изменения вступили в силу, перелогиньтесь или выполните:
newgrp docker
5. Развертывание Uptime Kuma: пошаговая инструкция
Мы будем использовать метод Docker Compose, так как он позволяет легко описывать конфигурацию в YAML-файле и управлять томами данных.
Создадим рабочую директорию для проекта:
mkdir -p ~/uptime-kuma && cd ~/uptime-kuma
Создадим файл docker-compose.yml:
nano docker-compose.yml
Вставьте следующее содержимое в файл:
services:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
restart: always
volumes:
- ./data:/app/data
- /var/run/docker.sock:/var/run/docker.sock # Опционально: для мониторинга других контейнеров
ports:
- "127.0.0.1:3001:3001" # Привязываем к localhost для безопасности (будем использовать прокси)
environment:
- TZ=Europe/Moscow # Укажите ваш часовой пояс
Разбор конфигурации:
image: louislam/uptime-kuma:1— используем стабильную версию образа.restart: always— контейнер будет автоматически запускаться при старте сервера или после сбоя../data:/app/data— монтируем локальную папку для хранения базы данных SQLite. Это гарантирует, что ваши настройки не пропадут при обновлении контейнера.127.0.0.1:3001:3001— мы пробрасываем порт 3001 только на локальный интерфейс. Это важный шаг безопасности: панель управления не будет доступна извне напрямую по IP, только через защищенный прокси-сервер.
Запустим сервис:
docker compose up -d
Проверим статус контейнера:
docker ps
6. Настройка доступа через домен и SSL (HTTPS)
Доступ к мониторингу по IP-адресу через незашифрованный HTTP-протокол — плохая практика. Пароли могут быть перехвачены, а интерфейс выглядит непрофессионально. Мы настроим Caddy в качестве реверс-прокси. Caddy автоматически получает и обновляет SSL-сертификаты от Let's Encrypt.
Установим Caddy на сервер:
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1G 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1G 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy
Отредактируем конфигурационный файл Caddy (Caddyfile):
sudo nano /etc/caddy/Caddyfile
Замените содержимое файла следующим (подставьте ваш домен):
status.yourdomain.com {
reverse_proxy 127.0.0.1:3001
log {
output file /var/log/caddy/uptime_access.log
}
}
Примените настройки:
sudo systemctl restart caddy
Теперь, при условии что вы направили A-запись вашего домена на IP сервера, ваша панель Uptime Kuma доступна по адресу https://status.yourdomain.com с валидным SSL-сертификатом.
7. Интеграция с Telegram: создание бота и настройка алертов
Мониторинг бесполезен, если вы не узнаете о проблеме мгновенно. Telegram — самый надежный и быстрый способ получения уведомлений.
Шаг 1: Создание бота через BotFather
- Найдите в Telegram бота @BotFather.
- Отправьте команду
/newbot. - Введите имя бота (например, "My Server Monitor") и уникальный username (например,
kuma_alert_123_bot). - Скопируйте полученный API Token.
Шаг 2: Получение Chat ID
Чтобы бот знал, куда писать, ему нужен ID чата (вашего личного или группы):
- Напишите боту любое сообщение.
- Перейдите по ссылке в браузере:
https://api.telegram.org/bot<ВАШ_ТОКЕН>/getUpdates. - Найдите в JSON-ответе объект
"chat":{"id":123456789}. Это и есть ваш Chat ID.
Шаг 3: Настройка в Uptime Kuma
- Зайдите в панель Uptime Kuma → Settings → Notifications.
- Нажмите Setup Notification.
- Выберите тип: Telegram.
- Введите Token и Chat ID.
- Нажмите Test. Если в Telegram пришло сообщение "Test System", нажмите Save.
8. Продвинутая конфигурация мониторов: HTTP, TCP, DNS, Steam
Uptime Kuma позволяет настраивать проверки очень гибко. Рассмотрим основные типы мониторов, которые вам понадобятся.
HTTP(s) Мониторинг
Это основной тип для веб-сайтов. Вы можете проверять не только доступность (код 200), но и наличие конкретного слова на странице. Это полезно, если сайт отдает 200 OK, но на самом деле отображает ошибку базы данных.
- URL: Адрес вашего сайта.
- Heartbeat Interval: 60 секунд (оптимально).
- Retries: 3 (чтобы избежать ложных алертов при кратковременных сетевых лагах).
- Upside Down Mode: Алертить, если сервис СТАЛ доступен (полезно для отладки).
Мониторинг портов (TCP)
Используется для проверки сервисов, не имеющих веб-интерфейса: SSH (22), базы данных (5432, 3306), игровые серверы. Kuma просто пытается установить TCP-соединение с указанным портом.
Проверка ключевых слов
Если ваш сайт взломают и заменят контент, стандартный HTTP-монитор может не заметить подвоха. Настройте проверку на присутствие вашего бренда или уникального слова в футере. Если слово исчезнет — Kuma поднимет тревогу.
Push-мониторинг (Heartbeat)
Это "обратный" тип мониторинга. Uptime Kuma дает вам уникальную ссылку, по которой ваш скрипт (например, бэкап-скрипт на сервере) должен "стучаться" после успешного выполнения задачи. Если Kuma не получает сигнал в течение часа — значит, бэкап не сработал.
9. Бэкапы, обслуживание и обновление системы
Сервер мониторинга сам нуждается в уходе. Самый важный файл — это kuma.db в папке data.
Создание бэкапа
Самый простой способ — архивирование папки с данными:
tar -cvzf kuma_backup_$(date +%F).tar.gz ~/uptime-kuma/data
Обновление Uptime Kuma
Благодаря Docker, процесс обновления занимает меньше минуты:
cd ~/uptime-kuma
docker compose pull
docker compose up -d
docker image prune -f # Удаление старых образов для экономии места
Очистка истории
Со временем база SQLite может вырасти до гигабайтов из-за истории проверок. В настройках Uptime Kuma (Settings -> Primary) установите Retention Day на 30-60 дней. Это сохранит базу компактной без потери важной аналитики.
10. Troubleshooting + FAQ: решение типичных проблем
Почему Uptime Kuma показывает "Down", хотя сайт открывается?
Чаще всего это связано с блокировкой IP-адреса вашего сервера мониторинга на стороне целевого сайта (например, через Cloudflare или локальный Fail2ban). Попробуйте выполнить curl -I https://ваш-сайт.com прямо из консоли VPS мониторинга. Если получите 403 или 429 — добавьте IP мониторинга в белый список (Allowlist).
Какой VPS-конфиг минимально подойдёт?
Для запуска 10-20 мониторов достаточно самого дешевого тарифа с 1 ГБ оперативной памяти и 1 ядром CPU. Основное потребление ресурсов идет на отрисовку графиков в браузере, а не на сами проверки в фоне. Однако, не экономьте на диске — SQLite чувствительна к скорости записи.
Что выбрать — VPS или dedicated для этой задачи?
Для Uptime Kuma VPS является предпочтительным вариантом. Инструмент не требует прямой работы с "железом", а гибкость виртуального сервера позволяет легко масштабировать ресурсы или переносить инстанс между локациями. Dedicated сервер будет избыточен и неоправданно дорог для этой задачи.
Как мониторить Docker-контейнеры на этом же сервере?
В нашем docker-compose.yml мы пробросили /var/run/docker.sock. Теперь в интерфейсе Kuma вы можете добавить монитор типа "Docker Container" и просто выбрать имя контейнера из выпадающего списка. Kuma будет следить за его статусом (Running/Exited).
Забыл пароль от админки, что делать?
Вы можете сбросить пароль через консоль:
docker exec -it uptime-kuma npm run reset-password
11. Выводы и следующие шаги
Мы успешно развернули профессиональную систему мониторинга на собственном VPS. Теперь вы не зависите от ограничений бесплатных планов сторонних сервисов и полностью контролируете свои данные. Ваша система защищена SSL-шифрованием, работает в изолированном контейнере и мгновенно оповещает о проблемах через Telegram.
Что делать дальше?
- Публичная статус-страница: Создайте в меню "Status Pages" красивую публичную страницу со списком ваших сервисов. Её можно привязать к отдельному домену (например,
status.mycompany.com) и показывать клиентам. - Мониторинг SSL: Настройте уведомления за 7-14 дней до истечения сертификатов, чтобы избежать внезапного отключения HTTPS.
- Экспорт в Prometheus: Если ваша инфраструктура вырастет, вы сможете интегрировать Kuma с Grafana для построения еще более сложных аналитических отчетов.
Помните, что мониторинг — это не разовая настройка, а процесс. Регулярно проверяйте актуальность алертов и не забывайте обновлять систему, чтобы защитить сервер от новых уязвимостей.