Uptime Kuma na VPS: jak skonfigurować monitoring stron i serwerów

7 min czytania
Tropic
Uptime Kuma na VPS: jak skonfigurować monitoring stron i serwerów

Language: pl

Uptime Kuma: konfiguracja własnego monitoringu strony na VPS-ie

Strona może przestać działać, a mimo to nadal zwracać 200 OK. Kopia zapasowa może przestać się tworzyć bez wyraźnego błędu. Uptime Kuma wykrywa oba problemy: sprawdza strony, API, porty i zadania działające w tle, a następnie wysyła powiadomienie, gdy coś przestaje działać.

W tym poradniku wyjaśniamy, gdzie umieścić system monitoringu, jakiego VPS-a potrzebuje oraz jak zainstalować Uptime Kuma 2, włączyć HTTPS, podłączyć Telegram i utworzyć stronę statusu.

Uptime Kuma w siedmiu krokach

  1. Wybierz niewielkiego VPS-a niezależnego od monitorowanych projektów.
  2. Skieruj na niego subdomenę, na przykład monitor.example.com.
  3. Zainstaluj Dockera i uruchom Uptime Kuma 2.
  4. Zamknij wewnętrzny port 3001 i włącz HTTPS.
  5. Utwórz monitory HTTP-, DNS-, TCP- lub push.
  6. Skonfiguruj Telegram i w razie potrzeby stronę statusu.
  7. Skonfiguruj aktualizacje oraz zewnętrzną kopię zapasową katalogu z danymi.

Czym jest Uptime Kuma

Uptime Kuma to bezpłatne narzędzie open source przeznaczone do samodzielnego hostowania. Jego panel i historia kontroli są przechowywane na własnym serwerze.

Narzędzie potrafi monitorować HTTP(S), porty TCP, ping, DNS, WebSocket, tekst i JSON w odpowiedziach, sygnały push oraz kontenery Dockera. Minimalny odstęp między kontrolami wynosi 20 sekund. Dostępne są także dziesiątki kanałów powiadomień, uwierzytelnianie dwuskładnikowe, wykresy opóźnień, kontrola certyfikatów TLS i kilka stron statusu.

Jak wykryć błąd ukryty za 200 OK

Zwykła kontrola HTTP widzi tylko kod odpowiedzi. Serwer WWW może jednak zwrócić pustą stronę albo ekran błędu aplikacji i nadal wysłać pomyślny status.

Aby monitorować usługę dokładniej, użyj:

  • Keyword — wyszukuje oczekiwaną frazę, na przykład nazwę strony lub tekst „Panel konta”;
  • JSON Query — sprawdza wartość w odpowiedzi API, na przykład status: healthy.

Dzięki temu monitor potwierdza nie tylko dostępność portu, lecz także obecność co najmniej jednego oczekiwanego oznaku poprawnego działania aplikacji.

Monitor push dla kopii zapasowych i zadań cron

Monitor push nie odpytuje usługi. Zamiast tego czeka na regularny sygnał wysyłany przez samą usługę. Skrypt kopii zapasowej lub zadanie cron wywołuje unikalny URL po pomyślnym zakończeniu pracy. Jeśli sygnał nie dotrze w odpowiednim czasie, Uptime Kuma zgłosi błąd.

Pozwala to wykryć „cichy” problem: strona nadal działa, ale codzienna kopia zapasowa nie powstaje już od kilku dni.

Czego Uptime Kuma nie zastępuje

Uptime Kuma przede wszystkim śledzi dostępność i czas odpowiedzi. Do monitorowania CPU, RAM-u, dysku, logów i metryk kontenerów uzupełnij go o Prometheus, Netdata, Zabbix lub inny system monitoringu: Kuma zauważa problem z zewnątrz, a metryki pomagają ustalić jego przyczynę.

Dlaczego monitoring powinien działać na osobnym VPS-ie

Jeśli zainstalujesz Uptime Kuma obok strony, awaria VPS-a, sieci lub centrum danych wyłączy zarówno projekt, jak i system monitoringu. Powiadomienie może wtedy nie zostać wysłane.

