Initial commit — status checker service
All checks were successful
Docker / build-and-push (push) Successful in 35s
All checks were successful
Docker / build-and-push (push) Successful in 35s
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>
This commit is contained in:
74
README.md
Normal file
74
README.md
Normal file
@@ -0,0 +1,74 @@
|
||||
# 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
|
||||
|
||||
1. On startup (and every 10 minutes), fetches all enabled proxy hosts from the NPM API
|
||||
2. Filters to domains matching `NPM_INCLUDE_PATTERNS`
|
||||
3. HTTP-checks each host every 60 seconds
|
||||
4. Serves current results at `/` (HTML) and `/api/status` (JSON)
|
||||
|
||||
The HTML page auto-refreshes every 60 seconds.
|
||||
|
||||
## Running locally
|
||||
|
||||
```bash
|
||||
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
|
||||
|
||||
```bash
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
Uses the image from `IMAGE` in `.env`. For a local build:
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
```json
|
||||
{
|
||||
"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.
|
||||
Reference in New Issue
Block a user