Tropic Host

Uptime Kuma на VPS: как да наблюдаваме сайтове и сървъри

6 минути четене
Tropic
Uptime Kuma на VPS: как да наблюдаваме сайтове и сървъри

Language: bg

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 е безплатен инструмент с отворен код за самостоятелно хостване. Таблото и историята на проверките се съхраняват на вашия собствен сървър.

Той може да наблюдава HTTP(S), TCP портове, ping, DNS, WebSocket, текст и JSON в отговорите, push сигнали и Docker контейнери. Минималният интервал за проверка е 20 секунди. Налични са и десетки канали за известия, двуфакторна автентикация, графики на латентността, проверки на TLS сертификати и няколко страници за статус.

Как да открием грешка, скрита зад 200 OK

Обикновената HTTP проверка вижда само кода на отговора. Уеб сървърът обаче може да покаже празна страница или екран с грешка на приложението и пак да върне успешен статус.

За по-точен мониторинг използвайте:

  • Keyword — търси очаквана фраза, например името на сайта или текста „Табло на акаунта“;
  • 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 и защитната стена

Създайте 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. HTTPS reverse proxy ще публикува таблото отвън.

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 и задайте канала на мониторите. За критични услуги добавете втори канал, например имейл.

Как да създадем страница за статус

В Status Pages можете да групирате мониторите, да показвате текущия статус и историята на достъпността, да зададете домейн и да обявявате планирана работа чрез Maintenance. Не публикувайте вътрешни IP адреси или технически URL адреси: на клиентите им трябват само компоненти като „Сайт“, „API“, „Табло на акаунта“ и „Плащания“.

Актуализиране и архивиране на 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 ви позволяват бързо да стартирате таблото, а ресурсите могат да се увеличават с нарастването на броя проверки.

Ако продукционната среда вече работи в същата инфраструктура, изберете друг възел или добавете външен мониторинг. Разделянето на зоните на отказ е по-полезно от добавянето на още едно 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 задача.

За надеждна конфигурация хоствайте мониторинга отделно от продукцията, затворете порт 3001, активирайте HTTPS и 2FA и настройте два канала за известия. След това организирайте външно резервно копие на директорията с данни и независима проверка на самия Uptime Kuma.

FAQ

Безплатен ли е 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 и диска?

Не като пълноценна система за сървърни метрики. За мониторинг на ресурсите допълнете Uptime Kuma с Prometheus, Netdata, Zabbix или друг специализиран инструмент.