Umieść panel na osobnym VPS-ie, a w przypadku ważnych projektów — w innej lokalizacji lub u innego dostawcy. Warto również monitorować samego Kumę z zewnętrznej usługi: ktoś musi kontrolować także system monitoringu.

Wymagania Uptime Kuma wobec serwera

Projekt nie określa ścisłego oficjalnego minimum CPU i RAM-u. Praktyczna konfiguracja początkowa dla małej instalacji to:

  • 1 vCPU;
  • 1 GB RAM-u;
  • 10 GB SSD;
  • Ubuntu 24.04 LTS;
  • IPv4;
  • domena lub subdomena na potrzeby HTTPS.

Zwykle taka konfiguracja wystarcza dla kilkudziesięciu prostych kontroli. Przy setkach monitorów, długim przechowywaniu historii lub kontrolach wykonywanych przez przeglądarkę wybierz 2 GB RAM-u albo więcej.

Jak zainstalować Uptime Kuma na VPS-ie

W przykładzie używamy Ubuntu 24.04 i subdomeny monitor.example.com.

1. Skonfiguruj DNS i zaporę sieciową

Utwórz rekord DNS A wskazujący na adres IPv4 VPS-a. Połącz się przez SSH i otwórz niezbędne porty:

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

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

Nie zamykaj bieżącej sesji SSH, dopóki nie sprawdzisz nowego połączenia.

2. Zainstaluj Dockera i 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. Uruchom 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

Używaj tagu :2: latest nadal wskazuje przestarzałą gałąź v1. Katalog /app/data powinien znajdować się na lokalnym dysku albo w zwykłym wolumenie Dockera. NFS i systemy przechowywania bez poprawnego blokowania plików mogą uszkodzić bazę danych.

Port 3001 jest dostępny tylko pod adresem 127.0.0.1. Reverse proxy z HTTPS udostępni panel na zewnątrz.

4. Włącz HTTPS za pomocą 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

Jeśli DNS wskazuje na VPS-a, Caddy automatycznie pobierze certyfikat TLS i będzie przekazywać połączenia WebSocket. Umieść panel w katalogu głównym domeny lub subdomeny: adres w rodzaju example.com/kuma nie jest obsługiwany.

5. Utwórz konto administratora

Otwórz https://monitor.example.com, utwórz konto z długim, unikalnym hasłem i włącz uwierzytelnianie dwuskładnikowe.

Jak dodać pierwszy monitor

Kliknij Add New Monitor i wybierz HTTP(s):

  1. Wpisz nazwę i pełny URL.
  2. Ustaw odstęp, na przykład 60 sekund.
  3. Dodaj dwie ponowne próby, aby uwzględnić krótkotrwałe awarie sieci.
  4. Wybierz kanał powiadomień.
  5. Zapisz monitor i upewnij się, że pojawiają się pomyślne kontrole.

Dla głównej strony przydatne są kontrole HTTP i Keyword. W przypadku API użyj health-endpointu i JSON Query. Nie wystawiaj baz danych ani portów administracyjnych do internetu tylko po to, aby je monitorować; użyj zaufanej sieci lub VPN-u.

Przykład monitora push dla kopii zapasowej

Po utworzeniu monitora Push dodaj jego unikalny URL na końcu skryptu:

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

Żądanie zostanie wykonane tylko po pomyślnym zakończeniu kopii zapasowej. Traktuj token push jak hasło: każdy, kto zna URL, może wysłać fałszywy sygnał.

Jak podłączyć Telegram

Utwórz bota przez @BotFather, wyślij mu wiadomość, a następnie otwórz Settings → Notifications → Telegram. Wpisz Bot Token i Chat ID, kliknij Test i przypisz kanał do monitorów. W przypadku usług krytycznych dodaj drugi kanał, na przykład pocztę elektroniczną.

Jak utworzyć stronę statusu

W sekcji Status Pages możesz grupować monitory, pokazywać bieżący status i historię dostępności, przypisać domenę oraz informować o zaplanowanych pracach przez Maintenance. Nie publikuj wewnętrznych adresów IP ani technicznych URL-i: klientom wystarczą takie elementy jak „Strona”, „API”, „Panel konta” i „Płatności”.

