logo
icon

kuma-extended

A small, focused API proxy that turns a published Uptime Kuma status page into a stable, cacheable JSON API.

A small, focused API proxy that turns a published Uptime Kuma status page into a stable, cacheable JSON API.

PlataformaZeabur
Implementado2
Editorauthorsk5s
Implementado2 veces
Editorsk5s
Creado2026-08-28
Etiquetas
APIMonitoringNetworking

Servicios

kuma-extended

A small, focused API proxy that turns a published Uptime Kuma status page into a stable, cacheable JSON API for web and mobile clients.

kuma-extended is designed to live on the same internal network as Uptime Kuma. It wraps Kuma's public /api/status-page/:slug endpoint behind a fixed contract with TTL caching, per-IP rate limiting, security headers, and an opt-in CORS surface.

Prerequisites

This template deploys only the kuma-extended proxy. You must already have an Uptime Kuma instance running and reachable from the kuma-extended service.

On Zeabur, the easiest way is to deploy Uptime Kuma as another service in the same project. The two services can then reach each other using the internal hostname, e.g. http://uptime-kuma.<container-hostname>.zeabur.internal:3001.

Configuration

VariableRequiredDefaultDescription
KUMA_BASE_URLYesURL of the upstream Uptime Kuma instance
KUMA_STATUS_PAGE_SLUGNodefaultSlug of the Kuma status page to proxy
ALLOWED_ORIGINNo(empty)CORS origin; empty disables CORS
CACHE_TTL_SECONDSNo60TTL for cached Kuma responses
KUMA_TIMEOUT_MSNo10000Timeout when calling Kuma
RATE_LIMIT_PER_MINUTENo120Per-IP refill rate for the token bucket
RATE_LIMIT_BURSTNo20Token bucket capacity (burst ceiling)

API

All responses share the same envelope:

{ "ok": true,  "data": { ... }, "meta": { ... } }
{ "ok": false, "error": { "code": "...", "message": "..." } }
  • GET /api/v1/status — Merged incident and maintenance feed for the configured status page.
  • GET /healthz — Proxy liveness and Kuma's most recent sync state (not rate-limited).

License

MIT — see kuma-extended on GitHub.