2 Commits
Author SHA1 Message Date
clawbot 82f9962f18 README.md: name the rounds in which the rows are sorted
check / check (push) Canceled after 0s
Model: fable-5-1
2026-10-26 03:42:44 +00:00
clawbot 6172afa152 README.md rewritten sentence by sentence for a newcomer
check / check (push) Canceled after 0s
Every sentence is under about 30 words, with one idea each. The page,
its targets and what a figure measures come first, then reporting,
deployment, the settings reference, the design, and development last.
No tables; every identifier in backticks. The code on next decides
what is true.

Model: fable-5-1
2026-10-26 03:27:21 +00:00
2 changed files with 590 additions and 539 deletions
+11 -18
View File
@@ -82,12 +82,12 @@ The host list is written in `web/src/main.js`. There is no setting for it.
### What a figure measures
A check is a request to the target's URL: GET, or HEAD for the S3 regions. The
figure is the time from sending the request until the response headers arrive,
in milliseconds. Unlike ping, it includes the time the server takes to answer.
When the browser opens a new connection, it also includes the DNS lookup, the
connection setup and the TLS handshake. Chrome opens a new connection for every
check of the Hetzner servers, and for more targets at longer intervals.
Each check is a GET request to the target's URL. The figure is the time from
sending the request until the response headers arrive, in milliseconds. Unlike
ping, it includes the time the server takes to answer. When the browser opens a
new connection, it also includes the DNS lookup, the connection setup and the
TLS handshake. Chrome opens a new connection for every check of the Hetzner
servers, and for more targets at longer intervals.
Any answer counts as reachable, an error page included. The request is made in
the browser's `no-cors` mode, so the page cannot read the answer, only time it.
@@ -297,13 +297,6 @@ The [upaas](https://git.eeqj.de/sneak/upaas) app for netwatch needs:
leads out of `/data` is refused too.
- `TRUSTED_PROXIES` names the proxies nginx trusts, as IP addresses or CIDRs
separated by commas. The backend's own setting is fixed to `127.0.0.1/32`.
With `TRUSTED_PROXIES` set and empty, nginx trusts no proxy. Every client
behind the proxy then shares the proxy's one allowance of
`REPORTS_PER_MINUTE`. Any client that connects from an address in the set
can write its own `X-Forwarded-For`. A connection through a port Docker
publishes can arrive from the Docker network's gateway, such as
`172.17.0.1`. The default includes that address. Where that matters, name
only the addresses that nothing but the proxy connects from.
- Health: the image's `HEALTHCHECK`, described above.
A variable set to a value the container cannot use stops it at start, with the
@@ -425,11 +418,11 @@ bounded in four ways. Each refusal answers with the body `{"status":"error"}`.
- Rate limit. Each client address, resolved through `TRUSTED_PROXIES`, may send
`REPORTS_PER_MINUTE` reports a minute. Past that it gets 429 with
`Retry-After: 60`. The minute slides: reports from the minute before still
count, fading out over the current one. An address that sends at most half the
limit in any 60 seconds is never refused. Above that, it may be. The page
sends one report a minute from each open tab. So the default of 60 refuses
nothing from up to 30 tabs behind one address, however their reports bunch up.
Every answer to a report carries the headers `X-RateLimit-Limit`,
count, fading out over the current one. An address is sure never to be refused
only while it sends at most half the limit in any 60 seconds. The page sends
one report a minute from each open tab. So the default of 60 refuses nothing
from up to 30 tabs behind one address, however their reports bunch up. Every
answer to a report carries the headers `X-RateLimit-Limit`,
`X-RateLimit-Remaining` and `X-RateLimit-Reset`.
- Size cap. The report files in `DATA_DIR` may total at most
`DATA_DIR_MAX_BYTES`, counting the files already there at start. Reports
+579 -521
View File
File diff suppressed because it is too large Load Diff