Uptime Kuma je samogostujoče orodje za spremljanje, ki pokriva isto področje kot plačljive storitve UptimeRobot, Pingdom in StatusCake, brez cen na monitor in brez odvisnosti od tretje strani. Teče kot en sam Docker kontejner, spremlja HTTP/HTTPS končne točke, TCP vrata, ping cilje, DNS zapise, potek SSL certifikatov, Docker kontejnerje in več, nato pa vas obvesti preko več kot 90 kanalov, ko se kaj pokvari. Ta vodnik pokriva postavitev, nastavitev obvestil za Slack, Telegram in e-pošto ter konfiguracijo javne status strani, primerne za deljenje s strankami ali člani ekipe.
Kaj boste zgradili
Uptime Kuma instanco za reverznim proxyjem s HTTPS, monitorje za ključne storitve, opozarjanje preko treh kanalov (en chat, en mobilen, en e-pošta kot rezerva) in javno status stran na poddomeni status.example.com.
Predpogoji
- VPS z Debian 12 ali Ubuntu 24.04
- Nameščena Docker in Docker Compose
- Domena z dvema poddomenama (ena za nadzorno ploščo, ena za javno status stran)
- SSH dostop kot root
Uptime Kuma porabi malo virov. Manjši Cloud VPS udobno prenese več sto monitorjev.
Korak 1: Namestite Docker
Če še niste:
apt update && apt upgrade -y
apt install -y ca-certificates curl gnupg
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg \
-o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) \
signed-by=/etc/apt/keyrings/docker.asc] \
https://download.docker.com/linux/debian \
$(. /etc/os-release && echo $VERSION_CODENAME) stable" \
> /etc/apt/sources.list.d/docker.list
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
systemctl enable --now docker
Korak 2: Ustvarite Compose sklad
mkdir -p /opt/uptime-kuma/{data,caddy-data,caddy-config}
cd /opt/uptime-kuma
Ustvarite /opt/uptime-kuma/docker-compose.yml:
services:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
restart: unless-stopped
volumes:
- ./data:/app/data
networks:
- web
caddy:
image: caddy:2-alpine
container_name: caddy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- ./caddy-data:/data
- ./caddy-config:/config
networks:
- web
networks:
web:
driver: bridge
Pripenjamo se na glavno oznako 1, ne na latest. Projekt Kuma je vložil veliko časa v predelavo 2.x; pripenjanje prepreči nenamerno selitev med rutinskim docker compose pull.
Korak 3: Konfigurirajte reverzni proxy
Ustvarite /opt/uptime-kuma/Caddyfile:
status.example.com {
encode gzip
reverse_proxy uptime-kuma:3001
}
monitor.example.com {
encode gzip
reverse_proxy uptime-kuma:3001
@admin {
path /dashboard /dashboard/* /add /edit /settings /settings/*
path /api/* /socket.io/*
}
header @admin {
Strict-Transport-Security "max-age=31536000; includeSubDomains"
X-Frame-Options "DENY"
}
}
Obe poddomeni kažeta na isto Kuma instanco. Kuma streže nadzorno ploščo, API in javne status strani iz istega zaledja; ločitev je na ravni proxyja zgolj kozmetična. Obe poddomeni potrebujeta A/AAAA zapise, usmerjene na VPS.
Korak 4: Zaženite sklad
docker compose up -d
docker compose logs -f
Počakajte, da Kuma zapiše Listening on 3001 in Caddy uspešno izda TLS certifikat. Obiščite https://monitor.example.com in pojavil se bo čarovnik prve nastavitve.
Korak 5: Ustvarite skrbniški račun
Prvi registriran uporabnik postane skrbnik. Izberite močno geslo in takoj v Settings → 2FA vklopite dvofaktorsko overitev. Kuma nima javne samoregistracije; samo prvi lastnik lahko ustvari dodatne uporabnike.
Korak 6: Dodajte prve monitorje
V nadzorni plošči kliknite Add New Monitor. Najuporabnejši tipi monitorjev za tipično infrastrukturo:
| Tip monitorja | Kaj preverja | Priporočen interval |
|---|---|---|
| HTTP(s) | Spletna stran vrne 2xx/3xx | 60 sekund |
| HTTP(s) - Keyword | Stran vsebuje pričakovan tekst | 60 sekund |
| TCP Port | Storitev dosegljiva na vratih | 60 sekund |
| Ping | Gostitelj odgovori na ICMP | 60 sekund |
| DNS | DNS zapis razreši na pričakovano vrednost | 300 sekund |
| HTTP(s) Cert expiry | Število dni do poteka SSL | 86400 sekund |
| Docker Container | Kontejner teče | 60 sekund |
Za tipično malo podjetje verjetno želite:
- HTTPS keyword monitor za glavno spletno stran (iskanje niza, ki je prisoten le, ko stran v celoti deluje, npr.
</body>) - TCP monitor za poštni strežnik na vratih 587
- HTTPS cert expiry za vsako javno domeno
- Ping ali HTTP monitor za morebitno backup ali staging okolje
- DNS monitor za apex zapis
Keyword monitorji ujamejo prave napake, ki jih navadni HTTP 200 preverbe spregledajo, na primer bazo z napako, ki še vedno vrača status 200.
Korak 7: Konfigurirajte obvestila
Obvestila se vežejo na monitorje. Najprej konfigurirajte kanale v Settings → Notifications, nato jih dodelite pri ustvarjanju ali urejanju monitorjev.
Slack
- V Slacku ustvarite Incoming Webhook za kanal, ki bo prejemal opozorila
- Kopirajte URL webhooka
- V Kumi Settings → Notifications → Setup Notification
- Notification Type: Slack
- Friendly Name:
Slack #alerts - Webhook URL: prilepite
- Default Enabled: on (samodejno se uporabi za nove monitorje)
- Test
Telegram
Telegram je odličen za osebna opozorila, ker zanesljivo potiska na telefon brez dodatnih aplikacij.
- Pogovorite se z
@BotFatherna Telegramu, ustvarite novega bota, shranite žeton - Pošljite poljubno sporočilo novemu botu
- Obiščite
https://api.telegram.org/bot<VAŠ_ŽETON>/getUpdatesin v JSON odgovoru poiščite svoj chat ID - V Kumi dodajte Telegram obvestilo z žetonom in chat ID
- Test
Za ekipo bota usmerite v Telegram skupino. Bota dodajte v skupino, pošljite sporočilo v skupini in iz getUpdates uporabite negativni številčni chat ID.
E-pošta (SMTP)
E-pošta je prava rezerva, kadar so chat platforme same nedostopne. SMTP konfigurirajte skrbno, ker je e-poštno opozorilo tisto, ki ga najbolj želite, ko drugi kanali odpovedo.
- Settings → Notifications → Setup Notification → SMTP
- Hostname: vaš SMTP strežnik
- Port: 587 (STARTTLS) ali 465 (SMTPS)
- Uporabniško ime in geslo
- From: pravi naslov s pravilnim SPF/DKIM, sicer pristane v vsiljeni pošti
- To: kam prihajajo opozorila
- Test in preverite, da sporočilo zadene nabiralnik, ne vsiljene pošte
Vse tri kanale konfigurirajte z Default Enabled vklopljenim in vsak nov monitor bo samodejno opozarjal po vseh treh.
Korak 8: Konfigurirajte javno status stran
Status strani gostujejo na /status/<slug>. Za ustvarjanje:
- Status Page → New Status Page
- Title:
Production Services - Slug:
main(končni URL:https://status.example.com/status/main) - Add Group:
Customer-Facing Services - Dodajte monitorje v skupino
- Dodajte še eno skupino za
Internal Services, če želite operativno vidnost ločeno - Shranite
Da URL brez sluga (https://status.example.com/) preusmeri na glavno status stran, v Settings → General → Default Status Page nastavite privzeti slug.
Nasveti za status strani:
- Monitorje logično razvrstite (stranke, infrastruktura, tretje strani)
- V polje opisa na monitorju napišite ime, berljivo za stranke.
prod-web-01 HTTP 200 checkni nekaj, kar naj vidi stranka;Dostopnost spletne stranije. - Pri načrtovanem vzdrževanju dodajte obvestilo o incidentu, da obiskovalci status strani vidijo kontekst, ne le rdeče pike
Korak 9: Vzdrževalna okna
Pri uvajanju ali načrtovanem delu monitorji sprožajo lažna opozorila. Z Maintenance načrtujte tiha okna:
- Maintenance → New Maintenance
- Title:
Weekly deployment window - Strategy: Recurring (npr. vsak torek 22:00 do 22:30)
- Uporabite za izbrane ali vse monitorje
- Shranite
Med oknom monitorji še naprej tečejo, opozorila pa so utišana. Zgodovinski zapis še vedno kaže, kaj se je zgodilo, kar je uporabno pri pregledu po uvedbi.
Korak 10: Strategija varnostnega kopiranja
Celotno stanje Kume živi v /opt/uptime-kuma/data. SQLite baza, konfiguracija in zgodovina monitorjev so v tem imeniku.
cat > /opt/uptime-kuma/backup.sh <<'EOF'
#!/bin/bash
set -euo pipefail
BACKUP_DIR=/opt/uptime-kuma/backups
DATE=$(date +%Y%m%d-%H%M%S)
mkdir -p "$BACKUP_DIR"
docker exec uptime-kuma sqlite3 /app/data/kuma.db \
".backup '/app/data/kuma-backup.db'"
tar -czf "$BACKUP_DIR/kuma-$DATE.tar.gz" \
-C /opt/uptime-kuma data
find "$BACKUP_DIR" -name "kuma-*.tar.gz" -mtime +14 -delete
rclone copy "$BACKUP_DIR/kuma-$DATE.tar.gz" remote:kuma-backups/
EOF
chmod +x /opt/uptime-kuma/backup.sh
echo "0 4 * * * root /opt/uptime-kuma/backup.sh >> /var/log/kuma-backup.log 2>&1" \
> /etc/cron.d/kuma-backup
Obnovitev preizkusite tako, da kontejner ustavite, imenik data zamenjate z razpakirano varnostno kopijo in zaženete znova. Če se nadzorna plošča vrne z vsemi monitorji, je vaš proces varnostnega kopiranja resničen.
Korak 11: Posodabljanje Uptime Kume
cd /opt/uptime-kuma
docker compose pull
docker compose up -d
Ker smo se pripenli na glavno oznako 1, prejemate 1.x popravke, ne pa selitve na 2.x. Ko se 2.x ustali, zamenjajte oznako, naredite varnostno kopijo in posodobite.
FAQ
Koliko monitorjev zmore ena Uptime Kuma instanca? Majhen VPS z 1 vCPU in 1 GB RAM udobno poganja 100 do 200 monitorjev z 60-sekundnim intervalom. Nad 500 monitorji spremljajte CPU in razmislite o daljših intervalih.
Lahko en instanco souporablja več uporabnikov? Da. Skrbnik ustvari dodatne uporabnike v Settings → Users. Vsi uporabniki imajo enak dostop; Kuma trenutno ne ponuja vlogno specifičnega nadzora dostopa.
Kaj se zgodi, če Uptime Kuma sama pade? Opozoril ne boste več prejemali. To velja za vsak sistem spremljanja, tudi plačljive SaaS. Blažitve: spremljajte Kumo z druge instance na drugem VPS, uporabite Kumin tip monitorja "Push" za potrditev, da deluje, ali sparite z zunanjim dead-man's-switch sistemom, ki opozori, ko od Kume ni več sporočil.
Lahko uvozim obstoječe monitorje iz UptimeRobot ali podobnih? Kuma podpira CSV uvoz za HTTP monitorje. V trenutnem orodju izvozite v CSV, prilagodite glave stolpcev Kuminemu formatu in uvozite preko Settings → Backup.
Kako je oblikovana javna status stran? Kuma vključuje čist privzet slog. Lasten CSS je podprt preko nastavitev status strani. Za tesno blagovno znamko je najpogostejši pristop uporaba privzete strani in povezava nanjo z glavne spletne strani.
Kje jo gostiti
Sistem spremljanja, ki ga upravljate sami, mora živeti nekje zanesljivo, najbolje ne na isti infrastrukturi, ki jo spremlja. Naš Cloud VPS je razumna podlaga: EU lokacija, predvidljiv I/O iz Ceph shrambe in vključeni Proxmox Backup Server posnetki, tako da vaši zgodovinski podatki monitorjev preživijo morebitno napako. Bistvo je, da spremljevalnik živi izven vaše glavne gruče; če produkcijski strežnik utihne, je monitor edina stvar, ki mora še naprej teči in vam povedati.