Встановлення та налаштування 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-сертифікатом.