Your status page, online in one command.
Self-hosted, open source, and free. Nothing to sign up for.
$
curl -fsSL -o setup.sh https://raw.githubusercontent.com/lelabnet-creator/ternproject/main/scripts/setup.sh && sh setup.sh
Needs curl, and a machine that can reach the internet the first time. Linux — tested end to end on Rocky Linux, Ubuntu and Arch Linux.
The command fetches tern-setup, a Rust binary checked against
the SHA-256 published with the release before anything runs. If Docker is
missing it offers to install it through apt, dnf or pacman — and asks
first.
Later, the same file upgrades it: sh setup.sh --upgrade-only deploys
the published image over the settings already there and asks nothing, so
it runs over ssh or from cron. The admin tells you when a newer image has
been published.
Agents and the proxy · Read the source · Documentation · AGPL-3.0
The same install draws all of this.
Four views of one bad afternoon — which day, when exactly, how slow it felt, and whether it keeps happening.
Uptime ribbon
One bar a day, coloured by that day's worst moment — not its average.
Status timeline
The red bar above, opened up. Runs of the same state, merged.
Response time band
p50 to p99. An average would have said everything was fine.
Availability calendar
A weekday per row, so a problem that repeats every Monday looks like one.
Eight ways to ask if something is alive
-
pushYour job reports in on a schedule. Going quiet is the signal. -
httpA URL and a method. Verifies TLS unless you turn that off. -
tcpA host and a port. It answers, or it does not. -
pingThree echoes by default, up to ten. -
dnsA name and a record type, through any resolver. -
certHow many days the certificate has left. -
websocketThe opening handshake, on ws:// or wss://. It answers, and how fast. -
dockerIs the container running, and does its healthcheck pass. From an agent only.
The figures above are a demonstration, not a live instance. Your own page shows your own services.
Some things can only be checked from inside.
A URL or a certificate can be checked from anywhere. The rest sit behind a private subnet, a NAT, or a network with no way out at all.
tern-agent
On the machine you want watched. Everything it sends is outbound — there is nothing to open and nothing to let in.
tern-proxy
For a zone with no way out at all. It issues the zone's own keys and holds the upstream one itself, so nothing in there can reach TERN — and it serves that zone its installer, so nothing has to be carried in.
Four things that decide the deployment
-
pairA short code, once. No key is ever copied onto a host by hand. -
bufferFive thousand points held on disk while the server is unreachable. -
zoneThe proxy serves the same endpoints, so an agent cannot tell. Its zone shows up behind it in the fleet. -
installThe relay serves its own zone the installer and the binary. Nothing is carried in by hand.
Most people need neither: if it answers on a URL the server can reach, there
is nothing to install. Inside a zone the relay hands out its own codes —
tern-proxy pin prints one, with the line that installs and pairs
a machine that has nothing on it yet.
Read the documentation.
Why TERN
-
Simple
One command. It writes its settings, sets up its storage, and waits until the page answers.
-
Fast
Online in about the time it takes to read this page — and no account to make first.
-
Free
Everything on the first install. No tier, no cap, no trial that expires.
-
Reliable
It runs on your machine. No account, no service in the middle to go down with you.