status page for arcelia services. https://status.arcelia.space/
  • TypeScript 60.7%
  • CSS 15.4%
  • JavaScript 13.9%
  • HTML 9.1%
  • Dockerfile 0.9%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
ruri aa4d217224
All checks were successful
build and publish / check-build-publish (push) Successful in 17s
add container deployment
2026-08-05 19:34:08 +08:00
.agents/skills/design-taste-frontend init 2026-08-05 16:54:35 +08:00
.forgejo/workflows add container deployment 2026-08-05 19:34:08 +08:00
deploy/chart add container deployment 2026-08-05 19:34:08 +08:00
public fix brand mark spacing 2026-08-05 18:40:38 +08:00
src refine status refresh behavior 2026-08-05 18:38:11 +08:00
test refine status refresh behavior 2026-08-05 18:38:11 +08:00
.dockerignore add container deployment 2026-08-05 19:34:08 +08:00
.gitignore make service list configurable 2026-08-05 17:27:45 +08:00
AGENTS.md require Bun project tooling 2026-08-05 17:04:25 +08:00
bun.lock refine status refresh behavior 2026-08-05 18:38:11 +08:00
Dockerfile add container deployment 2026-08-05 19:34:08 +08:00
MEMORY.md add container deployment 2026-08-05 19:34:08 +08:00
package.json refine status refresh behavior 2026-08-05 18:38:11 +08:00
README.md refine status refresh behavior 2026-08-05 18:38:11 +08:00
skills-lock.json init 2026-08-05 16:54:35 +08:00
tsconfig.json define status configuration 2026-08-05 17:08:21 +08:00

arcelia status

A small Bun and Elysia status page for Arcelia's public website, Forgejo, and Minecraft server. It reports current availability only; results are kept in memory and are not stored as history.

local setup

Requirements:

  • Bun
  • a reachable Minecraft Java server with GameSpy Query enabled

Install dependencies:

bun install --frozen-lockfile

The checked-in config targets Arcelia's live public services. Start the development server:

bun run dev

Open http://localhost:3000. Run all checks with:

bun run check

Tests mock network transports and do not contact production services.

configuration

src/config.ts contains the listen settings, intervals, and one typed services array. Add another object to that array to monitor another service; the monitor and page render it automatically.

HTTP service:

{
  type: "http",
  id: "website",
  name: "main website",
  url: "https://arcelia.space",
}

Minecraft service:

{
  type: "minecraft",
  id: "minecraft",
  name: "Minecraft",
  host: "arcelia.space",
  javaPort: 42069,
  queryPort: 42070,
}

IDs must be unique. HTTP URLs must represent the public user path. Minecraft ports are TCP for server-list ping and UDP for Query.

Minecraft Query

The server must enable Query in server.properties and expose its UDP port publicly:

enable-query=true
query.port=42070

query.port may match the Java port, but it does not have to. Keep the service object's queryPort in sync and allow UDP traffic to it. javaPort is the TCP port used for server-list ping.

Minecraft is:

  • operational when server-list ping succeeds, even if Query stats are unavailable
  • degraded when ping fails but Query still responds
  • outage when both fail

endpoints

  • GET /api/status returns the latest in-memory status snapshot.
  • GET /healthz reports whether this application is running. Monitored service outages do not make it unhealthy.

The first probe cycle completes before the HTTP server begins listening. Later cycles run at the configured fixed interval and never overlap.