A status page for the Epic Cash network. It checks public nodes, Epicbox relays and mining pools on mainnet and floonet, and shows which are up, in sync and on the same chain. Live at https://status.btlabs.uk.
- Linux with Python 3.12 and uv
- Outbound HTTPS/WSS to the hosts you monitor
- For a public site: nginx and a TLS certificate
git clone https://github.com/blacktyger/epic-status.git && cd epic-status
uv sync
cp .env.example .envIn .env, set at least EPIC_STATUS_SITE_URL (your public URL) and
EPIC_STATUS_PROBER_ID (a name for where it runs, e.g. yourname-nyc). Every other line
is optional and commented. Keep .env out of git.
config/targets.toml lists what to monitor. It ships with the known public hosts.
Only the node's foreign API (/v2/foreign) is used. Never give it your owner API or
api_secret. Add the node to config/targets.toml by its public URL, even if it runs
on the same machine:
[[node]]
slug = "node.example.org"
display_host = "node.example.org"
endpoint = "https://node.example.org"
operator = "Your name"
ours = trueSet EPIC_STATUS_NOTIFY_URL and EPIC_STATUS_NOTIFY_TOKEN to have a bot DM you one line
(kind, host, time, link to /admin) for each new submission. The token is a scoped bearer
token for a POST endpoint that accepts {"kind", "host", "received", "link"}; keep it in
an EnvironmentFile outside git. If the endpoint is down the submission still succeeds and
the notice is retried a few times over about six minutes, then dropped and logged.
uv run epic-status serveOpen http://127.0.0.1:13431. To probe one host without starting the service:
uv run epic-status check node.epiccash.com:3413.
Run it under systemd behind nginx, bound to loopback. Use ops/systemd/epic-status.service
and ops/nginx/; each file's header has its install commands. Edit the paths, user and
server_name for your machine first. Back up data/status.db.
MIT. See LICENSE.
