Uptime Kuma je open source monitorovací nástroj pro vlastní hosting, který zvládá kontroly HTTP(S), TCP, ping, DNS, WebSocket a další. Na samostatném VPS kontroluje dál, i když váš produkční server spadne, místo aby zmizel spolu s ním.
Tento návod nasadí Uptime Kuma v2 na VPS pomocí Docker Compose, ponechá port 3001 na loopbacku, přidá HTTPS přes Caddy, přesměruje upozornění do Telegramu, Discordu a Slacku a zveřejní stavovou stránku.
Předpoklady a co budete potřebovat
- VPS s alespoň 1 vCPU, 1 GB RAM a 10 GB lokálního SSD úložiště
- Ubuntu 24.04 LTS nebo jiné aktuální vydání Ubuntu podporované Dockerem
- Docker Engine a Docker Compose nainstalované na VPS
- Doména nebo subdoména směřující na VPS přes A záznam (například status.example.com)
- Přístup přes SSH a základní jistota v příkazové řádce
Pokud Docker ještě nemáte nainstalovaný, postupujte podle návodu Dockeru pro instalaci na Ubuntu. Nainstaluje Docker Engine i plugin Compose, který používáme níže.
Proč musí být monitorovací VPS oddělený od toho, co hlídá
Produkce i monitoring na jednom serveru sdílejí stejnou doménu selhání. Když ten server spadne, zmizí zároveň aplikace i systém, který má odeslat upozornění.
Situaci zlepší dvě praktická uspořádání:
- Stejný poskytovatel, jiná lokalita. Umístěte produkci a monitoring na oddělené hosty v různých lokalitách. Sníží to riziko výpadku jednoho serveru nebo jednoho datového centra, ale neochrání to před každým síťovým incidentem nebo výpadkem řídicí vrstvy u celého poskytovatele.
- Úplně jiný poskytovatel. Hostovat monitoring jinde chrání i před incidenty, které postihnou celého poskytovatele. Daní za to je další účet, další faktura a další provozní plocha ke správě.
Jediná instance Uptime Kuma pořád nemá hlídače zvenčí. Přidejte jednu externí HTTP(S) kontrolu na její veřejnou stavovou stránku. Bezplatný tarif UptimeRobotu aktuálně zahrnuje 50 monitorů s pětiminutovým intervalem. Vysokou dostupnost tím Uptime Kuma nezískáte, ale dozvíte se, když zmizí samotný monitoring.
Stejné pravidlo platí i pro veřejné stavové stránky: to, co vám o výpadku řekne, nesmí sdílet doménu selhání s tím, co vypadává.
Stavte na Linux VPS s root přístupem, NVMe a výkonem AMD EPYC.
Zobrazit Linux plányDimenzování VPS
Uptime Kuma nemá spolehlivý vzorec mezi počtem monitorů a velikostí RAM, protože zátěž se mění podle typu monitoru, intervalu, nastavení opakování a délky uchovávání historie. Jednoduché kontroly HTTP(S), TCP, ping a DNS jsou lehčí než kontroly Browser Engine, které spouštějí Chromium.
Pro malou sadu základních kontrol začněte s 1 vCPU, 1 GB RAM a lokálním SSD úložištěm. Skutečné využití sledujte pomocí docker stats uptime-kuma a růst databáze pomocí du -sh /opt/uptime-kuma/data. Paměť přidejte, když využití zůstává vysoké, když kontejner hlásí OOM kill, nebo když nasadíte kontroly Browser Engine.
Plný obraz v2 obsahuje Chromium a vestavěnou MariaDB; dokumentace k Docker tagům vysvětluje rozdíl mezi obrazem full a slim.
Nasazení Uptime Kuma pomocí Docker Compose
Uložte tento soubor jako docker-compose.yml do /opt/uptime-kuma/:
services:
uptime-kuma:
image: louislam/uptime-kuma:2
container_name: uptime-kuma
restart: unless-stopped
ports:
# Bind to localhost only. The reverse proxy will expose it on 443.
- "127.0.0.1:3001:3001"
volumes:
- ./data:/app/data
Tři řádky stojí za zmínku:
- image: louislam/uptime-kuma:2 fixuje hlavní verzi. Tag :2 sleduje stabilní řadu 2.x. Nepoužívejte :latest.
- 127.0.0.1:3001:3001 naváže kontejner jen na localhost. Veřejný internet se nikdy nesmí dostat na port 3001 přímo. TLS certifikát a veřejné jméno hostitele drží reverzní proxy.
- Datový svazek obsahuje databázi, konfiguraci monitorů a historii. Nechte ho na lokálním úložišti, protože instalační dokumentace Uptime Kuma varuje, že souborové systémy bez spolehlivého POSIX zamykání, včetně mnoha NFS konfigurací, mohou poškodit SQLite. Než uděláte kopii na úrovni souborového systému, stack zastavte.
Spusťte a ověřte:
sudo install -d -o "$USER" -g "$USER" /opt/uptime-kuma
cd /opt/uptime-kuma
# Paste the docker-compose.yml file above.
sudo docker compose up -d
sudo docker compose ps
Očekávaný výstup docker compose ps:
NAME IMAGE STATUS PORTS
uptime-kuma louislam/uptime-kuma:2 Up (healthy) 127.0.0.1:3001->3001/tcp
Abyste se k dashboardu dostali poprvé, neotevírejte port 3001 do internetu, ani na chvíli. Použijte SSH tunel:
ssh -L 3001:127.0.0.1:3001 [email protected]
Otevřete v prohlížeči http://localhost:3001, vytvořte účet správce, nastavte silné heslo a tunel zavřete. Od teď se k dashboardu dostanete přes HTTPS skrz reverzní proxy.
Pokud ruční Compose nepotřebujete, nabízíme také Uptime Kuma jako aplikaci na jedno kliknutí. Aktuální stránka aplikace uvádí v1, takže neodpovídá nastavení v2 v tomto návodu. Pokud potřebujete výslovně v2, jděte ruční cestou přes Compose.
Reverzní proxy a TLS
Nevystavujte Uptime Kuma přímo. Postavte před něj reverzní proxy kvůli TLS, rozumnému zacházení s URL a jedinému veřejnému vstupnímu bodu. Máte dvě cesty.
Caddy. Pokud Caddy ještě nemáte, postupujte podle oficiálních kroků pro balíček na Ubuntu. Když Caddy běží jako služba na hostiteli, Caddyfile níže přesměruje na Uptime Kuma na loopbacku a vystavení i obnovu certifikátu řeší automaticky.
Tip: pokud na monitorovacím VPS běží jen Uptime Kuma, sáhněte po Caddy. Caddyfile má tři řádky a vystavení i obnovu certifikátu řeší Caddy automaticky. Žádný Certbot a žádný samostatný časovač obnovy, který byste hlídali ve 4 ráno.
Uložte toto jako /etc/caddy/Caddyfile:
status.example.com {
reverse_proxy 127.0.0.1:3001
}
Znovu načtěte Caddy:
sudo systemctl reload caddy
Ověřte:
curl -I https://status.example.com
Měli byste dostat úspěšnou odpověď 2xx nebo 3xx s platným certifikátem. Pokud spojení selže, ověřte, že A nebo AAAA záznam domény míří na tento VPS, že porty 80 a 443 jsou dostupné a že se Caddy dokáže na oba navázat. To všechno patří mezi požadavky Caddy na automatické HTTPS.
Nginx Proxy Manager. Pokud NPM běží přímo na hostiteli, přidejte Proxy Host pro status.example.com, přesměrujte ho na 127.0.0.1 na port 3001, vyžádejte certifikát Let's Encrypt a zapněte Websockets Support. Pokud NPM běží v Dockeru, 127.0.0.1 ukazuje zpět na samotný kontejner NPM. V takovém případě připojte NPM a Uptime Kuma do stejné Docker sítě a proxy host nasměrujte na uptime-kuma na port 3001.
Směrování upozornění: Telegram, Discord, Slack
Uptime Kuma umí poslat stejnou událost monitoru do několika notifikačních kanálů. Každého poskytovatele nastavte jednou a pak k monitoru připojte jeden nebo více kanálů podle toho, kdo má upozornění dostat.
Upozornění se nastavují globálně v Nastavení > Oznámení a pak se přiřazují jednotlivým monitorům. Každý monitor může spustit jeden nebo více kanálů. Stejné upozornění může dorazit na Telegram pohotovostnímu inženýrovi, na Slack týmu a e-mailem do auditního logu, a to všechno z jediné události.
Telegram
- V Telegramu napište @BotFather a spusťte /newbot. Zvolte jméno a uživatelské jméno. BotFather odpoví tokenem bota. Uschovejte si ho.
- Pošlete novému botovi jakoukoli zprávu. Pak v prohlížeči otevřete https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates. Najděte pole chat.id, to je vaše ID chatu.
- V Uptime Kuma: Nastavení > Oznámení > Nastavit oznámení > Telegram. Vložte token bota a ID chatu. Klikněte na Zkouška. Ověřte, že bot odeslal testovací upozornění.
- Pokud testovací zpráva nedorazí, ověřte správnost tokenu bota a ID chatu a zkontrolujte, že firewall na VPS povoluje odchozí HTTPS na api.telegram.org.
Discord
- Otevřete Discord server, kam chcete upozornění posílat. Klikněte pravým tlačítkem na cílový kanál a pak Upravit kanál > Integrace > Webhooky > Nový webhook. Pojmenujte ho (třeba „Uptime Kuma“), vyberte kanál a zkopírujte URL webhooku.
- V Uptime Kuma: Nastavení > Oznámení > Nastavit oznámení > Discord. Vložte URL webhooku. Volitelně nastavte uživatelské jméno a avatar.
- Klikněte Zkouška. Ověřte, že webhook do kanálu odeslal testovací upozornění.
Slack
- Ve Slacku vytvořte Incoming Webhook pro kanál, kam chcete upozornění dostávat. Slack vrátí URL webhooku ve tvaru https://hooks.slack.com/services/T.../B.../....
- V Uptime Kuma: Nastavení > Oznámení > Nastavit oznámení > Slack. Vložte URL webhooku. Volitelně nastavte ikonu a přepsání kanálu.
- Klikněte Zkouška.
Až všechny testy projdou, upravte každý monitor a vyberte notifikační kanály, které má používat. Nastavte Max Retries (maximální počet opakování) a Retry Interval (interval mezi pokusy) tak, aby jeden krátký výpadek nespustil upozornění okamžitě.
Vestavěná stavová stránka (a kdy vám přestane stačit)
Uptime Kuma nabízí veřejné stavové stránky s vlastními slugy, seskupenými monitory, vlastními doménami, příspěvky o incidentech a zprávami o plánované údržbě. Z jedné instance můžete zveřejnit i několik stavových stránek pro různé služby nebo publika.
Větší omezení je v komunikaci se zákazníky. Návštěvníci se zatím nemohou přihlásit k odběru novinek e-mailem přímo ze stavové stránky a veřejná stránka zůstává součástí téže aplikace Uptime Kuma jako dashboard provozovatele. Vlastní přihlášení návštěvníků je stále vedeno jako otevřený požadavek na funkci.
Pokud potřebujete odběry pro zákazníky nebo stavový systém oddělený od monitorovacího dashboardu, jednou z alternativ je Kener. Náš článek o vlastní monitorovací sestavě vysvětluje, jak lze oba nástroje zkombinovat.
Časté problémy
Upozornění tiše selhávají, když firewall na VPS blokuje odchozí HTTPS. Příznak: tlačítko Test funguje u některých kanálů, u jiných ne. Řešení: ověřte, že jsou povolena odchozí HTTPS spojení a že curl -I https://api.telegram.org z VPS projde.
Prohlížeč hlásí „ERR_TOO_MANY_REDIRECTS“ po zapnutí proxy. Zkontrolujte, jestli nemáte dvojité přesměrování z HTTP na HTTPS v Caddy, Nginx Proxy Manageru nebo v nadřazené CDN. Uptime Kuma má dál obsluhovat HTTP na portu 3001, zatímco TLS ukončuje veřejná reverzní proxy. Pokud zapnete důvěryhodné proxy hlavičky, aktuální cesta je Nastavení > Reverse Proxy > HTTP hlavičky > Trust Proxy.
Kontejner se každých pár minut restartuje. Zjistěte, jestli kontejner neskončil kvůli nedostatku paměti, a pak sledujte aktuální spotřebu pomocí docker stats uptime-kuma. Pokud kontejner zabil OOM nebo se paměť drží u limitu VPS, přidejte RAM, omezte náročné kontroly nebo prodlužte jejich intervaly.
Stavová stránka funguje na localhostu, ale ne přes veřejné jméno hostitele. Ověřte, že reverzní proxy předává kořenovou cestu beze změny, zachovává hlavičku Host a podporuje WebSockets. Uptime Kuma nepodporuje instalaci v podadresáři, použijte tedy vlastní doménu nebo subdoménu místo cesty typu example.com/uptime-kuma.
Shrnutí
Uptime Kuma na samostatném VPS vám dá kontrolu nad kontrolami, směrováním upozornění i veřejnou stavovou stránkou, ale zároveň si berete aktualizace, zálohy, záplatování systému a externího hlídače samotného monitoringu. Vyberte VPS v jiné lokalitě než produkci, nasaďte v2 přes Docker Compose nebo použijte aplikaci na jedno kliknutí poté, co si ověříte uvedenou verzi, postavte před to Caddy a napojte kanály, které váš tým skutečně sleduje.
Časté dotazy
Kolik RAM potřebuje Uptime Kuma?
Uptime Kuma nemá spolehlivý vzorec mezi počtem monitorů a RAM, protože spotřeba se mění podle typu monitoru, intervalu kontroly, nastavení opakování, uchovávání historie a využití Browser Engine. Pro malou sadu základních kontrol začněte s 1 GB RAM a sledujte skutečnou spotřebu přes docker stats uptime-kuma. Paměť přidejte, pokud se spotřeba drží u limitu nebo kontejner zabije OOM.
Mám Uptime Kuma provozovat na stejném serveru jako svou aplikaci?
Ne. Pokud monitorovací nástroj a aplikace sdílejí server, výpadek shodí obojí naráz a o upozornění přijdete přesně ve chvíli, kdy ho nejvíc potřebujete. Provozujte Uptime Kuma na samostatném VPS, ideálně v jiném datovém centru.
Umí Uptime Kuma posílat upozornění na Telegram, Discord a Slack?
Ano. Telegram, Discord i Slack patří mezi vestavěné notifikační služby, vedle e-mailu, obecných webhooků, PagerDuty, ntfy, Mattermostu a mnoha dalších. Telegram používá token bota a ID chatu, Discord a Slack používají URL webhooků. K jednomu monitoru můžete připojit několik notifikačních kanálů.
Jaký je rozdíl mezi Uptime Kuma a UptimeRobot?
Uptime Kuma si hostujete sami, takže server, aktualizace, zálohy i směrování upozornění jsou na vás. Podporuje kontrolní intervaly až do 20 sekund. UptimeRobot je hostovaná SaaS služba a její současný bezplatný tarif zahrnuje 50 monitorů s kontrolou po pěti minutách. Vyberte Uptime Kuma, pokud chcete kontrolu, nebo UptimeRobot, pokud nechcete provozovat monitorovací server.
Má Uptime Kuma veřejnou stavovou stránku?
Ano. Můžete vybrat, které monitory jsou vidět, seskupit je, zveřejnit několik stavových stránek, navázat na ně vlastní domény a naplánovat zprávy o údržbě. Vlastní přihlášení návštěvníků e-mailem vestavěné není, takže když se zákazníci potřebují přihlásit k odběru novinek, sáhněte po samostatném zákaznickém nástroji na stavové stránky.
