Tropic Host

Uptime Kuma на VPS: налаштування моніторингу сайтів і серверів

6 хв. читання
Tropic
Uptime Kuma на VPS: налаштування моніторингу сайтів і серверів

Uptime Kuma: налаштування власного моніторингу сайтів на VPS

Сайт може зламатися, продовжуючи повертати 200 OK. Резервне копіювання може припинитися без очевидної помилки. Uptime Kuma виявляє обидва випадки: перевіряє сайти, API, порти та фонові завдання, а потім надсилає сповіщення, коли щось іде не так.

Розглянемо, де розмістити систему моніторингу, який VPS їй потрібен, як встановити Uptime Kuma 2, увімкнути HTTPS, підключити Telegram і створити сторінку статусу.

Uptime Kuma у семи кроках

  1. Виділіть невеликий VPS окремо від проєктів, які моніторяться.
  2. Спрямуйте на нього піддомен, наприклад monitor.example.com.
  3. Встановіть Docker і запустіть Uptime Kuma 2.
  4. Закрийте внутрішній порт 3001 і ввімкніть HTTPS.
  5. Створіть HTTP-, DNS-, TCP- або push-монітори.
  6. Налаштуйте Telegram і, за потреби, сторінку статусу.
  7. Налаштуйте оновлення та зовнішню резервну копію каталогу даних.

Що таке Uptime Kuma?

Uptime Kuma — безкоштовний інструмент із відкритим кодом для self-hosted розгортання. Його панель і історія перевірок зберігаються на вашому сервері.

Він може моніторити HTTP(S), TCP-порти, ping, DNS, WebSocket, текст і JSON у відповідях, push-сигнали та Docker-контейнери. Мінімальний інтервал перевірки — 20 секунд. Також доступні десятки каналів сповіщень, 2FA, графіки затримки, моніторинг TLS-сертифікатів і кілька сторінок статусу.

Як виявити помилку, приховану за 200 OK

Базова HTTP-перевірка бачить лише код відповіді. Однак вебсервер може показувати порожню сторінку або екран помилки застосунку й водночас повертати успішний статус.

Для точнішого моніторингу використовуйте:

  • Keyword — шукає очікувану фразу, наприклад назву сайту або текст «Account dashboard»;
  • JSON Query — перевіряє значення у відповіді API, наприклад status: healthy.

Так монітор підтверджує не лише доступність порту, а й те, що застосунок показує хоча б одну очікувану ознаку коректної роботи.

Push-монітор для резервних копій і cron-завдань

Push-монітор не опитує сервіс. Натомість він чекає регулярного сигналу від цього сервісу. Скрипт резервного копіювання або cron-завдання викликає унікальний URL після успішного завершення. Якщо сигнал не надійшов вчасно, Uptime Kuma повідомляє про помилку.

Це допомагає виявити «тиху» проблему: сайт працює, але щоденна резервна копія не створювалася кілька днів.

Чого Uptime Kuma не замінює?

Uptime Kuma передусім відстежує доступність і час відповіді. Для CPU, RAM, диска, журналів і метрик контейнерів доповніть його Prometheus, Netdata, Zabbix або іншою системою моніторингу: Kuma помічає проблему ззовні, а метрики допомагають визначити причину.

Чому моніторинг має працювати на окремому VPS?

Якщо Uptime Kuma встановлено поруч із сайтом, збій VPS, мережі або дата-центру може вивести з ладу і проєкт, і систему моніторингу. Сповіщення може взагалі не бути надіслано.

Розмістіть панель на окремому VPS, а для важливих проєктів — в іншій локації або в іншого провайдера. Також корисно моніторити сам Kuma зовнішнім сервісом: систему моніторингу теж хтось має контролювати.

Вимоги Uptime Kuma до сервера

Проєкт не визначає суворого офіційного мінімуму CPU і RAM. Практична стартова конфігурація для невеликої інсталяції:

  • 1 vCPU;
  • 1 GB RAM;
  • 10 GB SSD;
  • Ubuntu 24.04 LTS;
  • IPv4;
  • домен або піддомен для HTTPS.

