Uptime Kuma — self-hosted monitoring stron i serwisów
Opublikowano: 10 kwietnia 2026 · Kategoria: Hosting
Pierwszy sygnał że Twoja strona przestała działać nie powinien przychodzić od klienta — powinien przyjść od Ciebie, w ciągu minut od awarii. Uptime Kuma to open-source'owe narzędzie do monitoringu które instalujesz na własnym VPS: sprawdza dostępność stron co minutę i natychmiast powiadamia przez Telegram, Slack, email, Discord i 60+ innych integracji. Ma nowoczesny dashboard z wykresami dostępności, status page dla klientów i zero limitu monitorowanych serwisów. W przeciwieństwie do zewnętrznych usług (UptimeRobot, Freshping), Uptime Kuma może też monitorować wewnętrzne serwisy za firewallem.
Instalacja przez Docker
# Instalacja z Docker (zalecana metoda) docker run -d \ --name uptime-kuma \ --restart=always \ -p 3001:3001 \ -v uptime-kuma:/app/data \ louislam/uptime-kuma:1 # Sprawdz status docker ps --filter name=uptime-kuma docker logs uptime-kuma # Dostep przez przegladarke # http://IP_SERWERA:3001 # Lub przez docker-compose.yml # services: # uptime-kuma: # image: louislam/uptime-kuma:1 # restart: always # ports: # - "3001:3001" # volumes: # - ./uptime-kuma-data:/app/data
Przy pierwszym wejściu (http://IP:3001) Uptime Kuma poprosi o utworzenie konta admin. Wybierz silne hasło — panel nie ma domyślnego uwierzytelnienia. Następnie możesz ukryć port 3001 za Nginx reverse proxy z certbot SSL i wystawić panel pod własną domeną.
Nginx reverse proxy dla Uptime Kuma
# /etc/nginx/sites-available/uptime-kuma.conf
server {
listen 80;
server_name status.twoja-domena.pl;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name status.twoja-domena.pl;
ssl_certificate /etc/letsencrypt/live/status.twoja-domena.pl/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/status.twoja-domena.pl/privkey.pem;
location / {
proxy_pass http://localhost:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade"; # WebSocket dla live updates
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
# Certbot
certbot --nginx -d status.twoja-domena.pl
nginx -t && systemctl reload nginx Typy monitorów — co można monitorować
| Typ monitora | Co sprawdza | Przykład użycia |
|---|---|---|
| HTTP(s) | Kod odpowiedzi HTTP, czas odpowiedzi, zawartość strony (keyword) | Monitoring strony WWW, API, webhook |
| TCP Port | Czy port jest otwarty i odpowiada | MySQL :3306, Redis :6379, PostgreSQL :5432 |
| Ping | ICMP ping, czas odpowiedzi, packet loss | Dostępność sieci VPS, router |
| DNS | Zapytanie DNS i porównanie z oczekiwaną odpowiedzią | Monitoring rekordów DNS (A, AAAA, CNAME, MX) |
| Docker Container | Status kontenera (running/stopped) | Monitoring czy kontener nie padł |
| JSON Query | HTTP request + sprawdzenie wartości w JSON response | Monitoring API endpoint z potwierdzeniem danych |
| Keyword | HTTP response zawiera określone słowo/tekst | Sprawdzenie czy strona wyświetla właściwą treść |
| SSL Cert | Ważność certyfikatu SSL, dni do wygaśnięcia | Alert 30/7/1 dni przed wygaśnięciem certyfikatu |
Powiadomienia — Telegram, Slack, Email
Uptime Kuma obsługuje 60+ kanałów powiadomień. Najważniejsze konfiguracje:
# Telegram Bot: # 1. @BotFather → /newbot → skopiuj token # 2. Znajdz Chat ID: https://api.telegram.org/bot<TOKEN>/getUpdates # 3. W Uptime Kuma: Settings → Notifications → Add Notification # Type: Telegram, Bot Token: xxx, Chat ID: xxx # Slack: # 1. Workspace → Apps → Incoming Webhooks → Add to Slack # 2. Skopiuj Webhook URL # 3. W Uptime Kuma: Type: Slack, Webhook URL: xxx # Email (SMTP): # Hostname: smtp.gmail.com (lub serwer SMTP hostingu) # Port: 587, Secure: TLS # Username: [email protected] # Password: haslo lub App Password # Webhook (generic HTTP POST): # Uptime Kuma wyśle JSON POST do dowolnego URL # {"monitor": {"...}, "heartbeat": {"status": 0/1, "msg": "..."}}
Status Page — publiczna strona stanu serwisów
Status page to publiczna strona którą możesz udostępnić klientom lub użytkownikom — pokazuje aktualny stan Twoich serwisów bez ujawniania panelu administracyjnego. Możesz wybrać które monitory są widoczne publicznie, skonfigurować własną domenę przez CNAME i dodać logo.
- Konfiguracja: Status Pages → New Status Page → nazwij, ustaw slug (np.
status) → Add Monitors → Publication. - Własna domena: Ustaw CNAME
status.twoja-domena.pl→ VPS IP (lub przez Cloudflare). W Uptime Kuma w Status Page ustawienia: Custom Domain. - Historia 90 dni: Status page pokazuje listę incydentów i ich czas trwania z ostatnich 90 dni.
- Maintenance windows: Możesz zaplanować okna serwisowe — monitory w tym czasie nie generują alertów, status page pokazuje "Planned Maintenance".
Porównanie Uptime Kuma vs UptimeRobot vs Freshping
| Narzędzie | Hosting | Koszt | Limity (free) | Wewnętrzne serwisy |
|---|---|---|---|---|
| Uptime Kuma | Self-hosted (VPS) | Koszt VPS (~5 PLN/msc) | Bez limitów | Tak (lokalny agent) |
| UptimeRobot | SaaS (zewnętrzny) | Darmowy / od $7/msc | 50 monitorów, 5 min | Nie (publiczne URL) |
| Freshping | SaaS (zewnętrzny) | Darmowy / od $0/msc | 50 monitorów, 1 min | Nie (publiczne URL) |
| StatusCake | SaaS (zewnętrzny) | Darmowy / od $20/msc | 10 monitorów | Nie (publiczne URL) |
| Checkly | SaaS (zewnętrzny) | Darmowy / od $20/msc | Ograniczone | Nie (publiczne URL) |