Related problems
暂无已收录问题。
No conflict-matrix pairs for this tool yet.
# Uptime Kuma — Agent Guide
name: uptime-kuma | version_range: 2.5.3~2.5.3 | generated: 2026-09-01
title_en: Uptime Kuma - Self-hosted service uptime monitoring | desc_en: Self-hosted uptime monitoring with HTTP/TCP/Ping heartbeats, status pages and alerts; Docker one-command setup.
Preflight
note: Docker required; port 3001 free; direct ghcr.io may time out in China (use ghcr.nju.edu.cn prefix, measured).
`agent
docker --version
curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:3001/
>>>
预期输出: docker version line; curl 000 (nothing on 3001 yet) or 302 (already installed)
Install
note: China path = ghcr.nju.edu.cn image prefix (measured 2026-09-01, 2.48GB); data in volume uptime-kuma (/app/data). Port 3001 is the default; change the host port if taken.
`agent
docker run -d --name uptime-kuma --restart=always -p 3001:3001 -v uptime-kuma:/app/data ghcr.nju.edu.cn/louislam/uptime-kuma:2.5.3
>>>
预期输出: a container ID; docker ps shows Up + healthy after ~12s (measured)
Operations
Initialize database (first run only)
note: v2.5 uses the REST endpoint POST /setup-database; default SQLite needs no external database. The service switches to the main instance in ~10s.
`agent
curl -s -X POST http://127.0.0.1:3001/setup-database -H "Content-Type: application/json" -d '{"dbConfig":{"type":"sqlite"}}'
>>>
预期输出: {"ok":true} (measured 2026-09-01)
Create admin and log in (socket.io)
note: weak passwords are rejected (passwordStrength check); on an already-initialized instance "setup" returns an error (normal). Login returns a JWT used by the socket session.
`agent
# socket "setup"(username, password) -> {"ok":true,"msg":"successAdded"}
# socket "login"({username,password,token:""}) -> {"ok":true,"token":"..."}
>>>
预期输出: setup {"ok":true}; login token length 188 (measured)
Add an HTTP monitor
note: required fields in v2.5: accepted_statuscodes (string array), conditions (array), rabbitmqNodes (array), kafkaProducerBrokers/SaslOptions (arrays), notificationIDList. Missing conditions -> SQLITE_CONSTRAINT NOT NULL (measured).
`agent
# socket "add"({name:"my-api", type:"http", url:"http://172.17.0.1:8080/health", interval:30,
# maxretries:1, accepted_statuscodes:["200-299"], conditions:[], rabbitmqNodes:[],
# kafkaProducerBrokers:[], kafkaProducerSaslOptions:[], notificationIDList:[]})
>>>
预期输出: {"ok":true,"monitorID":1} (measured)
Check heartbeats
note: getMonitorBeats(monitorID, periodHours) returns {ok:true,data:[...]}; status 1 = UP, 0 = DOWN.
`agent
# socket "getMonitorBeats"(1, 24) -> {"ok":true,"data":[{status:1,ping:16,time:"2026-09-01 10:38:26"}]}
>>>
预期输出: latest heartbeat status:1 with ping (measured UP 16/104ms; DOWN status:0 for bad target)
Verify the container 127.0.0.1 pitfall
note: 127.0.0.1 inside the container = the container itself; monitor host services via 172.17.0.1 (Linux/WSL) or host.docker.internal (Docker Desktop). Measured: 127.0.0.1 monitors all DOWN, gateway monitors UP.
`agent
curl -s -m 5 -o /dev/null -w "%{http_code}" http://172.17.0.1:3000/health
curl -s -m 5 http://172.17.0.1:11434/api/version
>>>
预期输出: 200 for open-webui /health; {"version":"0.x.x"} JSON for ollama (measured via monitors #4/#5 UP)
Uninstall
note: the volume holds monitor config + heartbeat history; volume removal is destructive.
`agent
docker stop uptime-kuma
docker rm uptime-kuma
docker volume rm uptime-kuma
>>>
预期输出: no output for stop/rm (exit 0); volume rm prints the volume name
Facts
writes: Docker volume uptime-kuma (/app/data: kuma.db SQLite + config) | runtime: Docker container (internal port 3001; Node 22 bundled; no external DB with SQLite) | notes: probes targets read-only (HTTP/TCP/Ping/DNS, 12 types); 127.0.0.1 inside container = container itself, host services need 172.17.0.1/host.docker.internal (measured); notifications (Telegram/Webhook) not tested (zero-account); status page not tested; license MIT; no external API key required for core monitoring
Source: uptime-kuma · validated 2026-09-01 · v2.5.3~2.5.3