Цієї конфігурації зазвичай достатньо для кількох десятків простих перевірок. Для сотень моніторів, тривалого зберігання історії або браузерних перевірок виберіть 2 GB RAM чи більше.

Як встановити Uptime Kuma на VPS

У прикладі використано Ubuntu 24.04 і піддомен monitor.example.com.

1. Налаштуйте DNS і firewall

Створіть DNS-запис A, що вказує на IPv4-адресу VPS. Підключіться через SSH і відкрийте потрібні порти:

ssh root@SERVER_IP
apt update && apt upgrade -y

ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw --force enable

Не закривайте поточну SSH-сесію, доки не перевірите нове підключення.

2. Встановіть Docker і Docker Compose

apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
  -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc

tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

apt update
apt install -y docker-ce docker-ce-cli containerd.io \
  docker-buildx-plugin docker-compose-plugin

docker compose version

3. Запустіть Uptime Kuma 2

mkdir -p /opt/uptime-kuma
cd /opt/uptime-kuma

cat > compose.yaml <<'EOF'
services:
  uptime-kuma:
    image: louislam/uptime-kuma:2
    restart: unless-stopped
    ports:
      - "127.0.0.1:3001:3001"
    volumes:
      - ./data:/app/data
EOF

docker compose up -d
docker compose ps

Використовуйте тег :2: latest досі призначений для застарілої гілки v1. Каталог /app/data має зберігатися на локальному диску або у звичайному Docker volume. NFS і сховища без належного блокування файлів можуть пошкодити базу даних.

Порт 3001 доступний лише через 127.0.0.1. Reverse proxy з HTTPS опублікує панель назовні.

4. Увімкніть HTTPS за допомогою Caddy

apt install -y caddy

cat > /etc/caddy/Caddyfile <<'EOF'
monitor.example.com {
    reverse_proxy 127.0.0.1:3001
}
EOF

caddy validate --config /etc/caddy/Caddyfile
systemctl reload caddy

Якщо DNS вказує на VPS, Caddy автоматично запросить TLS-сертифікат і проксуватиме WebSocket-з'єднання. Розміщуйте панель у корені домену або піддомену: адреса на кшталт example.com/kuma не підтримується.

5. Створіть обліковий запис адміністратора

Відкрийте https://monitor.example.com, створіть обліковий запис із довгим унікальним паролем і ввімкніть двофакторну автентифікацію.

Як додати перший монітор

Натисніть Add New Monitor і виберіть HTTP(s):

  1. Введіть назву та повний URL.
  2. Встановіть інтервал, наприклад 60 секунд.
  3. Додайте дві повторні спроби для випадкових мережевих збоїв.
  4. Виберіть канал сповіщень.
  5. Збережіть монітор і переконайтеся, що з'являються успішні перевірки.

Для основного сайту корисні HTTP- і Keyword-перевірки. Для API використовуйте health endpoint і JSON Query. Не відкривайте бази даних або адміністративні порти в інтернет лише заради моніторингу; використовуйте довірену мережу або VPN.

Приклад Push-монітора для резервної копії

Після створення монітора Push додайте його унікальний URL у кінець скрипта:

backup-command && \
  curl -fsS "https://monitor.example.com/api/push/SECRET_TOKEN?status=up&msg=backup-ok"

Запит виконується лише після успішного резервного копіювання. Ставтеся до push-токена як до пароля: кожен, хто знає URL, може надіслати хибний сигнал.

Як підключити Telegram?

Створіть бота через @BotFather, надішліть йому повідомлення, а потім відкрийте Settings → Notifications → Telegram. Введіть Bot Token і Chat ID, натисніть Test і призначте канал моніторам. Для критичних сервісів додайте другий канал, наприклад email.

Як створити сторінку статусу?

