Polls Nginx Proxy Manager API for proxy hosts matching configurable domain patterns (NPM_INCLUDE_PATTERNS), HTTP-checks each every 60s, serves results as JSON (/api/status) and a terminal-aesthetic HTML page (/). Port 3035. NPM connection and domain filter patterns are fully configurable via environment variables — see README and .env.example. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
status
A lightweight HTTP status checker that sources its target list from Nginx Proxy Manager and serves results as JSON and a terminal-aesthetic HTML page.
Designed to run as a standalone public status page on its own subdomain — if your main site is down, the status page is still reachable independently.
How it works
- On startup (and every 10 minutes), fetches all enabled proxy hosts from the NPM API
- Filters to domains matching
NPM_INCLUDE_PATTERNS - HTTP-checks each host every 60 seconds
- Serves current results at
/(HTML) and/api/status(JSON)
The HTML page auto-refreshes every 60 seconds.
Running locally
cp .env.example .env
# fill in NPM_EMAIL and NPM_SECRET
npm install
npm run dev
Environment variables
| Variable | Default | Description |
|---|---|---|
PORT |
3035 |
Port to listen on |
NPM_BASE_URL |
http://localhost:81 |
Base URL of your Nginx Proxy Manager instance |
NPM_EMAIL |
— | NPM account email |
NPM_SECRET |
— | NPM account password |
NPM_INCLUDE_PATTERNS |
\.example\.com$ |
Comma-separated regex patterns; only domains matching at least one are checked |
Docker
docker compose up -d
Uses the image from IMAGE in .env. For a local build:
docker build -t status:local .
IMAGE=status:local docker compose up -d
CI/CD
Gitea Actions workflow at .gitea/workflows/build.yml. Builds and pushes to the Gitea container registry on every push to main. Requires a TKNTKN secret (PAT with packages:write) in the repo settings.
API
GET /api/status
{
"lastRefreshed": "2026-07-07T19:35:43Z",
"hosts": [
{
"name": "example.com",
"url": "https://example.com",
"status": "up",
"statusCode": 200,
"latencyMs": 182,
"checkedAt": "2026-07-07T19:35:43Z"
}
]
}
status is "up" for any response (including 4xx — the server is reachable), "down" for connection errors and 5xx, "unknown" before the first check completes.