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 для побудови ще складніших аналітичних звітів.
Пам'ятайте, що моніторинг — це не одноразове налаштування, а процес. Регулярно перевіряйте актуальність сповіщень і не забувайте оновлювати систему, щоб захистити сервер від нових вразливостей.