У Status Pages можна групувати монітори, показувати поточний статус та історію доступності, призначати домен і повідомляти про планові роботи через Maintenance. Не публікуйте внутрішні IP-адреси або технічні URL: клієнтам потрібні лише компоненти на кшталт «Website», «API», «Account dashboard» і «Payments».

Оновлення та резервне копіювання Uptime Kuma

Перед великим оновленням зупиніть контейнер і збережіть каталог даних:

cd /opt/uptime-kuma
docker compose down

tar -czf /root/uptime-kuma-$(date +%F).tar.gz \
  data compose.yaml

docker compose up -d

Перемістіть архів на інший пристрій або зовнішнє сховище. Копія на тому самому VPS не захищає від видалення сервера чи відмови диска.

Для регулярного оновлення:

cd /opt/uptime-kuma
docker compose pull
docker compose up -d --force-recreate

Після запуску перевірте docker compose ps, відкрийте панель і надішліть тестове сповіщення.

Який VPS вибрати для Uptime Kuma?

Невеликій інсталяції потрібен лише Linux VPS із 1 vCPU і 1 GB RAM. Незалежність важливіша за сиру продуктивність: монітор має працювати, коли основний проєкт недоступний.

Uptime Kuma можна розмістити на VPS від tropic.host, якщо контрольовані сервіси працюють на іншій платформі або незалежному вузлі. Ubuntu, Docker і статична IP-адреса дають змогу швидко запустити панель, а ресурси можна збільшувати разом із кількістю перевірок.

Якщо production уже працює в тій самій інфраструктурі, виберіть інший вузол або додайте зовнішній резервний монітор. Розділення доменів відмови корисніше за додаткове ядро CPU.

Поширені помилки

ПомилкаЧому це проблемаКращий підхід
Моніторинг працює поруч із проєктомСпільний збій виводить з ладу сервіс і сповіщенняВикористовуйте окремий VPS або локацію
Порт 3001 відкритий публічноПанель доступна без reverse proxy або HTTPSПрив'яжіть порт до 127.0.0.1
Перевіряється лише код 200Помилка застосунку може виглядати як успіхДодайте Keyword або JSON Query
Використовується тег latestВін вказує на застарілу гілку v1Використовуйте louislam/uptime-kuma:2
Резервна копія зберігається на тому самому VPSВона зникне разом із серверомКопіюйте каталог data в інше місце

Підсумок

Uptime Kuma перетворює невеликий VPS на власний центр моніторингу сайтів, API, DNS, портів, сертифікатів і фонових завдань. Keyword допомагає виявити зламану сторінку, JSON Query — неправильну відповідь API, а Push показує зупинку резервного копіювання або cron-завдання.

Для надійної конфігурації розмістіть систему моніторингу окремо від production, закрийте порт 3001, увімкніть HTTPS і 2FA та налаштуйте два канали сповіщень. Потім створіть зовнішню резервну копію каталогу даних і незалежну перевірку самого Uptime Kuma.

Поширені запитання

Uptime Kuma безкоштовний?

Так. Проєкт має відкритий код і поширюється за ліцензією MIT. Ви платите лише за інфраструктуру, домен і зовнішні резервні копії.

Скільки RAM потрібно Uptime Kuma?

Для невеликої інсталяції 1 GB RAM — розумна відправна точка. Для сотень перевірок, тривалого зберігання історії або Browser Engine виділіть 2 GB чи більше.

Чи можна встановити Uptime Kuma без Docker?

Так, за допомогою Node.js і PM2. Однак Docker Compose зазвичай спрощує оновлення, міграцію та відновлення на VPS.

Чи можна використовувати Uptime Kuma без домену?

Технічно так — через IP-адресу або SSH-тунель. Для постійного доступу з інтернету безпечніший піддомен із HTTPS.

Чи показує Uptime Kuma використання CPU, RAM і диска?

Не як повноцінна система серверних метрик. Для моніторингу ресурсів сервера доповніть його Prometheus, Netdata, Zabbix або іншим спеціалізованим інструментом.