Aktualizowanie i tworzenie kopii zapasowej Uptime Kuma

Przed większą aktualizacją zatrzymaj kontener i zapisz katalog z danymi:

cd /opt/uptime-kuma
docker compose down

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

docker compose up -d

Przenieś archiwum na inne urządzenie lub do zewnętrznego magazynu. Kopia przechowywana na tym samym VPS-ie nie ochroni przed usunięciem serwera ani awarią dysku.

Zwykłą aktualizację wykonaj tak:

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

Po uruchomieniu sprawdź docker compose ps, otwórz panel i wyślij testowe powiadomienie.

Jaki VPS wybrać dla Uptime Kuma

Mała instalacja potrzebuje linuksowego VPS-a z 1 vCPU i 1 GB RAM-u. Niezależność jest ważniejsza od maksymalnej wydajności: monitor powinien działać także wtedy, gdy główny projekt jest niedostępny.

Uptime Kuma możesz umieścić na VPS-ie od tropic.host, jeśli monitorowane usługi znajdują się na innej platformie lub niezależnym węźle. Ubuntu, Docker i statyczny adres IP pozwalają szybko uruchomić panel, a zasoby można zwiększać wraz ze wzrostem liczby kontroli.

Jeśli production działa już w tej samej infrastrukturze, wybierz inny węzeł albo dodaj monitoring zewnętrzny. Rozdzielenie domen awarii jest bardziej użyteczne niż dodanie kolejnego rdzenia CPU.

Najczęstsze błędy

BłądDlaczego jest problememLepsze rozwiązanie
Monitoring działa obok projektuWspólna awaria wyłączy usługę i powiadomieniaUżyj osobnego VPS-a lub osobnej platformy
Port 3001 jest otwarty w interneciePanel jest dostępny bez reverse proxy lub HTTPSPrzypisz port do 127.0.0.1
Sprawdzany jest tylko kod statusu 200Błąd aplikacji może wyglądać jak poprawna odpowiedźDodaj Keyword lub JSON Query
Używany jest tag latestWskazuje przestarzałą gałąź v1Użyj louislam/uptime-kuma:2
Kopia zapasowa jest przechowywana na tym samym VPS-ieZniknie razem z serweremSkopiuj katalog data w inne miejsce

Podsumowanie

Uptime Kuma zamienia niewielkiego VPS-a we własne centrum monitoringu stron, API, DNS-u, portów, certyfikatów i zadań działających w tle. Keyword pomaga wykryć uszkodzoną stronę, JSON Query — nieprawidłową odpowiedź API, a Push — zatrzymaną kopię zapasową lub zadanie cron.

Aby konfiguracja była niezawodna, umieść system monitoringu osobno od production, zamknij port 3001, włącz HTTPS i 2FA oraz skonfiguruj dwa kanały powiadomień. Następnie zorganizuj zewnętrzną kopię zapasową katalogu z danymi i niezależną kontrolę samego Uptime Kuma.

FAQ

Czy Uptime Kuma jest bezpłatny?

Tak. Projekt ma otwarty kod źródłowy i jest rozpowszechniany na licencji MIT. Płacisz tylko za infrastrukturę, domenę i zewnętrzne kopie zapasowe.

Ile RAM-u potrzebuje Uptime Kuma?

Dla małej instalacji warto zacząć od 1 GB RAM-u. Przy setkach kontroli, długim przechowywaniu historii lub Browser Engine przeznacz 2 GB albo więcej.

Czy można zainstalować Uptime Kuma bez Dockera?

Tak, za pomocą Node.js i PM2. Docker Compose jest jednak zwykle łatwiejszy w aktualizowaniu, przenoszeniu i odtwarzaniu na VPS-ie.

Czy można używać Uptime Kuma bez domeny?

Technicznie tak — przez adres IP lub tunel SSH. Przy stałym dostępie z internetu bezpieczniej użyć subdomeny z HTTPS.

Czy Uptime Kuma pokazuje obciążenie CPU, RAM-u i dysku?

Nie jako pełnoprawny system metryk serwera. Do monitorowania zasobów uzupełnij Uptime Kuma o Prometheus, Netdata, Zabbix lub inne wyspecjalizowane narzędzie.