Node 20 / no-framework HTTP service. Routes: /healthz (no auth), /api/runners (proxy to GitHub), / (dashboard UI). Dark theme, Basic Auth, 15s poll, stale-data strip, token-missing empty state. Agent-Session: runner-dashboard-deploy-2026-06-19
27 lines
696 B
Markdown
27 lines
696 B
Markdown
# runner-dashboard
|
|
|
|
Self-hosted GitHub Actions runner status dashboard for the peptide-repo org.
|
|
|
|
## Setup
|
|
|
|
Set the following env vars (via Coolify or `.env` locally):
|
|
|
|
| Var | Purpose |
|
|
|-----|---------|
|
|
| `GITHUB_RUNNERS_READ_TOKEN` | Fine-grained PAT: org `peptide-repo`, Self-hosted runners: Read-only |
|
|
| `DASH_USER` | HTTP Basic Auth username |
|
|
| `DASH_PASS` | HTTP Basic Auth password |
|
|
| `PORT` | Port to listen on (default: 3000) |
|
|
|
|
## Run locally
|
|
|
|
```sh
|
|
DASH_USER=admin DASH_PASS=secret GITHUB_RUNNERS_READ_TOKEN=ghp_... node server.js
|
|
```
|
|
|
|
Then open http://localhost:3000 (auth required).
|
|
|
|
## Health check
|
|
|
|
`GET /healthz` returns `200 ok` — no auth, no GitHub call. Used by Coolify.
|