ServerBee

Status Pages

Publish public server health pages with incidents, maintenance windows, uptime history, and custom themes.

ServerBee provides two public status experiences:

  • Default status page: https://your-server/status, backed by GET /api/status, showing all non-hidden servers.
  • Configurable status pages: https://your-server/status/{slug}, backed by GET /api/status/{slug}, showing the specific servers and options selected by an administrator.

Both are public and do not require authentication.

Default /status Page

The default status page is useful when you want a quick public overview without creating a custom page.

It shows:

  • Online/total server count
  • All servers where hidden = false
  • Server group labels
  • Online/offline status
  • Live metrics for online servers: CPU, memory, disk, network speed/transfer, uptime, and load
  • Public server remarks where configured

Public API:

GET /api/status

Configurable Status Pages

Create and manage pages in Settings → Status Pages. Each page has its own slug and can be shared independently.

Page Settings

SettingAPI fieldDescription
TitletitlePublic page title
SlugslugURL segment for /status/{slug}
DescriptiondescriptionOptional introductory text
Serversserver_ids_jsonServers shown on this page
Group by server groupgroup_by_server_groupOrganize servers by their ServerBee group
Show valuesshow_valuesShow numeric uptime/status values on the public page
Custom CSScustom_cssExtra CSS applied to this page
EnabledenabledDisabled pages return 404
Yellow uptime thresholduptime_yellow_thresholdDays below this percentage show as degraded
Red uptime thresholduptime_red_thresholdDays below this percentage show as major outage
Themetheme_refPreset/custom theme reference, or null to follow admin default

The current API request fields use server_ids_json and status_page_ids_json for selected IDs. These fields accept JSON arrays in request bodies.

Public Page Data

GET /api/status/{slug}

The response includes:

  • page -- page metadata and display options
  • theme -- resolved theme variables
  • servers -- selected server statuses, uptime percentages, and 90-day daily uptime data
  • active_incidents -- unresolved incidents linked to the page
  • planned_maintenances -- active/upcoming maintenance windows linked to the page
  • recent_incidents -- resolved incidents from the recent history window

Server entries include server_id, server_name, region/country, OS, group, online, uptime_percent, uptime_daily, and in_maintenance.

Uptime Timeline

Each server on a configurable status page can show a 90-day uptime timeline. Each bar represents one day:

  • Green -- healthy uptime
  • Yellow -- uptime below the page's yellow threshold
  • Red -- uptime below the page's red threshold
  • Gray -- no data

Uptime data comes from the uptime_daily table, populated by the server's background aggregation tasks. Missing dates are gap-filled so the timeline remains continuous.

Incidents

Incidents are public announcements for outages or degraded service. They can be linked to specific servers, status pages, or both.

Fields

FieldDescription
titleIncident title
statusinvestigating, identified, monitoring, or resolved
severityminor, major, or critical
server_ids_jsonOptional affected servers
status_page_ids_jsonOptional affected status pages

An incident can have multiple updates. Adding an update records a message and moves the incident to the update's status. Setting status to resolved also sets resolved_at.

API

MethodPathDescription
GET/api/incidentsList incidents; supports status filtering
POST/api/incidentsCreate an incident
PUT/api/incidents/{id}Update an incident
DELETE/api/incidents/{id}Delete an incident
POST/api/incidents/{id}/updatesAdd an incident update

Maintenance Windows

Maintenance windows announce planned work and also suppress notifications for associated servers while active.

Fields

FieldDescription
titleMaintenance title
descriptionOptional details
start_atUTC start time
end_atUTC end time; must be after start_at
server_ids_jsonOptional affected servers
status_page_ids_jsonOptional affected status pages
activeWhether the window is enabled

API

MethodPathDescription
GET/api/maintenancesList maintenance windows
POST/api/maintenancesCreate a maintenance window
PUT/api/maintenances/{id}Update a maintenance window
DELETE/api/maintenances/{id}Delete a maintenance window

Admin API

MethodPathDescription
GET/api/status-pagesList configured status pages
POST/api/status-pagesCreate a status page
PUT/api/status-pages/{id}Update a status page
DELETE/api/status-pages/{id}Delete a status page

Create example:

{
  "title": "Production Status",
  "slug": "production",
  "description": "Public health for production services",
  "server_ids_json": ["server-id-1", "server-id-2"],
  "group_by_server_group": true,
  "show_values": true,
  "enabled": true,
  "uptime_yellow_threshold": 99.9,
  "uptime_red_threshold": 95
}

To set a custom theme during update, pass theme_ref, for example "preset:default" or a custom theme reference. Use null to follow the admin default.

On this page